@machina.ai/cell-cli 1.36.0-rc1 → 1.38.1-rc1

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 (577) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/package.json +4 -4
  4. package/dist/src/acp/acpClient.js +297 -32
  5. package/dist/src/acp/acpClient.js.map +1 -1
  6. package/dist/src/acp/acpClient.test.js +419 -19
  7. package/dist/src/acp/acpClient.test.js.map +1 -1
  8. package/dist/src/acp/acpResume.test.js +8 -0
  9. package/dist/src/acp/acpResume.test.js.map +1 -1
  10. package/dist/src/acp/commandHandler.js +4 -0
  11. package/dist/src/acp/commandHandler.js.map +1 -1
  12. package/dist/src/acp/commandHandler.test.js +4 -0
  13. package/dist/src/acp/commandHandler.test.js.map +1 -1
  14. package/dist/src/acp/commands/about.d.ts +11 -0
  15. package/dist/src/acp/commands/about.js +53 -0
  16. package/dist/src/acp/commands/about.js.map +1 -0
  17. package/dist/src/acp/commands/extensions.js +1 -1
  18. package/dist/src/acp/commands/extensions.js.map +1 -1
  19. package/dist/src/acp/commands/help.d.ts +14 -0
  20. package/dist/src/acp/commands/help.js +35 -0
  21. package/dist/src/acp/commands/help.js.map +1 -0
  22. package/dist/src/acp/commands/help.test.d.ts +6 -0
  23. package/dist/src/acp/commands/help.test.js +40 -0
  24. package/dist/src/acp/commands/help.test.js.map +1 -0
  25. package/dist/src/acp/commands/restore.js +2 -2
  26. package/dist/src/acp/commands/restore.js.map +1 -1
  27. package/dist/src/commands/extensions/new.js +1 -1
  28. package/dist/src/commands/extensions/new.js.map +1 -1
  29. package/dist/src/commands/mcp/list.js +2 -2
  30. package/dist/src/commands/mcp/list.js.map +1 -1
  31. package/dist/src/commands/mcp.test.js +1 -1
  32. package/dist/src/commands/mcp.test.js.map +1 -1
  33. package/dist/src/commands/skills/list.js +5 -8
  34. package/dist/src/commands/skills/list.js.map +1 -1
  35. package/dist/src/commands/skills/list.test.js +17 -13
  36. package/dist/src/commands/skills/list.test.js.map +1 -1
  37. package/dist/src/config/config.js +22 -9
  38. package/dist/src/config/config.js.map +1 -1
  39. package/dist/src/config/config.test.js +121 -36
  40. package/dist/src/config/config.test.js.map +1 -1
  41. package/dist/src/config/extension-manager-permissions.test.js +1 -1
  42. package/dist/src/config/extension-manager-permissions.test.js.map +1 -1
  43. package/dist/src/config/extension-manager-themes.spec.js +1 -0
  44. package/dist/src/config/extension-manager-themes.spec.js.map +1 -1
  45. package/dist/src/config/extension-manager.test.js +1 -1
  46. package/dist/src/config/extension-manager.test.js.map +1 -1
  47. package/dist/src/config/extension.js +1 -1
  48. package/dist/src/config/extension.js.map +1 -1
  49. package/dist/src/config/extensions/github.js +1 -1
  50. package/dist/src/config/extensions/github.js.map +1 -1
  51. package/dist/src/config/footerItems.d.ts +4 -0
  52. package/dist/src/config/footerItems.js +12 -2
  53. package/dist/src/config/footerItems.js.map +1 -1
  54. package/dist/src/config/footerItems.test.js +129 -72
  55. package/dist/src/config/footerItems.test.js.map +1 -1
  56. package/dist/src/config/policy-engine.integration.test.js +1 -3
  57. package/dist/src/config/policy-engine.integration.test.js.map +1 -1
  58. package/dist/src/config/policy.d.ts +1 -1
  59. package/dist/src/config/policy.js +2 -2
  60. package/dist/src/config/policy.js.map +1 -1
  61. package/dist/src/config/settings.js +19 -3
  62. package/dist/src/config/settings.js.map +1 -1
  63. package/dist/src/config/settingsSchema.d.ts +272 -53
  64. package/dist/src/config/settingsSchema.js +262 -48
  65. package/dist/src/config/settingsSchema.js.map +1 -1
  66. package/dist/src/config/settingsSchema.test.js +22 -4
  67. package/dist/src/config/settingsSchema.test.js.map +1 -1
  68. package/dist/src/config/workspace-policy-cli.test.js +7 -7
  69. package/dist/src/config/workspace-policy-cli.test.js.map +1 -1
  70. package/dist/src/gemini.js +24 -7
  71. package/dist/src/gemini.js.map +1 -1
  72. package/dist/src/gemini.test.js +74 -4
  73. package/dist/src/gemini.test.js.map +1 -1
  74. package/dist/src/gemini_cleanup.test.js +69 -4
  75. package/dist/src/gemini_cleanup.test.js.map +1 -1
  76. package/dist/src/generated/git-commit.d.ts +2 -2
  77. package/dist/src/generated/git-commit.js +2 -2
  78. package/dist/src/integration-tests/modelSteering.test.js +1 -1
  79. package/dist/src/integration-tests/modelSteering.test.js.map +1 -1
  80. package/dist/src/interactiveCli.js +4 -2
  81. package/dist/src/interactiveCli.js.map +1 -1
  82. package/dist/src/nonInteractiveCli.d.ts +1 -1
  83. package/dist/src/nonInteractiveCli.js +11 -2
  84. package/dist/src/nonInteractiveCli.js.map +1 -1
  85. package/dist/src/nonInteractiveCli.test.js +4 -2
  86. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  87. package/dist/src/nonInteractiveCliAgentSession.d.ts +16 -0
  88. package/dist/src/nonInteractiveCliAgentSession.js +484 -0
  89. package/dist/src/nonInteractiveCliAgentSession.js.map +1 -0
  90. package/dist/src/nonInteractiveCliAgentSession.test.js +1837 -0
  91. package/dist/src/nonInteractiveCliAgentSession.test.js.map +1 -0
  92. package/dist/src/services/BuiltinCommandLoader.js +2 -2
  93. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  94. package/dist/src/test-utils/mockCommandContext.js +1 -0
  95. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  96. package/dist/src/test-utils/mockConfig.js +16 -0
  97. package/dist/src/test-utils/mockConfig.js.map +1 -1
  98. package/dist/src/test-utils/mockSpinner.d.ts +6 -0
  99. package/dist/src/test-utils/mockSpinner.js +21 -0
  100. package/dist/src/test-utils/mockSpinner.js.map +1 -0
  101. package/dist/src/test-utils/render.d.ts +8 -1
  102. package/dist/src/test-utils/render.js +37 -11
  103. package/dist/src/test-utils/render.js.map +1 -1
  104. package/dist/src/ui/App.test.js +1 -1
  105. package/dist/src/ui/App.test.js.map +1 -1
  106. package/dist/src/ui/AppContainer.js +225 -99
  107. package/dist/src/ui/AppContainer.js.map +1 -1
  108. package/dist/src/ui/AppContainer.test.js +50 -38
  109. package/dist/src/ui/AppContainer.test.js.map +1 -1
  110. package/dist/src/ui/commands/chatCommand.js +15 -5
  111. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  112. package/dist/src/ui/commands/clearCommand.js +3 -1
  113. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  114. package/dist/src/ui/commands/directoryCommand.js +1 -1
  115. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  116. package/dist/src/ui/commands/extensionsCommand.js +22 -11
  117. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  118. package/dist/src/ui/commands/mcpCommand.js +26 -7
  119. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  120. package/dist/src/ui/commands/mcpCommand.test.js +26 -0
  121. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
  122. package/dist/src/ui/commands/planCommand.js +9 -0
  123. package/dist/src/ui/commands/planCommand.js.map +1 -1
  124. package/dist/src/ui/commands/planCommand.test.js +29 -0
  125. package/dist/src/ui/commands/planCommand.test.js.map +1 -1
  126. package/dist/src/ui/commands/restoreCommand.js +1 -1
  127. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  128. package/dist/src/ui/commands/rewindCommand.js +3 -1
  129. package/dist/src/ui/commands/rewindCommand.js.map +1 -1
  130. package/dist/src/ui/commands/rewindCommand.test.js +1 -1
  131. package/dist/src/ui/commands/rewindCommand.test.js.map +1 -1
  132. package/dist/src/ui/commands/setupGithubCommand.js +5 -5
  133. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  134. package/dist/src/ui/commands/skillsCommand.js +11 -1
  135. package/dist/src/ui/commands/skillsCommand.js.map +1 -1
  136. package/dist/src/ui/commands/skillsCommand.test.js +1 -0
  137. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -1
  138. package/dist/src/ui/commands/{shellsCommand.d.ts → tasksCommand.d.ts} +1 -1
  139. package/dist/src/ui/commands/{shellsCommand.js → tasksCommand.js} +6 -6
  140. package/dist/src/ui/commands/tasksCommand.js.map +1 -0
  141. package/dist/src/ui/commands/tasksCommand.test.js +30 -0
  142. package/dist/src/ui/commands/tasksCommand.test.js.map +1 -0
  143. package/dist/src/ui/commands/types.d.ts +9 -1
  144. package/dist/src/ui/components/AnsiOutput.js +7 -5
  145. package/dist/src/ui/components/AnsiOutput.js.map +1 -1
  146. package/dist/src/ui/components/AnsiOutput.test.js +13 -0
  147. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  148. package/dist/src/ui/components/AppHeader.js +11 -11
  149. package/dist/src/ui/components/AppHeader.js.map +1 -1
  150. package/dist/src/ui/components/AppHeader.test.js +6 -2
  151. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  152. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  153. package/dist/src/ui/components/AsciiArt.js +6 -6
  154. package/dist/src/ui/components/AskUserDialog.js +13 -13
  155. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  156. package/dist/src/ui/components/AskUserDialog.test.js +31 -0
  157. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  158. package/dist/src/ui/components/BackgroundTaskDisplay.d.ts +16 -0
  159. package/dist/src/ui/components/{BackgroundShellDisplay.js → BackgroundTaskDisplay.js} +12 -12
  160. package/dist/src/ui/components/BackgroundTaskDisplay.js.map +1 -0
  161. package/dist/src/ui/components/{BackgroundShellDisplay.test.js → BackgroundTaskDisplay.test.js} +26 -26
  162. package/dist/src/ui/components/BackgroundTaskDisplay.test.js.map +1 -0
  163. package/dist/src/ui/components/Composer.js +20 -208
  164. package/dist/src/ui/components/Composer.js.map +1 -1
  165. package/dist/src/ui/components/Composer.test.js +22 -17
  166. package/dist/src/ui/components/Composer.test.js.map +1 -1
  167. package/dist/src/ui/components/ContextSummaryDisplay.js +3 -1
  168. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  169. package/dist/src/ui/components/CopyModeWarning.js +3 -6
  170. package/dist/src/ui/components/CopyModeWarning.js.map +1 -1
  171. package/dist/src/ui/components/CopyModeWarning.test.js +7 -8
  172. package/dist/src/ui/components/CopyModeWarning.test.js.map +1 -1
  173. package/dist/src/ui/components/ExitPlanModeDialog.js +9 -0
  174. package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
  175. package/dist/src/ui/components/ExitPlanModeDialog.test.js +15 -3
  176. package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
  177. package/dist/src/ui/components/FolderTrustDialog.test.js +7 -8
  178. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  179. package/dist/src/ui/components/Footer.js +36 -9
  180. package/dist/src/ui/components/Footer.js.map +1 -1
  181. package/dist/src/ui/components/Footer.test.js +85 -6
  182. package/dist/src/ui/components/Footer.test.js.map +1 -1
  183. package/dist/src/ui/components/FooterConfigDialog.js +1 -0
  184. package/dist/src/ui/components/FooterConfigDialog.js.map +1 -1
  185. package/dist/src/ui/components/FooterConfigDialog.test.js +1 -1
  186. package/dist/src/ui/components/Help.test.js +1 -1
  187. package/dist/src/ui/components/Help.test.js.map +1 -1
  188. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
  189. package/dist/src/ui/components/HistoryItemDisplay.js +14 -12
  190. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  191. package/dist/src/ui/components/InputPrompt.d.ts +10 -5
  192. package/dist/src/ui/components/InputPrompt.js +195 -90
  193. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  194. package/dist/src/ui/components/InputPrompt.test.d.ts +12 -1
  195. package/dist/src/ui/components/InputPrompt.test.js +370 -160
  196. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  197. package/dist/src/ui/components/LoadingIndicator.js +1 -2
  198. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  199. package/dist/src/ui/components/LoadingIndicator.test.js +7 -0
  200. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  201. package/dist/src/ui/components/MainContent.d.ts +1 -1
  202. package/dist/src/ui/components/MainContent.js +105 -34
  203. package/dist/src/ui/components/MainContent.js.map +1 -1
  204. package/dist/src/ui/components/MainContent.test.js +12 -9
  205. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  206. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +1 -0
  207. package/dist/src/ui/components/MemoryUsageDisplay.js +5 -2
  208. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  209. package/dist/src/ui/components/ModelDialog.js +50 -72
  210. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  211. package/dist/src/ui/components/ModelDialog.test.js +1 -0
  212. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  213. package/dist/src/ui/components/ModelQuotaDisplay.d.ts +18 -0
  214. package/dist/src/ui/components/ModelQuotaDisplay.js +104 -0
  215. package/dist/src/ui/components/ModelQuotaDisplay.js.map +1 -0
  216. package/dist/src/ui/components/ModelQuotaDisplay.test.d.ts +6 -0
  217. package/dist/src/ui/components/ModelQuotaDisplay.test.js +62 -0
  218. package/dist/src/ui/components/ModelQuotaDisplay.test.js.map +1 -0
  219. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +1 -1
  220. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  221. package/dist/src/ui/components/ProgressBar.d.ts +13 -0
  222. package/dist/src/ui/components/ProgressBar.js +17 -0
  223. package/dist/src/ui/components/ProgressBar.js.map +1 -0
  224. package/dist/src/ui/components/ProgressBar.test.d.ts +6 -0
  225. package/dist/src/ui/components/ProgressBar.test.js +28 -0
  226. package/dist/src/ui/components/ProgressBar.test.js.map +1 -0
  227. package/dist/src/ui/components/StatsDisplay.d.ts +2 -2
  228. package/dist/src/ui/components/StatsDisplay.js +47 -128
  229. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  230. package/dist/src/ui/components/StatsDisplay.test.js +65 -136
  231. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  232. package/dist/src/ui/components/StatusDisplay.js +1 -1
  233. package/dist/src/ui/components/StatusDisplay.js.map +1 -1
  234. package/dist/src/ui/components/StatusDisplay.test.js +3 -3
  235. package/dist/src/ui/components/StatusDisplay.test.js.map +1 -1
  236. package/dist/src/ui/components/StatusRow.d.ts +32 -0
  237. package/dist/src/ui/components/StatusRow.js +180 -0
  238. package/dist/src/ui/components/StatusRow.js.map +1 -0
  239. package/dist/src/ui/components/StatusRow.test.d.ts +6 -0
  240. package/dist/src/ui/components/StatusRow.test.js +99 -0
  241. package/dist/src/ui/components/StatusRow.test.js.map +1 -0
  242. package/dist/src/ui/components/ToastDisplay.d.ts +2 -1
  243. package/dist/src/ui/components/ToastDisplay.js +7 -5
  244. package/dist/src/ui/components/ToastDisplay.js.map +1 -1
  245. package/dist/src/ui/components/ToastDisplay.test.js +34 -20
  246. package/dist/src/ui/components/ToastDisplay.test.js.map +1 -1
  247. package/dist/src/ui/components/ToolConfirmationQueue.js +24 -9
  248. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  249. package/dist/src/ui/components/ToolConfirmationQueue.test.js +4 -6
  250. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  251. package/dist/src/ui/components/UserIdentity.js +8 -5
  252. package/dist/src/ui/components/UserIdentity.js.map +1 -1
  253. package/dist/src/ui/components/messages/DenseToolMessage.d.ts +13 -0
  254. package/dist/src/ui/components/messages/DenseToolMessage.js +270 -0
  255. package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -0
  256. package/dist/src/ui/components/messages/DenseToolMessage.test.d.ts +6 -0
  257. package/dist/src/ui/components/messages/DenseToolMessage.test.js +383 -0
  258. package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +1 -0
  259. package/dist/src/ui/components/messages/DiffRenderer.d.ts +18 -0
  260. package/dist/src/ui/components/messages/DiffRenderer.js +54 -34
  261. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  262. package/dist/src/ui/components/messages/DiffRenderer.test.js +12 -6
  263. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  264. package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -0
  265. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  266. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  267. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +1 -1
  268. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +1 -1
  269. package/dist/src/ui/components/messages/ShellToolMessage.test.js +44 -33
  270. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -1
  271. package/dist/src/ui/components/messages/SubagentGroupDisplay.js +3 -2
  272. package/dist/src/ui/components/messages/SubagentGroupDisplay.js.map +1 -1
  273. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js +1 -1
  274. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js.map +1 -1
  275. package/dist/src/ui/components/messages/SubagentHistoryMessage.d.ts +13 -0
  276. package/dist/src/ui/components/messages/SubagentHistoryMessage.js +4 -0
  277. package/dist/src/ui/components/messages/SubagentHistoryMessage.js.map +1 -0
  278. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.d.ts +6 -0
  279. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js +68 -0
  280. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js.map +1 -0
  281. package/dist/src/ui/components/messages/SubagentProgressDisplay.d.ts +2 -1
  282. package/dist/src/ui/components/messages/SubagentProgressDisplay.js +2 -2
  283. package/dist/src/ui/components/messages/SubagentProgressDisplay.js.map +1 -1
  284. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js +0 -4
  285. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js.map +1 -1
  286. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +1 -0
  287. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +108 -70
  288. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  289. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +40 -25
  290. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  291. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.d.ts +6 -0
  292. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js +147 -0
  293. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js.map +1 -0
  294. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -0
  295. package/dist/src/ui/components/messages/ToolGroupMessage.js +219 -52
  296. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  297. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +55 -3
  298. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  299. package/dist/src/ui/components/messages/ToolMessage.test.js +8 -7
  300. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  301. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js +1 -1
  302. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js.map +1 -1
  303. package/dist/src/ui/components/messages/ToolResultDisplay.js +57 -15
  304. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  305. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +66 -3
  306. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  307. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js +5 -4
  308. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js.map +1 -1
  309. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +3 -3
  310. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -1
  311. package/dist/src/ui/components/messages/TopicMessage.d.ts +15 -0
  312. package/dist/src/ui/components/messages/TopicMessage.js +56 -0
  313. package/dist/src/ui/components/messages/TopicMessage.js.map +1 -0
  314. package/dist/src/ui/components/messages/TopicMessage.test.d.ts +6 -0
  315. package/dist/src/ui/components/messages/TopicMessage.test.js +77 -0
  316. package/dist/src/ui/components/messages/TopicMessage.test.js.map +1 -0
  317. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +1 -0
  318. package/dist/src/ui/components/shared/MaxSizedBox.js +10 -7
  319. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  320. package/dist/src/ui/components/shared/Scrollable.d.ts +3 -0
  321. package/dist/src/ui/components/shared/Scrollable.js +6 -2
  322. package/dist/src/ui/components/shared/Scrollable.js.map +1 -1
  323. package/dist/src/ui/components/shared/ScrollableList.d.ts +9 -12
  324. package/dist/src/ui/components/shared/ScrollableList.js +2 -2
  325. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
  326. package/dist/src/ui/components/shared/VirtualizedList.d.ts +13 -1
  327. package/dist/src/ui/components/shared/VirtualizedList.js +148 -37
  328. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  329. package/dist/src/ui/components/shared/VirtualizedList.test.js +1 -10
  330. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -1
  331. package/dist/src/ui/components/shared/text-buffer.d.ts +1 -0
  332. package/dist/src/ui/components/shared/text-buffer.js +19 -21
  333. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  334. package/dist/src/ui/components/views/ExtensionDetails.d.ts +4 -1
  335. package/dist/src/ui/components/views/ExtensionDetails.js +14 -4
  336. package/dist/src/ui/components/views/ExtensionDetails.js.map +1 -1
  337. package/dist/src/ui/components/views/ExtensionDetails.test.js +25 -1
  338. package/dist/src/ui/components/views/ExtensionDetails.test.js.map +1 -1
  339. package/dist/src/ui/components/views/ExtensionRegistryView.js +19 -5
  340. package/dist/src/ui/components/views/ExtensionRegistryView.js.map +1 -1
  341. package/dist/src/ui/components/views/ExtensionRegistryView.test.js +38 -0
  342. package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +1 -1
  343. package/dist/src/ui/components/views/SkillsList.js +2 -1
  344. package/dist/src/ui/components/views/SkillsList.js.map +1 -1
  345. package/dist/src/ui/components/views/SkillsList.test.js +3 -1
  346. package/dist/src/ui/components/views/SkillsList.test.js.map +1 -1
  347. package/dist/src/ui/constants/tips.js +2 -2
  348. package/dist/src/ui/constants/tips.js.map +1 -1
  349. package/dist/src/ui/constants.d.ts +6 -0
  350. package/dist/src/ui/constants.js +15 -0
  351. package/dist/src/ui/constants.js.map +1 -1
  352. package/dist/src/ui/contexts/InputContext.d.ts +17 -0
  353. package/dist/src/ui/contexts/InputContext.js +15 -0
  354. package/dist/src/ui/contexts/InputContext.js.map +1 -0
  355. package/dist/src/ui/contexts/KeypressContext.js +1 -1
  356. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  357. package/dist/src/ui/contexts/KeypressContext.test.js +25 -1
  358. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  359. package/dist/src/ui/contexts/ScrollProvider.js +25 -3
  360. package/dist/src/ui/contexts/ScrollProvider.js.map +1 -1
  361. package/dist/src/ui/contexts/ScrollProvider.test.js +100 -0
  362. package/dist/src/ui/contexts/ScrollProvider.test.js.map +1 -1
  363. package/dist/src/ui/contexts/SessionContext.d.ts +2 -2
  364. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  365. package/dist/src/ui/contexts/ToolActionsContext.d.ts +6 -0
  366. package/dist/src/ui/contexts/ToolActionsContext.js +19 -11
  367. package/dist/src/ui/contexts/ToolActionsContext.js.map +1 -1
  368. package/dist/src/ui/contexts/ToolActionsContext.test.js +90 -7
  369. package/dist/src/ui/contexts/ToolActionsContext.test.js.map +1 -1
  370. package/dist/src/ui/contexts/UIActionsContext.d.ts +4 -3
  371. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  372. package/dist/src/ui/contexts/UIStateContext.d.ts +10 -16
  373. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  374. package/dist/src/ui/hooks/atCommandProcessor.test.js +2 -1
  375. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  376. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js +2 -1
  377. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js.map +1 -1
  378. package/dist/src/ui/hooks/shellReducer.d.ts +12 -10
  379. package/dist/src/ui/hooks/shellReducer.js +67 -37
  380. package/dist/src/ui/hooks/shellReducer.js.map +1 -1
  381. package/dist/src/ui/hooks/shellReducer.test.js +207 -36
  382. package/dist/src/ui/hooks/shellReducer.test.js.map +1 -1
  383. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  384. package/dist/src/ui/hooks/slashCommandProcessor.js +1 -1
  385. package/dist/src/ui/hooks/slashCommandProcessor.test.js +1 -1
  386. package/dist/src/ui/hooks/toolMapping.js +7 -0
  387. package/dist/src/ui/hooks/toolMapping.js.map +1 -1
  388. package/dist/src/ui/hooks/useAlternateBuffer.js +6 -1
  389. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
  390. package/dist/src/ui/hooks/useAlternateBuffer.test.js +5 -0
  391. package/dist/src/ui/hooks/useAlternateBuffer.test.js.map +1 -1
  392. package/dist/src/ui/hooks/useAnimatedScrollbar.js +2 -2
  393. package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -1
  394. package/dist/src/ui/hooks/useAtCompletion.js +1 -1
  395. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  396. package/dist/src/ui/hooks/useBackgroundTaskManager.d.ts +22 -0
  397. package/dist/src/ui/hooks/useBackgroundTaskManager.js +58 -0
  398. package/dist/src/ui/hooks/useBackgroundTaskManager.js.map +1 -0
  399. package/dist/src/ui/hooks/{useBackgroundShellManager.test.js → useBackgroundTaskManager.test.js} +50 -50
  400. package/dist/src/ui/hooks/useBackgroundTaskManager.test.js.map +1 -0
  401. package/dist/src/ui/hooks/useBanner.d.ts +1 -0
  402. package/dist/src/ui/hooks/useBanner.js +16 -9
  403. package/dist/src/ui/hooks/useBanner.js.map +1 -1
  404. package/dist/src/ui/hooks/useBanner.test.js +7 -4
  405. package/dist/src/ui/hooks/useBanner.test.js.map +1 -1
  406. package/dist/src/ui/hooks/useBatchedScroll.js +2 -2
  407. package/dist/src/ui/hooks/useBatchedScroll.js.map +1 -1
  408. package/dist/src/ui/hooks/useCommandCompletion.d.ts +2 -1
  409. package/dist/src/ui/hooks/useCommandCompletion.js +13 -3
  410. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  411. package/dist/src/ui/hooks/useCommandCompletion.test.d.ts +1 -1
  412. package/dist/src/ui/hooks/useCommandCompletion.test.js +82 -6
  413. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  414. package/dist/src/ui/hooks/useComposerStatus.d.ts +21 -0
  415. package/dist/src/ui/hooks/useComposerStatus.js +78 -0
  416. package/dist/src/ui/hooks/useComposerStatus.js.map +1 -0
  417. package/dist/src/ui/hooks/useConsoleMessages.test.js +2 -2
  418. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -1
  419. package/dist/src/ui/hooks/useExecutionLifecycle.d.ts +28 -0
  420. package/dist/src/ui/hooks/{shellCommandProcessor.js → useExecutionLifecycle.js} +140 -58
  421. package/dist/src/ui/hooks/useExecutionLifecycle.js.map +1 -0
  422. package/dist/src/ui/hooks/useExecutionLifecycle.test.d.ts +6 -0
  423. package/dist/src/ui/hooks/{shellCommandProcessor.test.js → useExecutionLifecycle.test.js} +123 -81
  424. package/dist/src/ui/hooks/useExecutionLifecycle.test.js.map +1 -0
  425. package/dist/src/ui/hooks/useFolderTrust.js +1 -1
  426. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  427. package/dist/src/ui/hooks/useFolderTrust.test.js +1 -1
  428. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  429. package/dist/src/ui/hooks/useGeminiStream.d.ts +6 -6
  430. package/dist/src/ui/hooks/useGeminiStream.js +141 -40
  431. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  432. package/dist/src/ui/hooks/useGeminiStream.test.js +176 -22
  433. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  434. package/dist/src/ui/hooks/useGitBranchName.js +2 -2
  435. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  436. package/dist/src/ui/hooks/useLoadingIndicator.js +1 -1
  437. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  438. package/dist/src/ui/hooks/useLoadingIndicator.test.js +10 -0
  439. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  440. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +2 -2
  441. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  442. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +1 -1
  443. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  444. package/dist/src/ui/hooks/usePhraseCycler.js +4 -2
  445. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  446. package/dist/src/ui/hooks/useSessionBrowser.d.ts +1 -1
  447. package/dist/src/ui/hooks/useSessionBrowser.js +2 -2
  448. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  449. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  450. package/dist/src/ui/hooks/useSlashCompletion.js +37 -63
  451. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  452. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +1 -1
  453. package/dist/src/ui/hooks/useSlashCompletion.test.js +57 -47
  454. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  455. package/dist/src/ui/hooks/useToolScheduler.d.ts +2 -1
  456. package/dist/src/ui/hooks/useToolScheduler.js +55 -1
  457. package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  458. package/dist/src/ui/hooks/useToolScheduler.test.js +107 -9
  459. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  460. package/dist/src/ui/key/keyBindings.d.ts +9 -1
  461. package/dist/src/ui/key/keyBindings.js +40 -3
  462. package/dist/src/ui/key/keyBindings.js.map +1 -1
  463. package/dist/src/ui/key/keyMatchers.test.js +12 -2
  464. package/dist/src/ui/key/keyMatchers.test.js.map +1 -1
  465. package/dist/src/ui/layouts/DefaultAppLayout.js +8 -6
  466. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  467. package/dist/src/ui/layouts/DefaultAppLayout.test.js +27 -22
  468. package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +1 -1
  469. package/dist/src/ui/noninteractive/nonInteractiveUi.js +1 -1
  470. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.d.ts +7 -0
  471. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.js +147 -0
  472. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.js.map +1 -0
  473. package/dist/src/ui/themes/theme-manager.js +2 -0
  474. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  475. package/dist/src/ui/themes/theme.js +1 -1
  476. package/dist/src/ui/themes/theme.js.map +1 -1
  477. package/dist/src/ui/types.d.ts +10 -2
  478. package/dist/src/ui/types.js.map +1 -1
  479. package/dist/src/ui/utils/CodeColorizer.d.ts +1 -0
  480. package/dist/src/ui/utils/CodeColorizer.js +17 -18
  481. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  482. package/dist/src/ui/utils/ConsolePatcher.d.ts +1 -0
  483. package/dist/src/ui/utils/ConsolePatcher.js +12 -5
  484. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  485. package/dist/src/ui/utils/ConsolePatcher.test.d.ts +6 -0
  486. package/dist/src/ui/utils/ConsolePatcher.test.js +199 -0
  487. package/dist/src/ui/utils/ConsolePatcher.test.js.map +1 -0
  488. package/dist/src/ui/utils/TableRenderer.js +3 -3
  489. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  490. package/dist/src/ui/utils/borderStyles.d.ts +2 -2
  491. package/dist/src/ui/utils/borderStyles.js +2 -2
  492. package/dist/src/ui/utils/borderStyles.js.map +1 -1
  493. package/dist/src/ui/utils/directoryUtils.js +1 -1
  494. package/dist/src/ui/utils/directoryUtils.js.map +1 -1
  495. package/dist/src/ui/utils/fileUtils.d.ts +10 -0
  496. package/dist/src/ui/utils/fileUtils.js +17 -0
  497. package/dist/src/ui/utils/fileUtils.js.map +1 -0
  498. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +1 -0
  499. package/dist/src/ui/utils/terminalCapabilityManager.js +8 -0
  500. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  501. package/dist/src/ui/utils/terminalCapabilityManager.test.js +38 -0
  502. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -1
  503. package/dist/src/ui/utils/toolLayoutUtils.d.ts +1 -1
  504. package/dist/src/ui/utils/toolLayoutUtils.js +1 -1
  505. package/dist/src/ui/utils/ui-sizing.test.js +1 -0
  506. package/dist/src/ui/utils/ui-sizing.test.js.map +1 -1
  507. package/dist/src/ui/utils/updateCheck.d.ts +1 -0
  508. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  509. package/dist/src/utils/activityLogger.js +16 -0
  510. package/dist/src/utils/activityLogger.js.map +1 -1
  511. package/dist/src/utils/cleanup.js +12 -5
  512. package/dist/src/utils/cleanup.js.map +1 -1
  513. package/dist/src/utils/commands.js +15 -0
  514. package/dist/src/utils/commands.js.map +1 -1
  515. package/dist/src/utils/commands.test.js +79 -0
  516. package/dist/src/utils/commands.test.js.map +1 -1
  517. package/dist/src/utils/envVarResolver.d.ts +5 -2
  518. package/dist/src/utils/envVarResolver.js +15 -6
  519. package/dist/src/utils/envVarResolver.js.map +1 -1
  520. package/dist/src/utils/envVarResolver.test.js +41 -24
  521. package/dist/src/utils/envVarResolver.test.js.map +1 -1
  522. package/dist/src/utils/errors.js +4 -4
  523. package/dist/src/utils/errors.js.map +1 -1
  524. package/dist/src/utils/events.d.ts +3 -1
  525. package/dist/src/utils/events.js +1 -0
  526. package/dist/src/utils/events.js.map +1 -1
  527. package/dist/src/utils/gitUtils.js +4 -4
  528. package/dist/src/utils/gitUtils.js.map +1 -1
  529. package/dist/src/utils/handleAutoUpdate.js +10 -3
  530. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  531. package/dist/src/utils/handleAutoUpdate.test.js +8 -2
  532. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  533. package/dist/src/utils/installationInfo.js +1 -1
  534. package/dist/src/utils/installationInfo.js.map +1 -1
  535. package/dist/src/utils/jsonoutput.js +1 -1
  536. package/dist/src/utils/jsonoutput.js.map +1 -1
  537. package/dist/src/utils/sandboxUtils.js +1 -1
  538. package/dist/src/utils/sandboxUtils.js.map +1 -1
  539. package/dist/src/utils/sessionCleanup.js +7 -30
  540. package/dist/src/utils/sessionCleanup.js.map +1 -1
  541. package/dist/src/utils/sessionCleanup.test.js +3 -0
  542. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  543. package/dist/src/utils/sessionUtils.js +1 -0
  544. package/dist/src/utils/sessionUtils.js.map +1 -1
  545. package/dist/src/utils/sessionUtils.test.js +179 -3
  546. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  547. package/dist/src/utils/sessions.js +1 -1
  548. package/dist/src/utils/sessions.js.map +1 -1
  549. package/dist/src/utils/skillUtils.js +3 -1
  550. package/dist/src/utils/skillUtils.js.map +1 -1
  551. package/dist/src/utils/skillUtils.test.js +4 -6
  552. package/dist/src/utils/skillUtils.test.js.map +1 -1
  553. package/dist/src/utils/terminalNotifications.js +2 -4
  554. package/dist/src/utils/terminalNotifications.js.map +1 -1
  555. package/dist/src/utils/terminalNotifications.test.js +5 -3
  556. package/dist/src/utils/terminalNotifications.test.js.map +1 -1
  557. package/dist/src/utils/userStartupWarnings.js +2 -2
  558. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  559. package/dist/tsconfig.tsbuildinfo +1 -1
  560. package/package.json +4 -4
  561. package/dist/src/ui/commands/shellsCommand.js.map +0 -1
  562. package/dist/src/ui/commands/shellsCommand.test.js +0 -29
  563. package/dist/src/ui/commands/shellsCommand.test.js.map +0 -1
  564. package/dist/src/ui/components/BackgroundShellDisplay.d.ts +0 -16
  565. package/dist/src/ui/components/BackgroundShellDisplay.js.map +0 -1
  566. package/dist/src/ui/components/BackgroundShellDisplay.test.js.map +0 -1
  567. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +0 -28
  568. package/dist/src/ui/hooks/shellCommandProcessor.js.map +0 -1
  569. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +0 -1
  570. package/dist/src/ui/hooks/useBackgroundShellManager.d.ts +0 -22
  571. package/dist/src/ui/hooks/useBackgroundShellManager.js +0 -58
  572. package/dist/src/ui/hooks/useBackgroundShellManager.js.map +0 -1
  573. package/dist/src/ui/hooks/useBackgroundShellManager.test.js.map +0 -1
  574. /package/dist/src/{ui/commands/shellsCommand.test.d.ts → nonInteractiveCliAgentSession.test.d.ts} +0 -0
  575. /package/dist/src/ui/{components/BackgroundShellDisplay.test.d.ts → commands/tasksCommand.test.d.ts} +0 -0
  576. /package/dist/src/ui/{hooks/shellCommandProcessor.test.d.ts → components/BackgroundTaskDisplay.test.d.ts} +0 -0
  577. /package/dist/src/ui/hooks/{useBackgroundShellManager.test.d.ts → useBackgroundTaskManager.test.d.ts} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env -S node --no-warnings=DEP0040
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * @license
4
4
  * Copyright 2025 Google LLC
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env -S node --no-warnings=DEP0040
1
+ #!/usr/bin/env node
2
2
  /**
3
3
  * @license
4
4
  * Copyright 2025 Google LLC
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@machina.ai/cell-cli",
3
- "version": "1.36.0-rc1",
3
+ "version": "1.38.1-rc1",
4
4
  "description": "Cell CLI",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,11 +15,11 @@
15
15
  ""
16
16
  ],
17
17
  "config": {
18
- "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.36.0"
18
+ "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.38.1"
19
19
  },
20
20
  "dependencies": {
21
21
  "@agentclientprotocol/sdk": "^0.16.1",
22
- "@google/gemini-cli-core": "npm:@machina.ai/cell-cli-core@1.36.0-rc1",
22
+ "@google/gemini-cli-core": "npm:@machina.ai/cell-cli-core@1.38.1-rc1",
23
23
  "@google/genai": "1.30.0",
24
24
  "@iarna/toml": "^2.2.5",
25
25
  "@machina.ai/api-proxy": "1.18.4-rc0",
@@ -40,7 +40,7 @@
40
40
  "fzf": "^0.5.2",
41
41
  "glob": "^12.0.0",
42
42
  "highlight.js": "^11.11.1",
43
- "ink": "npm:@jrichman/ink@6.6.3",
43
+ "ink": "npm:@jrichman/ink@6.6.7",
44
44
  "ink-gradient": "^3.0.0",
45
45
  "ink-spinner": "^5.0.0",
46
46
  "ink-text-input": "^6.0.0",
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CoreToolCallStatus, AuthType, logToolCall, convertToFunctionResponse, ToolConfirmationOutcome, clearCachedCredentialFile, isNodeError, getErrorMessage, isWithinRoot, getErrorStatus, MCPServerConfig, DiscoveredMCPTool, StreamEventType, ToolCallEvent, debugLogger, ReadManyFilesTool, REFERENCE_CONTENT_START, resolveModel, createWorkingStdio, startupProfiler, Kind, partListUnionToString, LlmRole, ApprovalMode, getVersion, convertSessionToClientHistory, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_FLASH_LITE_MODEL, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_3_1_MODEL, PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL, PREVIEW_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL_AUTO, PREVIEW_GEMINI_MODEL_AUTO, getDisplayString, } from '@google/gemini-cli-core';
6
+ import { CoreToolCallStatus, AuthType, logToolCall, convertToFunctionResponse, ToolConfirmationOutcome, clearCachedCredentialFile, isNodeError, getErrorMessage, isWithinRoot, getErrorStatus, MCPServerConfig, DiscoveredMCPTool, StreamEventType, ToolCallEvent, debugLogger, ReadManyFilesTool, REFERENCE_CONTENT_START, createWorkingStdio, startupProfiler, Kind, partListUnionToString, LlmRole, ApprovalMode, getVersion, convertSessionToClientHistory, DEFAULT_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_FLASH_LITE_MODEL, PREVIEW_GEMINI_MODEL, PREVIEW_GEMINI_3_1_MODEL, PREVIEW_GEMINI_3_1_FLASH_LITE_MODEL, PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL, PREVIEW_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL_AUTO, PREVIEW_GEMINI_MODEL_AUTO, getDisplayString, processSingleFileContent, InvalidStreamError, updatePolicy, } from '@google/gemini-cli-core';
7
7
  import * as acp from '@agentclientprotocol/sdk';
8
8
  import { AcpFileSystemService } from './fileSystemService.js';
9
9
  import { getAcpErrorMessage } from './acpErrors.js';
@@ -12,6 +12,7 @@ function hasMeta(obj) {
12
12
  return typeof obj === 'object' && obj !== null && '_meta' in obj;
13
13
  }
14
14
  import { SettingScope, loadSettings, } from '../config/settings.js';
15
+ import { createPolicyUpdater } from '../config/policy.js';
15
16
  import * as fs from 'node:fs/promises';
16
17
  import * as path from 'node:path';
17
18
  import { z } from 'zod';
@@ -20,6 +21,15 @@ import { loadCliConfig } from '../config/config.js';
20
21
  import { runExitCleanup } from '../utils/cleanup.js';
21
22
  import { SessionSelector } from '../utils/sessionUtils.js';
22
23
  import { CommandHandler } from './commandHandler.js';
24
+ const RequestPermissionResponseSchema = z.object({
25
+ outcome: z.discriminatedUnion('outcome', [
26
+ z.object({ outcome: z.literal('cancelled') }),
27
+ z.object({
28
+ outcome: z.literal('selected'),
29
+ optionId: z.string(),
30
+ }),
31
+ ]),
32
+ });
23
33
  export async function runAcpClient(config, settings, argv) {
24
34
  // ... (skip unchanged lines) ...
25
35
  const { stdout: workingStdout } = createWorkingStdio();
@@ -302,6 +312,7 @@ export class GeminiAgent {
302
312
  mcpServers: mergedMcpServers,
303
313
  };
304
314
  const config = await loadCliConfig(settings, sessionId, this.argv, { cwd });
315
+ createPolicyUpdater(config.getPolicyEngine(), config.messageBus, config.storage);
305
316
  return config;
306
317
  }
307
318
  async cancel(params) {
@@ -504,7 +515,14 @@ export class Session {
504
515
  }
505
516
  const functionCalls = [];
506
517
  try {
507
- const model = resolveModel(this.context.config.getModel(), (await this.context.config.getGemini31Launched?.()) ?? false);
518
+ const routingContext = {
519
+ history: chat.getHistory(/*curated=*/ true),
520
+ request: nextMessage?.parts ?? [],
521
+ signal: pendingSend.signal,
522
+ requestedModel: this.context.config.getModel(),
523
+ };
524
+ const router = this.context.config.getModelRouterService();
525
+ const { model } = await router.route(routingContext);
508
526
  const responseStream = await chat.sendMessageStream({ model }, nextMessage?.parts ?? [], promptId, pendingSend.signal, LlmRole.MAIN);
509
527
  nextMessage = null;
510
528
  let turnInputTokens = 0;
@@ -571,6 +589,35 @@ export class Session {
571
589
  (error instanceof Error && error.name === 'AbortError')) {
572
590
  return { stopReason: CoreToolCallStatus.Cancelled };
573
591
  }
592
+ if (error instanceof InvalidStreamError ||
593
+ (error &&
594
+ typeof error === 'object' &&
595
+ 'type' in error &&
596
+ (error.type === 'NO_RESPONSE_TEXT' ||
597
+ error.type === 'NO_FINISH_REASON' ||
598
+ error.type === 'MALFORMED_FUNCTION_CALL' ||
599
+ error.type === 'UNEXPECTED_TOOL_CALL'))) {
600
+ // The stream ended with an empty response or malformed tool call.
601
+ // Treat this as a graceful end to the model's turn rather than a crash.
602
+ return {
603
+ stopReason: 'end_turn',
604
+ _meta: {
605
+ quota: {
606
+ token_count: {
607
+ input_tokens: totalInputTokens,
608
+ output_tokens: totalOutputTokens,
609
+ },
610
+ model_usage: Array.from(modelUsageMap.entries()).map(([modelName, counts]) => ({
611
+ model: modelName,
612
+ token_count: {
613
+ input_tokens: counts.input,
614
+ output_tokens: counts.output,
615
+ },
616
+ })),
617
+ },
618
+ },
619
+ };
620
+ }
574
621
  throw new acp.RequestError(getErrorStatus(error) || 500, getAcpErrorMessage(error));
575
622
  }
576
623
  if (functionCalls.length > 0) {
@@ -687,7 +734,7 @@ export class Session {
687
734
  }
688
735
  const params = {
689
736
  sessionId: this.id,
690
- options: toPermissionOptions(confirmationDetails, this.context.config),
737
+ options: toPermissionOptions(confirmationDetails, this.context.config, this.settings.merged.security.enablePermanentToolApproval),
691
738
  toolCall: {
692
739
  toolCallId: callId,
693
740
  status: 'pending',
@@ -697,14 +744,15 @@ export class Session {
697
744
  kind: toAcpToolKind(tool.kind),
698
745
  },
699
746
  };
700
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
701
- const output = await this.connection.requestPermission(params);
702
- const outcome = output.outcome.outcome === CoreToolCallStatus.Cancelled
747
+ const output = RequestPermissionResponseSchema.parse(await this.connection.requestPermission(params));
748
+ const outcome = output.outcome.outcome === 'cancelled'
703
749
  ? ToolConfirmationOutcome.Cancel
704
750
  : z
705
751
  .nativeEnum(ToolConfirmationOutcome)
706
752
  .parse(output.outcome.optionId);
707
753
  await confirmationDetails.onConfirm(outcome);
754
+ // Update policy to enable Always Allow persistence
755
+ await updatePolicy(tool, outcome, confirmationDetails, this.context, this.context.messageBus, invocation);
708
756
  switch (outcome) {
709
757
  case ToolConfirmationOutcome.Cancel:
710
758
  return errorResponse(new Error(`Tool "${fc.name}" was canceled by the user.`));
@@ -864,6 +912,7 @@ export class Session {
864
912
  const pathSpecsToRead = [];
865
913
  const contentLabelsForDisplay = [];
866
914
  const ignoredPaths = [];
915
+ const directContents = [];
867
916
  const toolRegistry = this.context.toolRegistry;
868
917
  const readManyFilesTool = new ReadManyFilesTool(this.context.config, this.context.messageBus);
869
918
  const globTool = toolRegistry.getTool('glob');
@@ -880,23 +929,160 @@ export class Session {
880
929
  }
881
930
  let currentPathSpec = pathName;
882
931
  let resolvedSuccessfully = false;
932
+ let readDirectly = false;
883
933
  try {
884
934
  const absolutePath = path.resolve(this.context.config.getTargetDir(), pathName);
885
- if (isWithinRoot(absolutePath, this.context.config.getTargetDir())) {
886
- const stats = await fs.stat(absolutePath);
887
- if (stats.isDirectory()) {
888
- currentPathSpec = pathName.endsWith('/')
889
- ? `${pathName}**`
890
- : `${pathName}/**`;
891
- this.debug(`Path ${pathName} resolved to directory, using glob: ${currentPathSpec}`);
935
+ let validationError = this.context.config.validatePathAccess(absolutePath, 'read');
936
+ // We ask the user for explicit permission to read them if outside sandboxed workspace boundaries (and not already authorized).
937
+ if (validationError &&
938
+ !isWithinRoot(absolutePath, this.context.config.getTargetDir())) {
939
+ try {
940
+ const stats = await fs.stat(absolutePath);
941
+ if (stats.isFile()) {
942
+ const syntheticCallId = `resolve-prompt-${pathName}-${randomUUID()}`;
943
+ const params = {
944
+ sessionId: this.id,
945
+ options: [
946
+ {
947
+ optionId: ToolConfirmationOutcome.ProceedOnce,
948
+ name: 'Allow once',
949
+ kind: 'allow_once',
950
+ },
951
+ {
952
+ optionId: ToolConfirmationOutcome.Cancel,
953
+ name: 'Deny',
954
+ kind: 'reject_once',
955
+ },
956
+ ],
957
+ toolCall: {
958
+ toolCallId: syntheticCallId,
959
+ status: 'pending',
960
+ title: `Allow access to absolute path: ${pathName}`,
961
+ content: [
962
+ {
963
+ type: 'content',
964
+ content: {
965
+ type: 'text',
966
+ text: `The Agent needs access to read an attached file outside your workspace: ${pathName}`,
967
+ },
968
+ },
969
+ ],
970
+ locations: [],
971
+ kind: 'read',
972
+ },
973
+ };
974
+ const output = RequestPermissionResponseSchema.parse(await this.connection.requestPermission(params));
975
+ const outcome = output.outcome.outcome === 'cancelled'
976
+ ? ToolConfirmationOutcome.Cancel
977
+ : z
978
+ .nativeEnum(ToolConfirmationOutcome)
979
+ .parse(output.outcome.optionId);
980
+ if (outcome === ToolConfirmationOutcome.ProceedOnce) {
981
+ this.context.config
982
+ .getWorkspaceContext()
983
+ .addReadOnlyPath(absolutePath);
984
+ validationError = null;
985
+ }
986
+ else {
987
+ this.debug(`Direct read authorization denied for absolute path ${pathName}`);
988
+ directContents.push({
989
+ spec: pathName,
990
+ content: `[Warning: Access to absolute path \`${pathName}\` denied by user.]`,
991
+ });
992
+ continue;
993
+ }
994
+ }
892
995
  }
893
- else {
894
- this.debug(`Path ${pathName} resolved to file: ${currentPathSpec}`);
996
+ catch (error) {
997
+ this.debug(`Failed to request permission for absolute attachment ${pathName}: ${getErrorMessage(error)}`);
998
+ await this.sendUpdate({
999
+ sessionUpdate: 'agent_thought_chunk',
1000
+ content: {
1001
+ type: 'text',
1002
+ text: `Warning: Failed to display permission dialog for \`${absolutePath}\`. Error: ${getErrorMessage(error)}`,
1003
+ },
1004
+ });
1005
+ }
1006
+ }
1007
+ if (!validationError) {
1008
+ // If it's an absolute path that is authorized (e.g. added via readOnlyPaths),
1009
+ // read it directly to avoid ReadManyFilesTool absolute path resolution issues.
1010
+ if ((path.isAbsolute(pathName) ||
1011
+ !isWithinRoot(absolutePath, this.context.config.getTargetDir())) &&
1012
+ !readDirectly) {
1013
+ try {
1014
+ const stats = await fs.stat(absolutePath);
1015
+ if (stats.isFile()) {
1016
+ const fileReadResult = await processSingleFileContent(absolutePath, this.context.config.getTargetDir(), this.context.config.getFileSystemService());
1017
+ if (!fileReadResult.error) {
1018
+ if (typeof fileReadResult.llmContent === 'object' &&
1019
+ 'inlineData' in fileReadResult.llmContent) {
1020
+ directContents.push({
1021
+ spec: pathName,
1022
+ part: fileReadResult.llmContent,
1023
+ });
1024
+ }
1025
+ else if (typeof fileReadResult.llmContent === 'string') {
1026
+ let contentToPush = fileReadResult.llmContent;
1027
+ if (fileReadResult.isTruncated) {
1028
+ contentToPush = `[WARNING: This file was truncated]\n\n${contentToPush}`;
1029
+ }
1030
+ directContents.push({
1031
+ spec: pathName,
1032
+ content: contentToPush,
1033
+ });
1034
+ }
1035
+ readDirectly = true;
1036
+ resolvedSuccessfully = true;
1037
+ }
1038
+ else {
1039
+ this.debug(`Direct read failed for absolute path ${pathName}: ${fileReadResult.error}`);
1040
+ await this.sendUpdate({
1041
+ sessionUpdate: 'agent_thought_chunk',
1042
+ content: {
1043
+ type: 'text',
1044
+ text: `Warning: file read failed for \`${pathName}\`. Reason: ${fileReadResult.error}`,
1045
+ },
1046
+ });
1047
+ continue;
1048
+ }
1049
+ }
1050
+ }
1051
+ catch (error) {
1052
+ this.debug(`File stat/access error for absolute path ${pathName}: ${getErrorMessage(error)}`);
1053
+ await this.sendUpdate({
1054
+ sessionUpdate: 'agent_thought_chunk',
1055
+ content: {
1056
+ type: 'text',
1057
+ text: `Warning: file access failed for \`${pathName}\`. Reason: ${getErrorMessage(error)}`,
1058
+ },
1059
+ });
1060
+ continue;
1061
+ }
1062
+ }
1063
+ if (!readDirectly) {
1064
+ const stats = await fs.stat(absolutePath);
1065
+ if (stats.isDirectory()) {
1066
+ currentPathSpec = pathName.endsWith('/')
1067
+ ? `${pathName}**`
1068
+ : `${pathName}/**`;
1069
+ this.debug(`Path ${pathName} resolved to directory, using glob: ${currentPathSpec}`);
1070
+ }
1071
+ else {
1072
+ this.debug(`Path ${pathName} resolved to file: ${currentPathSpec}`);
1073
+ }
1074
+ resolvedSuccessfully = true;
895
1075
  }
896
- resolvedSuccessfully = true;
897
1076
  }
898
1077
  else {
899
- this.debug(`Path ${pathName} is outside the project directory. Skipping.`);
1078
+ this.debug(`Path ${pathName} access disallowed: ${validationError}. Skipping.`);
1079
+ await this.sendUpdate({
1080
+ sessionUpdate: 'agent_thought_chunk',
1081
+ content: {
1082
+ type: 'text',
1083
+ text: `Warning: skipping access to \`${pathName}\`. Reason: ${validationError}`,
1084
+ },
1085
+ });
900
1086
  }
901
1087
  }
902
1088
  catch (error) {
@@ -940,7 +1126,9 @@ export class Session {
940
1126
  }
941
1127
  }
942
1128
  if (resolvedSuccessfully) {
943
- pathSpecsToRead.push(currentPathSpec);
1129
+ if (!readDirectly) {
1130
+ pathSpecsToRead.push(currentPathSpec);
1131
+ }
944
1132
  atPathToResolvedSpecMap.set(pathName, currentPathSpec);
945
1133
  contentLabelsForDisplay.push(pathName);
946
1134
  }
@@ -991,7 +1179,9 @@ export class Session {
991
1179
  this.debug(`Ignored ${ignoredPaths.length} files: ${ignoredPaths.join(', ')}`);
992
1180
  }
993
1181
  const processedQueryParts = [{ text: initialQueryText }];
994
- if (pathSpecsToRead.length === 0 && embeddedContext.length === 0) {
1182
+ if (pathSpecsToRead.length === 0 &&
1183
+ embeddedContext.length === 0 &&
1184
+ directContents.length === 0) {
995
1185
  // Fallback for lone "@" or completely invalid @-commands resulting in empty initialQueryText
996
1186
  debugLogger.warn('No valid file paths found in @ commands to read.');
997
1187
  return [{ text: initialQueryText }];
@@ -1078,6 +1268,27 @@ export class Session {
1078
1268
  throw error;
1079
1269
  }
1080
1270
  }
1271
+ if (directContents.length > 0) {
1272
+ const hasReferenceStart = processedQueryParts.some((p) => 'text' in p &&
1273
+ typeof p.text === 'string' &&
1274
+ p.text.includes(REFERENCE_CONTENT_START));
1275
+ if (!hasReferenceStart) {
1276
+ processedQueryParts.push({
1277
+ text: `\n${REFERENCE_CONTENT_START}`,
1278
+ });
1279
+ }
1280
+ for (const item of directContents) {
1281
+ processedQueryParts.push({
1282
+ text: `\nContent from @${item.spec}:\n`,
1283
+ });
1284
+ if (item.content) {
1285
+ processedQueryParts.push({ text: item.content });
1286
+ }
1287
+ else if (item.part) {
1288
+ processedQueryParts.push(item.part);
1289
+ }
1290
+ }
1291
+ }
1081
1292
  if (embeddedContext.length > 0) {
1082
1293
  processedQueryParts.push({
1083
1294
  text: '\n--- Content from referenced context ---',
@@ -1156,7 +1367,7 @@ const basicPermissionOptions = [
1156
1367
  kind: 'reject_once',
1157
1368
  },
1158
1369
  ];
1159
- function toPermissionOptions(confirmation, config) {
1370
+ function toPermissionOptions(confirmation, config, enablePermanentToolApproval = false) {
1160
1371
  const disableAlwaysAllow = config.getDisableAlwaysAllow();
1161
1372
  const options = [];
1162
1373
  if (!disableAlwaysAllow) {
@@ -1164,34 +1375,62 @@ function toPermissionOptions(confirmation, config) {
1164
1375
  case 'edit':
1165
1376
  options.push({
1166
1377
  optionId: ToolConfirmationOutcome.ProceedAlways,
1167
- name: 'Allow All Edits',
1378
+ name: 'Allow for this session',
1168
1379
  kind: 'allow_always',
1169
1380
  });
1381
+ if (enablePermanentToolApproval) {
1382
+ options.push({
1383
+ optionId: ToolConfirmationOutcome.ProceedAlwaysAndSave,
1384
+ name: 'Allow for this file in all future sessions',
1385
+ kind: 'allow_always',
1386
+ });
1387
+ }
1170
1388
  break;
1171
1389
  case 'exec':
1172
1390
  options.push({
1173
1391
  optionId: ToolConfirmationOutcome.ProceedAlways,
1174
- name: `Always Allow ${confirmation.rootCommand}`,
1392
+ name: 'Allow for this session',
1175
1393
  kind: 'allow_always',
1176
1394
  });
1395
+ if (enablePermanentToolApproval) {
1396
+ options.push({
1397
+ optionId: ToolConfirmationOutcome.ProceedAlwaysAndSave,
1398
+ name: 'Allow this command for all future sessions',
1399
+ kind: 'allow_always',
1400
+ });
1401
+ }
1177
1402
  break;
1178
1403
  case 'mcp':
1179
1404
  options.push({
1180
1405
  optionId: ToolConfirmationOutcome.ProceedAlwaysServer,
1181
- name: `Always Allow ${confirmation.serverName}`,
1406
+ name: 'Allow all server tools for this session',
1182
1407
  kind: 'allow_always',
1183
1408
  }, {
1184
1409
  optionId: ToolConfirmationOutcome.ProceedAlwaysTool,
1185
- name: `Always Allow ${confirmation.toolName}`,
1410
+ name: 'Allow tool for this session',
1186
1411
  kind: 'allow_always',
1187
1412
  });
1413
+ if (enablePermanentToolApproval) {
1414
+ options.push({
1415
+ optionId: ToolConfirmationOutcome.ProceedAlwaysAndSave,
1416
+ name: 'Allow tool for all future sessions',
1417
+ kind: 'allow_always',
1418
+ });
1419
+ }
1188
1420
  break;
1189
1421
  case 'info':
1190
1422
  options.push({
1191
1423
  optionId: ToolConfirmationOutcome.ProceedAlways,
1192
- name: `Always Allow`,
1424
+ name: 'Allow for this session',
1193
1425
  kind: 'allow_always',
1194
1426
  });
1427
+ if (enablePermanentToolApproval) {
1428
+ options.push({
1429
+ optionId: ToolConfirmationOutcome.ProceedAlwaysAndSave,
1430
+ name: 'Allow for all future sessions',
1431
+ kind: 'allow_always',
1432
+ });
1433
+ }
1195
1434
  break;
1196
1435
  case 'ask_user':
1197
1436
  case 'exit_plan_mode':
@@ -1276,8 +1515,24 @@ function buildAvailableModels(config, settings) {
1276
1515
  const preferredModel = config.getModel() || DEFAULT_GEMINI_MODEL_AUTO;
1277
1516
  const shouldShowPreviewModels = config.getHasAccessToPreviewModel();
1278
1517
  const useGemini31 = config.getGemini31LaunchedSync?.() ?? false;
1518
+ const useGemini31FlashLite = config.getGemini31FlashLiteLaunchedSync?.() ?? false;
1279
1519
  const selectedAuthType = settings.merged.security.auth.selectedType;
1280
1520
  const useCustomToolModel = useGemini31 && selectedAuthType === AuthType.USE_GEMINI;
1521
+ // --- DYNAMIC PATH ---
1522
+ if (config.getExperimentalDynamicModelConfiguration?.() === true &&
1523
+ config.getModelConfigService) {
1524
+ const options = config.getModelConfigService().getAvailableModelOptions({
1525
+ useGemini3_1: useGemini31,
1526
+ useGemini3_1FlashLite: useGemini31FlashLite,
1527
+ useCustomTools: useCustomToolModel,
1528
+ hasAccessToPreview: shouldShowPreviewModels,
1529
+ });
1530
+ return {
1531
+ availableModels: options,
1532
+ currentModelId: preferredModel,
1533
+ };
1534
+ }
1535
+ // --- LEGACY PATH ---
1281
1536
  const mainOptions = [
1282
1537
  {
1283
1538
  value: DEFAULT_GEMINI_MODEL_AUTO,
@@ -1315,13 +1570,23 @@ function buildAvailableModels(config, settings) {
1315
1570
  const previewProValue = useCustomToolModel
1316
1571
  ? PREVIEW_GEMINI_3_1_CUSTOM_TOOLS_MODEL
1317
1572
  : previewProModel;
1318
- manualOptions.unshift({
1319
- value: previewProValue,
1320
- title: getDisplayString(previewProModel),
1321
- }, {
1322
- value: PREVIEW_GEMINI_FLASH_MODEL,
1323
- title: getDisplayString(PREVIEW_GEMINI_FLASH_MODEL),
1324
- });
1573
+ const previewOptions = [
1574
+ {
1575
+ value: previewProValue,
1576
+ title: getDisplayString(previewProModel),
1577
+ },
1578
+ {
1579
+ value: PREVIEW_GEMINI_FLASH_MODEL,
1580
+ title: getDisplayString(PREVIEW_GEMINI_FLASH_MODEL),
1581
+ },
1582
+ ];
1583
+ if (useGemini31FlashLite) {
1584
+ previewOptions.push({
1585
+ value: PREVIEW_GEMINI_3_1_FLASH_LITE_MODEL,
1586
+ title: getDisplayString(PREVIEW_GEMINI_3_1_FLASH_LITE_MODEL),
1587
+ });
1588
+ }
1589
+ manualOptions.unshift(...previewOptions);
1325
1590
  }
1326
1591
  const scaleOptions = (options) => options.map((o) => ({
1327
1592
  modelId: o.value,