@iaforged/context-code 1.0.72 → 1.0.74

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 (2050) hide show
  1. package/context-bootstrap.js +7 -8
  2. package/dist/src/QueryEngine.js +928 -0
  3. package/dist/src/Task.js +49 -0
  4. package/dist/src/Tool.js +56 -0
  5. package/dist/src/assistant/AssistantSessionChooser.js +16 -0
  6. package/dist/src/assistant/index.js +16 -0
  7. package/dist/src/assistant/sessionDiscovery.js +16 -0
  8. package/dist/src/assistant/sessionHistory.js +47 -0
  9. package/dist/src/bootstrap/state.js +1165 -0
  10. package/dist/src/bridge/bridgeApi.js +304 -0
  11. package/dist/src/bridge/bridgeConfig.js +39 -0
  12. package/dist/src/bridge/bridgeDebug.js +73 -0
  13. package/dist/src/bridge/bridgeEnabled.js +187 -0
  14. package/dist/src/bridge/bridgeMain.js +2289 -0
  15. package/dist/src/bridge/bridgeMessaging.js +353 -0
  16. package/dist/src/bridge/bridgePermissionCallbacks.js +10 -0
  17. package/dist/src/bridge/bridgePointer.js +175 -0
  18. package/dist/src/bridge/bridgeStatusUtil.js +105 -0
  19. package/dist/src/bridge/bridgeUI.js +412 -0
  20. package/dist/src/bridge/capacityWake.js +35 -0
  21. package/dist/src/bridge/codeSessionApi.js +111 -0
  22. package/dist/src/bridge/createSession.js +273 -0
  23. package/dist/src/bridge/debugUtils.js +115 -0
  24. package/dist/src/bridge/envLessBridgeConfig.js +121 -0
  25. package/dist/src/bridge/flushGate.js +65 -0
  26. package/dist/src/bridge/inboundAttachments.js +152 -0
  27. package/dist/src/bridge/inboundMessages.js +63 -0
  28. package/dist/src/bridge/initReplBridge.js +428 -0
  29. package/dist/src/bridge/jwtUtils.js +185 -0
  30. package/dist/src/bridge/pollConfig.js +85 -0
  31. package/dist/src/bridge/pollConfigDefaults.js +62 -0
  32. package/dist/src/bridge/remoteBridgeCore.js +712 -0
  33. package/dist/src/bridge/replBridge.js +1720 -0
  34. package/dist/src/bridge/replBridgeHandle.js +30 -0
  35. package/dist/src/bridge/replBridgeTransport.js +236 -0
  36. package/dist/src/bridge/sessionIdCompat.js +56 -0
  37. package/dist/src/bridge/sessionRunner.js +421 -0
  38. package/dist/src/bridge/trustedDevice.js +172 -0
  39. package/dist/src/bridge/types.js +9 -0
  40. package/dist/src/bridge/workSecret.js +99 -0
  41. package/dist/src/buddy/CompanionSprite.js +349 -0
  42. package/dist/src/buddy/companion.js +107 -0
  43. package/dist/src/buddy/prompt.js +33 -0
  44. package/dist/src/buddy/sprites.js +488 -0
  45. package/dist/src/buddy/types.js +90 -0
  46. package/dist/src/buddy/useBuddyNotification.js +90 -0
  47. package/dist/src/cli/bg.js +16 -0
  48. package/dist/src/cli/exit.js +30 -0
  49. package/dist/src/cli/handlers/agents.js +55 -0
  50. package/dist/src/cli/handlers/ant.js +16 -0
  51. package/dist/src/cli/handlers/auth.js +315 -0
  52. package/dist/src/cli/handlers/autoMode.js +128 -0
  53. package/dist/src/cli/handlers/mcp.js +334 -0
  54. package/dist/src/cli/handlers/plugins.js +634 -0
  55. package/dist/src/cli/handlers/projects_bridge.js +40 -0
  56. package/dist/src/cli/handlers/provider.js +42 -0
  57. package/dist/src/cli/handlers/templateJobs.js +16 -0
  58. package/dist/src/cli/handlers/util.js +76 -0
  59. package/dist/src/cli/ndjsonSafeStringify.js +27 -0
  60. package/dist/src/cli/print.js +4225 -0
  61. package/dist/src/cli/remoteIO.js +208 -0
  62. package/dist/src/cli/rollback.js +16 -0
  63. package/dist/src/cli/structuredIO.js +644 -0
  64. package/dist/src/cli/transports/HybridTransport.js +233 -0
  65. package/dist/src/cli/transports/SSETransport.js +538 -0
  66. package/dist/src/cli/transports/SerialBatchEventUploader.js +224 -0
  67. package/dist/src/cli/transports/Transport.js +1 -0
  68. package/dist/src/cli/transports/WebSocketTransport.js +613 -0
  69. package/dist/src/cli/transports/WorkerStateUploader.js +88 -0
  70. package/dist/src/cli/transports/ccrClient.js +711 -0
  71. package/dist/src/cli/transports/transportUtils.js +39 -0
  72. package/dist/src/cli/up.js +16 -0
  73. package/dist/src/cli/update.js +315 -0
  74. package/dist/src/commands/add-dir/add-dir.js +121 -0
  75. package/dist/src/commands/add-dir/index.js +8 -0
  76. package/dist/src/commands/add-dir/validation.js +76 -0
  77. package/dist/src/commands/advisor.js +88 -0
  78. package/dist/src/commands/agent/agent.js +283 -0
  79. package/dist/src/commands/agent/agentStore.js +120 -0
  80. package/dist/src/commands/agent/index.js +9 -0
  81. package/dist/src/commands/agents/agents.js +9 -0
  82. package/dist/src/commands/agents/index.js +7 -0
  83. package/dist/src/commands/ant-trace/index.js +1 -0
  84. package/dist/src/commands/assistant/assistant.js +16 -0
  85. package/dist/src/commands/autofix-pr/index.js +1 -0
  86. package/dist/src/commands/backfill-sessions/index.js +1 -0
  87. package/dist/src/commands/branch/branch.js +205 -0
  88. package/dist/src/commands/branch/index.js +11 -0
  89. package/dist/src/commands/break-cache/index.js +1 -0
  90. package/dist/src/commands/bridge/bridge.js +512 -0
  91. package/dist/src/commands/bridge/index.js +22 -0
  92. package/dist/src/commands/bridge-kick.js +179 -0
  93. package/dist/src/commands/brief.js +94 -0
  94. package/dist/src/commands/btw/btw.js +234 -0
  95. package/dist/src/commands/btw/index.js +9 -0
  96. package/dist/src/commands/bughunter/index.js +1 -0
  97. package/dist/src/commands/chrome/chrome.js +291 -0
  98. package/dist/src/commands/chrome/index.js +11 -0
  99. package/dist/src/commands/clear/caches.js +116 -0
  100. package/dist/src/commands/clear/clear.js +5 -0
  101. package/dist/src/commands/clear/conversation.js +191 -0
  102. package/dist/src/commands/clear/index.js +9 -0
  103. package/dist/src/commands/color/color.js +58 -0
  104. package/dist/src/commands/color/index.js +9 -0
  105. package/dist/src/commands/commit-push-pr.js +137 -0
  106. package/dist/src/commands/commit.js +80 -0
  107. package/dist/src/commands/compact/compact.js +196 -0
  108. package/dist/src/commands/compact/index.js +11 -0
  109. package/dist/src/commands/config/config.js +5 -0
  110. package/dist/src/commands/config/index.js +8 -0
  111. package/dist/src/commands/context/context-noninteractive.js +221 -0
  112. package/dist/src/commands/context/context.js +46 -0
  113. package/dist/src/commands/context/index.js +21 -0
  114. package/dist/src/commands/copy/copy.js +366 -0
  115. package/dist/src/commands/copy/index.js +7 -0
  116. package/dist/src/commands/cost/cost.js +21 -0
  117. package/dist/src/commands/cost/index.js +16 -0
  118. package/dist/src/commands/createMovedToPluginCommand.js +33 -0
  119. package/dist/src/commands/ctx_viz/index.js +1 -0
  120. package/dist/src/commands/debug-tool-call/index.js +1 -0
  121. package/dist/src/commands/desktop/desktop.js +5 -0
  122. package/dist/src/commands/desktop/index.js +22 -0
  123. package/dist/src/commands/diff/diff.js +5 -0
  124. package/dist/src/commands/diff/index.js +6 -0
  125. package/dist/src/commands/doctor/doctor.js +5 -0
  126. package/dist/src/commands/doctor/index.js +9 -0
  127. package/dist/src/commands/effort/effort.js +166 -0
  128. package/dist/src/commands/effort/index.js +11 -0
  129. package/dist/src/commands/env/index.js +1 -0
  130. package/dist/src/commands/exit/exit.js +31 -0
  131. package/dist/src/commands/exit/index.js +9 -0
  132. package/dist/src/commands/export/export.js +86 -0
  133. package/dist/src/commands/export/index.js +8 -0
  134. package/dist/src/commands/extra-usage/extra-usage-core.js +99 -0
  135. package/dist/src/commands/extra-usage/extra-usage-noninteractive.js +13 -0
  136. package/dist/src/commands/extra-usage/extra-usage.js +14 -0
  137. package/dist/src/commands/extra-usage/index.js +27 -0
  138. package/dist/src/commands/fast/fast.js +275 -0
  139. package/dist/src/commands/fast/index.js +20 -0
  140. package/dist/src/commands/feedback/feedback.js +10 -0
  141. package/dist/src/commands/feedback/index.js +21 -0
  142. package/dist/src/commands/files/files.js +11 -0
  143. package/dist/src/commands/files/index.js +9 -0
  144. package/dist/src/commands/good-claude/index.js +1 -0
  145. package/dist/src/commands/heapdump/heapdump.js +14 -0
  146. package/dist/src/commands/heapdump/index.js +9 -0
  147. package/dist/src/commands/help/help.js +5 -0
  148. package/dist/src/commands/help/index.js +7 -0
  149. package/dist/src/commands/hooks/hooks.js +11 -0
  150. package/dist/src/commands/hooks/index.js +8 -0
  151. package/dist/src/commands/ide/ide.js +615 -0
  152. package/dist/src/commands/ide/index.js +8 -0
  153. package/dist/src/commands/init-verifiers.js +258 -0
  154. package/dist/src/commands/init.js +249 -0
  155. package/dist/src/commands/insights.js +2555 -0
  156. package/dist/src/commands/install-github-app/ApiKeyStep.js +230 -0
  157. package/dist/src/commands/install-github-app/CheckExistingSecretStep.js +194 -0
  158. package/dist/src/commands/install-github-app/CheckGitHubStep.js +15 -0
  159. package/dist/src/commands/install-github-app/ChooseRepoStep.js +211 -0
  160. package/dist/src/commands/install-github-app/CreatingStep.js +52 -0
  161. package/dist/src/commands/install-github-app/ErrorStep.js +83 -0
  162. package/dist/src/commands/install-github-app/ExistingWorkflowStep.js +104 -0
  163. package/dist/src/commands/install-github-app/InstallAppStep.js +96 -0
  164. package/dist/src/commands/install-github-app/OAuthFlowStep.js +190 -0
  165. package/dist/src/commands/install-github-app/SuccessStep.js +93 -0
  166. package/dist/src/commands/install-github-app/WarningsStep.js +70 -0
  167. package/dist/src/commands/install-github-app/index.js +10 -0
  168. package/dist/src/commands/install-github-app/install-github-app.js +593 -0
  169. package/dist/src/commands/install-github-app/setupGitHubActions.js +227 -0
  170. package/dist/src/commands/install-slack-app/index.js +9 -0
  171. package/dist/src/commands/install-slack-app/install-slack-app.js +25 -0
  172. package/dist/src/commands/install.js +118 -0
  173. package/dist/src/commands/issue/index.js +1 -0
  174. package/dist/src/commands/keybindings/index.js +10 -0
  175. package/dist/src/commands/keybindings/keybindings.js +47 -0
  176. package/dist/src/commands/limites/index.js +8 -0
  177. package/dist/src/commands/limites/limites.js +214 -0
  178. package/dist/src/commands/login/index.js +11 -0
  179. package/dist/src/commands/login/login.js +120 -0
  180. package/dist/src/commands/login-openai/index.js +7 -0
  181. package/dist/src/commands/login-openai/login-openai.js +54 -0
  182. package/dist/src/commands/logout/index.js +8 -0
  183. package/dist/src/commands/logout/logout.js +72 -0
  184. package/dist/src/commands/mcp/addCommand.js +183 -0
  185. package/dist/src/commands/mcp/index.js +9 -0
  186. package/dist/src/commands/mcp/mcp.js +78 -0
  187. package/dist/src/commands/mcp/xaaIdpCommand.js +193 -0
  188. package/dist/src/commands/memory/index.js +7 -0
  189. package/dist/src/commands/memory/memory.js +71 -0
  190. package/dist/src/commands/mobile/index.js +9 -0
  191. package/dist/src/commands/mobile/mobile.js +278 -0
  192. package/dist/src/commands/mock-limits/index.js +1 -0
  193. package/dist/src/commands/model/index.js +14 -0
  194. package/dist/src/commands/model/model.js +297 -0
  195. package/dist/src/commands/oauth-refresh/index.js +1 -0
  196. package/dist/src/commands/onboarding/index.js +1 -0
  197. package/dist/src/commands/orchestrate/index.js +8 -0
  198. package/dist/src/commands/orchestrate/orchestrate.js +542 -0
  199. package/dist/src/commands/output-style/index.js +8 -0
  200. package/dist/src/commands/output-style/output-style.js +6 -0
  201. package/dist/src/commands/passes/index.js +17 -0
  202. package/dist/src/commands/passes/passes.js +22 -0
  203. package/dist/src/commands/perf-issue/index.js +1 -0
  204. package/dist/src/commands/permissions/index.js +8 -0
  205. package/dist/src/commands/permissions/permissions.js +8 -0
  206. package/dist/src/commands/plan/index.js +8 -0
  207. package/dist/src/commands/plan/plan.js +115 -0
  208. package/dist/src/commands/plugin/AddMarketplace.js +95 -0
  209. package/dist/src/commands/plugin/BrowseMarketplace.js +576 -0
  210. package/dist/src/commands/plugin/DiscoverPlugins.js +613 -0
  211. package/dist/src/commands/plugin/ManageMarketplaces.js +582 -0
  212. package/dist/src/commands/plugin/ManagePlugins.js +1783 -0
  213. package/dist/src/commands/plugin/PluginErrors.js +124 -0
  214. package/dist/src/commands/plugin/PluginOptionsDialog.js +367 -0
  215. package/dist/src/commands/plugin/PluginOptionsFlow.js +97 -0
  216. package/dist/src/commands/plugin/PluginSettings.js +1042 -0
  217. package/dist/src/commands/plugin/PluginTrustWarning.js +34 -0
  218. package/dist/src/commands/plugin/UnifiedInstalledCell.js +615 -0
  219. package/dist/src/commands/plugin/ValidatePlugin.js +95 -0
  220. package/dist/src/commands/plugin/index.js +10 -0
  221. package/dist/src/commands/plugin/parseArgs.js +71 -0
  222. package/dist/src/commands/plugin/plugin.js +5 -0
  223. package/dist/src/commands/plugin/pluginDetailsHelpers.js +89 -0
  224. package/dist/src/commands/plugin/usePagination.js +89 -0
  225. package/dist/src/commands/policy/index.js +9 -0
  226. package/dist/src/commands/policy/policy.js +84 -0
  227. package/dist/src/commands/pr_comments/index.js +49 -0
  228. package/dist/src/commands/privacy-settings/index.js +11 -0
  229. package/dist/src/commands/privacy-settings/privacy-settings.js +54 -0
  230. package/dist/src/commands/profile/index.js +9 -0
  231. package/dist/src/commands/profile/profile.js +482 -0
  232. package/dist/src/commands/provider/index.js +8 -0
  233. package/dist/src/commands/provider/provider.js +457 -0
  234. package/dist/src/commands/rate-limit-options/index.js +15 -0
  235. package/dist/src/commands/rate-limit-options/rate-limit-options.js +213 -0
  236. package/dist/src/commands/release-notes/index.js +9 -0
  237. package/dist/src/commands/release-notes/release-notes.js +38 -0
  238. package/dist/src/commands/reload-plugins/index.js +11 -0
  239. package/dist/src/commands/reload-plugins/reload-plugins.js +52 -0
  240. package/dist/src/commands/remote-env/index.js +12 -0
  241. package/dist/src/commands/remote-env/remote-env.js +5 -0
  242. package/dist/src/commands/remote-setup/api.js +155 -0
  243. package/dist/src/commands/remote-setup/index.js +15 -0
  244. package/dist/src/commands/remote-setup/remote-setup.js +149 -0
  245. package/dist/src/commands/rename/generateSessionName.js +58 -0
  246. package/dist/src/commands/rename/index.js +9 -0
  247. package/dist/src/commands/rename/rename.js +52 -0
  248. package/dist/src/commands/reset-limits/index.js +4 -0
  249. package/dist/src/commands/resume/index.js +9 -0
  250. package/dist/src/commands/resume/resume.js +239 -0
  251. package/dist/src/commands/review/UltrareviewOverageDialog.js +97 -0
  252. package/dist/src/commands/review/reviewRemote.js +259 -0
  253. package/dist/src/commands/review/ultrareviewCommand.js +57 -0
  254. package/dist/src/commands/review/ultrareviewEnabled.js +10 -0
  255. package/dist/src/commands/review.js +50 -0
  256. package/dist/src/commands/rewind/index.js +10 -0
  257. package/dist/src/commands/rewind/rewind.js +7 -0
  258. package/dist/src/commands/run/index.js +9 -0
  259. package/dist/src/commands/run/run.js +1126 -0
  260. package/dist/src/commands/sandbox-toggle/index.js +41 -0
  261. package/dist/src/commands/sandbox-toggle/sandbox-toggle.js +72 -0
  262. package/dist/src/commands/security-review.js +231 -0
  263. package/dist/src/commands/session/index.js +13 -0
  264. package/dist/src/commands/session/session.js +142 -0
  265. package/dist/src/commands/share/index.js +1 -0
  266. package/dist/src/commands/skills/index.js +8 -0
  267. package/dist/src/commands/skills/skills.js +97 -0
  268. package/dist/src/commands/stats/index.js +7 -0
  269. package/dist/src/commands/stats/stats.js +5 -0
  270. package/dist/src/commands/status/index.js +8 -0
  271. package/dist/src/commands/status/status.js +5 -0
  272. package/dist/src/commands/statusline.js +22 -0
  273. package/dist/src/commands/stickers/index.js +9 -0
  274. package/dist/src/commands/stickers/stickers.js +14 -0
  275. package/dist/src/commands/summary/index.js +1 -0
  276. package/dist/src/commands/tag/index.js +9 -0
  277. package/dist/src/commands/tag/tag.js +215 -0
  278. package/dist/src/commands/tasks/index.js +8 -0
  279. package/dist/src/commands/tasks/tasks.js +5 -0
  280. package/dist/src/commands/team/index.js +9 -0
  281. package/dist/src/commands/team/team.js +582 -0
  282. package/dist/src/commands/team-auto/index.js +9 -0
  283. package/dist/src/commands/team-auto/teamAuto.js +340 -0
  284. package/dist/src/commands/telegram/index.js +9 -0
  285. package/dist/src/commands/telegram/telegram.js +118 -0
  286. package/dist/src/commands/teleport/index.js +1 -0
  287. package/dist/src/commands/terminalSetup/index.js +18 -0
  288. package/dist/src/commands/terminalSetup/terminalSetup.js +491 -0
  289. package/dist/src/commands/theme/index.js +7 -0
  290. package/dist/src/commands/theme/theme.js +50 -0
  291. package/dist/src/commands/thinkback/index.js +9 -0
  292. package/dist/src/commands/thinkback/thinkback.js +527 -0
  293. package/dist/src/commands/thinkback-play/index.js +13 -0
  294. package/dist/src/commands/thinkback-play/thinkback-play.js +34 -0
  295. package/dist/src/commands/ultraplan.js +418 -0
  296. package/dist/src/commands/upgrade/index.js +12 -0
  297. package/dist/src/commands/upgrade/upgrade.js +37 -0
  298. package/dist/src/commands/version.js +18 -0
  299. package/dist/src/commands/vim/index.js +8 -0
  300. package/dist/src/commands/vim/vim.js +25 -0
  301. package/dist/src/commands/voice/index.js +14 -0
  302. package/dist/src/commands/voice/voice.js +130 -0
  303. package/dist/src/commands/whatsapp/index.js +9 -0
  304. package/dist/src/commands/whatsapp/whatsapp.js +326 -0
  305. package/dist/src/commands/workspace/index.js +9 -0
  306. package/dist/src/commands/workspace/workspace.js +701 -0
  307. package/dist/src/commands.js +635 -0
  308. package/dist/src/components/AgentProgressLine.js +111 -0
  309. package/dist/src/components/App.js +45 -0
  310. package/dist/src/components/ApproveApiKey.js +124 -0
  311. package/dist/src/components/AutoModeOptInDialog.js +140 -0
  312. package/dist/src/components/AutoUpdater.js +157 -0
  313. package/dist/src/components/AutoUpdaterWrapper.js +78 -0
  314. package/dist/src/components/AwsAuthStatusBox.js +88 -0
  315. package/dist/src/components/BaseTextInput.js +105 -0
  316. package/dist/src/components/BashModeProgress.js +48 -0
  317. package/dist/src/components/BridgeDialog.js +414 -0
  318. package/dist/src/components/BypassPermissionsModeDialog.js +87 -0
  319. package/dist/src/components/ChannelDowngradeDialog.js +100 -0
  320. package/dist/src/components/ClaudeCodeHint/PluginHintMenu.js +37 -0
  321. package/dist/src/components/ClaudeInChromeOnboarding.js +126 -0
  322. package/dist/src/components/ClaudeMdExternalIncludesDialog.js +137 -0
  323. package/dist/src/components/ClickableImageRef.js +64 -0
  324. package/dist/src/components/CompactSummary.js +119 -0
  325. package/dist/src/components/ConfigurableShortcutHint.js +34 -0
  326. package/dist/src/components/ConsoleOAuthFlow.js +758 -0
  327. package/dist/src/components/ContextSuggestions.js +43 -0
  328. package/dist/src/components/ContextVisualization.js +483 -0
  329. package/dist/src/components/CoordinatorAgentStatus.js +261 -0
  330. package/dist/src/components/CostThresholdDialog.js +48 -0
  331. package/dist/src/components/CtrlOToExpand.js +50 -0
  332. package/dist/src/components/CustomSelect/SelectMulti.js +149 -0
  333. package/dist/src/components/CustomSelect/index.js +2 -0
  334. package/dist/src/components/CustomSelect/option-map.js +32 -0
  335. package/dist/src/components/CustomSelect/select-input-option.js +426 -0
  336. package/dist/src/components/CustomSelect/select-option.js +23 -0
  337. package/dist/src/components/CustomSelect/select.js +518 -0
  338. package/dist/src/components/CustomSelect/use-multi-select-state.js +214 -0
  339. package/dist/src/components/CustomSelect/use-select-input.js +170 -0
  340. package/dist/src/components/CustomSelect/use-select-navigation.js +366 -0
  341. package/dist/src/components/CustomSelect/use-select-state.js +22 -0
  342. package/dist/src/components/DesktopHandoff.js +195 -0
  343. package/dist/src/components/DesktopUpsell/DesktopUpsellStartup.js +173 -0
  344. package/dist/src/components/DevBar.js +50 -0
  345. package/dist/src/components/DevChannelsDialog.js +103 -0
  346. package/dist/src/components/DiagnosticsDisplay.js +91 -0
  347. package/dist/src/components/EffortCallout.js +264 -0
  348. package/dist/src/components/EffortIndicator.js +29 -0
  349. package/dist/src/components/ExitFlow.js +40 -0
  350. package/dist/src/components/ExportDialog.js +101 -0
  351. package/dist/src/components/FallbackToolUseErrorMessage.js +115 -0
  352. package/dist/src/components/FallbackToolUseRejectedMessage.js +16 -0
  353. package/dist/src/components/FastIcon.js +42 -0
  354. package/dist/src/components/Feedback.js +439 -0
  355. package/dist/src/components/FeedbackSurvey/FeedbackSurvey.js +150 -0
  356. package/dist/src/components/FeedbackSurvey/FeedbackSurveyView.js +103 -0
  357. package/dist/src/components/FeedbackSurvey/TranscriptSharePrompt.js +83 -0
  358. package/dist/src/components/FeedbackSurvey/submitTranscriptShare.js +81 -0
  359. package/dist/src/components/FeedbackSurvey/useDebouncedDigitInput.js +51 -0
  360. package/dist/src/components/FeedbackSurvey/useFeedbackSurvey.js +258 -0
  361. package/dist/src/components/FeedbackSurvey/useMemorySurvey.js +191 -0
  362. package/dist/src/components/FeedbackSurvey/usePostCompactSurvey.js +202 -0
  363. package/dist/src/components/FeedbackSurvey/useSurveyState.js +80 -0
  364. package/dist/src/components/FileEditToolDiff.js +166 -0
  365. package/dist/src/components/FileEditToolUpdatedMessage.js +111 -0
  366. package/dist/src/components/FileEditToolUseRejectedMessage.js +157 -0
  367. package/dist/src/components/FilePathLink.js +34 -0
  368. package/dist/src/components/FullscreenLayout.js +578 -0
  369. package/dist/src/components/GlobalSearchDialog.js +339 -0
  370. package/dist/src/components/HelpV2/Commands.js +65 -0
  371. package/dist/src/components/HelpV2/General.js +24 -0
  372. package/dist/src/components/HelpV2/HelpV2.js +186 -0
  373. package/dist/src/components/HighlightedCode/Fallback.js +193 -0
  374. package/dist/src/components/HighlightedCode.js +184 -0
  375. package/dist/src/components/HistorySearchDialog.js +92 -0
  376. package/dist/src/components/IdeAutoConnectDialog.js +153 -0
  377. package/dist/src/components/IdeOnboardingDialog.js +174 -0
  378. package/dist/src/components/IdeStatusIndicator.js +49 -0
  379. package/dist/src/components/IdleReturnDialog.js +116 -0
  380. package/dist/src/components/InterruptedByUser.js +15 -0
  381. package/dist/src/components/InvalidConfigDialog.js +134 -0
  382. package/dist/src/components/InvalidSettingsDialog.js +84 -0
  383. package/dist/src/components/KeybindingWarnings.js +54 -0
  384. package/dist/src/components/LanguagePicker.js +84 -0
  385. package/dist/src/components/LogSelector.js +1579 -0
  386. package/dist/src/components/LogoV2/AnimatedAsterisk.js +42 -0
  387. package/dist/src/components/LogoV2/AnimatedClawd.js +111 -0
  388. package/dist/src/components/LogoV2/ChannelsNotice.js +258 -0
  389. package/dist/src/components/LogoV2/Clawd.js +12 -0
  390. package/dist/src/components/LogoV2/CondensedLogo.js +144 -0
  391. package/dist/src/components/LogoV2/EmergencyTip.js +47 -0
  392. package/dist/src/components/LogoV2/Feed.js +84 -0
  393. package/dist/src/components/LogoV2/FeedColumn.js +55 -0
  394. package/dist/src/components/LogoV2/GuestPassesUpsell.js +71 -0
  395. package/dist/src/components/LogoV2/LogoV2.js +564 -0
  396. package/dist/src/components/LogoV2/Opus1mMergeNotice.js +56 -0
  397. package/dist/src/components/LogoV2/OverageCreditUpsell.js +160 -0
  398. package/dist/src/components/LogoV2/VoiceModeNotice.js +70 -0
  399. package/dist/src/components/LogoV2/WelcomeV2.js +8 -0
  400. package/dist/src/components/LogoV2/feedConfigs.js +78 -0
  401. package/dist/src/components/LspRecommendation/LspRecommendationMenu.js +46 -0
  402. package/dist/src/components/MCPServerApprovalDialog.js +113 -0
  403. package/dist/src/components/MCPServerDesktopImportDialog.js +206 -0
  404. package/dist/src/components/MCPServerDialogCopy.js +15 -0
  405. package/dist/src/components/MCPServerMultiselectDialog.js +133 -0
  406. package/dist/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.js +149 -0
  407. package/dist/src/components/ManagedSettingsSecurityDialog/utils.js +105 -0
  408. package/dist/src/components/Markdown.js +217 -0
  409. package/dist/src/components/MarkdownTable.js +279 -0
  410. package/dist/src/components/MemoryUsageIndicator.js +27 -0
  411. package/dist/src/components/Message.js +566 -0
  412. package/dist/src/components/MessageModel.js +36 -0
  413. package/dist/src/components/MessageResponse.js +73 -0
  414. package/dist/src/components/MessageRow.js +346 -0
  415. package/dist/src/components/MessageSelector.js +743 -0
  416. package/dist/src/components/MessageTimestamp.js +57 -0
  417. package/dist/src/components/Messages.js +637 -0
  418. package/dist/src/components/ModelPicker.js +493 -0
  419. package/dist/src/components/NativeAutoUpdater.js +153 -0
  420. package/dist/src/components/NotebookEditToolUseRejectedMessage.js +83 -0
  421. package/dist/src/components/OffscreenFreeze.js +35 -0
  422. package/dist/src/components/Onboarding.js +174 -0
  423. package/dist/src/components/OutputStylePicker.js +102 -0
  424. package/dist/src/components/PackageManagerAutoUpdater.js +100 -0
  425. package/dist/src/components/Passes/Passes.js +113 -0
  426. package/dist/src/components/PrBadge.js +90 -0
  427. package/dist/src/components/PressEnterToContinue.js +15 -0
  428. package/dist/src/components/PromptInput/HistorySearchInput.js +44 -0
  429. package/dist/src/components/PromptInput/IssueFlagBanner.js +8 -0
  430. package/dist/src/components/PromptInput/Notifications.js +221 -0
  431. package/dist/src/components/PromptInput/PromptInput.js +1998 -0
  432. package/dist/src/components/PromptInput/PromptInputFooter.js +84 -0
  433. package/dist/src/components/PromptInput/PromptInputFooterLeftSide.js +409 -0
  434. package/dist/src/components/PromptInput/PromptInputFooterSuggestions.js +280 -0
  435. package/dist/src/components/PromptInput/PromptInputHelpMenu.js +379 -0
  436. package/dist/src/components/PromptInput/PromptInputModeIndicator.js +72 -0
  437. package/dist/src/components/PromptInput/PromptInputQueuedCommands.js +105 -0
  438. package/dist/src/components/PromptInput/PromptInputStashNotice.js +20 -0
  439. package/dist/src/components/PromptInput/SandboxPromptFooterHint.js +65 -0
  440. package/dist/src/components/PromptInput/ShimmeredInput.js +132 -0
  441. package/dist/src/components/PromptInput/VoiceIndicator.js +136 -0
  442. package/dist/src/components/PromptInput/inputModes.js +24 -0
  443. package/dist/src/components/PromptInput/inputPaste.js +62 -0
  444. package/dist/src/components/PromptInput/useMaybeTruncateInput.js +33 -0
  445. package/dist/src/components/PromptInput/usePromptInputPlaceholder.js +55 -0
  446. package/dist/src/components/PromptInput/useShowFastIconHint.js +23 -0
  447. package/dist/src/components/PromptInput/useSwarmBanner.js +112 -0
  448. package/dist/src/components/PromptInput/utils.js +50 -0
  449. package/dist/src/components/QuickOpenDialog.js +243 -0
  450. package/dist/src/components/RemoteCallout.js +53 -0
  451. package/dist/src/components/RemoteEnvironmentDialog.js +345 -0
  452. package/dist/src/components/ResumeTask.js +173 -0
  453. package/dist/src/components/SandboxViolationExpandedView.js +102 -0
  454. package/dist/src/components/ScrollKeybindingHandler.js +982 -0
  455. package/dist/src/components/SearchBox.js +55 -0
  456. package/dist/src/components/SentryErrorBoundary.js +16 -0
  457. package/dist/src/components/SessionBackgroundHint.js +104 -0
  458. package/dist/src/components/SessionPreview.js +200 -0
  459. package/dist/src/components/Settings/Config.js +1628 -0
  460. package/dist/src/components/Settings/Settings.js +129 -0
  461. package/dist/src/components/Settings/Status.js +239 -0
  462. package/dist/src/components/Settings/Usage.js +341 -0
  463. package/dist/src/components/ShowInIDEPrompt.js +151 -0
  464. package/dist/src/components/SkillImprovementSurvey.js +130 -0
  465. package/dist/src/components/Spinner/FlashingChar.js +51 -0
  466. package/dist/src/components/Spinner/GlimmerMessage.js +328 -0
  467. package/dist/src/components/Spinner/ShimmerChar.js +22 -0
  468. package/dist/src/components/Spinner/SpinnerAnimationRow.js +169 -0
  469. package/dist/src/components/Spinner/SpinnerGlyph.js +69 -0
  470. package/dist/src/components/Spinner/TeammateSpinnerLine.js +170 -0
  471. package/dist/src/components/Spinner/TeammateSpinnerTree.js +268 -0
  472. package/dist/src/components/Spinner/index.js +11 -0
  473. package/dist/src/components/Spinner/teammateSelectHint.js +1 -0
  474. package/dist/src/components/Spinner/useShimmerAnimation.js +22 -0
  475. package/dist/src/components/Spinner/useStalledAnimation.js +63 -0
  476. package/dist/src/components/Spinner/utils.js +77 -0
  477. package/dist/src/components/Spinner.js +470 -0
  478. package/dist/src/components/Stats.js +1000 -0
  479. package/dist/src/components/StatusLine.js +288 -0
  480. package/dist/src/components/StatusNotices.js +50 -0
  481. package/dist/src/components/StructuredDiff/Fallback.js +335 -0
  482. package/dist/src/components/StructuredDiff/colorDiff.js +26 -0
  483. package/dist/src/components/StructuredDiff.js +152 -0
  484. package/dist/src/components/StructuredDiffList.js +8 -0
  485. package/dist/src/components/TagTabs.js +100 -0
  486. package/dist/src/components/TaskListV2.js +333 -0
  487. package/dist/src/components/TeammateViewHeader.js +87 -0
  488. package/dist/src/components/TeleportError.js +191 -0
  489. package/dist/src/components/TeleportProgress.js +130 -0
  490. package/dist/src/components/TeleportRepoMismatchDialog.js +98 -0
  491. package/dist/src/components/TeleportResumeWrapper.js +158 -0
  492. package/dist/src/components/TeleportStash.js +82 -0
  493. package/dist/src/components/TextInput.js +108 -0
  494. package/dist/src/components/ThemePicker.js +330 -0
  495. package/dist/src/components/ThinkingToggle.js +153 -0
  496. package/dist/src/components/TokenWarning.js +172 -0
  497. package/dist/src/components/ToolUseLoader.js +34 -0
  498. package/dist/src/components/TrustDialog/TrustDialog.js +113 -0
  499. package/dist/src/components/TrustDialog/utils.js +199 -0
  500. package/dist/src/components/ValidationErrorsList.js +146 -0
  501. package/dist/src/components/VimTextInput.js +136 -0
  502. package/dist/src/components/VirtualMessageList.js +892 -0
  503. package/dist/src/components/WorkflowMultiselectDialog.js +118 -0
  504. package/dist/src/components/WorktreeExitDialog.js +222 -0
  505. package/dist/src/components/agents/AgentDetail.js +226 -0
  506. package/dist/src/components/agents/AgentEditor.js +146 -0
  507. package/dist/src/components/agents/AgentNavigationFooter.js +21 -0
  508. package/dist/src/components/agents/AgentsList.js +436 -0
  509. package/dist/src/components/agents/AgentsMenu.js +848 -0
  510. package/dist/src/components/agents/ColorPicker.js +110 -0
  511. package/dist/src/components/agents/ModelSelector.js +62 -0
  512. package/dist/src/components/agents/SnapshotUpdateDialog.js +16 -0
  513. package/dist/src/components/agents/ToolSelector.js +557 -0
  514. package/dist/src/components/agents/agentFileUtils.js +187 -0
  515. package/dist/src/components/agents/generateAgent.js +161 -0
  516. package/dist/src/components/agents/new-agent-creation/CreateAgentWizard.js +88 -0
  517. package/dist/src/components/agents/new-agent-creation/wizard-steps/ColorStep.js +80 -0
  518. package/dist/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.js +386 -0
  519. package/dist/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.js +63 -0
  520. package/dist/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.js +126 -0
  521. package/dist/src/components/agents/new-agent-creation/wizard-steps/GenerateStep.js +118 -0
  522. package/dist/src/components/agents/new-agent-creation/wizard-steps/LocationStep.js +92 -0
  523. package/dist/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.js +120 -0
  524. package/dist/src/components/agents/new-agent-creation/wizard-steps/MethodStep.js +79 -0
  525. package/dist/src/components/agents/new-agent-creation/wizard-steps/ModelStep.js +48 -0
  526. package/dist/src/components/agents/new-agent-creation/wizard-steps/PromptStep.js +131 -0
  527. package/dist/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.js +51 -0
  528. package/dist/src/components/agents/new-agent-creation/wizard-steps/TypeStep.js +100 -0
  529. package/dist/src/components/agents/types.js +4 -0
  530. package/dist/src/components/agents/utils.js +14 -0
  531. package/dist/src/components/agents/validateAgent.js +79 -0
  532. package/dist/src/components/design-system/Byline.js +72 -0
  533. package/dist/src/components/design-system/Dialog.js +116 -0
  534. package/dist/src/components/design-system/Divider.js +109 -0
  535. package/dist/src/components/design-system/FuzzyPicker.js +187 -0
  536. package/dist/src/components/design-system/KeyboardShortcutHint.js +67 -0
  537. package/dist/src/components/design-system/ListItem.js +183 -0
  538. package/dist/src/components/design-system/LoadingState.js +68 -0
  539. package/dist/src/components/design-system/Pane.js +68 -0
  540. package/dist/src/components/design-system/ProgressBar.js +62 -0
  541. package/dist/src/components/design-system/Ratchet.js +71 -0
  542. package/dist/src/components/design-system/StatusIcon.js +69 -0
  543. package/dist/src/components/design-system/Tabs.js +269 -0
  544. package/dist/src/components/design-system/ThemeProvider.js +137 -0
  545. package/dist/src/components/design-system/ThemedBox.js +125 -0
  546. package/dist/src/components/design-system/ThemedText.js +60 -0
  547. package/dist/src/components/design-system/color.js +22 -0
  548. package/dist/src/components/diff/DiffDetailView.js +284 -0
  549. package/dist/src/components/diff/DiffDialog.js +387 -0
  550. package/dist/src/components/diff/DiffFileList.js +291 -0
  551. package/dist/src/components/grove/Grove.js +483 -0
  552. package/dist/src/components/hooks/HooksConfigMenu.js +570 -0
  553. package/dist/src/components/hooks/PromptDialog.js +81 -0
  554. package/dist/src/components/hooks/SelectEventMode.js +117 -0
  555. package/dist/src/components/hooks/SelectHookMode.js +93 -0
  556. package/dist/src/components/hooks/SelectMatcherMode.js +124 -0
  557. package/dist/src/components/hooks/ViewHookMode.js +197 -0
  558. package/dist/src/components/mcp/CapabilitiesSection.js +55 -0
  559. package/dist/src/components/mcp/ElicitationDialog.js +945 -0
  560. package/dist/src/components/mcp/MCPAgentServerMenu.js +95 -0
  561. package/dist/src/components/mcp/MCPListPanel.js +504 -0
  562. package/dist/src/components/mcp/MCPReconnect.js +168 -0
  563. package/dist/src/components/mcp/MCPRemoteServerMenu.js +460 -0
  564. package/dist/src/components/mcp/MCPSettings.js +414 -0
  565. package/dist/src/components/mcp/MCPStdioServerMenu.js +95 -0
  566. package/dist/src/components/mcp/MCPToolDetailView.js +219 -0
  567. package/dist/src/components/mcp/MCPToolListView.js +136 -0
  568. package/dist/src/components/mcp/McpParsingWarnings.js +211 -0
  569. package/dist/src/components/mcp/index.js +8 -0
  570. package/dist/src/components/mcp/types.js +3 -0
  571. package/dist/src/components/mcp/utils/reconnectHelpers.js +35 -0
  572. package/dist/src/components/memory/MemoryFileSelector.js +455 -0
  573. package/dist/src/components/memory/MemoryUpdateNotification.js +42 -0
  574. package/dist/src/components/messageActions.js +418 -0
  575. package/dist/src/components/messages/AdvisorMessage.js +151 -0
  576. package/dist/src/components/messages/AssistantRedactedThinkingMessage.js +27 -0
  577. package/dist/src/components/messages/AssistantTextMessage.js +274 -0
  578. package/dist/src/components/messages/AssistantThinkingMessage.js +69 -0
  579. package/dist/src/components/messages/AssistantToolUseMessage.js +323 -0
  580. package/dist/src/components/messages/AttachmentMessage.js +418 -0
  581. package/dist/src/components/messages/CollapsedReadSearchContent.js +362 -0
  582. package/dist/src/components/messages/CompactBoundaryMessage.js +18 -0
  583. package/dist/src/components/messages/GroupedToolUseContent.js +37 -0
  584. package/dist/src/components/messages/HighlightedThinkingText.js +164 -0
  585. package/dist/src/components/messages/HookProgressMessage.js +110 -0
  586. package/dist/src/components/messages/PlanApprovalMessage.js +212 -0
  587. package/dist/src/components/messages/RateLimitMessage.js +149 -0
  588. package/dist/src/components/messages/ShutdownMessage.js +123 -0
  589. package/dist/src/components/messages/SystemAPIErrorMessage.js +135 -0
  590. package/dist/src/components/messages/SystemTextMessage.js +843 -0
  591. package/dist/src/components/messages/TaskAssignmentMessage.js +71 -0
  592. package/dist/src/components/messages/UserAgentNotificationMessage.js +77 -0
  593. package/dist/src/components/messages/UserBashInputMessage.js +51 -0
  594. package/dist/src/components/messages/UserBashOutputMessage.js +54 -0
  595. package/dist/src/components/messages/UserChannelMessage.js +129 -0
  596. package/dist/src/components/messages/UserCommandMessage.js +106 -0
  597. package/dist/src/components/messages/UserImageMessage.js +53 -0
  598. package/dist/src/components/messages/UserLocalCommandOutputMessage.js +169 -0
  599. package/dist/src/components/messages/UserMemoryInputMessage.js +72 -0
  600. package/dist/src/components/messages/UserPlanMessage.js +37 -0
  601. package/dist/src/components/messages/UserPromptMessage.js +63 -0
  602. package/dist/src/components/messages/UserResourceUpdateMessage.js +101 -0
  603. package/dist/src/components/messages/UserTeammateMessage.js +156 -0
  604. package/dist/src/components/messages/UserTextMessage.js +271 -0
  605. package/dist/src/components/messages/UserToolResultMessage/RejectedPlanMessage.js +27 -0
  606. package/dist/src/components/messages/UserToolResultMessage/RejectedToolUseMessage.js +16 -0
  607. package/dist/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +16 -0
  608. package/dist/src/components/messages/UserToolResultMessage/UserToolErrorMessage.js +91 -0
  609. package/dist/src/components/messages/UserToolResultMessage/UserToolRejectMessage.js +73 -0
  610. package/dist/src/components/messages/UserToolResultMessage/UserToolResultMessage.js +83 -0
  611. package/dist/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +58 -0
  612. package/dist/src/components/messages/UserToolResultMessage/utils.js +43 -0
  613. package/dist/src/components/messages/nullRenderingAttachments.js +58 -0
  614. package/dist/src/components/messages/teamMemCollapsed.js +142 -0
  615. package/dist/src/components/messages/teamMemSaved.js +17 -0
  616. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.js +654 -0
  617. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.js +219 -0
  618. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.js +227 -0
  619. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.js +174 -0
  620. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.js +444 -0
  621. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.js +136 -0
  622. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.js +100 -0
  623. package/dist/src/components/permissions/BashPermissionRequest/BashPermissionRequest.js +404 -0
  624. package/dist/src/components/permissions/BashPermissionRequest/bashToolUseOptions.js +110 -0
  625. package/dist/src/components/permissions/ComputerUseApproval/ComputerUseApproval.js +448 -0
  626. package/dist/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.js +125 -0
  627. package/dist/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.js +649 -0
  628. package/dist/src/components/permissions/FallbackPermissionRequest.js +348 -0
  629. package/dist/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +184 -0
  630. package/dist/src/components/permissions/FilePermissionDialog/FilePermissionDialog.js +108 -0
  631. package/dist/src/components/permissions/FilePermissionDialog/ideDiffConfig.js +13 -0
  632. package/dist/src/components/permissions/FilePermissionDialog/permissionOptions.js +136 -0
  633. package/dist/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.js +131 -0
  634. package/dist/src/components/permissions/FilePermissionDialog/usePermissionHandler.js +86 -0
  635. package/dist/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +163 -0
  636. package/dist/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +78 -0
  637. package/dist/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +112 -0
  638. package/dist/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.js +163 -0
  639. package/dist/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.js +217 -0
  640. package/dist/src/components/permissions/PermissionDecisionDebugInfo.js +466 -0
  641. package/dist/src/components/permissions/PermissionDialog.js +54 -0
  642. package/dist/src/components/permissions/PermissionExplanation.js +269 -0
  643. package/dist/src/components/permissions/PermissionPrompt.js +316 -0
  644. package/dist/src/components/permissions/PermissionRequest.js +160 -0
  645. package/dist/src/components/permissions/PermissionRequestTitle.js +57 -0
  646. package/dist/src/components/permissions/PermissionRuleExplanation.js +116 -0
  647. package/dist/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.js +178 -0
  648. package/dist/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.js +73 -0
  649. package/dist/src/components/permissions/SandboxPermissionRequest.js +161 -0
  650. package/dist/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.js +228 -0
  651. package/dist/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.js +384 -0
  652. package/dist/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.js +258 -0
  653. package/dist/src/components/permissions/WorkerBadge.js +43 -0
  654. package/dist/src/components/permissions/WorkerPendingPermission.js +106 -0
  655. package/dist/src/components/permissions/hooks.js +163 -0
  656. package/dist/src/components/permissions/rules/AddPermissionRules.js +172 -0
  657. package/dist/src/components/permissions/rules/AddWorkspaceDirectory.js +334 -0
  658. package/dist/src/components/permissions/rules/PermissionRuleDescription.js +77 -0
  659. package/dist/src/components/permissions/rules/PermissionRuleInput.js +135 -0
  660. package/dist/src/components/permissions/rules/PermissionRuleList.js +1189 -0
  661. package/dist/src/components/permissions/rules/RecentDenialsTab.js +204 -0
  662. package/dist/src/components/permissions/rules/RemoveWorkspaceDirectory.js +102 -0
  663. package/dist/src/components/permissions/rules/WorkspaceTab.js +132 -0
  664. package/dist/src/components/permissions/shellPermissionHelpers.js +111 -0
  665. package/dist/src/components/permissions/useShellPermissionFeedback.js +108 -0
  666. package/dist/src/components/permissions/utils.js +14 -0
  667. package/dist/src/components/sandbox/SandboxConfigTab.js +47 -0
  668. package/dist/src/components/sandbox/SandboxDependenciesTab.js +122 -0
  669. package/dist/src/components/sandbox/SandboxDoctorSection.js +46 -0
  670. package/dist/src/components/sandbox/SandboxOverridesTab.js +192 -0
  671. package/dist/src/components/sandbox/SandboxSettings.js +296 -0
  672. package/dist/src/components/shell/ExpandShellOutputContext.js +33 -0
  673. package/dist/src/components/shell/OutputLine.js +110 -0
  674. package/dist/src/components/shell/ShellProgressMessage.js +143 -0
  675. package/dist/src/components/shell/ShellTimeDisplay.js +71 -0
  676. package/dist/src/components/skills/SkillsMenu.js +238 -0
  677. package/dist/src/components/tasks/AsyncAgentDetailDialog.js +234 -0
  678. package/dist/src/components/tasks/BackgroundTask.js +363 -0
  679. package/dist/src/components/tasks/BackgroundTaskStatus.js +419 -0
  680. package/dist/src/components/tasks/BackgroundTasksDialog.js +496 -0
  681. package/dist/src/components/tasks/DreamDetailDialog.js +250 -0
  682. package/dist/src/components/tasks/InProcessTeammateDetailDialog.js +274 -0
  683. package/dist/src/components/tasks/RemoteSessionDetailDialog.js +868 -0
  684. package/dist/src/components/tasks/RemoteSessionProgress.js +249 -0
  685. package/dist/src/components/tasks/ShellDetailDialog.js +403 -0
  686. package/dist/src/components/tasks/ShellProgress.js +76 -0
  687. package/dist/src/components/tasks/renderToolActivity.js +28 -0
  688. package/dist/src/components/tasks/taskStatusUtils.js +94 -0
  689. package/dist/src/components/teams/TeamStatus.js +76 -0
  690. package/dist/src/components/teams/TeamsDialog.js +672 -0
  691. package/dist/src/components/ui/ContextCard.js +5 -0
  692. package/dist/src/components/ui/OrderedList.js +66 -0
  693. package/dist/src/components/ui/OrderedListItem.js +41 -0
  694. package/dist/src/components/ui/TreeSelect.js +300 -0
  695. package/dist/src/components/wizard/WizardDialogLayout.js +47 -0
  696. package/dist/src/components/wizard/WizardNavigationFooter.js +10 -0
  697. package/dist/src/components/wizard/WizardProvider.js +217 -0
  698. package/dist/src/components/wizard/index.js +4 -0
  699. package/dist/src/components/wizard/useWizard.js +9 -0
  700. package/dist/src/constants/apiLimits.js +81 -0
  701. package/dist/src/constants/betas.js +45 -0
  702. package/dist/src/constants/common.js +29 -0
  703. package/dist/src/constants/cyberRiskInstruction.js +24 -0
  704. package/dist/src/constants/errorIds.js +14 -0
  705. package/dist/src/constants/figures.js +38 -0
  706. package/dist/src/constants/files.js +150 -0
  707. package/dist/src/constants/github-app.js +139 -0
  708. package/dist/src/constants/keys.js +10 -0
  709. package/dist/src/constants/messages.js +1 -0
  710. package/dist/src/constants/oauth.js +221 -0
  711. package/dist/src/constants/outputStyles.js +162 -0
  712. package/dist/src/constants/product.js +56 -0
  713. package/dist/src/constants/prompts.js +752 -0
  714. package/dist/src/constants/spinnerVerbs.js +202 -0
  715. package/dist/src/constants/system.js +77 -0
  716. package/dist/src/constants/systemPromptSections.js +39 -0
  717. package/dist/src/constants/toolLimits.js +50 -0
  718. package/dist/src/constants/tools.js +103 -0
  719. package/dist/src/constants/turnCompletionVerbs.js +12 -0
  720. package/dist/src/constants/xml.js +73 -0
  721. package/dist/src/context/QueuedMessageContext.js +51 -0
  722. package/dist/src/context/fpsMetrics.js +22 -0
  723. package/dist/src/context/mailbox.js +35 -0
  724. package/dist/src/context/modalContext.js +34 -0
  725. package/dist/src/context/notifications.js +199 -0
  726. package/dist/src/context/overlayContext.js +149 -0
  727. package/dist/src/context/promptOverlayContext.js +118 -0
  728. package/dist/src/context/stats.js +207 -0
  729. package/dist/src/context/voice.js +74 -0
  730. package/dist/src/context.js +146 -0
  731. package/dist/src/coordinator/coordinatorMode.js +349 -0
  732. package/dist/src/cost-tracker.js +208 -0
  733. package/dist/src/costHook.js +17 -0
  734. package/dist/src/daemon/main.js +16 -0
  735. package/dist/src/daemon/workerRegistry.js +16 -0
  736. package/dist/src/dialogLaunchers.js +68 -0
  737. package/dist/src/entrypoints/agentSdkTypes.js +202 -0
  738. package/dist/src/entrypoints/cli.js +252 -0
  739. package/dist/src/entrypoints/init.js +265 -0
  740. package/dist/src/entrypoints/mcp.js +142 -0
  741. package/dist/src/entrypoints/sandboxTypes.js +112 -0
  742. package/dist/src/entrypoints/sdk/controlSchemas.js +452 -0
  743. package/dist/src/entrypoints/sdk/controlTypes.js +1 -0
  744. package/dist/src/entrypoints/sdk/coreSchemas.js +1331 -0
  745. package/dist/src/entrypoints/sdk/coreTypes.generated.js +1 -0
  746. package/dist/src/entrypoints/sdk/coreTypes.js +49 -0
  747. package/dist/src/entrypoints/sdk/runtimeTypes.js +1 -0
  748. package/dist/src/entrypoints/sdk/toolTypes.js +1 -0
  749. package/dist/src/environment-runner/main.js +16 -0
  750. package/dist/src/history.js +386 -0
  751. package/dist/src/hooks/fileSuggestions.js +635 -0
  752. package/dist/src/hooks/notifs/useAutoModeUnavailableNotification.js +47 -0
  753. package/dist/src/hooks/notifs/useCanSwitchToExistingSubscription.js +57 -0
  754. package/dist/src/hooks/notifs/useDeprecationWarningNotification.js +43 -0
  755. package/dist/src/hooks/notifs/useFastModeNotification.js +164 -0
  756. package/dist/src/hooks/notifs/useIDEStatusIndicator.js +174 -0
  757. package/dist/src/hooks/notifs/useInstallMessages.js +27 -0
  758. package/dist/src/hooks/notifs/useLspInitializationNotification.js +144 -0
  759. package/dist/src/hooks/notifs/useMcpConnectivityStatus.js +80 -0
  760. package/dist/src/hooks/notifs/useModelMigrationNotifications.js +53 -0
  761. package/dist/src/hooks/notifs/useNpmDeprecationNotification.js +24 -0
  762. package/dist/src/hooks/notifs/usePluginAutoupdateNotification.js +82 -0
  763. package/dist/src/hooks/notifs/usePluginInstallationStatus.js +127 -0
  764. package/dist/src/hooks/notifs/useRateLimitWarningNotification.js +118 -0
  765. package/dist/src/hooks/notifs/useSettingsErrors.js +64 -0
  766. package/dist/src/hooks/notifs/useStartupNotification.js +33 -0
  767. package/dist/src/hooks/notifs/useTeammateShutdownNotification.js +64 -0
  768. package/dist/src/hooks/renderPlaceholder.js +26 -0
  769. package/dist/src/hooks/toolPermission/PermissionContext.js +211 -0
  770. package/dist/src/hooks/toolPermission/handlers/coordinatorHandler.js +44 -0
  771. package/dist/src/hooks/toolPermission/handlers/interactiveHandler.js +397 -0
  772. package/dist/src/hooks/toolPermission/handlers/swarmWorkerHandler.js +108 -0
  773. package/dist/src/hooks/toolPermission/permissionLogging.js +145 -0
  774. package/dist/src/hooks/unifiedSuggestions.js +130 -0
  775. package/dist/src/hooks/useAfterFirstRender.js +12 -0
  776. package/dist/src/hooks/useApiKeyVerification.js +63 -0
  777. package/dist/src/hooks/useArrowKeyHistory.js +203 -0
  778. package/dist/src/hooks/useAssistantHistory.js +194 -0
  779. package/dist/src/hooks/useAwaySummary.js +105 -0
  780. package/dist/src/hooks/useBackgroundTaskNavigation.js +204 -0
  781. package/dist/src/hooks/useBlink.js +28 -0
  782. package/dist/src/hooks/useCanUseTool.js +192 -0
  783. package/dist/src/hooks/useCancelRequest.js +195 -0
  784. package/dist/src/hooks/useChromeExtensionNotification.js +49 -0
  785. package/dist/src/hooks/useClaudeCodeHintRecommendation.js +117 -0
  786. package/dist/src/hooks/useClipboardImageHint.js +59 -0
  787. package/dist/src/hooks/useCommandKeybindings.js +87 -0
  788. package/dist/src/hooks/useCommandQueue.js +10 -0
  789. package/dist/src/hooks/useCopyOnSelect.js +88 -0
  790. package/dist/src/hooks/useDeferredHookMessages.js +43 -0
  791. package/dist/src/hooks/useDiffData.js +69 -0
  792. package/dist/src/hooks/useDiffInIDE.js +252 -0
  793. package/dist/src/hooks/useDirectConnect.js +150 -0
  794. package/dist/src/hooks/useDoublePress.js +44 -0
  795. package/dist/src/hooks/useDynamicConfig.js +17 -0
  796. package/dist/src/hooks/useElapsedTime.js +25 -0
  797. package/dist/src/hooks/useExitOnCtrlCD.js +57 -0
  798. package/dist/src/hooks/useExitOnCtrlCDWithKeybindings.js +17 -0
  799. package/dist/src/hooks/useFileHistorySnapshotInit.js +14 -0
  800. package/dist/src/hooks/useGlobalKeybindings.js +215 -0
  801. package/dist/src/hooks/useHistorySearch.js +241 -0
  802. package/dist/src/hooks/useIDEIntegration.js +56 -0
  803. package/dist/src/hooks/useIdeAtMentioned.js +51 -0
  804. package/dist/src/hooks/useIdeConnectionStatus.js +21 -0
  805. package/dist/src/hooks/useIdeLogging.js +29 -0
  806. package/dist/src/hooks/useIdeSelection.js +106 -0
  807. package/dist/src/hooks/useInboxPoller.js +709 -0
  808. package/dist/src/hooks/useInputBuffer.js +73 -0
  809. package/dist/src/hooks/useIssueFlagBanner.js +115 -0
  810. package/dist/src/hooks/useLogMessages.js +98 -0
  811. package/dist/src/hooks/useLspPluginRecommendation.js +176 -0
  812. package/dist/src/hooks/useMailboxBridge.js +15 -0
  813. package/dist/src/hooks/useMainLoopModel.js +25 -0
  814. package/dist/src/hooks/useManagePlugins.js +261 -0
  815. package/dist/src/hooks/useMemoryUsage.js +28 -0
  816. package/dist/src/hooks/useMergedClients.js +11 -0
  817. package/dist/src/hooks/useMergedCommands.js +10 -0
  818. package/dist/src/hooks/useMergedTools.js +32 -0
  819. package/dist/src/hooks/useMinDisplayTime.js +26 -0
  820. package/dist/src/hooks/useNotifyAfterTimeout.js +51 -0
  821. package/dist/src/hooks/useOfficialMarketplaceNotification.js +46 -0
  822. package/dist/src/hooks/usePasteHandler.js +188 -0
  823. package/dist/src/hooks/usePluginRecommendationBase.js +101 -0
  824. package/dist/src/hooks/usePrStatus.js +91 -0
  825. package/dist/src/hooks/usePromptSuggestion.js +128 -0
  826. package/dist/src/hooks/usePromptsFromClaudeInChrome.js +66 -0
  827. package/dist/src/hooks/useQueueProcessor.js +46 -0
  828. package/dist/src/hooks/useRemoteSession.js +431 -0
  829. package/dist/src/hooks/useReplBridge.js +717 -0
  830. package/dist/src/hooks/useSSHSession.js +167 -0
  831. package/dist/src/hooks/useScheduledTasks.js +104 -0
  832. package/dist/src/hooks/useSearchInput.js +302 -0
  833. package/dist/src/hooks/useSessionBackgrounding.js +132 -0
  834. package/dist/src/hooks/useSettings.js +10 -0
  835. package/dist/src/hooks/useSettingsChange.js +13 -0
  836. package/dist/src/hooks/useSkillImprovementSurvey.js +69 -0
  837. package/dist/src/hooks/useSkillsChange.js +51 -0
  838. package/dist/src/hooks/useSwarmInitialization.js +67 -0
  839. package/dist/src/hooks/useSwarmPermissionPoller.js +215 -0
  840. package/dist/src/hooks/useTaskListWatcher.js +157 -0
  841. package/dist/src/hooks/useTasksV2.js +220 -0
  842. package/dist/src/hooks/useTeammateViewAutoExit.js +55 -0
  843. package/dist/src/hooks/useTelegramMirror.js +47 -0
  844. package/dist/src/hooks/useTeleportResume.js +81 -0
  845. package/dist/src/hooks/useTerminalSize.js +9 -0
  846. package/dist/src/hooks/useTextInput.js +397 -0
  847. package/dist/src/hooks/useTimeout.js +10 -0
  848. package/dist/src/hooks/useTurnDiffs.js +160 -0
  849. package/dist/src/hooks/useTypeahead.js +1617 -0
  850. package/dist/src/hooks/useUpdateNotification.js +22 -0
  851. package/dist/src/hooks/useVimInput.js +232 -0
  852. package/dist/src/hooks/useVirtualScroll.js +627 -0
  853. package/dist/src/hooks/useVoice.js +954 -0
  854. package/dist/src/hooks/useVoiceEnabled.js +21 -0
  855. package/dist/src/hooks/useVoiceIntegration.js +631 -0
  856. package/dist/src/hooks/useWhatsAppMirror.js +46 -0
  857. package/dist/src/index.js +18 -0
  858. package/dist/src/ink/Ansi.js +269 -0
  859. package/dist/src/ink/bidi.js +117 -0
  860. package/dist/src/ink/clearTerminal.js +58 -0
  861. package/dist/src/ink/colorize.js +198 -0
  862. package/dist/src/ink/components/AlternateScreen.js +74 -0
  863. package/dist/src/ink/components/App.js +558 -0
  864. package/dist/src/ink/components/AppContext.js +11 -0
  865. package/dist/src/ink/components/Box.js +153 -0
  866. package/dist/src/ink/components/Button.js +166 -0
  867. package/dist/src/ink/components/ClockContext.js +108 -0
  868. package/dist/src/ink/components/CursorDeclarationContext.js +3 -0
  869. package/dist/src/ink/components/ErrorOverview.js +49 -0
  870. package/dist/src/ink/components/Link.js +33 -0
  871. package/dist/src/ink/components/Newline.js +29 -0
  872. package/dist/src/ink/components/NoSelect.js +56 -0
  873. package/dist/src/ink/components/RawAnsi.js +45 -0
  874. package/dist/src/ink/components/ScrollBox.js +170 -0
  875. package/dist/src/ink/components/Spacer.js +19 -0
  876. package/dist/src/ink/components/StdinContext.js +16 -0
  877. package/dist/src/ink/components/TerminalFocusContext.js +45 -0
  878. package/dist/src/ink/components/TerminalSizeContext.js +3 -0
  879. package/dist/src/ink/components/Text.js +194 -0
  880. package/dist/src/ink/constants.js +2 -0
  881. package/dist/src/ink/devtools.js +16 -0
  882. package/dist/src/ink/dom.js +298 -0
  883. package/dist/src/ink/events/click-event.js +36 -0
  884. package/dist/src/ink/events/dispatcher.js +172 -0
  885. package/dist/src/ink/events/emitter.js +31 -0
  886. package/dist/src/ink/events/event-handlers.js +30 -0
  887. package/dist/src/ink/events/event.js +9 -0
  888. package/dist/src/ink/events/focus-event.js +16 -0
  889. package/dist/src/ink/events/input-event.js +161 -0
  890. package/dist/src/ink/events/keyboard-event.js +45 -0
  891. package/dist/src/ink/events/terminal-event.js +78 -0
  892. package/dist/src/ink/events/terminal-focus-event.js +15 -0
  893. package/dist/src/ink/focus.js +158 -0
  894. package/dist/src/ink/frame.js +30 -0
  895. package/dist/src/ink/get-max-width.js +23 -0
  896. package/dist/src/ink/hit-test.js +113 -0
  897. package/dist/src/ink/hooks/use-animation-frame.js +48 -0
  898. package/dist/src/ink/hooks/use-app.js +7 -0
  899. package/dist/src/ink/hooks/use-declared-cursor.js +60 -0
  900. package/dist/src/ink/hooks/use-input.js +70 -0
  901. package/dist/src/ink/hooks/use-interval.js +54 -0
  902. package/dist/src/ink/hooks/use-search-highlight.js +32 -0
  903. package/dist/src/ink/hooks/use-selection.js +60 -0
  904. package/dist/src/ink/hooks/use-stdin.js +7 -0
  905. package/dist/src/ink/hooks/use-tab-status.js +57 -0
  906. package/dist/src/ink/hooks/use-terminal-focus.js +15 -0
  907. package/dist/src/ink/hooks/use-terminal-title.js +29 -0
  908. package/dist/src/ink/hooks/use-terminal-viewport.js +77 -0
  909. package/dist/src/ink/ink.js +1644 -0
  910. package/dist/src/ink/instances.js +7 -0
  911. package/dist/src/ink/layout/engine.js +4 -0
  912. package/dist/src/ink/layout/geometry.js +61 -0
  913. package/dist/src/ink/layout/node.js +62 -0
  914. package/dist/src/ink/layout/yoga.js +237 -0
  915. package/dist/src/ink/line-width-cache.js +19 -0
  916. package/dist/src/ink/log-update.js +583 -0
  917. package/dist/src/ink/measure-element.js +8 -0
  918. package/dist/src/ink/measure-text.js +35 -0
  919. package/dist/src/ink/node-cache.js +30 -0
  920. package/dist/src/ink/optimizer.js +81 -0
  921. package/dist/src/ink/output.js +556 -0
  922. package/dist/src/ink/parse-keypress.js +695 -0
  923. package/dist/src/ink/reconciler.js +384 -0
  924. package/dist/src/ink/render-border.js +134 -0
  925. package/dist/src/ink/render-node-to-output.js +1216 -0
  926. package/dist/src/ink/render-to-screen.js +171 -0
  927. package/dist/src/ink/renderer.js +129 -0
  928. package/dist/src/ink/root.js +80 -0
  929. package/dist/src/ink/screen.js +1132 -0
  930. package/dist/src/ink/searchHighlight.js +78 -0
  931. package/dist/src/ink/selection.js +792 -0
  932. package/dist/src/ink/squash-text-nodes.js +56 -0
  933. package/dist/src/ink/stringWidth.js +200 -0
  934. package/dist/src/ink/styles.js +299 -0
  935. package/dist/src/ink/supports-hyperlinks.js +40 -0
  936. package/dist/src/ink/tabstops.js +39 -0
  937. package/dist/src/ink/terminal-focus-state.js +35 -0
  938. package/dist/src/ink/terminal-querier.js +173 -0
  939. package/dist/src/ink/terminal.js +208 -0
  940. package/dist/src/ink/termio/ansi.js +70 -0
  941. package/dist/src/ink/termio/csi.js +260 -0
  942. package/dist/src/ink/termio/dec.js +53 -0
  943. package/dist/src/ink/termio/esc.js +55 -0
  944. package/dist/src/ink/termio/osc.js +432 -0
  945. package/dist/src/ink/termio/parser.js +356 -0
  946. package/dist/src/ink/termio/sgr.js +292 -0
  947. package/dist/src/ink/termio/tokenize.js +264 -0
  948. package/dist/src/ink/termio/types.js +55 -0
  949. package/dist/src/ink/termio.js +24 -0
  950. package/dist/src/ink/useTerminalNotification.js +57 -0
  951. package/dist/src/ink/warn.js +10 -0
  952. package/dist/src/ink/widest-line.js +14 -0
  953. package/dist/src/ink/wrap-text.js +54 -0
  954. package/dist/src/ink/wrapAnsi.js +6 -0
  955. package/dist/src/ink.js +50 -0
  956. package/dist/src/interactiveHelpers.js +317 -0
  957. package/dist/src/keybindings/KeybindingContext.js +184 -0
  958. package/dist/src/keybindings/KeybindingProviderSetup.js +259 -0
  959. package/dist/src/keybindings/defaultBindings.js +333 -0
  960. package/dist/src/keybindings/loadUserBindings.js +393 -0
  961. package/dist/src/keybindings/match.js +111 -0
  962. package/dist/src/keybindings/parser.js +184 -0
  963. package/dist/src/keybindings/reservedShortcuts.js +109 -0
  964. package/dist/src/keybindings/resolver.js +182 -0
  965. package/dist/src/keybindings/schema.js +205 -0
  966. package/dist/src/keybindings/shortcutFormat.js +48 -0
  967. package/dist/src/keybindings/template.js +40 -0
  968. package/dist/src/keybindings/useKeybinding.js +161 -0
  969. package/dist/src/keybindings/useShortcutDisplay.js +43 -0
  970. package/dist/src/keybindings/validate.js +395 -0
  971. package/dist/src/main.js +4080 -0
  972. package/dist/src/memdir/findRelevantMemories.js +101 -0
  973. package/dist/src/memdir/memdir.js +408 -0
  974. package/dist/src/memdir/memoryAge.js +52 -0
  975. package/dist/src/memdir/memoryScan.js +65 -0
  976. package/dist/src/memdir/memoryTypes.js +260 -0
  977. package/dist/src/memdir/paths.js +236 -0
  978. package/dist/src/memdir/teamMemPaths.js +261 -0
  979. package/dist/src/memdir/teamMemPrompts.js +82 -0
  980. package/dist/src/migrations/migrateAutoUpdatesToSettings.js +47 -0
  981. package/dist/src/migrations/migrateBypassPermissionsAcceptedToSettings.js +32 -0
  982. package/dist/src/migrations/migrateEnableAllProjectMcpServersToSettings.js +83 -0
  983. package/dist/src/migrations/migrateFennecToOpus.js +39 -0
  984. package/dist/src/migrations/migrateLegacyOpusToCurrent.js +44 -0
  985. package/dist/src/migrations/migrateOpusToOpus1m.js +31 -0
  986. package/dist/src/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.js +23 -0
  987. package/dist/src/migrations/migrateSonnet1mToSonnet45.js +38 -0
  988. package/dist/src/migrations/migrateSonnet45ToSonnet46.js +48 -0
  989. package/dist/src/migrations/resetAutoModeOptInForDefaultOffer.js +47 -0
  990. package/dist/src/migrations/resetProToOpusDefault.js +46 -0
  991. package/dist/src/mirrors/shared.js +186 -0
  992. package/dist/src/moreright/useMoreRight.js +13 -0
  993. package/dist/src/native-ts/color-diff/index.js +821 -0
  994. package/dist/src/native-ts/file-index/index.js +328 -0
  995. package/dist/src/native-ts/yoga-layout/enums.js +101 -0
  996. package/dist/src/native-ts/yoga-layout/index.js +2113 -0
  997. package/dist/src/outputStyles/loadOutputStylesDir.js +73 -0
  998. package/dist/src/plugins/builtinPlugins.js +132 -0
  999. package/dist/src/plugins/bundled/index.js +22 -0
  1000. package/dist/src/projectOnboardingState.js +61 -0
  1001. package/dist/src/query/config.js +17 -0
  1002. package/dist/src/query/deps.js +12 -0
  1003. package/dist/src/query/stopHooks.js +334 -0
  1004. package/dist/src/query/tokenBudget.js +49 -0
  1005. package/dist/src/query.js +1330 -0
  1006. package/dist/src/recovery/bunBundleShim.js +11 -0
  1007. package/dist/src/remote/RemoteSessionManager.js +195 -0
  1008. package/dist/src/remote/SessionsWebSocket.js +305 -0
  1009. package/dist/src/remote/remotePermissionBridge.js +70 -0
  1010. package/dist/src/remote/sdkMessageAdapter.js +227 -0
  1011. package/dist/src/replLauncher.js +6 -0
  1012. package/dist/src/schemas/hooks.js +174 -0
  1013. package/dist/src/screens/Doctor.js +581 -0
  1014. package/dist/src/screens/REPL.js +4434 -0
  1015. package/dist/src/screens/ResumeConversation.js +341 -0
  1016. package/dist/src/self-hosted-runner/main.js +16 -0
  1017. package/dist/src/server/backends/dangerousBackend.js +16 -0
  1018. package/dist/src/server/connectHeadless.js +16 -0
  1019. package/dist/src/server/createDirectConnectSession.js +62 -0
  1020. package/dist/src/server/directConnectManager.js +153 -0
  1021. package/dist/src/server/lockfile.js +16 -0
  1022. package/dist/src/server/parseConnectUrl.js +16 -0
  1023. package/dist/src/server/server.js +16 -0
  1024. package/dist/src/server/serverBanner.js +16 -0
  1025. package/dist/src/server/serverLog.js +16 -0
  1026. package/dist/src/server/sessionManager.js +16 -0
  1027. package/dist/src/server/types.js +7 -0
  1028. package/dist/src/services/AgentSummary/agentSummary.js +147 -0
  1029. package/dist/src/services/MagicDocs/magicDocs.js +193 -0
  1030. package/dist/src/services/MagicDocs/prompts.js +110 -0
  1031. package/dist/src/services/PromptSuggestion/promptSuggestion.js +402 -0
  1032. package/dist/src/services/PromptSuggestion/speculation.js +643 -0
  1033. package/dist/src/services/SessionMemory/prompts.js +254 -0
  1034. package/dist/src/services/SessionMemory/sessionMemory.js +358 -0
  1035. package/dist/src/services/SessionMemory/sessionMemoryUtils.js +157 -0
  1036. package/dist/src/services/analytics/config.js +33 -0
  1037. package/dist/src/services/analytics/datadog.js +259 -0
  1038. package/dist/src/services/analytics/firstPartyEventLogger.js +342 -0
  1039. package/dist/src/services/analytics/firstPartyEventLoggingExporter.js +594 -0
  1040. package/dist/src/services/analytics/growthbook.js +952 -0
  1041. package/dist/src/services/analytics/index.js +114 -0
  1042. package/dist/src/services/analytics/metadata.js +698 -0
  1043. package/dist/src/services/analytics/sink.js +95 -0
  1044. package/dist/src/services/analytics/sinkKillswitch.js +19 -0
  1045. package/dist/src/services/api/adminRequests.js +57 -0
  1046. package/dist/src/services/api/bootstrap.js +149 -0
  1047. package/dist/src/services/api/claude.js +2461 -0
  1048. package/dist/src/services/api/client.js +325 -0
  1049. package/dist/src/services/api/dumpPrompts.js +174 -0
  1050. package/dist/src/services/api/emptyUsage.js +20 -0
  1051. package/dist/src/services/api/errorUtils.js +203 -0
  1052. package/dist/src/services/api/errors.js +934 -0
  1053. package/dist/src/services/api/filesApi.js +523 -0
  1054. package/dist/src/services/api/firstTokenDate.js +49 -0
  1055. package/dist/src/services/api/grove.js +272 -0
  1056. package/dist/src/services/api/index.js +23 -0
  1057. package/dist/src/services/api/logging.js +484 -0
  1058. package/dist/src/services/api/metricsOptOut.js +129 -0
  1059. package/dist/src/services/api/openai.js +1187 -0
  1060. package/dist/src/services/api/openrouter.js +30 -0
  1061. package/dist/src/services/api/overageCreditGrant.js +123 -0
  1062. package/dist/src/services/api/promptCacheBreakDetection.js +510 -0
  1063. package/dist/src/services/api/referral.js +219 -0
  1064. package/dist/src/services/api/sessionIngress.js +358 -0
  1065. package/dist/src/services/api/ultrareviewQuota.js +29 -0
  1066. package/dist/src/services/api/usage.js +31 -0
  1067. package/dist/src/services/api/withRetry.js +599 -0
  1068. package/dist/src/services/autoDream/autoDream.js +244 -0
  1069. package/dist/src/services/autoDream/config.js +17 -0
  1070. package/dist/src/services/autoDream/consolidationLock.js +122 -0
  1071. package/dist/src/services/autoDream/consolidationPrompt.js +56 -0
  1072. package/dist/src/services/awaySummary.js +61 -0
  1073. package/dist/src/services/claudeAiLimits.js +331 -0
  1074. package/dist/src/services/claudeAiLimitsHook.js +15 -0
  1075. package/dist/src/services/compact/apiMicrocompact.js +97 -0
  1076. package/dist/src/services/compact/autoCompact.js +236 -0
  1077. package/dist/src/services/compact/cachedMicrocompact.js +16 -0
  1078. package/dist/src/services/compact/compact.js +1258 -0
  1079. package/dist/src/services/compact/compactWarningHook.js +12 -0
  1080. package/dist/src/services/compact/compactWarningState.js +15 -0
  1081. package/dist/src/services/compact/grouping.js +58 -0
  1082. package/dist/src/services/compact/microCompact.js +414 -0
  1083. package/dist/src/services/compact/postCompactCleanup.js +72 -0
  1084. package/dist/src/services/compact/prompt.js +327 -0
  1085. package/dist/src/services/compact/sessionMemoryCompact.js +467 -0
  1086. package/dist/src/services/compact/timeBasedMCConfig.js +11 -0
  1087. package/dist/src/services/diagnosticTracking.js +282 -0
  1088. package/dist/src/services/extractMemories/extractMemories.js +444 -0
  1089. package/dist/src/services/extractMemories/prompts.js +129 -0
  1090. package/dist/src/services/internalLogging.js +68 -0
  1091. package/dist/src/services/limits/adapters/claude.js +219 -0
  1092. package/dist/src/services/limits/adapters/minimax.js +177 -0
  1093. package/dist/src/services/limits/adapters/ollama.js +189 -0
  1094. package/dist/src/services/limits/adapters/openai.js +167 -0
  1095. package/dist/src/services/limits/adapters/openrouter.js +166 -0
  1096. package/dist/src/services/limits/adapters/zai.js +154 -0
  1097. package/dist/src/services/limits/index.js +2 -0
  1098. package/dist/src/services/limits/registry.js +179 -0
  1099. package/dist/src/services/limits/sessionCounter.js +168 -0
  1100. package/dist/src/services/limits/types.js +1 -0
  1101. package/dist/src/services/lsp/LSPClient.js +306 -0
  1102. package/dist/src/services/lsp/LSPDiagnosticRegistry.js +277 -0
  1103. package/dist/src/services/lsp/LSPServerInstance.js +390 -0
  1104. package/dist/src/services/lsp/LSPServerManager.js +305 -0
  1105. package/dist/src/services/lsp/config.js +57 -0
  1106. package/dist/src/services/lsp/manager.js +246 -0
  1107. package/dist/src/services/lsp/passiveFeedback.js +226 -0
  1108. package/dist/src/services/mcp/InProcessTransport.js +54 -0
  1109. package/dist/src/services/mcp/MCPConnectionManager.js +50 -0
  1110. package/dist/src/services/mcp/SdkControlTransport.js +115 -0
  1111. package/dist/src/services/mcp/auth.js +1882 -0
  1112. package/dist/src/services/mcp/channelAllowlist.js +57 -0
  1113. package/dist/src/services/mcp/channelNotification.js +236 -0
  1114. package/dist/src/services/mcp/channelPermissions.js +192 -0
  1115. package/dist/src/services/mcp/claudeai.js +123 -0
  1116. package/dist/src/services/mcp/client.js +2480 -0
  1117. package/dist/src/services/mcp/config.js +1277 -0
  1118. package/dist/src/services/mcp/elicitationHandler.js +192 -0
  1119. package/dist/src/services/mcp/envExpansion.js +30 -0
  1120. package/dist/src/services/mcp/headersHelper.js +94 -0
  1121. package/dist/src/services/mcp/mcpStringUtils.js +85 -0
  1122. package/dist/src/services/mcp/normalization.js +21 -0
  1123. package/dist/src/services/mcp/oauthPort.js +69 -0
  1124. package/dist/src/services/mcp/officialRegistry.js +58 -0
  1125. package/dist/src/services/mcp/types.js +94 -0
  1126. package/dist/src/services/mcp/useManageMCPConnections.js +820 -0
  1127. package/dist/src/services/mcp/utils.js +433 -0
  1128. package/dist/src/services/mcp/vscodeSdkMcp.js +69 -0
  1129. package/dist/src/services/mcp/xaa.js +342 -0
  1130. package/dist/src/services/mcp/xaaIdpLogin.js +377 -0
  1131. package/dist/src/services/mcpServerApproval.js +29 -0
  1132. package/dist/src/services/mockRateLimits.js +666 -0
  1133. package/dist/src/services/notifier.js +114 -0
  1134. package/dist/src/services/oauth/auth-code-listener.js +236 -0
  1135. package/dist/src/services/oauth/client.js +545 -0
  1136. package/dist/src/services/oauth/crypto.js +19 -0
  1137. package/dist/src/services/oauth/getOauthProfile.js +48 -0
  1138. package/dist/src/services/oauth/index.js +152 -0
  1139. package/dist/src/services/oauth/types.js +1 -0
  1140. package/dist/src/services/orchestration/execution/AgentTaskExecutor.js +315 -0
  1141. package/dist/src/services/orchestration/execution/OrchestrationExecutionRuntime.js +1147 -0
  1142. package/dist/src/services/orchestration/execution/index.js +2 -0
  1143. package/dist/src/services/orchestration/execution/types.js +1 -0
  1144. package/dist/src/services/orchestration/global/GlobalOrchestratorRuntime.js +140 -0
  1145. package/dist/src/services/orchestration/global/index.js +3 -0
  1146. package/dist/src/services/orchestration/global/reporting.js +541 -0
  1147. package/dist/src/services/orchestration/global/types.js +1 -0
  1148. package/dist/src/services/orchestration/index.js +4 -0
  1149. package/dist/src/services/orchestration/policy/index.js +2 -0
  1150. package/dist/src/services/orchestration/policy/scoring.js +291 -0
  1151. package/dist/src/services/orchestration/policy/types.js +1 -0
  1152. package/dist/src/services/orchestration/squad/SquadOrchestratorRuntime.js +198 -0
  1153. package/dist/src/services/orchestration/squad/index.js +3 -0
  1154. package/dist/src/services/orchestration/squad/reporting.js +525 -0
  1155. package/dist/src/services/orchestration/squad/types.js +1 -0
  1156. package/dist/src/services/plugins/PluginInstallationManager.js +139 -0
  1157. package/dist/src/services/plugins/pluginCliCommands.js +230 -0
  1158. package/dist/src/services/plugins/pluginOperations.js +826 -0
  1159. package/dist/src/services/policyLimits/index.js +547 -0
  1160. package/dist/src/services/policyLimits/types.js +9 -0
  1161. package/dist/src/services/preventSleep.js +143 -0
  1162. package/dist/src/services/rateLimitMessages.js +271 -0
  1163. package/dist/src/services/rateLimitMocking.js +91 -0
  1164. package/dist/src/services/remoteManagedSettings/index.js +534 -0
  1165. package/dist/src/services/remoteManagedSettings/securityCheck.js +59 -0
  1166. package/dist/src/services/remoteManagedSettings/syncCache.js +90 -0
  1167. package/dist/src/services/remoteManagedSettings/syncCacheState.js +89 -0
  1168. package/dist/src/services/remoteManagedSettings/types.js +12 -0
  1169. package/dist/src/services/settingsSync/index.js +478 -0
  1170. package/dist/src/services/settingsSync/types.js +35 -0
  1171. package/dist/src/services/teamMemorySync/index.js +976 -0
  1172. package/dist/src/services/teamMemorySync/secretScanner.js +275 -0
  1173. package/dist/src/services/teamMemorySync/teamMemSecretGuard.js +35 -0
  1174. package/dist/src/services/teamMemorySync/types.js +47 -0
  1175. package/dist/src/services/teamMemorySync/watcher.js +326 -0
  1176. package/dist/src/services/tips/tipHistory.js +17 -0
  1177. package/dist/src/services/tips/tipRegistry.js +589 -0
  1178. package/dist/src/services/tips/tipScheduler.js +40 -0
  1179. package/dist/src/services/tokenEstimation.js +365 -0
  1180. package/dist/src/services/toolUseSummary/toolUseSummaryGenerator.js +87 -0
  1181. package/dist/src/services/tools/StreamingToolExecutor.js +413 -0
  1182. package/dist/src/services/tools/toolExecution.js +1218 -0
  1183. package/dist/src/services/tools/toolHooks.js +454 -0
  1184. package/dist/src/services/tools/toolOrchestration.js +110 -0
  1185. package/dist/src/services/vcr.js +291 -0
  1186. package/dist/src/services/voice.js +394 -0
  1187. package/dist/src/services/voiceKeyterms.js +94 -0
  1188. package/dist/src/services/voiceStreamSTT.js +406 -0
  1189. package/dist/src/setup.js +349 -0
  1190. package/dist/src/skills/bundled/batch.js +114 -0
  1191. package/dist/src/skills/bundled/claudeApi.js +145 -0
  1192. package/dist/src/skills/bundled/claudeApiContent.js +14 -0
  1193. package/dist/src/skills/bundled/claudeInChrome.js +27 -0
  1194. package/dist/src/skills/bundled/debug.js +99 -0
  1195. package/dist/src/skills/bundled/index.js +5 -0
  1196. package/dist/src/skills/bundled/keybindings.js +292 -0
  1197. package/dist/src/skills/bundled/loop.js +81 -0
  1198. package/dist/src/skills/bundled/loremIpsum.js +266 -0
  1199. package/dist/src/skills/bundled/remember.js +75 -0
  1200. package/dist/src/skills/bundled/scheduleRemoteAgents.js +373 -0
  1201. package/dist/src/skills/bundled/simplify.js +66 -0
  1202. package/dist/src/skills/bundled/skillify.js +184 -0
  1203. package/dist/src/skills/bundled/stuck.js +75 -0
  1204. package/dist/src/skills/bundled/updateConfig.js +463 -0
  1205. package/dist/src/skills/bundled/verify.js +25 -0
  1206. package/dist/src/skills/bundled/verifyContent.js +7 -0
  1207. package/dist/src/skills/bundledSkills.js +159 -0
  1208. package/dist/src/skills/loadSkillsDir.js +751 -0
  1209. package/dist/src/skills/mcpSkillBuilders.js +10 -0
  1210. package/dist/src/ssh/createSSHSession.js +16 -0
  1211. package/dist/src/state/AppState.js +184 -0
  1212. package/dist/src/state/AppStateStore.js +120 -0
  1213. package/dist/src/state/onChangeAppState.js +132 -0
  1214. package/dist/src/state/selectors.js +51 -0
  1215. package/dist/src/state/store.js +21 -0
  1216. package/dist/src/state/teammateViewHelpers.js +124 -0
  1217. package/dist/src/tasks/DreamTask/DreamTask.js +99 -0
  1218. package/dist/src/tasks/InProcessTeammateTask/InProcessTeammateTask.js +116 -0
  1219. package/dist/src/tasks/InProcessTeammateTask/types.js +35 -0
  1220. package/dist/src/tasks/LocalAgentTask/LocalAgentTask.js +507 -0
  1221. package/dist/src/tasks/LocalMainSessionTask.js +338 -0
  1222. package/dist/src/tasks/LocalShellTask/LocalShellTask.js +475 -0
  1223. package/dist/src/tasks/LocalShellTask/guards.js +9 -0
  1224. package/dist/src/tasks/LocalShellTask/killShellTasks.js +59 -0
  1225. package/dist/src/tasks/RemoteAgentTask/RemoteAgentTask.js +742 -0
  1226. package/dist/src/tasks/pillLabel.js +69 -0
  1227. package/dist/src/tasks/stopTask.js +67 -0
  1228. package/dist/src/tasks/types.js +18 -0
  1229. package/dist/src/tasks.js +39 -0
  1230. package/dist/src/telegram/bridge.js +329 -0
  1231. package/dist/src/telegram/config.js +89 -0
  1232. package/dist/src/telegram/mirror.js +91 -0
  1233. package/dist/src/tools/AgentTool/AgentTool.js +1222 -0
  1234. package/dist/src/tools/AgentTool/UI.js +592 -0
  1235. package/dist/src/tools/AgentTool/agentColorManager.js +43 -0
  1236. package/dist/src/tools/AgentTool/agentDisplay.js +72 -0
  1237. package/dist/src/tools/AgentTool/agentMemory.js +139 -0
  1238. package/dist/src/tools/AgentTool/agentMemorySnapshot.js +136 -0
  1239. package/dist/src/tools/AgentTool/agentToolUtils.js +456 -0
  1240. package/dist/src/tools/AgentTool/built-in/claudeCodeGuideAgent.js +175 -0
  1241. package/dist/src/tools/AgentTool/built-in/exploreAgent.js +76 -0
  1242. package/dist/src/tools/AgentTool/built-in/generalPurposeAgent.js +28 -0
  1243. package/dist/src/tools/AgentTool/built-in/planAgent.js +87 -0
  1244. package/dist/src/tools/AgentTool/built-in/statuslineSetup.js +140 -0
  1245. package/dist/src/tools/AgentTool/built-in/verificationAgent.js +146 -0
  1246. package/dist/src/tools/AgentTool/builtInAgents.js +59 -0
  1247. package/dist/src/tools/AgentTool/constants.js +11 -0
  1248. package/dist/src/tools/AgentTool/forkSubagent.js +177 -0
  1249. package/dist/src/tools/AgentTool/loadAgentsDir.js +497 -0
  1250. package/dist/src/tools/AgentTool/prompt.js +262 -0
  1251. package/dist/src/tools/AgentTool/resumeAgent.js +182 -0
  1252. package/dist/src/tools/AgentTool/runAgent.js +629 -0
  1253. package/dist/src/tools/AskUserQuestionTool/AskUserQuestionTool.js +237 -0
  1254. package/dist/src/tools/AskUserQuestionTool/prompt.js +38 -0
  1255. package/dist/src/tools/BashTool/BashTool.js +1008 -0
  1256. package/dist/src/tools/BashTool/BashToolResultMessage.js +168 -0
  1257. package/dist/src/tools/BashTool/UI.js +133 -0
  1258. package/dist/src/tools/BashTool/bashCommandHelpers.js +184 -0
  1259. package/dist/src/tools/BashTool/bashPermissions.js +2023 -0
  1260. package/dist/src/tools/BashTool/bashSecurity.js +2267 -0
  1261. package/dist/src/tools/BashTool/commandSemantics.js +105 -0
  1262. package/dist/src/tools/BashTool/commentLabel.js +14 -0
  1263. package/dist/src/tools/BashTool/destructiveCommandWarning.js +88 -0
  1264. package/dist/src/tools/BashTool/modeValidation.js +86 -0
  1265. package/dist/src/tools/BashTool/pathValidation.js +1080 -0
  1266. package/dist/src/tools/BashTool/prompt.js +334 -0
  1267. package/dist/src/tools/BashTool/readOnlyValidation.js +1794 -0
  1268. package/dist/src/tools/BashTool/sedEditParser.js +282 -0
  1269. package/dist/src/tools/BashTool/sedValidation.js +580 -0
  1270. package/dist/src/tools/BashTool/shouldUseSandbox.js +125 -0
  1271. package/dist/src/tools/BashTool/toolName.js +2 -0
  1272. package/dist/src/tools/BashTool/utils.js +180 -0
  1273. package/dist/src/tools/BriefTool/BriefTool.js +172 -0
  1274. package/dist/src/tools/BriefTool/UI.js +66 -0
  1275. package/dist/src/tools/BriefTool/attachments.js +86 -0
  1276. package/dist/src/tools/BriefTool/prompt.js +19 -0
  1277. package/dist/src/tools/BriefTool/upload.js +136 -0
  1278. package/dist/src/tools/ConfigTool/ConfigTool.js +398 -0
  1279. package/dist/src/tools/ConfigTool/UI.js +24 -0
  1280. package/dist/src/tools/ConfigTool/constants.js +1 -0
  1281. package/dist/src/tools/ConfigTool/prompt.js +82 -0
  1282. package/dist/src/tools/ConfigTool/supportedSettings.js +180 -0
  1283. package/dist/src/tools/EnterPlanModeTool/EnterPlanModeTool.js +98 -0
  1284. package/dist/src/tools/EnterPlanModeTool/UI.js +13 -0
  1285. package/dist/src/tools/EnterPlanModeTool/constants.js +1 -0
  1286. package/dist/src/tools/EnterPlanModeTool/prompt.js +164 -0
  1287. package/dist/src/tools/EnterWorktreeTool/EnterWorktreeTool.js +104 -0
  1288. package/dist/src/tools/EnterWorktreeTool/UI.js +8 -0
  1289. package/dist/src/tools/EnterWorktreeTool/constants.js +1 -0
  1290. package/dist/src/tools/EnterWorktreeTool/prompt.js +30 -0
  1291. package/dist/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.js +385 -0
  1292. package/dist/src/tools/ExitPlanModeTool/UI.js +31 -0
  1293. package/dist/src/tools/ExitPlanModeTool/constants.js +2 -0
  1294. package/dist/src/tools/ExitPlanModeTool/prompt.js +27 -0
  1295. package/dist/src/tools/ExitWorktreeTool/ExitWorktreeTool.js +257 -0
  1296. package/dist/src/tools/ExitWorktreeTool/UI.js +9 -0
  1297. package/dist/src/tools/ExitWorktreeTool/constants.js +1 -0
  1298. package/dist/src/tools/ExitWorktreeTool/prompt.js +32 -0
  1299. package/dist/src/tools/FileEditTool/FileEditTool.js +480 -0
  1300. package/dist/src/tools/FileEditTool/UI.js +201 -0
  1301. package/dist/src/tools/FileEditTool/constants.js +7 -0
  1302. package/dist/src/tools/FileEditTool/prompt.js +24 -0
  1303. package/dist/src/tools/FileEditTool/types.js +50 -0
  1304. package/dist/src/tools/FileEditTool/utils.js +579 -0
  1305. package/dist/src/tools/FileReadTool/FileReadTool.js +889 -0
  1306. package/dist/src/tools/FileReadTool/UI.js +125 -0
  1307. package/dist/src/tools/FileReadTool/imageProcessor.js +46 -0
  1308. package/dist/src/tools/FileReadTool/limits.js +70 -0
  1309. package/dist/src/tools/FileReadTool/prompt.js +31 -0
  1310. package/dist/src/tools/FileWriteTool/FileWriteTool.js +341 -0
  1311. package/dist/src/tools/FileWriteTool/UI.js +338 -0
  1312. package/dist/src/tools/FileWriteTool/prompt.js +15 -0
  1313. package/dist/src/tools/GlobTool/GlobTool.js +161 -0
  1314. package/dist/src/tools/GlobTool/UI.js +39 -0
  1315. package/dist/src/tools/GlobTool/prompt.js +6 -0
  1316. package/dist/src/tools/GrepTool/GrepTool.js +439 -0
  1317. package/dist/src/tools/GrepTool/UI.js +154 -0
  1318. package/dist/src/tools/GrepTool/prompt.js +16 -0
  1319. package/dist/src/tools/LSPTool/LSPTool.js +660 -0
  1320. package/dist/src/tools/LSPTool/UI.js +204 -0
  1321. package/dist/src/tools/LSPTool/formatters.js +445 -0
  1322. package/dist/src/tools/LSPTool/prompt.js +20 -0
  1323. package/dist/src/tools/LSPTool/schemas.js +197 -0
  1324. package/dist/src/tools/LSPTool/symbolContext.js +75 -0
  1325. package/dist/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +100 -0
  1326. package/dist/src/tools/ListMcpResourcesTool/UI.js +16 -0
  1327. package/dist/src/tools/ListMcpResourcesTool/prompt.js +18 -0
  1328. package/dist/src/tools/MCPTool/MCPTool.js +60 -0
  1329. package/dist/src/tools/MCPTool/UI.js +342 -0
  1330. package/dist/src/tools/MCPTool/classifyForCollapse.js +597 -0
  1331. package/dist/src/tools/MCPTool/prompt.js +3 -0
  1332. package/dist/src/tools/McpAuthTool/McpAuthTool.js +162 -0
  1333. package/dist/src/tools/NotebookEditTool/NotebookEditTool.js +421 -0
  1334. package/dist/src/tools/NotebookEditTool/UI.js +40 -0
  1335. package/dist/src/tools/NotebookEditTool/constants.js +2 -0
  1336. package/dist/src/tools/NotebookEditTool/prompt.js +2 -0
  1337. package/dist/src/tools/PowerShellTool/PowerShellTool.js +899 -0
  1338. package/dist/src/tools/PowerShellTool/UI.js +57 -0
  1339. package/dist/src/tools/PowerShellTool/clmTypes.js +207 -0
  1340. package/dist/src/tools/PowerShellTool/commandSemantics.js +115 -0
  1341. package/dist/src/tools/PowerShellTool/commonParameters.js +27 -0
  1342. package/dist/src/tools/PowerShellTool/destructiveCommandWarning.js +92 -0
  1343. package/dist/src/tools/PowerShellTool/gitSafety.js +185 -0
  1344. package/dist/src/tools/PowerShellTool/modeValidation.js +357 -0
  1345. package/dist/src/tools/PowerShellTool/pathValidation.js +1712 -0
  1346. package/dist/src/tools/PowerShellTool/powershellPermissions.js +1351 -0
  1347. package/dist/src/tools/PowerShellTool/powershellSecurity.js +942 -0
  1348. package/dist/src/tools/PowerShellTool/prompt.js +134 -0
  1349. package/dist/src/tools/PowerShellTool/readOnlyValidation.js +1633 -0
  1350. package/dist/src/tools/PowerShellTool/toolName.js +2 -0
  1351. package/dist/src/tools/REPLTool/constants.js +43 -0
  1352. package/dist/src/tools/REPLTool/primitiveTools.js +36 -0
  1353. package/dist/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +112 -0
  1354. package/dist/src/tools/ReadMcpResourceTool/UI.js +23 -0
  1355. package/dist/src/tools/ReadMcpResourceTool/prompt.js +15 -0
  1356. package/dist/src/tools/RemoteTriggerTool/RemoteTriggerTool.js +142 -0
  1357. package/dist/src/tools/RemoteTriggerTool/UI.js +11 -0
  1358. package/dist/src/tools/RemoteTriggerTool/prompt.js +12 -0
  1359. package/dist/src/tools/ScheduleCronTool/CronCreateTool.js +120 -0
  1360. package/dist/src/tools/ScheduleCronTool/CronDeleteTool.js +74 -0
  1361. package/dist/src/tools/ScheduleCronTool/CronListTool.js +77 -0
  1362. package/dist/src/tools/ScheduleCronTool/UI.js +28 -0
  1363. package/dist/src/tools/ScheduleCronTool/prompt.js +115 -0
  1364. package/dist/src/tools/SendMessageTool/SendMessageTool.js +675 -0
  1365. package/dist/src/tools/SendMessageTool/UI.js +23 -0
  1366. package/dist/src/tools/SendMessageTool/constants.js +1 -0
  1367. package/dist/src/tools/SendMessageTool/prompt.js +47 -0
  1368. package/dist/src/tools/SkillTool/SkillTool.js +827 -0
  1369. package/dist/src/tools/SkillTool/UI.js +60 -0
  1370. package/dist/src/tools/SkillTool/constants.js +1 -0
  1371. package/dist/src/tools/SkillTool/prompt.js +184 -0
  1372. package/dist/src/tools/SleepTool/prompt.js +14 -0
  1373. package/dist/src/tools/SyntheticOutputTool/SyntheticOutputTool.js +138 -0
  1374. package/dist/src/tools/TaskCreateTool/TaskCreateTool.js +104 -0
  1375. package/dist/src/tools/TaskCreateTool/constants.js +1 -0
  1376. package/dist/src/tools/TaskCreateTool/prompt.js +52 -0
  1377. package/dist/src/tools/TaskGetTool/TaskGetTool.js +106 -0
  1378. package/dist/src/tools/TaskGetTool/constants.js +1 -0
  1379. package/dist/src/tools/TaskGetTool/prompt.js +23 -0
  1380. package/dist/src/tools/TaskListTool/TaskListTool.js +89 -0
  1381. package/dist/src/tools/TaskListTool/constants.js +1 -0
  1382. package/dist/src/tools/TaskListTool/prompt.js +44 -0
  1383. package/dist/src/tools/TaskOutputTool/TaskOutputTool.js +535 -0
  1384. package/dist/src/tools/TaskOutputTool/constants.js +1 -0
  1385. package/dist/src/tools/TaskStopTool/TaskStopTool.js +110 -0
  1386. package/dist/src/tools/TaskStopTool/UI.js +30 -0
  1387. package/dist/src/tools/TaskStopTool/prompt.js +7 -0
  1388. package/dist/src/tools/TaskUpdateTool/TaskUpdateTool.js +301 -0
  1389. package/dist/src/tools/TaskUpdateTool/constants.js +1 -0
  1390. package/dist/src/tools/TaskUpdateTool/prompt.js +76 -0
  1391. package/dist/src/tools/TeamCreateTool/TeamCreateTool.js +177 -0
  1392. package/dist/src/tools/TeamCreateTool/UI.js +4 -0
  1393. package/dist/src/tools/TeamCreateTool/constants.js +1 -0
  1394. package/dist/src/tools/TeamCreateTool/prompt.js +113 -0
  1395. package/dist/src/tools/TeamDeleteTool/TeamDeleteTool.js +102 -0
  1396. package/dist/src/tools/TeamDeleteTool/UI.js +13 -0
  1397. package/dist/src/tools/TeamDeleteTool/constants.js +1 -0
  1398. package/dist/src/tools/TeamDeleteTool/prompt.js +16 -0
  1399. package/dist/src/tools/TodoWriteTool/TodoWriteTool.js +99 -0
  1400. package/dist/src/tools/TodoWriteTool/constants.js +1 -0
  1401. package/dist/src/tools/TodoWriteTool/prompt.js +181 -0
  1402. package/dist/src/tools/ToolSearchTool/ToolSearchTool.js +357 -0
  1403. package/dist/src/tools/ToolSearchTool/constants.js +1 -0
  1404. package/dist/src/tools/ToolSearchTool/prompt.js +99 -0
  1405. package/dist/src/tools/TungstenTool/TungstenLiveMonitor.js +7 -0
  1406. package/dist/src/tools/TungstenTool/TungstenTool.js +3 -0
  1407. package/dist/src/tools/WebFetchTool/UI.js +30 -0
  1408. package/dist/src/tools/WebFetchTool/WebFetchTool.js +246 -0
  1409. package/dist/src/tools/WebFetchTool/preapproved.js +155 -0
  1410. package/dist/src/tools/WebFetchTool/prompt.js +39 -0
  1411. package/dist/src/tools/WebFetchTool/utils.js +381 -0
  1412. package/dist/src/tools/WebSearchTool/UI.js +66 -0
  1413. package/dist/src/tools/WebSearchTool/WebSearchTool.js +352 -0
  1414. package/dist/src/tools/WebSearchTool/prompt.js +32 -0
  1415. package/dist/src/tools/WorkflowTool/constants.js +2 -0
  1416. package/dist/src/tools/shared/gitOperationTracking.js +220 -0
  1417. package/dist/src/tools/shared/spawnMultiAgent.js +805 -0
  1418. package/dist/src/tools/testing/TestingPermissionTool.js +72 -0
  1419. package/dist/src/tools/utils.js +24 -0
  1420. package/dist/src/tools.js +332 -0
  1421. package/dist/src/types/command.js +10 -0
  1422. package/dist/src/types/connectorText.js +2 -0
  1423. package/dist/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.js +673 -0
  1424. package/dist/src/types/generated/events_mono/common/v1/auth.js +49 -0
  1425. package/dist/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.js +147 -0
  1426. package/dist/src/types/generated/google/protobuf/timestamp.js +38 -0
  1427. package/dist/src/types/hooks.js +153 -0
  1428. package/dist/src/types/ids.js +27 -0
  1429. package/dist/src/types/logs.js +11 -0
  1430. package/dist/src/types/message.js +1 -0
  1431. package/dist/src/types/permissions.js +25 -0
  1432. package/dist/src/types/plugin.js +72 -0
  1433. package/dist/src/types/textInputTypes.js +20 -0
  1434. package/dist/src/types/utils.js +5 -0
  1435. package/dist/src/upstreamproxy/relay.js +346 -0
  1436. package/dist/src/upstreamproxy/upstreamproxy.js +236 -0
  1437. package/dist/src/utils/CircularBuffer.js +75 -0
  1438. package/dist/src/utils/Cursor.js +1229 -0
  1439. package/dist/src/utils/QueryGuard.js +115 -0
  1440. package/dist/src/utils/Shell.js +374 -0
  1441. package/dist/src/utils/ShellCommand.js +338 -0
  1442. package/dist/src/utils/abortController.js +74 -0
  1443. package/dist/src/utils/activityManager.js +127 -0
  1444. package/dist/src/utils/advisor.js +77 -0
  1445. package/dist/src/utils/agentContext.js +91 -0
  1446. package/dist/src/utils/agentId.js +83 -0
  1447. package/dist/src/utils/agentSwarmsEnabled.js +37 -0
  1448. package/dist/src/utils/agenticSessionSearch.js +255 -0
  1449. package/dist/src/utils/analyzeContext.js +848 -0
  1450. package/dist/src/utils/ansiToPng.js +259 -0
  1451. package/dist/src/utils/ansiToSvg.js +207 -0
  1452. package/dist/src/utils/api.js +555 -0
  1453. package/dist/src/utils/apiPreconnect.js +62 -0
  1454. package/dist/src/utils/appleTerminalBackup.js +95 -0
  1455. package/dist/src/utils/argumentSubstitution.js +114 -0
  1456. package/dist/src/utils/array.js +12 -0
  1457. package/dist/src/utils/asciicast.js +200 -0
  1458. package/dist/src/utils/attachments.js +2514 -0
  1459. package/dist/src/utils/attribution.js +308 -0
  1460. package/dist/src/utils/attributionHooks.js +16 -0
  1461. package/dist/src/utils/attributionTrailer.js +16 -0
  1462. package/dist/src/utils/auth.js +2022 -0
  1463. package/dist/src/utils/authFileDescriptor.js +152 -0
  1464. package/dist/src/utils/authPortable.js +14 -0
  1465. package/dist/src/utils/autoModeDenials.js +15 -0
  1466. package/dist/src/utils/autoRunIssue.js +112 -0
  1467. package/dist/src/utils/autoUpdater.js +461 -0
  1468. package/dist/src/utils/aws.js +44 -0
  1469. package/dist/src/utils/awsAuthStatusManager.js +66 -0
  1470. package/dist/src/utils/background/remote/preconditions.js +175 -0
  1471. package/dist/src/utils/background/remote/remoteSession.js +53 -0
  1472. package/dist/src/utils/backgroundHousekeeping.js +66 -0
  1473. package/dist/src/utils/bash/ParsedCommand.js +241 -0
  1474. package/dist/src/utils/bash/ShellSnapshot.js +489 -0
  1475. package/dist/src/utils/bash/ast.js +2590 -0
  1476. package/dist/src/utils/bash/bashParser.js +4355 -0
  1477. package/dist/src/utils/bash/bashPipeCommand.js +249 -0
  1478. package/dist/src/utils/bash/commands.js +1131 -0
  1479. package/dist/src/utils/bash/heredoc.js +647 -0
  1480. package/dist/src/utils/bash/parser.js +195 -0
  1481. package/dist/src/utils/bash/prefix.js +154 -0
  1482. package/dist/src/utils/bash/registry.js +23 -0
  1483. package/dist/src/utils/bash/shellCompletion.js +196 -0
  1484. package/dist/src/utils/bash/shellPrefix.js +25 -0
  1485. package/dist/src/utils/bash/shellQuote.js +253 -0
  1486. package/dist/src/utils/bash/shellQuoting.js +106 -0
  1487. package/dist/src/utils/bash/specs/alias.js +11 -0
  1488. package/dist/src/utils/bash/specs/index.js +16 -0
  1489. package/dist/src/utils/bash/specs/nohup.js +10 -0
  1490. package/dist/src/utils/bash/specs/pyright.js +88 -0
  1491. package/dist/src/utils/bash/specs/sleep.js +10 -0
  1492. package/dist/src/utils/bash/specs/srun.js +28 -0
  1493. package/dist/src/utils/bash/specs/time.js +10 -0
  1494. package/dist/src/utils/bash/specs/timeout.js +17 -0
  1495. package/dist/src/utils/bash/treeSitterAnalysis.js +407 -0
  1496. package/dist/src/utils/betas.js +332 -0
  1497. package/dist/src/utils/billing.js +54 -0
  1498. package/dist/src/utils/binaryCheck.js +40 -0
  1499. package/dist/src/utils/browser.js +58 -0
  1500. package/dist/src/utils/bufferedWriter.js +77 -0
  1501. package/dist/src/utils/bundledMode.js +19 -0
  1502. package/dist/src/utils/caCerts.js +93 -0
  1503. package/dist/src/utils/caCertsConfig.js +77 -0
  1504. package/dist/src/utils/cachePaths.js +28 -0
  1505. package/dist/src/utils/ccshareResume.js +16 -0
  1506. package/dist/src/utils/classifierApprovals.js +66 -0
  1507. package/dist/src/utils/classifierApprovalsHook.js +10 -0
  1508. package/dist/src/utils/claudeCodeHints.js +142 -0
  1509. package/dist/src/utils/claudeDesktop.js +108 -0
  1510. package/dist/src/utils/claudeInChrome/chromeNativeHost.js +416 -0
  1511. package/dist/src/utils/claudeInChrome/common.js +466 -0
  1512. package/dist/src/utils/claudeInChrome/mcpServer.js +237 -0
  1513. package/dist/src/utils/claudeInChrome/prompt.js +79 -0
  1514. package/dist/src/utils/claudeInChrome/setup.js +320 -0
  1515. package/dist/src/utils/claudeInChrome/setupPortable.js +172 -0
  1516. package/dist/src/utils/claudeInChrome/toolRendering.js +234 -0
  1517. package/dist/src/utils/claudemd.js +1054 -0
  1518. package/dist/src/utils/cleanup.js +514 -0
  1519. package/dist/src/utils/cleanupRegistry.js +22 -0
  1520. package/dist/src/utils/cliArgs.js +53 -0
  1521. package/dist/src/utils/cliHighlight.js +45 -0
  1522. package/dist/src/utils/codeIndexing.js +149 -0
  1523. package/dist/src/utils/collapseBackgroundBashNotifications.js +70 -0
  1524. package/dist/src/utils/collapseHookSummaries.js +48 -0
  1525. package/dist/src/utils/collapseReadSearch.js +871 -0
  1526. package/dist/src/utils/collapseTeammateShutdowns.js +44 -0
  1527. package/dist/src/utils/combinedAbortSignal.js +40 -0
  1528. package/dist/src/utils/commandLifecycle.js +7 -0
  1529. package/dist/src/utils/commitAttribution.js +720 -0
  1530. package/dist/src/utils/completionCache.js +138 -0
  1531. package/dist/src/utils/computerUse/appNames.js +170 -0
  1532. package/dist/src/utils/computerUse/cleanup.js +66 -0
  1533. package/dist/src/utils/computerUse/common.js +56 -0
  1534. package/dist/src/utils/computerUse/computerUseLock.js +183 -0
  1535. package/dist/src/utils/computerUse/drainRunLoop.js +71 -0
  1536. package/dist/src/utils/computerUse/escHotkey.js +53 -0
  1537. package/dist/src/utils/computerUse/executor.js +480 -0
  1538. package/dist/src/utils/computerUse/gates.js +55 -0
  1539. package/dist/src/utils/computerUse/hostAdapter.js +62 -0
  1540. package/dist/src/utils/computerUse/inputLoader.js +27 -0
  1541. package/dist/src/utils/computerUse/mcpServer.js +84 -0
  1542. package/dist/src/utils/computerUse/setup.js +42 -0
  1543. package/dist/src/utils/computerUse/swiftLoader.js +20 -0
  1544. package/dist/src/utils/computerUse/toolRendering.js +100 -0
  1545. package/dist/src/utils/computerUse/wrapper.js +318 -0
  1546. package/dist/src/utils/concurrentSessions.js +179 -0
  1547. package/dist/src/utils/config.js +1084 -0
  1548. package/dist/src/utils/configConstants.js +18 -0
  1549. package/dist/src/utils/contentArray.js +45 -0
  1550. package/dist/src/utils/context.js +185 -0
  1551. package/dist/src/utils/contextAnalysis.js +171 -0
  1552. package/dist/src/utils/contextSuggestions.js +158 -0
  1553. package/dist/src/utils/controlMessageCompat.js +31 -0
  1554. package/dist/src/utils/conversationRecovery.js +436 -0
  1555. package/dist/src/utils/cron.js +260 -0
  1556. package/dist/src/utils/cronJitterConfig.js +62 -0
  1557. package/dist/src/utils/cronScheduler.js +388 -0
  1558. package/dist/src/utils/cronTasks.js +332 -0
  1559. package/dist/src/utils/cronTasksLock.js +164 -0
  1560. package/dist/src/utils/crossProjectResume.js +46 -0
  1561. package/dist/src/utils/crypto.js +13 -0
  1562. package/dist/src/utils/cwd.js +29 -0
  1563. package/dist/src/utils/databaseMcp/common.js +48 -0
  1564. package/dist/src/utils/databaseMcp/mcpServer.js +2 -0
  1565. package/dist/src/utils/databaseMcp/server/connection.js +243 -0
  1566. package/dist/src/utils/databaseMcp/server/index.js +1442 -0
  1567. package/dist/src/utils/databaseMcp/server/queries.js +683 -0
  1568. package/dist/src/utils/databaseMcp/server/types.js +7 -0
  1569. package/dist/src/utils/databaseMcp/setup.js +28 -0
  1570. package/dist/src/utils/debug.js +220 -0
  1571. package/dist/src/utils/debugFilter.js +125 -0
  1572. package/dist/src/utils/deepLink/banner.js +103 -0
  1573. package/dist/src/utils/deepLink/parseDeepLink.js +138 -0
  1574. package/dist/src/utils/deepLink/protocolHandler.js +119 -0
  1575. package/dist/src/utils/deepLink/registerProtocol.js +291 -0
  1576. package/dist/src/utils/deepLink/terminalLauncher.js +455 -0
  1577. package/dist/src/utils/deepLink/terminalPreference.js +51 -0
  1578. package/dist/src/utils/desktopDeepLink.js +208 -0
  1579. package/dist/src/utils/detectRepository.js +157 -0
  1580. package/dist/src/utils/diagLogs.js +74 -0
  1581. package/dist/src/utils/diff.js +108 -0
  1582. package/dist/src/utils/directMemberMessage.js +34 -0
  1583. package/dist/src/utils/displayTags.js +46 -0
  1584. package/dist/src/utils/doctorContextWarnings.js +179 -0
  1585. package/dist/src/utils/doctorDiagnostic.js +495 -0
  1586. package/dist/src/utils/dxt/helpers.js +64 -0
  1587. package/dist/src/utils/dxt/zip.js +167 -0
  1588. package/dist/src/utils/earlyInput.js +166 -0
  1589. package/dist/src/utils/editor.js +163 -0
  1590. package/dist/src/utils/effort.js +278 -0
  1591. package/dist/src/utils/embeddedTools.js +26 -0
  1592. package/dist/src/utils/env.js +358 -0
  1593. package/dist/src/utils/envDynamic.js +130 -0
  1594. package/dist/src/utils/envUtils.js +192 -0
  1595. package/dist/src/utils/envValidation.js +26 -0
  1596. package/dist/src/utils/errorLogSink.js +197 -0
  1597. package/dist/src/utils/errors.js +207 -0
  1598. package/dist/src/utils/eventLoopStallDetector.js +16 -0
  1599. package/dist/src/utils/exampleCommands.js +165 -0
  1600. package/dist/src/utils/execFileNoThrow.js +93 -0
  1601. package/dist/src/utils/execFileNoThrowPortable.js +111 -0
  1602. package/dist/src/utils/execSyncWrapper.js +68 -0
  1603. package/dist/src/utils/exportRenderer.js +71 -0
  1604. package/dist/src/utils/extraUsage.js +19 -0
  1605. package/dist/src/utils/fastMode.js +393 -0
  1606. package/dist/src/utils/file.js +467 -0
  1607. package/dist/src/utils/fileHistory.js +851 -0
  1608. package/dist/src/utils/fileOperationAnalytics.js +45 -0
  1609. package/dist/src/utils/filePersistence/filePersistence.js +212 -0
  1610. package/dist/src/utils/filePersistence/outputsScanner.js +104 -0
  1611. package/dist/src/utils/filePersistence/types.js +5 -0
  1612. package/dist/src/utils/fileRead.js +81 -0
  1613. package/dist/src/utils/fileReadCache.js +78 -0
  1614. package/dist/src/utils/fileStateCache.js +99 -0
  1615. package/dist/src/utils/findExecutable.js +13 -0
  1616. package/dist/src/utils/fingerprint.js +59 -0
  1617. package/dist/src/utils/forkedAgent.js +410 -0
  1618. package/dist/src/utils/format.js +238 -0
  1619. package/dist/src/utils/formatBriefTimestamp.js +72 -0
  1620. package/dist/src/utils/fpsTracker.js +34 -0
  1621. package/dist/src/utils/frontmatterParser.js +260 -0
  1622. package/dist/src/utils/fsOperations.js +834 -0
  1623. package/dist/src/utils/fullscreen.js +194 -0
  1624. package/dist/src/utils/generatedFiles.js +122 -0
  1625. package/dist/src/utils/generators.js +67 -0
  1626. package/dist/src/utils/genericProcessUtils.js +155 -0
  1627. package/dist/src/utils/getWorktreePaths.js +56 -0
  1628. package/dist/src/utils/getWorktreePathsPortable.js +23 -0
  1629. package/dist/src/utils/ghPrStatus.js +71 -0
  1630. package/dist/src/utils/git/gitConfigParser.js +226 -0
  1631. package/dist/src/utils/git/gitFilesystem.js +606 -0
  1632. package/dist/src/utils/git/gitignore.js +84 -0
  1633. package/dist/src/utils/git.js +725 -0
  1634. package/dist/src/utils/gitDiff.js +395 -0
  1635. package/dist/src/utils/gitSettings.js +18 -0
  1636. package/dist/src/utils/github/ghAuthStatus.js +23 -0
  1637. package/dist/src/utils/githubRepoPathMapping.js +135 -0
  1638. package/dist/src/utils/glob.js +90 -0
  1639. package/dist/src/utils/gracefulShutdown.js +447 -0
  1640. package/dist/src/utils/groupToolUses.js +126 -0
  1641. package/dist/src/utils/handlePromptSubmit.js +398 -0
  1642. package/dist/src/utils/hash.js +46 -0
  1643. package/dist/src/utils/headlessProfiler.js +147 -0
  1644. package/dist/src/utils/heapDumpService.js +202 -0
  1645. package/dist/src/utils/heatmap.js +151 -0
  1646. package/dist/src/utils/highlightMatch.js +28 -0
  1647. package/dist/src/utils/hooks/AsyncHookRegistry.js +187 -0
  1648. package/dist/src/utils/hooks/apiQueryHookHelper.js +77 -0
  1649. package/dist/src/utils/hooks/execAgentHook.js +257 -0
  1650. package/dist/src/utils/hooks/execHttpHook.js +184 -0
  1651. package/dist/src/utils/hooks/execPromptHook.js +171 -0
  1652. package/dist/src/utils/hooks/fileChangedWatcher.js +161 -0
  1653. package/dist/src/utils/hooks/hookEvents.js +111 -0
  1654. package/dist/src/utils/hooks/hookHelpers.js +60 -0
  1655. package/dist/src/utils/hooks/hooksConfigManager.js +323 -0
  1656. package/dist/src/utils/hooks/hooksConfigSnapshot.js +114 -0
  1657. package/dist/src/utils/hooks/hooksSettings.js +204 -0
  1658. package/dist/src/utils/hooks/postSamplingHooks.js +39 -0
  1659. package/dist/src/utils/hooks/registerFrontmatterHooks.js +47 -0
  1660. package/dist/src/utils/hooks/registerSkillHooks.js +40 -0
  1661. package/dist/src/utils/hooks/sessionHooks.js +252 -0
  1662. package/dist/src/utils/hooks/skillImprovement.js +211 -0
  1663. package/dist/src/utils/hooks/ssrfGuard.js +258 -0
  1664. package/dist/src/utils/hooks.js +3668 -0
  1665. package/dist/src/utils/horizontalScroll.js +108 -0
  1666. package/dist/src/utils/http.js +121 -0
  1667. package/dist/src/utils/hyperlink.js +28 -0
  1668. package/dist/src/utils/iTermBackup.js +48 -0
  1669. package/dist/src/utils/ide.js +1235 -0
  1670. package/dist/src/utils/idePathConversion.js +66 -0
  1671. package/dist/src/utils/idleTimeout.js +44 -0
  1672. package/dist/src/utils/imagePaste.js +329 -0
  1673. package/dist/src/utils/imageResizer.js +664 -0
  1674. package/dist/src/utils/imageStore.js +150 -0
  1675. package/dist/src/utils/imageValidation.js +92 -0
  1676. package/dist/src/utils/immediateCommand.js +12 -0
  1677. package/dist/src/utils/inProcessTeammateHelpers.js +71 -0
  1678. package/dist/src/utils/ink.js +20 -0
  1679. package/dist/src/utils/intl.js +83 -0
  1680. package/dist/src/utils/jetbrains.js +152 -0
  1681. package/dist/src/utils/json.js +295 -0
  1682. package/dist/src/utils/jsonRead.js +14 -0
  1683. package/dist/src/utils/keyboardShortcuts.js +11 -0
  1684. package/dist/src/utils/lazySchema.js +8 -0
  1685. package/dist/src/utils/listSessionsImpl.js +332 -0
  1686. package/dist/src/utils/localInstaller.js +131 -0
  1687. package/dist/src/utils/lockfile.js +22 -0
  1688. package/dist/src/utils/log.js +280 -0
  1689. package/dist/src/utils/logoV2Utils.js +290 -0
  1690. package/dist/src/utils/mailbox.js +50 -0
  1691. package/dist/src/utils/managedEnv.js +160 -0
  1692. package/dist/src/utils/managedEnvConstants.js +200 -0
  1693. package/dist/src/utils/markdown.js +300 -0
  1694. package/dist/src/utils/markdownConfigLoader.js +494 -0
  1695. package/dist/src/utils/mcp/dateTimeParser.js +102 -0
  1696. package/dist/src/utils/mcp/elicitationValidation.js +259 -0
  1697. package/dist/src/utils/mcpInstructionsDelta.js +97 -0
  1698. package/dist/src/utils/mcpOutputStorage.js +159 -0
  1699. package/dist/src/utils/mcpValidation.js +165 -0
  1700. package/dist/src/utils/mcpWebSocketTransport.js +180 -0
  1701. package/dist/src/utils/memoize.js +205 -0
  1702. package/dist/src/utils/memory/types.js +9 -0
  1703. package/dist/src/utils/memory/versions.js +7 -0
  1704. package/dist/src/utils/memoryFileDetection.js +247 -0
  1705. package/dist/src/utils/messagePredicates.js +6 -0
  1706. package/dist/src/utils/messageQueueManager.js +430 -0
  1707. package/dist/src/utils/messages/mappers.js +240 -0
  1708. package/dist/src/utils/messages/systemInit.js +74 -0
  1709. package/dist/src/utils/messages.js +4273 -0
  1710. package/dist/src/utils/model/agent.js +128 -0
  1711. package/dist/src/utils/model/aliases.js +21 -0
  1712. package/dist/src/utils/model/antModels.js +25 -0
  1713. package/dist/src/utils/model/bedrock.js +220 -0
  1714. package/dist/src/utils/model/check1mAccess.js +64 -0
  1715. package/dist/src/utils/model/configs.js +93 -0
  1716. package/dist/src/utils/model/contextWindowUpgradeCheck.js +41 -0
  1717. package/dist/src/utils/model/deprecation.js +72 -0
  1718. package/dist/src/utils/model/model.js +641 -0
  1719. package/dist/src/utils/model/modelAllowlist.js +148 -0
  1720. package/dist/src/utils/model/modelCapabilities.js +107 -0
  1721. package/dist/src/utils/model/modelOptions.js +645 -0
  1722. package/dist/src/utils/model/modelStrings.js +144 -0
  1723. package/dist/src/utils/model/modelSupportOverrides.js +40 -0
  1724. package/dist/src/utils/model/openrouter.js +51 -0
  1725. package/dist/src/utils/model/providerBaseUrls.js +77 -0
  1726. package/dist/src/utils/model/providerCatalog.js +81 -0
  1727. package/dist/src/utils/model/providerModels.js +334 -0
  1728. package/dist/src/utils/model/providerProfiles.js +392 -0
  1729. package/dist/src/utils/model/providerProfilesDb.js +886 -0
  1730. package/dist/src/utils/model/providerSwitch.js +50 -0
  1731. package/dist/src/utils/model/providerWorkspaces.js +36 -0
  1732. package/dist/src/utils/model/providers.js +199 -0
  1733. package/dist/src/utils/model/validateModel.js +257 -0
  1734. package/dist/src/utils/modelCost.js +160 -0
  1735. package/dist/src/utils/modifiers.js +35 -0
  1736. package/dist/src/utils/mtls.js +134 -0
  1737. package/dist/src/utils/nativeInstaller/download.js +370 -0
  1738. package/dist/src/utils/nativeInstaller/index.js +8 -0
  1739. package/dist/src/utils/nativeInstaller/installer.js +1396 -0
  1740. package/dist/src/utils/nativeInstaller/packageManagers.js +258 -0
  1741. package/dist/src/utils/nativeInstaller/pidLock.js +347 -0
  1742. package/dist/src/utils/notebook.js +176 -0
  1743. package/dist/src/utils/objectGroupBy.js +15 -0
  1744. package/dist/src/utils/orchestration/store/index.js +6 -0
  1745. package/dist/src/utils/orchestration/store/orchestrationDb.js +42 -0
  1746. package/dist/src/utils/orchestration/store/providerAgentStore.js +244 -0
  1747. package/dist/src/utils/orchestration/store/providerWorkspaceStore.js +125 -0
  1748. package/dist/src/utils/orchestration/store/runStore.js +486 -0
  1749. package/dist/src/utils/orchestration/store/teamStore.js +285 -0
  1750. package/dist/src/utils/orchestration/store/types.js +1 -0
  1751. package/dist/src/utils/pasteStore.js +93 -0
  1752. package/dist/src/utils/path.js +140 -0
  1753. package/dist/src/utils/pdf.js +236 -0
  1754. package/dist/src/utils/pdfUtils.js +61 -0
  1755. package/dist/src/utils/peerAddress.js +20 -0
  1756. package/dist/src/utils/permissions/PermissionMode.js +95 -0
  1757. package/dist/src/utils/permissions/PermissionPromptToolResultSchema.js +85 -0
  1758. package/dist/src/utils/permissions/PermissionResult.js +11 -0
  1759. package/dist/src/utils/permissions/PermissionRule.js +19 -0
  1760. package/dist/src/utils/permissions/PermissionUpdate.js +330 -0
  1761. package/dist/src/utils/permissions/PermissionUpdateSchema.js +61 -0
  1762. package/dist/src/utils/permissions/autoModeState.js +34 -0
  1763. package/dist/src/utils/permissions/bashClassifier.js +30 -0
  1764. package/dist/src/utils/permissions/bypassPermissionsKillswitch.js +115 -0
  1765. package/dist/src/utils/permissions/classifierDecision.js +88 -0
  1766. package/dist/src/utils/permissions/classifierShared.js +28 -0
  1767. package/dist/src/utils/permissions/dangerousPatterns.js +78 -0
  1768. package/dist/src/utils/permissions/denialTracking.js +34 -0
  1769. package/dist/src/utils/permissions/filesystem.js +1426 -0
  1770. package/dist/src/utils/permissions/getNextPermissionMode.js +74 -0
  1771. package/dist/src/utils/permissions/pathValidation.js +351 -0
  1772. package/dist/src/utils/permissions/permissionExplainer.js +188 -0
  1773. package/dist/src/utils/permissions/permissionRuleParser.js +177 -0
  1774. package/dist/src/utils/permissions/permissionSetup.js +1164 -0
  1775. package/dist/src/utils/permissions/permissions.js +1106 -0
  1776. package/dist/src/utils/permissions/permissionsDb.js +322 -0
  1777. package/dist/src/utils/permissions/permissionsLoader.js +217 -0
  1778. package/dist/src/utils/permissions/shadowedRuleDetection.js +149 -0
  1779. package/dist/src/utils/permissions/shellRuleMatching.js +174 -0
  1780. package/dist/src/utils/permissions/yoloClassifier.js +1195 -0
  1781. package/dist/src/utils/planModeV2.js +75 -0
  1782. package/dist/src/utils/plans.js +334 -0
  1783. package/dist/src/utils/platform.js +122 -0
  1784. package/dist/src/utils/plugins/addDirPluginSettings.js +53 -0
  1785. package/dist/src/utils/plugins/cacheUtils.js +174 -0
  1786. package/dist/src/utils/plugins/dependencyResolver.js +244 -0
  1787. package/dist/src/utils/plugins/fetchTelemetry.js +108 -0
  1788. package/dist/src/utils/plugins/gitAvailability.js +65 -0
  1789. package/dist/src/utils/plugins/headlessPluginInstall.js +136 -0
  1790. package/dist/src/utils/plugins/hintRecommendation.js +136 -0
  1791. package/dist/src/utils/plugins/installCounts.js +218 -0
  1792. package/dist/src/utils/plugins/installedPluginsManager.js +1003 -0
  1793. package/dist/src/utils/plugins/loadPluginAgents.js +219 -0
  1794. package/dist/src/utils/plugins/loadPluginCommands.js +595 -0
  1795. package/dist/src/utils/plugins/loadPluginHooks.js +239 -0
  1796. package/dist/src/utils/plugins/loadPluginOutputStyles.js +112 -0
  1797. package/dist/src/utils/plugins/lspPluginIntegration.js +293 -0
  1798. package/dist/src/utils/plugins/lspRecommendation.js +278 -0
  1799. package/dist/src/utils/plugins/managedPlugins.js +26 -0
  1800. package/dist/src/utils/plugins/marketplaceHelpers.js +470 -0
  1801. package/dist/src/utils/plugins/marketplaceManager.js +1939 -0
  1802. package/dist/src/utils/plugins/mcpPluginIntegration.js +465 -0
  1803. package/dist/src/utils/plugins/mcpbHandler.js +708 -0
  1804. package/dist/src/utils/plugins/officialMarketplace.js +21 -0
  1805. package/dist/src/utils/plugins/officialMarketplaceGcs.js +195 -0
  1806. package/dist/src/utils/plugins/officialMarketplaceStartupCheck.js +338 -0
  1807. package/dist/src/utils/plugins/orphanedPluginFilter.js +96 -0
  1808. package/dist/src/utils/plugins/parseMarketplaceInput.js +143 -0
  1809. package/dist/src/utils/plugins/performStartupChecks.js +66 -0
  1810. package/dist/src/utils/plugins/pluginAutoupdate.js +210 -0
  1811. package/dist/src/utils/plugins/pluginBlocklist.js +93 -0
  1812. package/dist/src/utils/plugins/pluginDirectories.js +172 -0
  1813. package/dist/src/utils/plugins/pluginFlagging.js +173 -0
  1814. package/dist/src/utils/plugins/pluginIdentifier.js +78 -0
  1815. package/dist/src/utils/plugins/pluginInstallationHelpers.js +400 -0
  1816. package/dist/src/utils/plugins/pluginLoader.js +2426 -0
  1817. package/dist/src/utils/plugins/pluginOptionsStorage.js +311 -0
  1818. package/dist/src/utils/plugins/pluginPolicy.js +18 -0
  1819. package/dist/src/utils/plugins/pluginStartupCheck.js +261 -0
  1820. package/dist/src/utils/plugins/pluginVersioning.js +128 -0
  1821. package/dist/src/utils/plugins/reconciler.js +181 -0
  1822. package/dist/src/utils/plugins/refresh.js +162 -0
  1823. package/dist/src/utils/plugins/schemas.js +1283 -0
  1824. package/dist/src/utils/plugins/validatePlugin.js +765 -0
  1825. package/dist/src/utils/plugins/walkPluginMarkdown.js +49 -0
  1826. package/dist/src/utils/plugins/zipCache.js +346 -0
  1827. package/dist/src/utils/plugins/zipCacheAdapters.js +133 -0
  1828. package/dist/src/utils/postCommitAttribution.js +16 -0
  1829. package/dist/src/utils/powershell/dangerousCmdlets.js +174 -0
  1830. package/dist/src/utils/powershell/parser.js +1357 -0
  1831. package/dist/src/utils/powershell/staticPrefix.js +277 -0
  1832. package/dist/src/utils/preflightChecks.js +147 -0
  1833. package/dist/src/utils/privacyLevel.js +49 -0
  1834. package/dist/src/utils/process.js +56 -0
  1835. package/dist/src/utils/processUserInput/processBashCommand.js +119 -0
  1836. package/dist/src/utils/processUserInput/processSlashCommand.js +859 -0
  1837. package/dist/src/utils/processUserInput/processTextPrompt.js +68 -0
  1838. package/dist/src/utils/processUserInput/processUserInput.js +326 -0
  1839. package/dist/src/utils/profilerBase.js +29 -0
  1840. package/dist/src/utils/promptCategory.js +39 -0
  1841. package/dist/src/utils/promptEditor.js +151 -0
  1842. package/dist/src/utils/promptShellExecution.js +119 -0
  1843. package/dist/src/utils/proxy.js +347 -0
  1844. package/dist/src/utils/queryContext.js +110 -0
  1845. package/dist/src/utils/queryHelpers.js +436 -0
  1846. package/dist/src/utils/queryProfiler.js +242 -0
  1847. package/dist/src/utils/queueProcessor.js +70 -0
  1848. package/dist/src/utils/readEditContext.js +176 -0
  1849. package/dist/src/utils/readFileInRange.js +278 -0
  1850. package/dist/src/utils/releaseNotes.js +304 -0
  1851. package/dist/src/utils/renderOptions.js +67 -0
  1852. package/dist/src/utils/ripgrep.js +540 -0
  1853. package/dist/src/utils/sandbox/sandbox-adapter.js +751 -0
  1854. package/dist/src/utils/sandbox/sandbox-ui-utils.js +11 -0
  1855. package/dist/src/utils/sanitization.js +72 -0
  1856. package/dist/src/utils/screenshotClipboard.js +89 -0
  1857. package/dist/src/utils/sdkEventQueue.js +49 -0
  1858. package/dist/src/utils/sdkHeapDumpMonitor.js +16 -0
  1859. package/dist/src/utils/secureStorage/fallbackStorage.js +59 -0
  1860. package/dist/src/utils/secureStorage/index.js +14 -0
  1861. package/dist/src/utils/secureStorage/keychainPrefetch.js +91 -0
  1862. package/dist/src/utils/secureStorage/macOsKeychainHelpers.js +91 -0
  1863. package/dist/src/utils/secureStorage/macOsKeychainStorage.js +192 -0
  1864. package/dist/src/utils/secureStorage/plainTextStorage.js +81 -0
  1865. package/dist/src/utils/secureStorage/secureStoreDefs.js +1 -0
  1866. package/dist/src/utils/secureStorage/sqliteStorage.js +224 -0
  1867. package/dist/src/utils/secureStorage/types.js +1 -0
  1868. package/dist/src/utils/semanticBoolean.js +23 -0
  1869. package/dist/src/utils/semanticNumber.js +34 -0
  1870. package/dist/src/utils/semver.js +53 -0
  1871. package/dist/src/utils/sequential.js +43 -0
  1872. package/dist/src/utils/sessionActivity.js +120 -0
  1873. package/dist/src/utils/sessionDataUploader.js +16 -0
  1874. package/dist/src/utils/sessionEnvVars.js +18 -0
  1875. package/dist/src/utils/sessionEnvironment.js +131 -0
  1876. package/dist/src/utils/sessionFileAccessHooks.js +207 -0
  1877. package/dist/src/utils/sessionIngressAuth.js +113 -0
  1878. package/dist/src/utils/sessionRestore.js +359 -0
  1879. package/dist/src/utils/sessionStart.js +165 -0
  1880. package/dist/src/utils/sessionState.js +76 -0
  1881. package/dist/src/utils/sessionStorage.js +4162 -0
  1882. package/dist/src/utils/sessionStoragePortable.js +665 -0
  1883. package/dist/src/utils/sessionTitle.js +120 -0
  1884. package/dist/src/utils/sessionUrl.js +50 -0
  1885. package/dist/src/utils/set.js +50 -0
  1886. package/dist/src/utils/settings/allErrors.js +29 -0
  1887. package/dist/src/utils/settings/applySettingsChange.js +65 -0
  1888. package/dist/src/utils/settings/changeDetector.js +409 -0
  1889. package/dist/src/utils/settings/constants.js +166 -0
  1890. package/dist/src/utils/settings/internalWrites.js +33 -0
  1891. package/dist/src/utils/settings/managedPath.js +29 -0
  1892. package/dist/src/utils/settings/mdm/constants.js +62 -0
  1893. package/dist/src/utils/settings/mdm/rawRead.js +97 -0
  1894. package/dist/src/utils/settings/mdm/settings.js +254 -0
  1895. package/dist/src/utils/settings/permissionValidation.js +224 -0
  1896. package/dist/src/utils/settings/pluginOnlyPolicy.js +53 -0
  1897. package/dist/src/utils/settings/schemaOutput.js +7 -0
  1898. package/dist/src/utils/settings/settings.js +844 -0
  1899. package/dist/src/utils/settings/settingsCache.js +47 -0
  1900. package/dist/src/utils/settings/toolValidationConfig.js +76 -0
  1901. package/dist/src/utils/settings/types.js +846 -0
  1902. package/dist/src/utils/settings/validateEditTool.js +34 -0
  1903. package/dist/src/utils/settings/validation.js +192 -0
  1904. package/dist/src/utils/settings/validationTips.js +111 -0
  1905. package/dist/src/utils/shell/bashProvider.js +202 -0
  1906. package/dist/src/utils/shell/outputLimits.js +7 -0
  1907. package/dist/src/utils/shell/powershellDetection.js +96 -0
  1908. package/dist/src/utils/shell/powershellProvider.js +104 -0
  1909. package/dist/src/utils/shell/prefix.js +246 -0
  1910. package/dist/src/utils/shell/readOnlyCommandValidation.js +1776 -0
  1911. package/dist/src/utils/shell/resolveDefaultShell.js +13 -0
  1912. package/dist/src/utils/shell/shellProvider.js +2 -0
  1913. package/dist/src/utils/shell/shellToolUtils.js +21 -0
  1914. package/dist/src/utils/shell/specPrefix.js +198 -0
  1915. package/dist/src/utils/shellConfig.js +136 -0
  1916. package/dist/src/utils/sideQuery.js +195 -0
  1917. package/dist/src/utils/sideQuestion.js +121 -0
  1918. package/dist/src/utils/signal.js +34 -0
  1919. package/dist/src/utils/sinks.js +15 -0
  1920. package/dist/src/utils/skills/skillChangeDetector.js +266 -0
  1921. package/dist/src/utils/slashCommandParsing.js +46 -0
  1922. package/dist/src/utils/sleep.js +72 -0
  1923. package/dist/src/utils/sliceAnsi.js +74 -0
  1924. package/dist/src/utils/slowOperations.js +323 -0
  1925. package/dist/src/utils/standaloneAgent.js +20 -0
  1926. package/dist/src/utils/startupProfiler.js +158 -0
  1927. package/dist/src/utils/staticRender.js +103 -0
  1928. package/dist/src/utils/stats.js +802 -0
  1929. package/dist/src/utils/statsCache.js +330 -0
  1930. package/dist/src/utils/status.js +552 -0
  1931. package/dist/src/utils/statusNoticeDefinitions.js +112 -0
  1932. package/dist/src/utils/statusNoticeHelpers.js +15 -0
  1933. package/dist/src/utils/stream.js +73 -0
  1934. package/dist/src/utils/streamJsonStdoutGuard.js +107 -0
  1935. package/dist/src/utils/streamlinedTransform.js +162 -0
  1936. package/dist/src/utils/stringUtils.js +202 -0
  1937. package/dist/src/utils/subprocessEnv.js +87 -0
  1938. package/dist/src/utils/suggestions/commandSuggestions.js +458 -0
  1939. package/dist/src/utils/suggestions/directoryCompletion.js +191 -0
  1940. package/dist/src/utils/suggestions/shellHistoryCompletion.js +95 -0
  1941. package/dist/src/utils/suggestions/skillUsageTracking.js +50 -0
  1942. package/dist/src/utils/suggestions/slackChannelSuggestions.js +169 -0
  1943. package/dist/src/utils/swarm/It2SetupPrompt.js +386 -0
  1944. package/dist/src/utils/swarm/backends/ITermBackend.js +276 -0
  1945. package/dist/src/utils/swarm/backends/InProcessBackend.js +237 -0
  1946. package/dist/src/utils/swarm/backends/PaneBackendExecutor.js +250 -0
  1947. package/dist/src/utils/swarm/backends/TmuxBackend.js +574 -0
  1948. package/dist/src/utils/swarm/backends/detection.js +112 -0
  1949. package/dist/src/utils/swarm/backends/it2Setup.js +185 -0
  1950. package/dist/src/utils/swarm/backends/registry.js +369 -0
  1951. package/dist/src/utils/swarm/backends/teammateModeSnapshot.js +68 -0
  1952. package/dist/src/utils/swarm/backends/types.js +9 -0
  1953. package/dist/src/utils/swarm/constants.js +29 -0
  1954. package/dist/src/utils/swarm/inProcessRunner.js +1021 -0
  1955. package/dist/src/utils/swarm/leaderPermissionBridge.js +31 -0
  1956. package/dist/src/utils/swarm/permissionSync.js +667 -0
  1957. package/dist/src/utils/swarm/reconnection.js +82 -0
  1958. package/dist/src/utils/swarm/spawnInProcess.js +218 -0
  1959. package/dist/src/utils/swarm/spawnUtils.js +123 -0
  1960. package/dist/src/utils/swarm/teamHelpers.js +484 -0
  1961. package/dist/src/utils/swarm/teammateInit.js +87 -0
  1962. package/dist/src/utils/swarm/teammateLayoutManager.js +82 -0
  1963. package/dist/src/utils/swarm/teammateModel.js +9 -0
  1964. package/dist/src/utils/swarm/teammatePromptAddendum.js +17 -0
  1965. package/dist/src/utils/systemDirectories.js +51 -0
  1966. package/dist/src/utils/systemPrompt.js +91 -0
  1967. package/dist/src/utils/systemPromptType.js +9 -0
  1968. package/dist/src/utils/systemTheme.js +108 -0
  1969. package/dist/src/utils/systemThemeWatcher.js +16 -0
  1970. package/dist/src/utils/taggedId.js +49 -0
  1971. package/dist/src/utils/task/TaskOutput.js +320 -0
  1972. package/dist/src/utils/task/diskOutput.js +387 -0
  1973. package/dist/src/utils/task/framework.js +236 -0
  1974. package/dist/src/utils/task/outputFormatting.js +24 -0
  1975. package/dist/src/utils/task/sdkProgress.js +24 -0
  1976. package/dist/src/utils/tasks.js +672 -0
  1977. package/dist/src/utils/teamDiscovery.js +48 -0
  1978. package/dist/src/utils/teamMemoryOps.js +67 -0
  1979. package/dist/src/utils/teammate.js +237 -0
  1980. package/dist/src/utils/teammateContext.js +56 -0
  1981. package/dist/src/utils/teammateMailbox.js +793 -0
  1982. package/dist/src/utils/telemetry/betaSessionTracing.js +371 -0
  1983. package/dist/src/utils/telemetry/bigqueryExporter.js +181 -0
  1984. package/dist/src/utils/telemetry/events.js +57 -0
  1985. package/dist/src/utils/telemetry/instrumentation.js +617 -0
  1986. package/dist/src/utils/telemetry/logger.js +25 -0
  1987. package/dist/src/utils/telemetry/perfettoTracing.js +882 -0
  1988. package/dist/src/utils/telemetry/pluginTelemetry.js +157 -0
  1989. package/dist/src/utils/telemetry/sessionTracing.js +693 -0
  1990. package/dist/src/utils/telemetry/skillLoadedEvent.js +26 -0
  1991. package/dist/src/utils/telemetryAttributes.js +57 -0
  1992. package/dist/src/utils/teleport/api.js +299 -0
  1993. package/dist/src/utils/teleport/environmentSelection.js +55 -0
  1994. package/dist/src/utils/teleport/environments.js +84 -0
  1995. package/dist/src/utils/teleport/gitBundle.js +192 -0
  1996. package/dist/src/utils/teleport.js +1041 -0
  1997. package/dist/src/utils/tempfile.js +26 -0
  1998. package/dist/src/utils/terminal.js +105 -0
  1999. package/dist/src/utils/terminalPanel.js +155 -0
  2000. package/dist/src/utils/textHighlighting.js +113 -0
  2001. package/dist/src/utils/theme.js +525 -0
  2002. package/dist/src/utils/thinking.js +130 -0
  2003. package/dist/src/utils/timeouts.js +35 -0
  2004. package/dist/src/utils/tmuxSocket.js +373 -0
  2005. package/dist/src/utils/todo/types.js +9 -0
  2006. package/dist/src/utils/tokenBudget.js +62 -0
  2007. package/dist/src/utils/tokens.js +223 -0
  2008. package/dist/src/utils/toolErrors.js +101 -0
  2009. package/dist/src/utils/toolPool.js +63 -0
  2010. package/dist/src/utils/toolResultStorage.js +769 -0
  2011. package/dist/src/utils/toolSchemaCache.js +7 -0
  2012. package/dist/src/utils/toolSearch.js +551 -0
  2013. package/dist/src/utils/transcriptSearch.js +200 -0
  2014. package/dist/src/utils/treeify.js +111 -0
  2015. package/dist/src/utils/truncate.js +164 -0
  2016. package/dist/src/utils/udsClient.js +16 -0
  2017. package/dist/src/utils/udsMessaging.js +16 -0
  2018. package/dist/src/utils/ultraplan/ccrSession.js +264 -0
  2019. package/dist/src/utils/ultraplan/keyword.js +122 -0
  2020. package/dist/src/utils/ultraplan/prompt.txt +1 -0
  2021. package/dist/src/utils/unaryLogging.js +16 -0
  2022. package/dist/src/utils/undercover.js +89 -0
  2023. package/dist/src/utils/user.js +138 -0
  2024. package/dist/src/utils/userAgent.js +13 -0
  2025. package/dist/src/utils/userPromptKeywords.js +21 -0
  2026. package/dist/src/utils/uuid.js +22 -0
  2027. package/dist/src/utils/warningHandler.js +97 -0
  2028. package/dist/src/utils/which.js +75 -0
  2029. package/dist/src/utils/windowsPaths.js +150 -0
  2030. package/dist/src/utils/withResolvers.js +13 -0
  2031. package/dist/src/utils/words.js +793 -0
  2032. package/dist/src/utils/workloadContext.js +42 -0
  2033. package/dist/src/utils/worktree.js +1145 -0
  2034. package/dist/src/utils/worktreeModeEnabled.js +11 -0
  2035. package/dist/src/utils/xdg.js +52 -0
  2036. package/dist/src/utils/xml.js +15 -0
  2037. package/dist/src/utils/yaml.js +16 -0
  2038. package/dist/src/utils/zodToJsonSchema.js +19 -0
  2039. package/dist/src/vim/motions.js +73 -0
  2040. package/dist/src/vim/operators.js +401 -0
  2041. package/dist/src/vim/textObjects.js +153 -0
  2042. package/dist/src/vim/transitions.js +340 -0
  2043. package/dist/src/vim/types.js +93 -0
  2044. package/dist/src/voice/voiceModeEnabled.js +48 -0
  2045. package/dist/src/whatsapp/bridge.js +267 -0
  2046. package/dist/src/whatsapp/config.js +153 -0
  2047. package/dist/src/whatsapp/markdown.js +37 -0
  2048. package/dist/src/whatsapp/mirror.js +74 -0
  2049. package/dist/src/whatsapp/session.js +142 -0
  2050. package/package.json +2 -1
@@ -0,0 +1,1617 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { useNotifications } from '../context/notifications.js';
4
+ import { Text } from '../ink.js';
5
+ import { logEvent } from '../services/analytics/index.js';
6
+ import { useDebounceCallback } from 'usehooks-ts';
7
+ import { getCommandName } from '../commands.js';
8
+ import { getModeFromInput, getValueFromInput } from '../components/PromptInput/inputModes.js';
9
+ import { useIsModalOverlayActive, useRegisterOverlay } from '../context/overlayContext.js';
10
+ import { KeyboardEvent } from '../ink/events/keyboard-event.js';
11
+ // eslint-disable-next-line custom-rules/prefer-use-keybindings -- backward-compat bridge until consumers wire handleKeyDown to <Box onKeyDown>
12
+ import { useInput } from '../ink.js';
13
+ import { useOptionalKeybindingContext, useRegisterKeybindingContext } from '../keybindings/KeybindingContext.js';
14
+ import { useKeybindings } from '../keybindings/useKeybinding.js';
15
+ import { useShortcutDisplay } from '../keybindings/useShortcutDisplay.js';
16
+ import { useAppState, useAppStateStore } from '../state/AppState.js';
17
+ import { isAgentSwarmsEnabled } from '../utils/agentSwarmsEnabled.js';
18
+ import { getShellCompletions } from '../utils/bash/shellCompletion.js';
19
+ import { formatLogMetadata } from '../utils/format.js';
20
+ import { getSessionIdFromLog, searchSessionsByCustomTitle } from '../utils/sessionStorage.js';
21
+ import { applyCommandSuggestion, findMidInputSlashCommand, getBestCommandMatch, isCommandInput } from '../utils/suggestions/commandSuggestions.js';
22
+ import { getDirectoryCompletions } from '../utils/suggestions/directoryCompletion.js';
23
+ import { getShellHistoryCompletion } from '../utils/suggestions/shellHistoryCompletion.js';
24
+ import { getSlackChannelSuggestions, hasSlackMcpServer } from '../utils/suggestions/slackChannelSuggestions.js';
25
+ import { TEAM_LEAD_NAME } from '../utils/swarm/constants.js';
26
+ import { listProviderProfiles, } from '../utils/model/providerProfiles.js';
27
+ import { applyFileSuggestion, findLongestCommonPrefix, onIndexBuildComplete, startBackgroundCacheRefresh } from './fileSuggestions.js';
28
+ import { generateUnifiedSuggestions } from './unifiedSuggestions.js';
29
+ // Unicode-aware character class for file path tokens:
30
+ // \p{L} = letters (CJK, Latin, Cyrillic, etc.)
31
+ // \p{N} = numbers (incl. fullwidth)
32
+ // \p{M} = combining marks (macOS NFD accents, Devanagari vowel signs)
33
+ const AT_TOKEN_HEAD_RE = /^@[\p{L}\p{N}\p{M}_\-./\\()[\]~:]*/u;
34
+ const PATH_CHAR_HEAD_RE = /^[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+/u;
35
+ const TOKEN_WITH_AT_RE = /(@[\p{L}\p{N}\p{M}_\-./\\()[\]~:]*|[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+)$/u;
36
+ const TOKEN_WITHOUT_AT_RE = /[\p{L}\p{N}\p{M}_\-./\\()[\]~:]+$/u;
37
+ const HAS_AT_SYMBOL_RE = /(^|\s)@([\p{L}\p{N}\p{M}_\-./\\()[\]~:]*|"[^"]*"?)$/u;
38
+ const HASH_CHANNEL_RE = /(^|\s)#([a-z0-9][a-z0-9_-]*)$/;
39
+ const PROFILE_SUBCOMMANDS = ['list', 'current', 'use', 'rename', 'remove', 'model', 'agent'];
40
+ const WORKSPACE_SUBCOMMANDS = ['list', 'show', 'enable', 'disable', 'setup', 'orchestrator'];
41
+ const TEAM_SUBCOMMANDS = ['list', 'create', 'show', 'orchestrator', 'domain', 'add-member'];
42
+ const WORKSPACE_COMMON_DOMAINS = ['frontend', 'backend', 'docs', 'tests', 'review', 'database', 'devops'];
43
+ const PROFILE_PROVIDER_OPTIONS = [{
44
+ provider: 'claude',
45
+ label: 'Context'
46
+ }, {
47
+ provider: 'openai',
48
+ label: 'OpenAI'
49
+ }, {
50
+ provider: 'openrouter',
51
+ label: 'OpenRouter'
52
+ }, {
53
+ provider: 'ollama',
54
+ label: 'Ollama Local'
55
+ }, {
56
+ provider: 'ollama-cloud',
57
+ label: 'Ollama Cloud'
58
+ }, {
59
+ provider: 'zai',
60
+ label: 'Z.AI'
61
+ }, {
62
+ provider: 'minimax',
63
+ label: 'MiniMax'
64
+ }];
65
+ // Type guard for path completion metadata
66
+ function isPathMetadata(metadata) {
67
+ return typeof metadata === 'object' && metadata !== null && 'type' in metadata && (metadata.type === 'directory' || metadata.type === 'file');
68
+ }
69
+ // Helper to determine selectedSuggestion when updating suggestions
70
+ function getPreservedSelection(prevSuggestions, prevSelection, newSuggestions) {
71
+ // No new suggestions
72
+ if (newSuggestions.length === 0) {
73
+ return -1;
74
+ }
75
+ // No previous selection
76
+ if (prevSelection < 0) {
77
+ return 0;
78
+ }
79
+ // Get the previously selected item
80
+ const prevSelectedItem = prevSuggestions[prevSelection];
81
+ if (!prevSelectedItem) {
82
+ return 0;
83
+ }
84
+ // Try to find the same item in the new list by ID
85
+ const newIndex = newSuggestions.findIndex(item => item.id === prevSelectedItem.id);
86
+ // Return the new index if found, otherwise default to 0
87
+ return newIndex >= 0 ? newIndex : 0;
88
+ }
89
+ function replaceProfileArgs(value, newArgs) {
90
+ const commandPrefix = '/profile';
91
+ return newArgs.length > 0 ? `${commandPrefix} ${newArgs}` : commandPrefix;
92
+ }
93
+ function buildProfileArgSuggestion(id, displayText, replacement, description) {
94
+ return {
95
+ id,
96
+ displayText,
97
+ description,
98
+ metadata: {
99
+ replacement
100
+ }
101
+ };
102
+ }
103
+ function replaceWorkspaceArgs(newArgs) {
104
+ const commandPrefix = '/workspace';
105
+ return newArgs.length > 0 ? `${commandPrefix} ${newArgs}` : commandPrefix;
106
+ }
107
+ function buildWorkspaceArgSuggestion(id, displayText, replacement, description) {
108
+ return {
109
+ id,
110
+ displayText,
111
+ description,
112
+ metadata: {
113
+ replacement
114
+ }
115
+ };
116
+ }
117
+ function replaceTeamArgs(newArgs) {
118
+ const commandPrefix = '/team';
119
+ return newArgs.length > 0 ? `${commandPrefix} ${newArgs}` : commandPrefix;
120
+ }
121
+ function buildTeamArgSuggestion(id, displayText, replacement, description) {
122
+ return {
123
+ id,
124
+ displayText,
125
+ description,
126
+ metadata: {
127
+ replacement
128
+ }
129
+ };
130
+ }
131
+ function getProviderCommandSuggestions(value) {
132
+ const parsed = extractCommandNameAndArgs(value);
133
+ if (!parsed || parsed.commandName !== 'provider') {
134
+ return null;
135
+ }
136
+ const rawArgs = parsed.args ?? '';
137
+ const endsWithSpace = /\s$/.test(rawArgs);
138
+ const baseTokens = rawArgs.trim().length > 0 ? rawArgs.trim().split(/\s+/) : [];
139
+ const tokens = endsWithSpace ? [...baseTokens, ''] : baseTokens;
140
+ const firstToken = tokens[0] ?? '';
141
+ const secondToken = tokens[1] ?? '';
142
+ const makeProviderSuggestions = (partial) => PROFILE_PROVIDER_OPTIONS.filter(option => option.provider.startsWith(partial.toLowerCase())).map(option => buildProfileArgSuggestion(`provider-choice-${option.provider}`, option.provider, `/provider ${option.provider} `, option.label));
143
+ const makeProfileSuggestions = (provider, partial) => {
144
+ const profiles = listProviderProfiles(provider);
145
+ return profiles
146
+ .filter(profile => profile.name.toLowerCase().startsWith(partial.toLowerCase()))
147
+ .map(profile => buildProfileArgSuggestion(`provider-profile-${profile.id}`, profile.name, `/provider ${provider} ${profile.name} `, `${profile.agentName}${profile.lastModel ? ` · ${profile.lastModel}` : ''}`));
148
+ };
149
+ if (tokens.length <= 1) {
150
+ const partial = firstToken.toLowerCase();
151
+ const subcommands = ['list', 'current', 'reset'];
152
+ const suggestions = [
153
+ ...subcommands
154
+ .filter(s => s.startsWith(partial))
155
+ .map(s => buildProfileArgSuggestion(`provider-subcommand-${s}`, s, `/provider ${s} `, s === 'list' ? 'Listar proveedores' : s === 'current' ? 'Ver proveedor actual' : 'Resetear configuración')),
156
+ ...makeProviderSuggestions(partial),
157
+ ];
158
+ return {
159
+ suggestions,
160
+ commandArgumentHint: '<proveedor|list|current>',
161
+ };
162
+ }
163
+ if (['list', 'current', 'reset'].includes(firstToken.toLowerCase())) {
164
+ return {
165
+ suggestions: [],
166
+ commandArgumentHint: undefined,
167
+ };
168
+ }
169
+ // Si el primer token es un proveedor válido
170
+ if (PROFILE_PROVIDER_OPTIONS.some(o => o.provider === firstToken.toLowerCase())) {
171
+ if (tokens.length <= 2) {
172
+ const partial = secondToken.toLowerCase();
173
+ const profiles = makeProfileSuggestions(firstToken.toLowerCase(), partial);
174
+ const keywords = ['reset', 'set', 'url', 'clear'].filter(k => k.startsWith(partial)).map(k => buildProfileArgSuggestion(`provider-keyword-${k}`, k, `/provider ${firstToken} ${k} `, `Acción: ${k}`));
175
+ return {
176
+ suggestions: [...profiles, ...keywords],
177
+ commandArgumentHint: '<perfil|url|reset>',
178
+ };
179
+ }
180
+ }
181
+ return {
182
+ suggestions: [],
183
+ commandArgumentHint: undefined,
184
+ };
185
+ }
186
+ function getProviderAgentRefSuggestions(partial, prefixTokens, trailingSpace = true) {
187
+ const normalizedPartial = partial.toLowerCase();
188
+ const suggestions = [];
189
+ for (const option of PROFILE_PROVIDER_OPTIONS) {
190
+ for (const profile of listProviderProfiles(option.provider)) {
191
+ const agentRef = `${option.provider}/${profile.agentName || `${profile.name}-lead`}`;
192
+ if (!agentRef.toLowerCase().startsWith(normalizedPartial)) {
193
+ continue;
194
+ }
195
+ suggestions.push(buildTeamArgSuggestion(`team-agent-${profile.id}`, agentRef, replaceTeamArgs([...prefixTokens, agentRef].join(' ') + (trailingSpace ? ' ' : '')), profile.lastModel ? `${option.label} - ${profile.lastModel}` : option.label));
196
+ }
197
+ }
198
+ return suggestions;
199
+ }
200
+ function getTeamCommandSuggestions(value) {
201
+ const parsed = extractCommandNameAndArgs(value);
202
+ if (!parsed || parsed.commandName !== 'team') {
203
+ return null;
204
+ }
205
+ const rawArgs = parsed.args ?? '';
206
+ const endsWithSpace = /\s$/.test(rawArgs);
207
+ const baseTokens = rawArgs.trim().length > 0 ? rawArgs.trim().split(/\s+/) : [];
208
+ const tokens = endsWithSpace ? [...baseTokens, ''] : baseTokens;
209
+ const firstToken = tokens[0] ?? '';
210
+ const normalizedFirst = firstToken.toLowerCase();
211
+ if (tokens.length <= 1) {
212
+ const partial = firstToken.toLowerCase();
213
+ return {
214
+ suggestions: TEAM_SUBCOMMANDS.filter(option => option.startsWith(partial)).map(option => buildTeamArgSuggestion(`team-subcommand-${option}`, option, replaceTeamArgs(`${option} `))),
215
+ commandArgumentHint: '<subcomando>'
216
+ };
217
+ }
218
+ if (normalizedFirst === 'list') {
219
+ return {
220
+ suggestions: [],
221
+ commandArgumentHint: undefined
222
+ };
223
+ }
224
+ if (normalizedFirst === 'create') {
225
+ return {
226
+ suggestions: [],
227
+ commandArgumentHint: '<nombre-equipo>'
228
+ };
229
+ }
230
+ if (normalizedFirst === 'show') {
231
+ return {
232
+ suggestions: [],
233
+ commandArgumentHint: '<equipo>'
234
+ };
235
+ }
236
+ if (normalizedFirst === 'orchestrator') {
237
+ if (tokens.length <= 2) {
238
+ return {
239
+ suggestions: [],
240
+ commandArgumentHint: '<equipo>'
241
+ };
242
+ }
243
+ const currentToken = tokens[tokens.length - 1] ?? '';
244
+ const prefixTokens = tokens.slice(0, tokens.length - 1);
245
+ return {
246
+ suggestions: getProviderAgentRefSuggestions(currentToken, prefixTokens, false),
247
+ commandArgumentHint: '<provider/agent>'
248
+ };
249
+ }
250
+ if (normalizedFirst === 'domain') {
251
+ if (tokens.length <= 2) {
252
+ return {
253
+ suggestions: [],
254
+ commandArgumentHint: '<equipo>'
255
+ };
256
+ }
257
+ if (tokens.length <= 3) {
258
+ const teamName = tokens[1] ?? '';
259
+ const partialDomain = (tokens[2] ?? '').toLowerCase();
260
+ return {
261
+ suggestions: WORKSPACE_COMMON_DOMAINS.filter(domain => domain.startsWith(partialDomain)).map(domain => buildTeamArgSuggestion(`team-domain-${domain}`, domain, replaceTeamArgs(['domain', teamName, domain, ''].join(' ').trimEnd() + ' '), `area ${domain}`)),
262
+ commandArgumentHint: '<area>'
263
+ };
264
+ }
265
+ const currentToken = tokens[tokens.length - 1] ?? '';
266
+ const prefixTokens = tokens.slice(0, tokens.length - 1);
267
+ return {
268
+ suggestions: getProviderAgentRefSuggestions(currentToken, prefixTokens, false),
269
+ commandArgumentHint: '<provider/agent>'
270
+ };
271
+ }
272
+ if (normalizedFirst === 'add-member') {
273
+ if (tokens.length <= 2) {
274
+ return {
275
+ suggestions: [],
276
+ commandArgumentHint: '<equipo>'
277
+ };
278
+ }
279
+ if (tokens.length <= 3) {
280
+ const teamName = tokens[1] ?? '';
281
+ const partialDomain = (tokens[2] ?? '').toLowerCase();
282
+ return {
283
+ suggestions: WORKSPACE_COMMON_DOMAINS.filter(domain => domain.startsWith(partialDomain)).map(domain => buildTeamArgSuggestion(`team-member-domain-${domain}`, domain, replaceTeamArgs(['add-member', teamName, domain, ''].join(' ').trimEnd() + ' '), `area ${domain}`)),
284
+ commandArgumentHint: '<area>'
285
+ };
286
+ }
287
+ if (tokens.length <= 4) {
288
+ const currentToken = tokens[3] ?? '';
289
+ const prefixTokens = tokens.slice(0, 3);
290
+ return {
291
+ suggestions: getProviderAgentRefSuggestions(currentToken, prefixTokens),
292
+ commandArgumentHint: '<provider/agent>'
293
+ };
294
+ }
295
+ return {
296
+ suggestions: [],
297
+ commandArgumentHint: '[duty]'
298
+ };
299
+ }
300
+ return {
301
+ suggestions: [],
302
+ commandArgumentHint: undefined
303
+ };
304
+ }
305
+ function getWorkspaceCommandSuggestions(value) {
306
+ const parsed = extractCommandNameAndArgs(value);
307
+ if (!parsed || parsed.commandName !== 'workspace') {
308
+ return null;
309
+ }
310
+ const rawArgs = parsed.args ?? '';
311
+ const endsWithSpace = /\s$/.test(rawArgs);
312
+ const baseTokens = rawArgs.trim().length > 0 ? rawArgs.trim().split(/\s+/) : [];
313
+ const tokens = endsWithSpace ? [...baseTokens, ''] : baseTokens;
314
+ const firstToken = tokens[0] ?? '';
315
+ const normalizedFirst = firstToken.toLowerCase();
316
+ if (tokens.length <= 1) {
317
+ const partial = firstToken.toLowerCase();
318
+ return {
319
+ suggestions: WORKSPACE_SUBCOMMANDS.filter(option => option.startsWith(partial)).map(option => buildWorkspaceArgSuggestion(`workspace-subcommand-${option}`, option, replaceWorkspaceArgs(`${option} `))),
320
+ commandArgumentHint: '<subcomando>'
321
+ };
322
+ }
323
+ if (['show', 'enable', 'disable'].includes(normalizedFirst) && tokens.length <= 2) {
324
+ const partial = (tokens[1] ?? '').toLowerCase();
325
+ return {
326
+ suggestions: PROFILE_PROVIDER_OPTIONS.filter(option => option.provider.startsWith(partial)).map(option => buildWorkspaceArgSuggestion(`workspace-provider-${option.provider}`, option.provider, replaceWorkspaceArgs(`${normalizedFirst} ${option.provider}`), option.label)),
327
+ commandArgumentHint: '<proveedor>'
328
+ };
329
+ }
330
+ if (normalizedFirst === 'orchestrator') {
331
+ return {
332
+ suggestions: [],
333
+ commandArgumentHint: '[equipo] [provider/agent]'
334
+ };
335
+ }
336
+ if (normalizedFirst !== 'setup') {
337
+ return {
338
+ suggestions: [],
339
+ commandArgumentHint: undefined
340
+ };
341
+ }
342
+ if (tokens.length <= 2) {
343
+ return {
344
+ suggestions: [],
345
+ commandArgumentHint: '<equipo> [orchestrator=<area|provider/agent>]'
346
+ };
347
+ }
348
+ const currentIndex = tokens.length - 1;
349
+ const currentToken = tokens[currentIndex] ?? '';
350
+ const prefixTokens = tokens.slice(0, currentIndex);
351
+ const hasOrchestratorToken = prefixTokens.some(token => token.toLowerCase().startsWith('orchestrator='));
352
+ if (!hasOrchestratorToken && 'orchestrator='.startsWith(currentToken.toLowerCase())) {
353
+ return {
354
+ suggestions: [buildWorkspaceArgSuggestion('workspace-orchestrator', 'orchestrator=', replaceWorkspaceArgs([...prefixTokens, 'orchestrator='].join(' ')), 'escoger coordinador principal')],
355
+ commandArgumentHint: 'orchestrator=<area|provider/agent>'
356
+ };
357
+ }
358
+ if (currentToken.toLowerCase().startsWith('orchestrator=')) {
359
+ const partial = currentToken.slice('orchestrator='.length).toLowerCase();
360
+ const domainSuggestions = WORKSPACE_COMMON_DOMAINS.filter(domain => domain.startsWith(partial)).map(domain => buildWorkspaceArgSuggestion(`workspace-orchestrator-domain-${domain}`, domain, replaceWorkspaceArgs([...prefixTokens, `orchestrator=${domain} `].join(' ').trimEnd()), `usar el area ${domain} como orquestador`));
361
+ const agentSuggestions = [];
362
+ for (const option of PROFILE_PROVIDER_OPTIONS) {
363
+ for (const profile of listProviderProfiles(option.provider)) {
364
+ const valueForEntry = `${option.provider}/${profile.agentName || `${profile.name}-lead`}`;
365
+ if (!valueForEntry.toLowerCase().startsWith(partial)) {
366
+ continue;
367
+ }
368
+ agentSuggestions.push(buildWorkspaceArgSuggestion(`workspace-orchestrator-agent-${profile.id}`, valueForEntry, replaceWorkspaceArgs([...prefixTokens, `orchestrator=${valueForEntry} `].join(' ').trimEnd()), `agente de ${option.label}`));
369
+ }
370
+ }
371
+ return {
372
+ suggestions: [...domainSuggestions, ...agentSuggestions],
373
+ commandArgumentHint: 'orchestrator=<area|provider/agent>'
374
+ };
375
+ }
376
+ const colonIndex = currentToken.indexOf(':');
377
+ if (colonIndex >= 0) {
378
+ const providerProfile = currentToken.slice(0, colonIndex);
379
+ const partialDomain = currentToken.slice(colonIndex + 1).toLowerCase();
380
+ const suggestions = WORKSPACE_COMMON_DOMAINS.filter(domain => domain.startsWith(partialDomain)).map(domain => buildWorkspaceArgSuggestion(`workspace-domain-${providerProfile}-${domain}`, domain, replaceWorkspaceArgs([...prefixTokens, `${providerProfile}:${domain} `].join(' ').trimEnd()), `area ${domain}`));
381
+ return {
382
+ suggestions,
383
+ commandArgumentHint: '<proveedor/perfil:area>'
384
+ };
385
+ }
386
+ const partial = currentToken.toLowerCase();
387
+ const profileSuggestions = [];
388
+ for (const option of PROFILE_PROVIDER_OPTIONS) {
389
+ for (const profile of listProviderProfiles(option.provider)) {
390
+ const valueForEntry = `${option.provider}/${profile.name}`;
391
+ if (!valueForEntry.toLowerCase().startsWith(partial)) {
392
+ continue;
393
+ }
394
+ profileSuggestions.push(buildWorkspaceArgSuggestion(`workspace-profile-${profile.id}`, `${valueForEntry}:`, replaceWorkspaceArgs([...prefixTokens, `${valueForEntry}:`].join(' ')), profile.lastModel ? `${option.label} - ${profile.lastModel}` : option.label));
395
+ }
396
+ }
397
+ return {
398
+ suggestions: profileSuggestions,
399
+ commandArgumentHint: '<proveedor/perfil:area>'
400
+ };
401
+ }
402
+ function getProfileCommandSuggestions(value) {
403
+ const parsed = extractCommandNameAndArgs(value);
404
+ if (!parsed || parsed.commandName !== 'profile') {
405
+ return null;
406
+ }
407
+ const rawArgs = parsed.args ?? '';
408
+ const endsWithSpace = /\s$/.test(rawArgs);
409
+ const baseTokens = rawArgs.trim().length > 0 ? rawArgs.trim().split(/\s+/) : [];
410
+ const tokens = endsWithSpace ? [...baseTokens, ''] : baseTokens;
411
+ const firstToken = tokens[0] ?? '';
412
+ const secondToken = tokens[1] ?? '';
413
+ const thirdToken = tokens[2] ?? '';
414
+ const normalizedFirst = firstToken.toLowerCase();
415
+ const makeProviderSuggestions = (partial, prefixTokens) => PROFILE_PROVIDER_OPTIONS.filter(option => option.provider.startsWith(partial.toLowerCase())).map(option => buildProfileArgSuggestion(`profile-provider-${option.provider}`, option.provider, replaceProfileArgs(value, [...prefixTokens, option.provider, ''].join(' ').trimEnd() + ' '), option.label));
416
+ const makeProfileSuggestions = (provider, partial, prefixTokens) => {
417
+ if (!provider || !PROFILE_PROVIDER_OPTIONS.some(option => option.provider === provider)) {
418
+ return [];
419
+ }
420
+ const profiles = listProviderProfiles(provider);
421
+ return profiles.filter(profile => profile.name.toLowerCase().startsWith(partial.toLowerCase())).map(profile => buildProfileArgSuggestion(`profile-name-${profile.id}`, profile.name, replaceProfileArgs(value, [...prefixTokens, profile.name, ''].join(' ').trimEnd() + ' '), `${profile.agentName}${profile.lastModel ? ` · ${profile.lastModel}` : ''}`));
422
+ };
423
+ if (tokens.length <= 1) {
424
+ const partial = firstToken.toLowerCase();
425
+ const suggestions = PROFILE_SUBCOMMANDS.filter(option => option.startsWith(partial)).map(option => buildProfileArgSuggestion(`profile-subcommand-${option}`, option, replaceProfileArgs(value, `${option} `)));
426
+ return {
427
+ suggestions,
428
+ commandArgumentHint: '<subcomando>'
429
+ };
430
+ }
431
+ if (normalizedFirst === 'list' || normalizedFirst === 'current') {
432
+ return {
433
+ suggestions: [],
434
+ commandArgumentHint: undefined
435
+ };
436
+ }
437
+ if (normalizedFirst === 'remove' && tokens.length <= 2) {
438
+ const partial = secondToken.toLowerCase();
439
+ const suggestions = [buildProfileArgSuggestion('profile-remove-all', 'all', replaceProfileArgs(value, 'remove all'), 'Eliminar todos los perfiles'), ...makeProviderSuggestions(partial, ['remove'])];
440
+ return {
441
+ suggestions: suggestions.filter(item => item.displayText.toLowerCase().startsWith(partial)),
442
+ commandArgumentHint: '<proveedor|all>'
443
+ };
444
+ }
445
+ if (['use', 'rename', 'remove', 'model', 'agent'].includes(normalizedFirst) && tokens.length <= 2) {
446
+ return {
447
+ suggestions: makeProviderSuggestions(secondToken, [normalizedFirst]),
448
+ commandArgumentHint: '<proveedor>'
449
+ };
450
+ }
451
+ if (['use', 'remove', 'model', 'agent'].includes(normalizedFirst) && tokens.length <= 3) {
452
+ return {
453
+ suggestions: makeProfileSuggestions(secondToken, thirdToken, [normalizedFirst, secondToken]),
454
+ commandArgumentHint: '<perfil>'
455
+ };
456
+ }
457
+ if (normalizedFirst === 'rename' && tokens.length <= 3) {
458
+ return {
459
+ suggestions: makeProfileSuggestions(secondToken, thirdToken, [normalizedFirst, secondToken]),
460
+ commandArgumentHint: '<perfil-actual>'
461
+ };
462
+ }
463
+ return {
464
+ suggestions: [],
465
+ commandArgumentHint: undefined
466
+ };
467
+ }
468
+ function applyCommandArgSuggestion(suggestion, onInputChange, setCursorOffset) {
469
+ const metadata = suggestion.metadata;
470
+ const newInput = metadata?.replacement ?? suggestion.displayText;
471
+ onInputChange(newInput);
472
+ setCursorOffset(newInput.length);
473
+ }
474
+ function buildResumeInputFromSuggestion(suggestion) {
475
+ const metadata = suggestion.metadata;
476
+ return metadata?.sessionId ? `/resume ${metadata.sessionId}` : `/resume ${suggestion.displayText}`;
477
+ }
478
+ /**
479
+ * Extract search token from a completion token by removing @ prefix and quotes
480
+ * @param completionToken The completion token
481
+ * @returns The search token with @ and quotes removed
482
+ */
483
+ export function extractSearchToken(completionToken) {
484
+ if (completionToken.isQuoted) {
485
+ // Remove @" prefix and optional closing "
486
+ return completionToken.token.slice(2).replace(/"$/, '');
487
+ }
488
+ else if (completionToken.token.startsWith('@')) {
489
+ return completionToken.token.substring(1);
490
+ }
491
+ else {
492
+ return completionToken.token;
493
+ }
494
+ }
495
+ /**
496
+ * Format a replacement value with proper @ prefix and quotes based on context
497
+ * @param options Configuration for formatting
498
+ * @param options.displayText The text to display
499
+ * @param options.mode The current mode (bash or prompt)
500
+ * @param options.hasAtPrefix Whether the original token has @ prefix
501
+ * @param options.needsQuotes Whether the text needs quotes (contains spaces)
502
+ * @param options.isQuoted Whether the original token was already quoted (user typed @"...)
503
+ * @param options.isComplete Whether this is a complete suggestion (adds trailing space)
504
+ * @returns The formatted replacement value
505
+ */
506
+ export function formatReplacementValue(options) {
507
+ const { displayText, mode, hasAtPrefix, needsQuotes, isQuoted, isComplete } = options;
508
+ const space = isComplete ? ' ' : '';
509
+ if (isQuoted || needsQuotes) {
510
+ // Use quoted format
511
+ return mode === 'bash' ? `"${displayText}"${space}` : `@"${displayText}"${space}`;
512
+ }
513
+ else if (hasAtPrefix) {
514
+ return mode === 'bash' ? `${displayText}${space}` : `@${displayText}${space}`;
515
+ }
516
+ else {
517
+ return displayText;
518
+ }
519
+ }
520
+ /**
521
+ * Apply a shell completion suggestion by replacing the current word
522
+ */
523
+ export function applyShellSuggestion(suggestion, input, cursorOffset, onInputChange, setCursorOffset, completionType) {
524
+ const beforeCursor = input.slice(0, cursorOffset);
525
+ const lastSpaceIndex = beforeCursor.lastIndexOf(' ');
526
+ const wordStart = lastSpaceIndex + 1;
527
+ // Prepare the replacement text based on completion type
528
+ let replacementText;
529
+ if (completionType === 'variable') {
530
+ replacementText = '$' + suggestion.displayText + ' ';
531
+ }
532
+ else if (completionType === 'command') {
533
+ replacementText = suggestion.displayText + ' ';
534
+ }
535
+ else {
536
+ replacementText = suggestion.displayText;
537
+ }
538
+ const newInput = input.slice(0, wordStart) + replacementText + input.slice(cursorOffset);
539
+ onInputChange(newInput);
540
+ setCursorOffset(wordStart + replacementText.length);
541
+ }
542
+ const DM_MEMBER_RE = /(^|\s)@[\w-]*$/;
543
+ function applyTriggerSuggestion(suggestion, input, cursorOffset, triggerRe, onInputChange, setCursorOffset) {
544
+ const m = input.slice(0, cursorOffset).match(triggerRe);
545
+ if (!m || m.index === undefined)
546
+ return;
547
+ const prefixStart = m.index + (m[1]?.length ?? 0);
548
+ const before = input.slice(0, prefixStart);
549
+ const newInput = before + suggestion.displayText + ' ' + input.slice(cursorOffset);
550
+ onInputChange(newInput);
551
+ setCursorOffset(before.length + suggestion.displayText.length + 1);
552
+ }
553
+ let currentShellCompletionAbortController = null;
554
+ /**
555
+ * Generate bash shell completion suggestions
556
+ */
557
+ async function generateBashSuggestions(input, cursorOffset) {
558
+ try {
559
+ if (currentShellCompletionAbortController) {
560
+ currentShellCompletionAbortController.abort();
561
+ }
562
+ currentShellCompletionAbortController = new AbortController();
563
+ const suggestions = await getShellCompletions(input, cursorOffset, currentShellCompletionAbortController.signal);
564
+ return suggestions;
565
+ }
566
+ catch {
567
+ // Silent failure - don't break UX
568
+ logEvent('tengu_shell_completion_failed', {});
569
+ return [];
570
+ }
571
+ }
572
+ /**
573
+ * Apply a directory/path completion suggestion to the input
574
+ * Always adds @ prefix since we're replacing the entire token (including any existing @)
575
+ *
576
+ * @param input The current input text
577
+ * @param suggestionId The ID of the suggestion to apply
578
+ * @param tokenStartPos The start position of the token being replaced
579
+ * @param tokenLength The length of the token being replaced
580
+ * @param isDirectory Whether the suggestion is a directory (adds / suffix) or file (adds space)
581
+ * @returns Object with the new input text and cursor position
582
+ */
583
+ export function applyDirectorySuggestion(input, suggestionId, tokenStartPos, tokenLength, isDirectory) {
584
+ const suffix = isDirectory ? '/' : ' ';
585
+ const before = input.slice(0, tokenStartPos);
586
+ const after = input.slice(tokenStartPos + tokenLength);
587
+ // Always add @ prefix - if token already has it, we're replacing
588
+ // the whole token (including @) with @suggestion.id
589
+ const replacement = '@' + suggestionId + suffix;
590
+ const newInput = before + replacement + after;
591
+ return {
592
+ newInput,
593
+ cursorPos: before.length + replacement.length
594
+ };
595
+ }
596
+ /**
597
+ * Extract a completable token at the cursor position
598
+ * @param text The input text
599
+ * @param cursorPos The cursor position
600
+ * @param includeAtSymbol Whether to consider @ symbol as part of the token
601
+ * @returns The completable token and its start position, or null if not found
602
+ */
603
+ export function extractCompletionToken(text, cursorPos, includeAtSymbol = false) {
604
+ // Empty input check
605
+ if (!text)
606
+ return null;
607
+ // Get text up to cursor
608
+ const textBeforeCursor = text.substring(0, cursorPos);
609
+ // Check for quoted @ mention first (e.g., @"my file with spaces")
610
+ if (includeAtSymbol) {
611
+ const quotedAtRegex = /@"([^"]*)"?$/;
612
+ const quotedMatch = textBeforeCursor.match(quotedAtRegex);
613
+ if (quotedMatch && quotedMatch.index !== undefined) {
614
+ // Include any remaining quoted content after cursor until closing quote or end
615
+ const textAfterCursor = text.substring(cursorPos);
616
+ const afterQuotedMatch = textAfterCursor.match(/^[^"]*"?/);
617
+ const quotedSuffix = afterQuotedMatch ? afterQuotedMatch[0] : '';
618
+ return {
619
+ token: quotedMatch[0] + quotedSuffix,
620
+ startPos: quotedMatch.index,
621
+ isQuoted: true
622
+ };
623
+ }
624
+ }
625
+ // Fast path for @ tokens: use lastIndexOf to avoid expensive $ anchor scan
626
+ if (includeAtSymbol) {
627
+ const atIdx = textBeforeCursor.lastIndexOf('@');
628
+ if (atIdx >= 0 && (atIdx === 0 || /\s/.test(textBeforeCursor[atIdx - 1]))) {
629
+ const fromAt = textBeforeCursor.substring(atIdx);
630
+ const atHeadMatch = fromAt.match(AT_TOKEN_HEAD_RE);
631
+ if (atHeadMatch && atHeadMatch[0].length === fromAt.length) {
632
+ const textAfterCursor = text.substring(cursorPos);
633
+ const afterMatch = textAfterCursor.match(PATH_CHAR_HEAD_RE);
634
+ const tokenSuffix = afterMatch ? afterMatch[0] : '';
635
+ return {
636
+ token: atHeadMatch[0] + tokenSuffix,
637
+ startPos: atIdx,
638
+ isQuoted: false
639
+ };
640
+ }
641
+ }
642
+ }
643
+ // Non-@ token or cursor outside @ token — use $ anchor on (short) tail
644
+ const tokenRegex = includeAtSymbol ? TOKEN_WITH_AT_RE : TOKEN_WITHOUT_AT_RE;
645
+ const match = textBeforeCursor.match(tokenRegex);
646
+ if (!match || match.index === undefined) {
647
+ return null;
648
+ }
649
+ // Check if cursor is in the MIDDLE of a token (more word characters after cursor)
650
+ // If so, extend the token to include all characters until whitespace or end of string
651
+ const textAfterCursor = text.substring(cursorPos);
652
+ const afterMatch = textAfterCursor.match(PATH_CHAR_HEAD_RE);
653
+ const tokenSuffix = afterMatch ? afterMatch[0] : '';
654
+ return {
655
+ token: match[0] + tokenSuffix,
656
+ startPos: match.index,
657
+ isQuoted: false
658
+ };
659
+ }
660
+ function extractCommandNameAndArgs(value) {
661
+ if (isCommandInput(value)) {
662
+ const spaceIndex = value.indexOf(' ');
663
+ if (spaceIndex === -1)
664
+ return {
665
+ commandName: value.slice(1),
666
+ args: ''
667
+ };
668
+ return {
669
+ commandName: value.slice(1, spaceIndex),
670
+ args: value.slice(spaceIndex + 1)
671
+ };
672
+ }
673
+ return null;
674
+ }
675
+ function hasCommandWithArguments(isAtEndWithWhitespace, value) {
676
+ // If value.endsWith(' ') but the user is not at the end, then the user has
677
+ // potentially gone back to the command in an effort to edit the command name
678
+ // (but preserve the arguments).
679
+ return !isAtEndWithWhitespace && value.includes(' ') && !value.endsWith(' ');
680
+ }
681
+ /**
682
+ * Hook for handling typeahead functionality for both commands and file paths
683
+ */
684
+ export function useTypeahead({ commands, onInputChange, onSubmit, setCursorOffset, input, cursorOffset, mode, agents, setSuggestionsState, suggestionsState: { suggestions, selectedSuggestion, commandArgumentHint }, suppressSuggestions = false, markAccepted, onModeChange }) {
685
+ const { addNotification } = useNotifications();
686
+ const thinkingToggleShortcut = useShortcutDisplay('chat:thinkingToggle', 'Chat', 'alt+t');
687
+ const [suggestionType, setSuggestionType] = useState('none');
688
+ // Compute max column width from ALL commands once (not filtered results)
689
+ // This prevents layout shift when filtering
690
+ const allCommandsMaxWidth = useMemo(() => {
691
+ const visibleCommands = commands.filter(cmd => !cmd.isHidden);
692
+ if (visibleCommands.length === 0)
693
+ return undefined;
694
+ const maxLen = Math.max(...visibleCommands.map(cmd => getCommandName(cmd).length));
695
+ return maxLen + 6; // +1 for "/" prefix, +5 for padding
696
+ }, [commands]);
697
+ const [maxColumnWidth, setMaxColumnWidth] = useState(undefined);
698
+ const mcpResources = useAppState(s => s.mcp.resources);
699
+ const store = useAppStateStore();
700
+ const promptSuggestion = useAppState(s => s.promptSuggestion);
701
+ // PromptInput hides suggestion ghost text in teammate view — mirror that
702
+ // gate here so Tab/rightArrow can't accept what isn't displayed.
703
+ const isViewingTeammate = useAppState(s => !!s.viewingAgentTaskId);
704
+ // Access keybinding context to check for pending chord sequences
705
+ const keybindingContext = useOptionalKeybindingContext();
706
+ // State for inline ghost text (bash history completion - async)
707
+ const [inlineGhostText, setInlineGhostText] = useState(undefined);
708
+ // Synchronous ghost text for prompt mode mid-input slash commands.
709
+ // Computed during render via useMemo to eliminate the one-frame flicker
710
+ // that occurs when using useState + useEffect (effect runs after render).
711
+ const syncPromptGhostText = useMemo(() => {
712
+ if (mode !== 'prompt' || suppressSuggestions)
713
+ return undefined;
714
+ const midInputCommand = findMidInputSlashCommand(input, cursorOffset);
715
+ if (!midInputCommand)
716
+ return undefined;
717
+ const match = getBestCommandMatch(midInputCommand.partialCommand, commands);
718
+ if (!match)
719
+ return undefined;
720
+ return {
721
+ text: match.suffix,
722
+ fullCommand: match.fullCommand,
723
+ insertPosition: midInputCommand.startPos + 1 + midInputCommand.partialCommand.length
724
+ };
725
+ }, [input, cursorOffset, mode, commands, suppressSuggestions]);
726
+ // Merged ghost text: prompt mode uses synchronous useMemo, bash mode uses async useState
727
+ const effectiveGhostText = suppressSuggestions ? undefined : mode === 'prompt' ? syncPromptGhostText : inlineGhostText;
728
+ // Use a ref for cursorOffset to avoid re-triggering suggestions on cursor movement alone
729
+ // We only want to re-fetch suggestions when the actual search token changes
730
+ const cursorOffsetRef = useRef(cursorOffset);
731
+ cursorOffsetRef.current = cursorOffset;
732
+ // Track the latest search token to discard stale results from slow async operations
733
+ const latestSearchTokenRef = useRef(null);
734
+ // Track previous input to detect actual text changes vs. callback recreations
735
+ const prevInputRef = useRef('');
736
+ // Track the latest path token to discard stale results from path completion
737
+ const latestPathTokenRef = useRef('');
738
+ // Track the latest bash input to discard stale results from history completion
739
+ const latestBashInputRef = useRef('');
740
+ // Track the latest slack channel token to discard stale results from MCP
741
+ const latestSlackTokenRef = useRef('');
742
+ // Track suggestions via ref to avoid updateSuggestions being recreated on selection changes
743
+ const suggestionsRef = useRef(suggestions);
744
+ suggestionsRef.current = suggestions;
745
+ // Track the input value when suggestions were manually dismissed to prevent re-triggering
746
+ const dismissedForInputRef = useRef(null);
747
+ // Clear all suggestions
748
+ const clearSuggestions = useCallback(() => {
749
+ setSuggestionsState(() => ({
750
+ commandArgumentHint: undefined,
751
+ suggestions: [],
752
+ selectedSuggestion: -1
753
+ }));
754
+ setSuggestionType('none');
755
+ setMaxColumnWidth(undefined);
756
+ setInlineGhostText(undefined);
757
+ }, [setSuggestionsState]);
758
+ // Expensive async operation to fetch file/resource suggestions
759
+ const fetchFileSuggestions = useCallback(async (searchToken, isAtSymbol = false) => {
760
+ latestSearchTokenRef.current = searchToken;
761
+ const combinedItems = await generateUnifiedSuggestions(searchToken, mcpResources, agents, isAtSymbol);
762
+ // Discard stale results if a newer query was initiated while waiting
763
+ if (latestSearchTokenRef.current !== searchToken) {
764
+ return;
765
+ }
766
+ if (combinedItems.length === 0) {
767
+ // Inline clearSuggestions logic to avoid needing debouncedFetchFileSuggestions
768
+ setSuggestionsState(() => ({
769
+ commandArgumentHint: undefined,
770
+ suggestions: [],
771
+ selectedSuggestion: -1
772
+ }));
773
+ setSuggestionType('none');
774
+ setMaxColumnWidth(undefined);
775
+ return;
776
+ }
777
+ setSuggestionsState(prev => ({
778
+ commandArgumentHint: undefined,
779
+ suggestions: combinedItems,
780
+ selectedSuggestion: getPreservedSelection(prev.suggestions, prev.selectedSuggestion, combinedItems)
781
+ }));
782
+ setSuggestionType(combinedItems.length > 0 ? 'file' : 'none');
783
+ setMaxColumnWidth(undefined); // No fixed width for file suggestions
784
+ }, [mcpResources, setSuggestionsState, setSuggestionType, setMaxColumnWidth, agents]);
785
+ // Pre-warm the file index on mount so the first @-mention doesn't block.
786
+ // The build runs in background with ~4ms event-loop yields, so it doesn't
787
+ // delay first render — it just races the user's first @ keystroke.
788
+ //
789
+ // If the user types before the build finishes, they get partial results
790
+ // from the ready chunks; when the build completes, re-fire the last
791
+ // search so partial upgrades to full. Clears the token ref so the same
792
+ // query isn't discarded as stale.
793
+ //
794
+ // Skipped under NODE_ENV=test: REPL-mounting tests would spawn git ls-files
795
+ // against the real CI workspace (270k+ files on Windows runners), and the
796
+ // background build outlives the test — its setImmediate chain leaks into
797
+ // subsequent tests in the shard. The subscriber still registers so
798
+ // fileSuggestions tests that trigger a refresh directly work correctly.
799
+ useEffect(() => {
800
+ if ("production" !== 'test') {
801
+ startBackgroundCacheRefresh();
802
+ }
803
+ return onIndexBuildComplete(() => {
804
+ const token = latestSearchTokenRef.current;
805
+ if (token !== null) {
806
+ latestSearchTokenRef.current = null;
807
+ void fetchFileSuggestions(token, token === '');
808
+ }
809
+ });
810
+ }, [fetchFileSuggestions]);
811
+ // Debounce the file fetch operation. 50ms sits just above macOS default
812
+ // key-repeat (~33ms) so held-delete/backspace coalesces into one search
813
+ // instead of stuttering on each repeated key. The search itself is ~8–15ms
814
+ // on a 270k-file index.
815
+ const debouncedFetchFileSuggestions = useDebounceCallback(fetchFileSuggestions, 50);
816
+ const fetchSlackChannels = useCallback(async (partial) => {
817
+ latestSlackTokenRef.current = partial;
818
+ const channels = await getSlackChannelSuggestions(store.getState().mcp.clients, partial);
819
+ if (latestSlackTokenRef.current !== partial)
820
+ return;
821
+ setSuggestionsState(prev => ({
822
+ commandArgumentHint: undefined,
823
+ suggestions: channels,
824
+ selectedSuggestion: getPreservedSelection(prev.suggestions, prev.selectedSuggestion, channels)
825
+ }));
826
+ setSuggestionType(channels.length > 0 ? 'slack-channel' : 'none');
827
+ setMaxColumnWidth(undefined);
828
+ },
829
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- store is a stable context ref
830
+ [setSuggestionsState]);
831
+ // First keystroke after # needs the MCP round-trip; subsequent keystrokes
832
+ // that share the same first-word segment hit the cache synchronously.
833
+ const debouncedFetchSlackChannels = useDebounceCallback(fetchSlackChannels, 150);
834
+ // Handle immediate suggestion logic (cheap operations)
835
+ // biome-ignore lint/correctness/useExhaustiveDependencies: store is a stable context ref, read imperatively at call-time
836
+ const updateSuggestions = useCallback(async (value, inputCursorOffset) => {
837
+ // Use provided cursor offset or fall back to ref (avoids dependency on cursorOffset)
838
+ const effectiveCursorOffset = inputCursorOffset ?? cursorOffsetRef.current;
839
+ if (suppressSuggestions) {
840
+ debouncedFetchFileSuggestions.cancel();
841
+ clearSuggestions();
842
+ return;
843
+ }
844
+ // Check for mid-input slash command (e.g., "help me /com")
845
+ // Only in prompt mode, not when input starts with "/" (handled separately)
846
+ // Note: ghost text for prompt mode is computed synchronously via syncPromptGhostText useMemo.
847
+ // We only need to clear dropdown suggestions here when ghost text is active.
848
+ if (mode === 'prompt') {
849
+ const midInputCommand = findMidInputSlashCommand(value, effectiveCursorOffset);
850
+ if (midInputCommand) {
851
+ const match = getBestCommandMatch(midInputCommand.partialCommand, commands);
852
+ if (match) {
853
+ // Clear dropdown suggestions when showing ghost text
854
+ setSuggestionsState(() => ({
855
+ commandArgumentHint: undefined,
856
+ suggestions: [],
857
+ selectedSuggestion: -1
858
+ }));
859
+ setSuggestionType('none');
860
+ setMaxColumnWidth(undefined);
861
+ return;
862
+ }
863
+ }
864
+ }
865
+ // Bash mode: check for history-based ghost text completion
866
+ if (mode === 'bash' && value.trim()) {
867
+ latestBashInputRef.current = value;
868
+ const historyMatch = await getShellHistoryCompletion(value);
869
+ // Discard stale results if input changed while waiting
870
+ if (latestBashInputRef.current !== value) {
871
+ return;
872
+ }
873
+ if (historyMatch) {
874
+ setInlineGhostText({
875
+ text: historyMatch.suffix,
876
+ fullCommand: historyMatch.fullCommand,
877
+ insertPosition: value.length
878
+ });
879
+ // Clear dropdown suggestions when showing ghost text
880
+ setSuggestionsState(() => ({
881
+ commandArgumentHint: undefined,
882
+ suggestions: [],
883
+ selectedSuggestion: -1
884
+ }));
885
+ setSuggestionType('none');
886
+ setMaxColumnWidth(undefined);
887
+ return;
888
+ }
889
+ else {
890
+ // No history match, clear ghost text
891
+ setInlineGhostText(undefined);
892
+ }
893
+ }
894
+ // Check for @ to trigger team member / named subagent suggestions
895
+ // Must check before @ file symbol to prevent conflict
896
+ // Skip in bash mode - @ has no special meaning in shell commands
897
+ const atMatch = mode !== 'bash' ? value.substring(0, effectiveCursorOffset).match(/(^|\s)@([\w-]*)$/) : null;
898
+ if (atMatch) {
899
+ const partialName = (atMatch[2] ?? '').toLowerCase();
900
+ // Imperative read — reading at call-time fixes staleness for
901
+ // teammates/subagents added mid-session.
902
+ const state = store.getState();
903
+ const members = [];
904
+ const seen = new Set();
905
+ if (isAgentSwarmsEnabled() && state.teamContext) {
906
+ for (const t of Object.values(state.teamContext.teammates ?? {})) {
907
+ if (t.name === TEAM_LEAD_NAME)
908
+ continue;
909
+ if (!t.name.toLowerCase().startsWith(partialName))
910
+ continue;
911
+ seen.add(t.name);
912
+ members.push({
913
+ id: `dm-${t.name}`,
914
+ displayText: `@${t.name}`,
915
+ description: 'send message'
916
+ });
917
+ }
918
+ }
919
+ for (const [name, agentId] of state.agentNameRegistry) {
920
+ if (seen.has(name))
921
+ continue;
922
+ if (!name.toLowerCase().startsWith(partialName))
923
+ continue;
924
+ const status = state.tasks[agentId]?.status;
925
+ members.push({
926
+ id: `dm-${name}`,
927
+ displayText: `@${name}`,
928
+ description: status ? `send message · ${status}` : 'send message'
929
+ });
930
+ }
931
+ if (members.length > 0) {
932
+ debouncedFetchFileSuggestions.cancel();
933
+ setSuggestionsState(prev => ({
934
+ commandArgumentHint: undefined,
935
+ suggestions: members,
936
+ selectedSuggestion: getPreservedSelection(prev.suggestions, prev.selectedSuggestion, members)
937
+ }));
938
+ setSuggestionType('agent');
939
+ setMaxColumnWidth(undefined);
940
+ return;
941
+ }
942
+ }
943
+ // Check for # to trigger Slack channel suggestions (requires Slack MCP server)
944
+ if (mode === 'prompt') {
945
+ const hashMatch = value.substring(0, effectiveCursorOffset).match(HASH_CHANNEL_RE);
946
+ if (hashMatch && hasSlackMcpServer(store.getState().mcp.clients)) {
947
+ debouncedFetchSlackChannels(hashMatch[2]);
948
+ return;
949
+ }
950
+ else if (suggestionType === 'slack-channel') {
951
+ debouncedFetchSlackChannels.cancel();
952
+ clearSuggestions();
953
+ }
954
+ }
955
+ // Check for @ symbol to trigger file suggestions (including quoted paths)
956
+ // Includes colon for MCP resources (e.g., server:resource/path)
957
+ const hasAtSymbol = value.substring(0, effectiveCursorOffset).match(HAS_AT_SYMBOL_RE);
958
+ // First, check for slash command suggestions (higher priority than @ symbol)
959
+ // Only show slash command selector if cursor is not on the "/" character itself
960
+ // Also don't show if cursor is at end of line with whitespace before it
961
+ // Don't show slash commands in bash mode
962
+ const isAtEndWithWhitespace = effectiveCursorOffset === value.length && effectiveCursorOffset > 0 && value.length > 0 && value[effectiveCursorOffset - 1] === ' ';
963
+ // Handle directory completion for commands
964
+ if (mode === 'prompt' && isCommandInput(value) && effectiveCursorOffset > 0) {
965
+ const parsedCommand = extractCommandNameAndArgs(value);
966
+ if (parsedCommand && parsedCommand.commandName === 'add-dir' && parsedCommand.args) {
967
+ const { args } = parsedCommand;
968
+ // Clear suggestions if args end with whitespace (user is done with path)
969
+ if (args.match(/\s+$/)) {
970
+ debouncedFetchFileSuggestions.cancel();
971
+ clearSuggestions();
972
+ return;
973
+ }
974
+ const dirSuggestions = await getDirectoryCompletions(args);
975
+ if (dirSuggestions.length > 0) {
976
+ setSuggestionsState(prev => ({
977
+ suggestions: dirSuggestions,
978
+ selectedSuggestion: getPreservedSelection(prev.suggestions, prev.selectedSuggestion, dirSuggestions),
979
+ commandArgumentHint: undefined
980
+ }));
981
+ setSuggestionType('directory');
982
+ return;
983
+ }
984
+ // No suggestions found - clear and return
985
+ debouncedFetchFileSuggestions.cancel();
986
+ clearSuggestions();
987
+ return;
988
+ }
989
+ // Handle custom title completion for /resume command
990
+ if (parsedCommand && parsedCommand.commandName === 'resume' && parsedCommand.args !== undefined && value.includes(' ')) {
991
+ const { args } = parsedCommand;
992
+ // Get custom title suggestions using partial match
993
+ const matches = await searchSessionsByCustomTitle(args, {
994
+ limit: 10
995
+ });
996
+ const suggestions = matches.map(log => {
997
+ const sessionId = getSessionIdFromLog(log);
998
+ return {
999
+ id: `resume-title-${sessionId}`,
1000
+ displayText: log.customTitle,
1001
+ description: formatLogMetadata(log),
1002
+ metadata: {
1003
+ sessionId
1004
+ }
1005
+ };
1006
+ });
1007
+ if (suggestions.length > 0) {
1008
+ setSuggestionsState(prev => ({
1009
+ suggestions,
1010
+ selectedSuggestion: getPreservedSelection(prev.suggestions, prev.selectedSuggestion, suggestions),
1011
+ commandArgumentHint: undefined
1012
+ }));
1013
+ setSuggestionType('custom-title');
1014
+ return;
1015
+ }
1016
+ // No suggestions found - clear and return
1017
+ clearSuggestions();
1018
+ return;
1019
+ }
1020
+ }
1021
+ const teamSuggestions = mode === 'prompt' ? getTeamCommandSuggestions(value) : null;
1022
+ if (teamSuggestions) {
1023
+ const { suggestions: teamItems, commandArgumentHint } = teamSuggestions;
1024
+ setSuggestionsState(() => ({
1025
+ commandArgumentHint,
1026
+ suggestions: teamItems,
1027
+ selectedSuggestion: teamItems.length > 0 ? 0 : -1
1028
+ }));
1029
+ setSuggestionType(teamItems.length > 0 ? 'command-arg' : 'none');
1030
+ setMaxColumnWidth(undefined);
1031
+ return;
1032
+ }
1033
+ const workspaceSuggestions = mode === 'prompt' ? getWorkspaceCommandSuggestions(value) : null;
1034
+ if (workspaceSuggestions) {
1035
+ const { suggestions: workspaceItems, commandArgumentHint } = workspaceSuggestions;
1036
+ setSuggestionsState(() => ({
1037
+ commandArgumentHint,
1038
+ suggestions: workspaceItems,
1039
+ selectedSuggestion: workspaceItems.length > 0 ? 0 : -1
1040
+ }));
1041
+ setSuggestionType(workspaceItems.length > 0 ? 'command-arg' : 'none');
1042
+ setMaxColumnWidth(undefined);
1043
+ return;
1044
+ }
1045
+ const profileSuggestions = mode === 'prompt' ? getProfileCommandSuggestions(value) : null;
1046
+ if (profileSuggestions) {
1047
+ const { suggestions: profileItems, commandArgumentHint } = profileSuggestions;
1048
+ setSuggestionsState(() => ({
1049
+ commandArgumentHint,
1050
+ suggestions: profileItems,
1051
+ selectedSuggestion: profileItems.length > 0 ? 0 : -1
1052
+ }));
1053
+ setSuggestionType(profileItems.length > 0 ? 'command-arg' : 'none');
1054
+ setMaxColumnWidth(undefined);
1055
+ return;
1056
+ }
1057
+ const providerSuggestions = mode === 'prompt' ? getProviderCommandSuggestions(value) : null;
1058
+ if (providerSuggestions) {
1059
+ const { suggestions: providerItems, commandArgumentHint } = providerSuggestions;
1060
+ setSuggestionsState(() => ({
1061
+ commandArgumentHint,
1062
+ suggestions: providerItems,
1063
+ selectedSuggestion: providerItems.length > 0 ? 0 : -1
1064
+ }));
1065
+ setSuggestionType(providerItems.length > 0 ? 'command-arg' : 'none');
1066
+ setMaxColumnWidth(undefined);
1067
+ return;
1068
+ }
1069
+ // General slash command suggestions
1070
+ if (mode !== 'bash' && isCommandInput(value) && effectiveCursorOffset > 0 && !isAtEndWithWhitespace) {
1071
+ const partialCommand = value.slice(1).toLowerCase();
1072
+ if (!hasCommandWithArguments(isAtEndWithWhitespace, value)) {
1073
+ // Filter commands based on partial input
1074
+ const filteredCommands = commands
1075
+ .filter(cmd => !cmd.isHidden)
1076
+ .filter(cmd => {
1077
+ const cmdName = getCommandName(cmd);
1078
+ return cmdName.startsWith(partialCommand) || (cmd.aliases ?? []).some(alias => alias.startsWith(partialCommand));
1079
+ })
1080
+ .map(cmd => ({
1081
+ id: getCommandName(cmd),
1082
+ displayText: `/${getCommandName(cmd)}`,
1083
+ description: cmd.description ?? ''
1084
+ }));
1085
+ setSuggestionsState(prev => ({
1086
+ commandArgumentHint: undefined,
1087
+ suggestions: filteredCommands,
1088
+ selectedSuggestion: getPreservedSelection(prev.suggestions, prev.selectedSuggestion, filteredCommands)
1089
+ }));
1090
+ setSuggestionType(filteredCommands.length > 0 ? 'command' : 'none');
1091
+ setMaxColumnWidth(filteredCommands.length > 0 ? allCommandsMaxWidth : undefined);
1092
+ return;
1093
+ }
1094
+ }
1095
+ // Handle @ file suggestions
1096
+ if (hasAtSymbol) {
1097
+ const completionToken = extractCompletionToken(value, effectiveCursorOffset, true);
1098
+ if (completionToken) {
1099
+ const isAtSymbolPrefix = completionToken.token.startsWith('@');
1100
+ const searchToken = isAtSymbolPrefix ? completionToken.token.substring(1) : completionToken.token;
1101
+ debouncedFetchFileSuggestions(searchToken, isAtSymbolPrefix);
1102
+ return;
1103
+ }
1104
+ }
1105
+ // Default: clear suggestions
1106
+ debouncedFetchFileSuggestions.cancel();
1107
+ clearSuggestions();
1108
+ }, [mode, suppressSuggestions, commands, clearSuggestions, debouncedFetchFileSuggestions, setSuggestionsState, allCommandsMaxWidth, debouncedFetchSlackChannels, suggestionType]);
1109
+ useEffect(() => {
1110
+ // If suggestions were dismissed for this exact input, don't re-trigger
1111
+ if (dismissedForInputRef.current === input) {
1112
+ return;
1113
+ }
1114
+ // When the actual input text changes (not just updateSuggestions being recreated),
1115
+ // reset the search token ref so the same query can be re-fetched.
1116
+ // This fixes: type @readme.md, clear, retype @readme.md → no suggestions.
1117
+ if (prevInputRef.current !== input) {
1118
+ prevInputRef.current = input;
1119
+ latestSearchTokenRef.current = null;
1120
+ }
1121
+ // Clear the dismissed state when input changes
1122
+ dismissedForInputRef.current = null;
1123
+ void updateSuggestions(input);
1124
+ }, [input, updateSuggestions]);
1125
+ // Handle tab key press - complete suggestions or trigger file suggestions
1126
+ const handleTab = useCallback(async () => {
1127
+ // If we have inline ghost text, apply it
1128
+ if (effectiveGhostText) {
1129
+ // Check for bash mode history completion first
1130
+ if (mode === 'bash') {
1131
+ // Replace the input with the full command from history
1132
+ onInputChange(effectiveGhostText.fullCommand);
1133
+ setCursorOffset(effectiveGhostText.fullCommand.length);
1134
+ setInlineGhostText(undefined);
1135
+ return;
1136
+ }
1137
+ // Find the mid-input command to get its position (for prompt mode)
1138
+ const midInputCommand = findMidInputSlashCommand(input, cursorOffset);
1139
+ if (midInputCommand) {
1140
+ // Replace the partial command with the full command + space
1141
+ const before = input.slice(0, midInputCommand.startPos);
1142
+ const after = input.slice(midInputCommand.startPos + midInputCommand.token.length);
1143
+ const newInput = before + '/' + effectiveGhostText.fullCommand + ' ' + after;
1144
+ const newCursorOffset = midInputCommand.startPos + 1 + effectiveGhostText.fullCommand.length + 1;
1145
+ onInputChange(newInput);
1146
+ setCursorOffset(newCursorOffset);
1147
+ return;
1148
+ }
1149
+ }
1150
+ // If we have active suggestions, select one
1151
+ if (suggestions.length > 0) {
1152
+ // Cancel any pending debounced fetches to prevent flicker when accepting
1153
+ debouncedFetchFileSuggestions.cancel();
1154
+ debouncedFetchSlackChannels.cancel();
1155
+ const index = selectedSuggestion === -1 ? 0 : selectedSuggestion;
1156
+ const suggestion = suggestions[index];
1157
+ if (suggestionType === 'command' && index < suggestions.length) {
1158
+ if (suggestion) {
1159
+ applyCommandSuggestion(suggestion, false,
1160
+ // don't execute on tab
1161
+ commands, onInputChange, setCursorOffset, onSubmit);
1162
+ clearSuggestions();
1163
+ }
1164
+ }
1165
+ else if (suggestionType === 'command-arg' && index < suggestions.length) {
1166
+ if (suggestion) {
1167
+ applyCommandArgSuggestion(suggestion, onInputChange, setCursorOffset);
1168
+ clearSuggestions();
1169
+ }
1170
+ }
1171
+ else if (suggestionType === 'custom-title' && suggestions.length > 0) {
1172
+ // Apply custom title to /resume command with sessionId
1173
+ if (suggestion) {
1174
+ const newInput = buildResumeInputFromSuggestion(suggestion);
1175
+ onInputChange(newInput);
1176
+ setCursorOffset(newInput.length);
1177
+ clearSuggestions();
1178
+ }
1179
+ }
1180
+ else if (suggestionType === 'directory' && suggestions.length > 0) {
1181
+ const suggestion = suggestions[index];
1182
+ if (suggestion) {
1183
+ // Check if this is a command context (e.g., /add-dir) or general path completion
1184
+ const isInCommandContext = isCommandInput(input);
1185
+ let newInput;
1186
+ if (isInCommandContext) {
1187
+ // Command context: replace just the argument portion
1188
+ const spaceIndex = input.indexOf(' ');
1189
+ const commandPart = input.slice(0, spaceIndex + 1); // Include the space
1190
+ const cmdSuffix = isPathMetadata(suggestion.metadata) && suggestion.metadata.type === 'directory' ? '/' : ' ';
1191
+ newInput = commandPart + suggestion.id + cmdSuffix;
1192
+ onInputChange(newInput);
1193
+ setCursorOffset(newInput.length);
1194
+ if (isPathMetadata(suggestion.metadata) && suggestion.metadata.type === 'directory') {
1195
+ // For directories, fetch new suggestions for the updated path
1196
+ setSuggestionsState(prev => ({
1197
+ ...prev,
1198
+ commandArgumentHint: undefined
1199
+ }));
1200
+ void updateSuggestions(newInput, newInput.length);
1201
+ }
1202
+ else {
1203
+ clearSuggestions();
1204
+ }
1205
+ }
1206
+ else {
1207
+ // General path completion: replace the path token in input with @-prefixed path
1208
+ // Try to get token with @ prefix first to check if already prefixed
1209
+ const completionTokenWithAt = extractCompletionToken(input, cursorOffset, true);
1210
+ const completionToken = completionTokenWithAt ?? extractCompletionToken(input, cursorOffset, false);
1211
+ if (completionToken) {
1212
+ const isDir = isPathMetadata(suggestion.metadata) && suggestion.metadata.type === 'directory';
1213
+ const result = applyDirectorySuggestion(input, suggestion.id, completionToken.startPos, completionToken.token.length, isDir);
1214
+ newInput = result.newInput;
1215
+ onInputChange(newInput);
1216
+ setCursorOffset(result.cursorPos);
1217
+ if (isDir) {
1218
+ // For directories, fetch new suggestions for the updated path
1219
+ setSuggestionsState(prev => ({
1220
+ ...prev,
1221
+ commandArgumentHint: undefined
1222
+ }));
1223
+ void updateSuggestions(newInput, result.cursorPos);
1224
+ }
1225
+ else {
1226
+ // For files, clear suggestions
1227
+ clearSuggestions();
1228
+ }
1229
+ }
1230
+ else {
1231
+ // No completion token found (e.g., cursor after space) - just clear suggestions
1232
+ // without modifying input to avoid data loss
1233
+ clearSuggestions();
1234
+ }
1235
+ }
1236
+ }
1237
+ }
1238
+ else if (suggestionType === 'shell' && suggestions.length > 0) {
1239
+ const suggestion = suggestions[index];
1240
+ if (suggestion) {
1241
+ const metadata = suggestion.metadata;
1242
+ applyShellSuggestion(suggestion, input, cursorOffset, onInputChange, setCursorOffset, metadata?.completionType);
1243
+ clearSuggestions();
1244
+ }
1245
+ }
1246
+ else if (suggestionType === 'agent' && suggestions.length > 0 && suggestions[index]?.id?.startsWith('dm-')) {
1247
+ const suggestion = suggestions[index];
1248
+ if (suggestion) {
1249
+ applyTriggerSuggestion(suggestion, input, cursorOffset, DM_MEMBER_RE, onInputChange, setCursorOffset);
1250
+ clearSuggestions();
1251
+ }
1252
+ }
1253
+ else if (suggestionType === 'slack-channel' && suggestions.length > 0) {
1254
+ const suggestion = suggestions[index];
1255
+ if (suggestion) {
1256
+ applyTriggerSuggestion(suggestion, input, cursorOffset, HASH_CHANNEL_RE, onInputChange, setCursorOffset);
1257
+ clearSuggestions();
1258
+ }
1259
+ }
1260
+ else if (suggestionType === 'file' && suggestions.length > 0) {
1261
+ const completionToken = extractCompletionToken(input, cursorOffset, true);
1262
+ if (!completionToken) {
1263
+ clearSuggestions();
1264
+ return;
1265
+ }
1266
+ // Check if all suggestions share a common prefix longer than the current input
1267
+ const commonPrefix = findLongestCommonPrefix(suggestions);
1268
+ // Determine if token starts with @ to preserve it during replacement
1269
+ const hasAtPrefix = completionToken.token.startsWith('@');
1270
+ // The effective token length excludes the @ and quotes if present
1271
+ let effectiveTokenLength;
1272
+ if (completionToken.isQuoted) {
1273
+ // Remove @" prefix and optional closing " to get effective length
1274
+ effectiveTokenLength = completionToken.token.slice(2).replace(/"$/, '').length;
1275
+ }
1276
+ else if (hasAtPrefix) {
1277
+ effectiveTokenLength = completionToken.token.length - 1;
1278
+ }
1279
+ else {
1280
+ effectiveTokenLength = completionToken.token.length;
1281
+ }
1282
+ // If there's a common prefix longer than what the user has typed,
1283
+ // replace the current input with the common prefix
1284
+ if (commonPrefix.length > effectiveTokenLength) {
1285
+ const replacementValue = formatReplacementValue({
1286
+ displayText: commonPrefix,
1287
+ mode,
1288
+ hasAtPrefix,
1289
+ needsQuotes: false,
1290
+ // common prefix doesn't need quotes unless already quoted
1291
+ isQuoted: completionToken.isQuoted,
1292
+ isComplete: false // partial completion
1293
+ });
1294
+ applyFileSuggestion(replacementValue, input, completionToken.token, completionToken.startPos, onInputChange, setCursorOffset);
1295
+ // Don't clear suggestions so user can continue typing or select a specific option
1296
+ // Instead, update for the new prefix
1297
+ void updateSuggestions(input.replace(completionToken.token, replacementValue), cursorOffset);
1298
+ }
1299
+ else if (index < suggestions.length) {
1300
+ // Otherwise, apply the selected suggestion
1301
+ const suggestion = suggestions[index];
1302
+ if (suggestion) {
1303
+ const needsQuotes = suggestion.displayText.includes(' ');
1304
+ const replacementValue = formatReplacementValue({
1305
+ displayText: suggestion.displayText,
1306
+ mode,
1307
+ hasAtPrefix,
1308
+ needsQuotes,
1309
+ isQuoted: completionToken.isQuoted,
1310
+ isComplete: true // complete suggestion
1311
+ });
1312
+ applyFileSuggestion(replacementValue, input, completionToken.token, completionToken.startPos, onInputChange, setCursorOffset);
1313
+ clearSuggestions();
1314
+ }
1315
+ }
1316
+ }
1317
+ }
1318
+ else if (input.trim() !== '') {
1319
+ let suggestionType;
1320
+ let suggestionItems;
1321
+ if (mode === 'bash') {
1322
+ suggestionType = 'shell';
1323
+ // This should be very fast, taking <10ms
1324
+ const bashSuggestions = await generateBashSuggestions(input, cursorOffset);
1325
+ if (bashSuggestions.length === 1) {
1326
+ // If single suggestion, apply it immediately
1327
+ const suggestion = bashSuggestions[0];
1328
+ if (suggestion) {
1329
+ const metadata = suggestion.metadata;
1330
+ applyShellSuggestion(suggestion, input, cursorOffset, onInputChange, setCursorOffset, metadata?.completionType);
1331
+ }
1332
+ suggestionItems = [];
1333
+ }
1334
+ else {
1335
+ suggestionItems = bashSuggestions;
1336
+ }
1337
+ }
1338
+ else {
1339
+ suggestionType = 'file';
1340
+ // If no suggestions, fetch file and MCP resource suggestions
1341
+ const completionInfo = extractCompletionToken(input, cursorOffset, true);
1342
+ if (completionInfo) {
1343
+ // If token starts with @, search without the @ prefix
1344
+ const isAtSymbol = completionInfo.token.startsWith('@');
1345
+ const searchToken = isAtSymbol ? completionInfo.token.substring(1) : completionInfo.token;
1346
+ suggestionItems = await generateUnifiedSuggestions(searchToken, mcpResources, agents, isAtSymbol);
1347
+ }
1348
+ else {
1349
+ suggestionItems = [];
1350
+ }
1351
+ }
1352
+ if (suggestionItems.length > 0) {
1353
+ // Multiple suggestions or not bash mode: show list
1354
+ setSuggestionsState(prev => ({
1355
+ commandArgumentHint: undefined,
1356
+ suggestions: suggestionItems,
1357
+ selectedSuggestion: getPreservedSelection(prev.suggestions, prev.selectedSuggestion, suggestionItems)
1358
+ }));
1359
+ setSuggestionType(suggestionType);
1360
+ setMaxColumnWidth(undefined);
1361
+ }
1362
+ }
1363
+ }, [suggestions, selectedSuggestion, input, suggestionType, commands, mode, onInputChange, setCursorOffset, onSubmit, clearSuggestions, cursorOffset, updateSuggestions, mcpResources, setSuggestionsState, agents, debouncedFetchFileSuggestions, debouncedFetchSlackChannels, effectiveGhostText]);
1364
+ // Handle enter key press - apply and execute suggestions
1365
+ const handleEnter = useCallback(() => {
1366
+ if (selectedSuggestion < 0 || suggestions.length === 0)
1367
+ return;
1368
+ const suggestion = suggestions[selectedSuggestion];
1369
+ if (suggestionType === 'command' && selectedSuggestion < suggestions.length) {
1370
+ if (suggestion) {
1371
+ applyCommandSuggestion(suggestion, true,
1372
+ // execute on return
1373
+ commands, onInputChange, setCursorOffset, onSubmit);
1374
+ debouncedFetchFileSuggestions.cancel();
1375
+ clearSuggestions();
1376
+ }
1377
+ }
1378
+ else if (suggestionType === 'command-arg' && selectedSuggestion < suggestions.length) {
1379
+ if (suggestion) {
1380
+ const metadata = suggestion.metadata;
1381
+ const nextValue = metadata?.replacement ?? suggestion.displayText;
1382
+ if (nextValue.trim() === input.trim()) {
1383
+ debouncedFetchFileSuggestions.cancel();
1384
+ clearSuggestions();
1385
+ onSubmit(input, /* isSubmittingSlashCommand */ true);
1386
+ return;
1387
+ }
1388
+ applyCommandArgSuggestion(suggestion, onInputChange, setCursorOffset);
1389
+ debouncedFetchFileSuggestions.cancel();
1390
+ clearSuggestions();
1391
+ }
1392
+ }
1393
+ else if (suggestionType === 'custom-title' && selectedSuggestion < suggestions.length) {
1394
+ // Apply custom title and execute /resume command with sessionId
1395
+ if (suggestion) {
1396
+ const newInput = buildResumeInputFromSuggestion(suggestion);
1397
+ onInputChange(newInput);
1398
+ setCursorOffset(newInput.length);
1399
+ onSubmit(newInput, /* isSubmittingSlashCommand */ true);
1400
+ debouncedFetchFileSuggestions.cancel();
1401
+ clearSuggestions();
1402
+ }
1403
+ }
1404
+ else if (suggestionType === 'shell' && selectedSuggestion < suggestions.length) {
1405
+ const suggestion = suggestions[selectedSuggestion];
1406
+ if (suggestion) {
1407
+ const metadata = suggestion.metadata;
1408
+ applyShellSuggestion(suggestion, input, cursorOffset, onInputChange, setCursorOffset, metadata?.completionType);
1409
+ debouncedFetchFileSuggestions.cancel();
1410
+ clearSuggestions();
1411
+ }
1412
+ }
1413
+ else if (suggestionType === 'agent' && selectedSuggestion < suggestions.length && suggestion?.id?.startsWith('dm-')) {
1414
+ applyTriggerSuggestion(suggestion, input, cursorOffset, DM_MEMBER_RE, onInputChange, setCursorOffset);
1415
+ debouncedFetchFileSuggestions.cancel();
1416
+ clearSuggestions();
1417
+ }
1418
+ else if (suggestionType === 'slack-channel' && selectedSuggestion < suggestions.length) {
1419
+ if (suggestion) {
1420
+ applyTriggerSuggestion(suggestion, input, cursorOffset, HASH_CHANNEL_RE, onInputChange, setCursorOffset);
1421
+ debouncedFetchSlackChannels.cancel();
1422
+ clearSuggestions();
1423
+ }
1424
+ }
1425
+ else if (suggestionType === 'file' && selectedSuggestion < suggestions.length) {
1426
+ // Extract completion token directly when needed
1427
+ const completionInfo = extractCompletionToken(input, cursorOffset, true);
1428
+ if (completionInfo) {
1429
+ if (suggestion) {
1430
+ const hasAtPrefix = completionInfo.token.startsWith('@');
1431
+ const needsQuotes = suggestion.displayText.includes(' ');
1432
+ const replacementValue = formatReplacementValue({
1433
+ displayText: suggestion.displayText,
1434
+ mode,
1435
+ hasAtPrefix,
1436
+ needsQuotes,
1437
+ isQuoted: completionInfo.isQuoted,
1438
+ isComplete: true // complete suggestion
1439
+ });
1440
+ applyFileSuggestion(replacementValue, input, completionInfo.token, completionInfo.startPos, onInputChange, setCursorOffset);
1441
+ debouncedFetchFileSuggestions.cancel();
1442
+ clearSuggestions();
1443
+ }
1444
+ }
1445
+ }
1446
+ else if (suggestionType === 'directory' && selectedSuggestion < suggestions.length) {
1447
+ if (suggestion) {
1448
+ // In command context (e.g., /add-dir), Enter submits the command
1449
+ // rather than applying the directory suggestion. Just clear
1450
+ // suggestions and let the submit handler process the current input.
1451
+ if (isCommandInput(input)) {
1452
+ debouncedFetchFileSuggestions.cancel();
1453
+ clearSuggestions();
1454
+ return;
1455
+ }
1456
+ // General path completion: replace the path token
1457
+ const completionTokenWithAt = extractCompletionToken(input, cursorOffset, true);
1458
+ const completionToken = completionTokenWithAt ?? extractCompletionToken(input, cursorOffset, false);
1459
+ if (completionToken) {
1460
+ const isDir = isPathMetadata(suggestion.metadata) && suggestion.metadata.type === 'directory';
1461
+ const result = applyDirectorySuggestion(input, suggestion.id, completionToken.startPos, completionToken.token.length, isDir);
1462
+ onInputChange(result.newInput);
1463
+ setCursorOffset(result.cursorPos);
1464
+ }
1465
+ // If no completion token found (e.g., cursor after space), don't modify input
1466
+ // to avoid data loss - just clear suggestions
1467
+ debouncedFetchFileSuggestions.cancel();
1468
+ clearSuggestions();
1469
+ }
1470
+ }
1471
+ }, [suggestions, selectedSuggestion, suggestionType, commands, input, cursorOffset, mode, onInputChange, setCursorOffset, onSubmit, clearSuggestions, debouncedFetchFileSuggestions, debouncedFetchSlackChannels]);
1472
+ // Handler for autocomplete:accept - accepts current suggestion via Tab or Right Arrow
1473
+ const handleAutocompleteAccept = useCallback(() => {
1474
+ void handleTab();
1475
+ }, [handleTab]);
1476
+ // Handler for autocomplete:dismiss - clears suggestions and prevents re-triggering
1477
+ const handleAutocompleteDismiss = useCallback(() => {
1478
+ debouncedFetchFileSuggestions.cancel();
1479
+ debouncedFetchSlackChannels.cancel();
1480
+ clearSuggestions();
1481
+ // Remember the input when dismissed to prevent immediate re-triggering
1482
+ dismissedForInputRef.current = input;
1483
+ }, [debouncedFetchFileSuggestions, debouncedFetchSlackChannels, clearSuggestions, input]);
1484
+ // Handler for autocomplete:previous - selects previous suggestion
1485
+ const handleAutocompletePrevious = useCallback(() => {
1486
+ setSuggestionsState(prev => ({
1487
+ ...prev,
1488
+ selectedSuggestion: prev.selectedSuggestion <= 0 ? suggestions.length - 1 : prev.selectedSuggestion - 1
1489
+ }));
1490
+ }, [suggestions.length, setSuggestionsState]);
1491
+ // Handler for autocomplete:next - selects next suggestion
1492
+ const handleAutocompleteNext = useCallback(() => {
1493
+ setSuggestionsState(prev => ({
1494
+ ...prev,
1495
+ selectedSuggestion: prev.selectedSuggestion >= suggestions.length - 1 ? 0 : prev.selectedSuggestion + 1
1496
+ }));
1497
+ }, [suggestions.length, setSuggestionsState]);
1498
+ // Autocomplete context keybindings - only active when suggestions are visible
1499
+ const autocompleteHandlers = useMemo(() => ({
1500
+ 'autocomplete:accept': handleAutocompleteAccept,
1501
+ 'autocomplete:dismiss': handleAutocompleteDismiss,
1502
+ 'autocomplete:previous': handleAutocompletePrevious,
1503
+ 'autocomplete:next': handleAutocompleteNext
1504
+ }), [handleAutocompleteAccept, handleAutocompleteDismiss, handleAutocompletePrevious, handleAutocompleteNext]);
1505
+ // Register autocomplete as an overlay so CancelRequestHandler defers ESC handling
1506
+ // This ensures ESC dismisses autocomplete before canceling running tasks
1507
+ const isAutocompleteActive = suggestions.length > 0 || !!effectiveGhostText;
1508
+ const isModalOverlayActive = useIsModalOverlayActive();
1509
+ useRegisterOverlay('autocomplete', isAutocompleteActive);
1510
+ // Register Autocomplete context so it appears in activeContexts for other handlers.
1511
+ // This allows Chat's resolver to see Autocomplete and defer to its bindings for up/down.
1512
+ useRegisterKeybindingContext('Autocomplete', isAutocompleteActive);
1513
+ // Disable autocomplete keybindings when a modal overlay (e.g., DiffDialog) is active,
1514
+ // so escape reaches the overlay's handler instead of dismissing autocomplete
1515
+ useKeybindings(autocompleteHandlers, {
1516
+ context: 'Autocomplete',
1517
+ isActive: isAutocompleteActive && !isModalOverlayActive
1518
+ });
1519
+ function acceptSuggestionText(text) {
1520
+ const detectedMode = getModeFromInput(text);
1521
+ if (detectedMode !== 'prompt' && onModeChange) {
1522
+ onModeChange(detectedMode);
1523
+ const stripped = getValueFromInput(text);
1524
+ onInputChange(stripped);
1525
+ setCursorOffset(stripped.length);
1526
+ }
1527
+ else {
1528
+ onInputChange(text);
1529
+ setCursorOffset(text.length);
1530
+ }
1531
+ }
1532
+ // Handle keyboard input for behaviors not covered by keybindings
1533
+ const handleKeyDown = (e) => {
1534
+ // Handle right arrow to accept prompt suggestion ghost text
1535
+ if (e.key === 'right' && !isViewingTeammate) {
1536
+ const suggestionText = promptSuggestion.text;
1537
+ const suggestionShownAt = promptSuggestion.shownAt;
1538
+ if (suggestionText && suggestionShownAt > 0 && input === '') {
1539
+ markAccepted();
1540
+ acceptSuggestionText(suggestionText);
1541
+ e.stopImmediatePropagation();
1542
+ return;
1543
+ }
1544
+ }
1545
+ // Handle Tab key fallback behaviors when no autocomplete suggestions
1546
+ // Don't handle tab if shift is pressed (used for mode cycle)
1547
+ if (e.key === 'tab' && !e.shift) {
1548
+ // Skip if autocomplete is handling this (suggestions or ghost text exist)
1549
+ if (suggestions.length > 0 || effectiveGhostText) {
1550
+ return;
1551
+ }
1552
+ // Accept prompt suggestion if it exists in AppState
1553
+ const suggestionText = promptSuggestion.text;
1554
+ const suggestionShownAt = promptSuggestion.shownAt;
1555
+ if (suggestionText && suggestionShownAt > 0 && input === '' && !isViewingTeammate) {
1556
+ e.preventDefault();
1557
+ markAccepted();
1558
+ acceptSuggestionText(suggestionText);
1559
+ return;
1560
+ }
1561
+ // Remind user about thinking toggle shortcut if empty input
1562
+ if (input.trim() === '') {
1563
+ e.preventDefault();
1564
+ addNotification({
1565
+ key: 'thinking-toggle-hint',
1566
+ jsx: _jsxs(Text, { dimColor: true, children: ["Use ", thinkingToggleShortcut, " to toggle thinking"] }),
1567
+ priority: 'immediate',
1568
+ timeoutMs: 3000
1569
+ });
1570
+ }
1571
+ return;
1572
+ }
1573
+ // Only continue with navigation if we have suggestions
1574
+ if (suggestions.length === 0)
1575
+ return;
1576
+ // Handle Ctrl-N/P for navigation (arrows handled by keybindings)
1577
+ // Skip if we're in the middle of a chord sequence to allow chords like ctrl+f n
1578
+ const hasPendingChord = keybindingContext?.pendingChord != null;
1579
+ if (e.ctrl && e.key === 'n' && !hasPendingChord) {
1580
+ e.preventDefault();
1581
+ handleAutocompleteNext();
1582
+ return;
1583
+ }
1584
+ if (e.ctrl && e.key === 'p' && !hasPendingChord) {
1585
+ e.preventDefault();
1586
+ handleAutocompletePrevious();
1587
+ return;
1588
+ }
1589
+ // Handle selection and execution via return/enter
1590
+ // Shift+Enter and Meta+Enter insert newlines (handled by useTextInput),
1591
+ // so don't accept the suggestion for those.
1592
+ if (e.key === 'return' && !e.shift && !e.meta) {
1593
+ e.preventDefault();
1594
+ handleEnter();
1595
+ }
1596
+ };
1597
+ // Backward-compat bridge: PromptInput doesn't yet wire handleKeyDown to
1598
+ // <Box onKeyDown>. Subscribe via useInput and adapt InputEvent →
1599
+ // KeyboardEvent until the consumer is migrated (separate PR).
1600
+ // TODO(onKeyDown-migration): remove once PromptInput passes handleKeyDown.
1601
+ useInput((_input, _key, event) => {
1602
+ const kbEvent = new KeyboardEvent(event.keypress);
1603
+ handleKeyDown(kbEvent);
1604
+ if (kbEvent.didStopImmediatePropagation()) {
1605
+ event.stopImmediatePropagation();
1606
+ }
1607
+ });
1608
+ return {
1609
+ suggestions,
1610
+ selectedSuggestion,
1611
+ suggestionType,
1612
+ maxColumnWidth,
1613
+ commandArgumentHint,
1614
+ inlineGhostText: effectiveGhostText,
1615
+ handleKeyDown
1616
+ };
1617
+ }