@xortex/xcode 3.0.0 → 3.0.2

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 (969) hide show
  1. package/QueryEngine.ts +1331 -0
  2. package/Task.ts +125 -0
  3. package/Tool.ts +792 -0
  4. package/assistant/sessionHistory.ts +87 -0
  5. package/bin/xcode +57 -25
  6. package/bridge/bridgeApi.ts +539 -0
  7. package/bridge/bridgeConfig.ts +48 -0
  8. package/bridge/bridgeDebug.ts +135 -0
  9. package/bridge/bridgeEnabled.ts +202 -0
  10. package/bridge/bridgeMain.ts +2999 -0
  11. package/bridge/bridgeMessaging.ts +461 -0
  12. package/bridge/bridgePermissionCallbacks.ts +43 -0
  13. package/bridge/bridgePointer.ts +210 -0
  14. package/bridge/bridgeStatusUtil.ts +163 -0
  15. package/bridge/bridgeUI.ts +530 -0
  16. package/bridge/capacityWake.ts +56 -0
  17. package/bridge/codeSessionApi.ts +168 -0
  18. package/bridge/createSession.ts +384 -0
  19. package/bridge/debugUtils.ts +141 -0
  20. package/bridge/envLessBridgeConfig.ts +165 -0
  21. package/bridge/flushGate.ts +71 -0
  22. package/bridge/inboundAttachments.ts +175 -0
  23. package/bridge/inboundMessages.ts +80 -0
  24. package/bridge/initReplBridge.ts +569 -0
  25. package/bridge/jwtUtils.ts +256 -0
  26. package/bridge/pollConfig.ts +110 -0
  27. package/bridge/pollConfigDefaults.ts +82 -0
  28. package/bridge/remoteBridgeCore.ts +1008 -0
  29. package/bridge/replBridge.ts +2406 -0
  30. package/bridge/replBridgeHandle.ts +36 -0
  31. package/bridge/replBridgeTransport.ts +370 -0
  32. package/bridge/sessionIdCompat.ts +57 -0
  33. package/bridge/sessionRunner.ts +550 -0
  34. package/bridge/trustedDevice.ts +210 -0
  35. package/bridge/types.ts +262 -0
  36. package/bridge/workSecret.ts +127 -0
  37. package/buddy/CompanionSprite.tsx +371 -0
  38. package/buddy/companion.ts +133 -0
  39. package/buddy/prompt.ts +36 -0
  40. package/buddy/sprites.ts +514 -0
  41. package/buddy/types.ts +148 -0
  42. package/buddy/useBuddyNotification.tsx +98 -0
  43. package/cli/exit.ts +31 -0
  44. package/cli/handlers/agents.ts +70 -0
  45. package/cli/handlers/auth.ts +330 -0
  46. package/cli/handlers/autoMode.ts +170 -0
  47. package/cli/handlers/mcp.tsx +362 -0
  48. package/cli/handlers/plugins.ts +878 -0
  49. package/cli/handlers/util.tsx +110 -0
  50. package/cli/ndjsonSafeStringify.ts +32 -0
  51. package/cli/print.ts +5594 -0
  52. package/cli/remoteIO.ts +255 -0
  53. package/cli/structuredIO.ts +859 -0
  54. package/cli/transports/HybridTransport.ts +282 -0
  55. package/cli/transports/SSETransport.ts +711 -0
  56. package/cli/transports/SerialBatchEventUploader.ts +275 -0
  57. package/cli/transports/WebSocketTransport.ts +800 -0
  58. package/cli/transports/WorkerStateUploader.ts +131 -0
  59. package/cli/transports/ccrClient.ts +998 -0
  60. package/cli/transports/transportUtils.ts +45 -0
  61. package/cli/update.ts +422 -0
  62. package/commands/add-dir/add-dir.tsx +126 -0
  63. package/commands/add-dir/index.ts +11 -0
  64. package/commands/add-dir/validation.ts +110 -0
  65. package/commands/advisor.ts +109 -0
  66. package/commands/agents/agents.tsx +12 -0
  67. package/commands/agents/index.ts +10 -0
  68. package/commands/ant-trace/index.js +1 -0
  69. package/commands/autofix-pr/index.js +1 -0
  70. package/commands/backfill-sessions/index.js +1 -0
  71. package/commands/branch/branch.ts +296 -0
  72. package/commands/branch/index.ts +14 -0
  73. package/commands/break-cache/index.js +1 -0
  74. package/commands/bridge/bridge.tsx +509 -0
  75. package/commands/bridge/index.ts +26 -0
  76. package/commands/bridge-kick.ts +200 -0
  77. package/commands/brief.ts +130 -0
  78. package/commands/btw/btw.tsx +243 -0
  79. package/commands/btw/index.ts +13 -0
  80. package/commands/bughunter/index.js +1 -0
  81. package/commands/chrome/chrome.tsx +285 -0
  82. package/commands/chrome/index.ts +13 -0
  83. package/commands/clear/caches.ts +144 -0
  84. package/commands/clear/clear.ts +7 -0
  85. package/commands/clear/conversation.ts +251 -0
  86. package/commands/clear/index.ts +19 -0
  87. package/commands/color/color.ts +93 -0
  88. package/commands/color/index.ts +16 -0
  89. package/commands/commit-push-pr.ts +158 -0
  90. package/commands/commit.ts +92 -0
  91. package/commands/compact/compact.ts +287 -0
  92. package/commands/compact/index.ts +15 -0
  93. package/commands/config/config.tsx +7 -0
  94. package/commands/config/index.ts +11 -0
  95. package/commands/context/context-noninteractive.ts +325 -0
  96. package/commands/context/context.tsx +64 -0
  97. package/commands/context/index.ts +24 -0
  98. package/commands/copy/copy.tsx +371 -0
  99. package/commands/copy/index.ts +15 -0
  100. package/commands/cost/cost.ts +24 -0
  101. package/commands/cost/index.ts +23 -0
  102. package/commands/createMovedToPluginCommand.ts +65 -0
  103. package/commands/ctx_viz/index.js +1 -0
  104. package/commands/debug-tool-call/index.js +1 -0
  105. package/commands/desktop/desktop.tsx +9 -0
  106. package/commands/desktop/index.ts +26 -0
  107. package/commands/diff/diff.tsx +9 -0
  108. package/commands/diff/index.ts +8 -0
  109. package/commands/doctor/doctor.tsx +7 -0
  110. package/commands/doctor/index.ts +12 -0
  111. package/commands/effort/effort.tsx +183 -0
  112. package/commands/effort/index.ts +13 -0
  113. package/commands/env/index.js +1 -0
  114. package/commands/exit/exit.tsx +33 -0
  115. package/commands/exit/index.ts +12 -0
  116. package/commands/export/export.tsx +91 -0
  117. package/commands/export/index.ts +11 -0
  118. package/commands/extra-usage/extra-usage-core.ts +118 -0
  119. package/commands/extra-usage/extra-usage-noninteractive.ts +16 -0
  120. package/commands/extra-usage/extra-usage.tsx +17 -0
  121. package/commands/extra-usage/index.ts +31 -0
  122. package/commands/fast/fast.tsx +269 -0
  123. package/commands/fast/index.ts +26 -0
  124. package/commands/feedback/feedback.tsx +25 -0
  125. package/commands/feedback/index.ts +26 -0
  126. package/commands/files/files.ts +19 -0
  127. package/commands/files/index.ts +12 -0
  128. package/commands/good-claude/index.js +1 -0
  129. package/commands/heapdump/heapdump.ts +17 -0
  130. package/commands/heapdump/index.ts +12 -0
  131. package/commands/help/help.tsx +11 -0
  132. package/commands/help/index.ts +10 -0
  133. package/commands/hooks/hooks.tsx +13 -0
  134. package/commands/hooks/index.ts +11 -0
  135. package/commands/ide/ide.tsx +646 -0
  136. package/commands/ide/index.ts +11 -0
  137. package/commands/init-verifiers.ts +262 -0
  138. package/commands/init.ts +256 -0
  139. package/commands/insights.ts +3200 -0
  140. package/commands/install-github-app/ApiKeyStep.tsx +231 -0
  141. package/commands/install-github-app/CheckExistingSecretStep.tsx +190 -0
  142. package/commands/install-github-app/CheckGitHubStep.tsx +15 -0
  143. package/commands/install-github-app/ChooseRepoStep.tsx +211 -0
  144. package/commands/install-github-app/CreatingStep.tsx +65 -0
  145. package/commands/install-github-app/ErrorStep.tsx +85 -0
  146. package/commands/install-github-app/ExistingWorkflowStep.tsx +103 -0
  147. package/commands/install-github-app/InstallAppStep.tsx +94 -0
  148. package/commands/install-github-app/OAuthFlowStep.tsx +276 -0
  149. package/commands/install-github-app/SuccessStep.tsx +96 -0
  150. package/commands/install-github-app/WarningsStep.tsx +73 -0
  151. package/commands/install-github-app/index.ts +13 -0
  152. package/commands/install-github-app/install-github-app.tsx +587 -0
  153. package/commands/install-github-app/setupGitHubActions.ts +325 -0
  154. package/commands/install-slack-app/index.ts +12 -0
  155. package/commands/install-slack-app/install-slack-app.ts +30 -0
  156. package/commands/install.tsx +300 -0
  157. package/commands/issue/index.js +1 -0
  158. package/commands/keybindings/index.ts +13 -0
  159. package/commands/keybindings/keybindings.ts +53 -0
  160. package/commands/login/index.ts +14 -0
  161. package/commands/login/login.tsx +104 -0
  162. package/commands/logout/index.ts +10 -0
  163. package/commands/logout/logout.tsx +82 -0
  164. package/commands/mcp/addCommand.ts +280 -0
  165. package/commands/mcp/index.ts +12 -0
  166. package/commands/mcp/mcp.tsx +85 -0
  167. package/commands/mcp/xaaIdpCommand.ts +266 -0
  168. package/commands/memory/index.ts +10 -0
  169. package/commands/memory/memory.tsx +90 -0
  170. package/commands/mobile/index.ts +11 -0
  171. package/commands/mobile/mobile.tsx +274 -0
  172. package/commands/mock-limits/index.js +1 -0
  173. package/commands/model/index.ts +16 -0
  174. package/commands/model/model.tsx +297 -0
  175. package/commands/oauth-refresh/index.js +1 -0
  176. package/commands/onboarding/index.js +1 -0
  177. package/commands/output-style/index.ts +11 -0
  178. package/commands/output-style/output-style.tsx +7 -0
  179. package/commands/passes/index.ts +22 -0
  180. package/commands/passes/passes.tsx +24 -0
  181. package/commands/perf-issue/index.js +1 -0
  182. package/commands/permissions/index.ts +11 -0
  183. package/commands/permissions/permissions.tsx +10 -0
  184. package/commands/plan/index.ts +11 -0
  185. package/commands/plan/plan.tsx +122 -0
  186. package/commands/plugin/AddMarketplace.tsx +162 -0
  187. package/commands/plugin/BrowseMarketplace.tsx +802 -0
  188. package/commands/plugin/DiscoverPlugins.tsx +781 -0
  189. package/commands/plugin/ManageMarketplaces.tsx +838 -0
  190. package/commands/plugin/ManagePlugins.tsx +2215 -0
  191. package/commands/plugin/PluginErrors.tsx +124 -0
  192. package/commands/plugin/PluginOptionsDialog.tsx +357 -0
  193. package/commands/plugin/PluginOptionsFlow.tsx +135 -0
  194. package/commands/plugin/PluginSettings.tsx +1072 -0
  195. package/commands/plugin/PluginTrustWarning.tsx +32 -0
  196. package/commands/plugin/UnifiedInstalledCell.tsx +565 -0
  197. package/commands/plugin/ValidatePlugin.tsx +98 -0
  198. package/commands/plugin/index.tsx +11 -0
  199. package/commands/plugin/parseArgs.ts +103 -0
  200. package/commands/plugin/plugin.tsx +7 -0
  201. package/commands/plugin/pluginDetailsHelpers.tsx +117 -0
  202. package/commands/plugin/usePagination.ts +171 -0
  203. package/commands/pr_comments/index.ts +50 -0
  204. package/commands/privacy-settings/index.ts +14 -0
  205. package/commands/privacy-settings/privacy-settings.tsx +58 -0
  206. package/commands/rate-limit-options/index.ts +19 -0
  207. package/commands/rate-limit-options/rate-limit-options.tsx +210 -0
  208. package/commands/release-notes/index.ts +11 -0
  209. package/commands/release-notes/release-notes.ts +50 -0
  210. package/commands/reload-plugins/index.ts +18 -0
  211. package/commands/reload-plugins/reload-plugins.ts +61 -0
  212. package/commands/remote-env/index.ts +15 -0
  213. package/commands/remote-env/remote-env.tsx +7 -0
  214. package/commands/remote-setup/api.ts +182 -0
  215. package/commands/remote-setup/index.ts +20 -0
  216. package/commands/remote-setup/remote-setup.tsx +187 -0
  217. package/commands/rename/generateSessionName.ts +67 -0
  218. package/commands/rename/index.ts +12 -0
  219. package/commands/rename/rename.ts +87 -0
  220. package/commands/reset-limits/index.js +4 -0
  221. package/commands/resume/index.ts +12 -0
  222. package/commands/resume/resume.tsx +275 -0
  223. package/commands/review/UltrareviewOverageDialog.tsx +96 -0
  224. package/commands/review/reviewRemote.ts +316 -0
  225. package/commands/review/ultrareviewCommand.tsx +58 -0
  226. package/commands/review/ultrareviewEnabled.ts +14 -0
  227. package/commands/review.ts +57 -0
  228. package/commands/rewind/index.ts +13 -0
  229. package/commands/rewind/rewind.ts +13 -0
  230. package/commands/sandbox-toggle/index.ts +50 -0
  231. package/commands/sandbox-toggle/sandbox-toggle.tsx +83 -0
  232. package/commands/security-review.ts +243 -0
  233. package/commands/session/index.ts +16 -0
  234. package/commands/session/session.tsx +140 -0
  235. package/commands/share/index.js +1 -0
  236. package/commands/skills/index.ts +10 -0
  237. package/commands/skills/skills.tsx +8 -0
  238. package/commands/stats/index.ts +10 -0
  239. package/commands/stats/stats.tsx +7 -0
  240. package/commands/status/index.ts +12 -0
  241. package/commands/status/status.tsx +8 -0
  242. package/commands/statusline.tsx +24 -0
  243. package/commands/stickers/index.ts +11 -0
  244. package/commands/stickers/stickers.ts +16 -0
  245. package/commands/summary/index.js +1 -0
  246. package/commands/tag/index.ts +12 -0
  247. package/commands/tag/tag.tsx +215 -0
  248. package/commands/tasks/index.ts +11 -0
  249. package/commands/tasks/tasks.tsx +8 -0
  250. package/commands/teleport/index.js +1 -0
  251. package/commands/terminalSetup/index.ts +23 -0
  252. package/commands/terminalSetup/terminalSetup.tsx +531 -0
  253. package/commands/theme/index.ts +10 -0
  254. package/commands/theme/theme.tsx +57 -0
  255. package/commands/thinkback/index.ts +13 -0
  256. package/commands/thinkback/thinkback.tsx +554 -0
  257. package/commands/thinkback-play/index.ts +17 -0
  258. package/commands/thinkback-play/thinkback-play.ts +43 -0
  259. package/commands/ultraplan.tsx +471 -0
  260. package/commands/upgrade/index.ts +16 -0
  261. package/commands/upgrade/upgrade.tsx +38 -0
  262. package/commands/usage/index.ts +9 -0
  263. package/commands/usage/usage.tsx +7 -0
  264. package/commands/version.ts +22 -0
  265. package/commands/vim/index.ts +11 -0
  266. package/commands/vim/vim.ts +38 -0
  267. package/commands/voice/index.ts +20 -0
  268. package/commands/voice/voice.ts +150 -0
  269. package/commands/xingest/index.ts +11 -0
  270. package/commands/xingest/xingest.ts +90 -0
  271. package/commands/xsearch/index.ts +11 -0
  272. package/commands/xsearch/xsearch.ts +56 -0
  273. package/commands.ts +758 -0
  274. package/components/AgentProgressLine.tsx +136 -0
  275. package/components/App.tsx +56 -0
  276. package/components/ApproveApiKey.tsx +123 -0
  277. package/components/AutoModeOptInDialog.tsx +142 -0
  278. package/components/AutoUpdater.tsx +198 -0
  279. package/components/AutoUpdaterWrapper.tsx +91 -0
  280. package/components/AwsAuthStatusBox.tsx +82 -0
  281. package/components/BaseTextInput.tsx +136 -0
  282. package/components/BashModeProgress.tsx +56 -0
  283. package/components/BridgeDialog.tsx +401 -0
  284. package/components/BypassPermissionsModeDialog.tsx +87 -0
  285. package/components/ChannelDowngradeDialog.tsx +102 -0
  286. package/components/ClaudeCodeHint/PluginHintMenu.tsx +78 -0
  287. package/components/ClaudeInChromeOnboarding.tsx +121 -0
  288. package/components/ClaudeMdExternalIncludesDialog.tsx +137 -0
  289. package/components/ClickableImageRef.tsx +73 -0
  290. package/components/CompactSummary.tsx +118 -0
  291. package/components/ConfigurableShortcutHint.tsx +57 -0
  292. package/components/ConsoleOAuthFlow.tsx +631 -0
  293. package/components/ContextSuggestions.tsx +47 -0
  294. package/components/ContextVisualization.tsx +489 -0
  295. package/components/CoordinatorAgentStatus.tsx +273 -0
  296. package/components/CostThresholdDialog.tsx +50 -0
  297. package/components/CtrlOToExpand.tsx +51 -0
  298. package/components/CustomSelect/SelectMulti.tsx +213 -0
  299. package/components/CustomSelect/index.ts +3 -0
  300. package/components/CustomSelect/option-map.ts +50 -0
  301. package/components/CustomSelect/select-input-option.tsx +488 -0
  302. package/components/CustomSelect/select-option.tsx +68 -0
  303. package/components/CustomSelect/select.tsx +690 -0
  304. package/components/CustomSelect/use-multi-select-state.ts +414 -0
  305. package/components/CustomSelect/use-select-input.ts +287 -0
  306. package/components/CustomSelect/use-select-navigation.ts +653 -0
  307. package/components/CustomSelect/use-select-state.ts +157 -0
  308. package/components/DesktopHandoff.tsx +193 -0
  309. package/components/DesktopUpsell/DesktopUpsellStartup.tsx +171 -0
  310. package/components/DevBar.tsx +49 -0
  311. package/components/DevChannelsDialog.tsx +105 -0
  312. package/components/DiagnosticsDisplay.tsx +95 -0
  313. package/components/EffortCallout.tsx +265 -0
  314. package/components/EffortIndicator.ts +42 -0
  315. package/components/ExitFlow.tsx +48 -0
  316. package/components/ExportDialog.tsx +128 -0
  317. package/components/FallbackToolUseErrorMessage.tsx +116 -0
  318. package/components/FallbackToolUseRejectedMessage.tsx +16 -0
  319. package/components/FastIcon.tsx +46 -0
  320. package/components/Feedback.tsx +592 -0
  321. package/components/FeedbackSurvey/FeedbackSurvey.tsx +174 -0
  322. package/components/FeedbackSurvey/FeedbackSurveyView.tsx +108 -0
  323. package/components/FeedbackSurvey/TranscriptSharePrompt.tsx +88 -0
  324. package/components/FeedbackSurvey/submitTranscriptShare.ts +112 -0
  325. package/components/FeedbackSurvey/useDebouncedDigitInput.ts +82 -0
  326. package/components/FeedbackSurvey/useFeedbackSurvey.tsx +296 -0
  327. package/components/FeedbackSurvey/useMemorySurvey.tsx +213 -0
  328. package/components/FeedbackSurvey/usePostCompactSurvey.tsx +206 -0
  329. package/components/FeedbackSurvey/useSurveyState.tsx +100 -0
  330. package/components/FileEditToolDiff.tsx +181 -0
  331. package/components/FileEditToolUpdatedMessage.tsx +124 -0
  332. package/components/FileEditToolUseRejectedMessage.tsx +170 -0
  333. package/components/FilePathLink.tsx +43 -0
  334. package/components/FullscreenLayout.tsx +645 -0
  335. package/components/GlobalSearchDialog.tsx +343 -0
  336. package/components/HelpV2/Commands.tsx +82 -0
  337. package/components/HelpV2/General.tsx +23 -0
  338. package/components/HelpV2/HelpV2.tsx +184 -0
  339. package/components/HighlightedCode/Fallback.tsx +193 -0
  340. package/components/HighlightedCode.tsx +190 -0
  341. package/components/HistorySearchDialog.tsx +118 -0
  342. package/components/IdeAutoConnectDialog.tsx +154 -0
  343. package/components/IdeOnboardingDialog.tsx +167 -0
  344. package/components/IdeStatusIndicator.tsx +58 -0
  345. package/components/IdleReturnDialog.tsx +118 -0
  346. package/components/InterruptedByUser.tsx +15 -0
  347. package/components/InvalidConfigDialog.tsx +156 -0
  348. package/components/InvalidSettingsDialog.tsx +89 -0
  349. package/components/KeybindingWarnings.tsx +55 -0
  350. package/components/LanguagePicker.tsx +86 -0
  351. package/components/LogSelector.tsx +1575 -0
  352. package/components/LogoV2/AnimatedAsterisk.tsx +50 -0
  353. package/components/LogoV2/AnimatedClawd.tsx +124 -0
  354. package/components/LogoV2/ChannelsNotice.tsx +266 -0
  355. package/components/LogoV2/Clawd.tsx +14 -0
  356. package/components/LogoV2/CondensedLogo.tsx +161 -0
  357. package/components/LogoV2/EmergencyTip.tsx +58 -0
  358. package/components/LogoV2/Feed.tsx +112 -0
  359. package/components/LogoV2/FeedColumn.tsx +59 -0
  360. package/components/LogoV2/GuestPassesUpsell.tsx +70 -0
  361. package/components/LogoV2/LogoV2.tsx +543 -0
  362. package/components/LogoV2/Opus1mMergeNotice.tsx +55 -0
  363. package/components/LogoV2/OverageCreditUpsell.tsx +166 -0
  364. package/components/LogoV2/VoiceModeNotice.tsx +68 -0
  365. package/components/LogoV2/WelcomeV2.tsx +433 -0
  366. package/components/LogoV2/feedConfigs.tsx +92 -0
  367. package/components/LspRecommendation/LspRecommendationMenu.tsx +88 -0
  368. package/components/MCPServerApprovalDialog.tsx +115 -0
  369. package/components/MCPServerDesktopImportDialog.tsx +203 -0
  370. package/components/MCPServerDialogCopy.tsx +15 -0
  371. package/components/MCPServerMultiselectDialog.tsx +133 -0
  372. package/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.tsx +149 -0
  373. package/components/ManagedSettingsSecurityDialog/utils.ts +144 -0
  374. package/components/Markdown.tsx +236 -0
  375. package/components/MarkdownTable.tsx +322 -0
  376. package/components/MemoryUsageIndicator.tsx +37 -0
  377. package/components/Message.tsx +627 -0
  378. package/components/MessageModel.tsx +43 -0
  379. package/components/MessageResponse.tsx +78 -0
  380. package/components/MessageRow.tsx +383 -0
  381. package/components/MessageSelector.tsx +831 -0
  382. package/components/MessageTimestamp.tsx +63 -0
  383. package/components/Messages.tsx +834 -0
  384. package/components/ModelPicker.tsx +448 -0
  385. package/components/NativeAutoUpdater.tsx +193 -0
  386. package/components/NotebookEditToolUseRejectedMessage.tsx +92 -0
  387. package/components/OffscreenFreeze.tsx +44 -0
  388. package/components/Onboarding.tsx +244 -0
  389. package/components/OutputStylePicker.tsx +112 -0
  390. package/components/PackageManagerAutoUpdater.tsx +104 -0
  391. package/components/Passes/Passes.tsx +184 -0
  392. package/components/PrBadge.tsx +97 -0
  393. package/components/PressEnterToContinue.tsx +15 -0
  394. package/components/PromptInput/HistorySearchInput.tsx +51 -0
  395. package/components/PromptInput/IssueFlagBanner.tsx +12 -0
  396. package/components/PromptInput/Notifications.tsx +332 -0
  397. package/components/PromptInput/PromptInput.tsx +2350 -0
  398. package/components/PromptInput/PromptInputFooter.tsx +191 -0
  399. package/components/PromptInput/PromptInputFooterLeftSide.tsx +524 -0
  400. package/components/PromptInput/PromptInputFooterSuggestions.tsx +293 -0
  401. package/components/PromptInput/PromptInputHelpMenu.tsx +358 -0
  402. package/components/PromptInput/PromptInputModeIndicator.tsx +93 -0
  403. package/components/PromptInput/PromptInputQueuedCommands.tsx +117 -0
  404. package/components/PromptInput/PromptInputStashNotice.tsx +25 -0
  405. package/components/PromptInput/SandboxPromptFooterHint.tsx +64 -0
  406. package/components/PromptInput/ShimmeredInput.tsx +143 -0
  407. package/components/PromptInput/VoiceIndicator.tsx +137 -0
  408. package/components/PromptInput/inputModes.ts +33 -0
  409. package/components/PromptInput/inputPaste.ts +90 -0
  410. package/components/PromptInput/useMaybeTruncateInput.ts +58 -0
  411. package/components/PromptInput/usePromptInputPlaceholder.ts +78 -0
  412. package/components/PromptInput/useShowFastIconHint.ts +31 -0
  413. package/components/PromptInput/useSwarmBanner.ts +155 -0
  414. package/components/PromptInput/utils.ts +60 -0
  415. package/components/QuickOpenDialog.tsx +244 -0
  416. package/components/RemoteCallout.tsx +76 -0
  417. package/components/RemoteEnvironmentDialog.tsx +340 -0
  418. package/components/ResumeTask.tsx +268 -0
  419. package/components/SandboxViolationExpandedView.tsx +99 -0
  420. package/components/ScrollKeybindingHandler.tsx +1012 -0
  421. package/components/SearchBox.tsx +72 -0
  422. package/components/SentryErrorBoundary.ts +28 -0
  423. package/components/SessionBackgroundHint.tsx +108 -0
  424. package/components/SessionPreview.tsx +194 -0
  425. package/components/Settings/Config.tsx +1822 -0
  426. package/components/Settings/Settings.tsx +137 -0
  427. package/components/Settings/Status.tsx +241 -0
  428. package/components/Settings/Usage.tsx +377 -0
  429. package/components/ShowInIDEPrompt.tsx +170 -0
  430. package/components/SkillImprovementSurvey.tsx +152 -0
  431. package/components/Spinner/FlashingChar.tsx +61 -0
  432. package/components/Spinner/GlimmerMessage.tsx +328 -0
  433. package/components/Spinner/ShimmerChar.tsx +36 -0
  434. package/components/Spinner/SpinnerAnimationRow.tsx +265 -0
  435. package/components/Spinner/SpinnerGlyph.tsx +80 -0
  436. package/components/Spinner/TeammateSpinnerLine.tsx +233 -0
  437. package/components/Spinner/TeammateSpinnerTree.tsx +272 -0
  438. package/components/Spinner/index.ts +10 -0
  439. package/components/Spinner/teammateSelectHint.ts +1 -0
  440. package/components/Spinner/useShimmerAnimation.ts +31 -0
  441. package/components/Spinner/useStalledAnimation.ts +75 -0
  442. package/components/Spinner/utils.ts +84 -0
  443. package/components/Spinner.tsx +562 -0
  444. package/components/Stats.tsx +1228 -0
  445. package/components/StatusLine.tsx +324 -0
  446. package/components/StatusNotices.tsx +55 -0
  447. package/components/StructuredDiff/Fallback.tsx +487 -0
  448. package/components/StructuredDiff/colorDiff.ts +37 -0
  449. package/components/StructuredDiff.tsx +190 -0
  450. package/components/StructuredDiffList.tsx +30 -0
  451. package/components/TagTabs.tsx +139 -0
  452. package/components/TaskListV2.tsx +378 -0
  453. package/components/TeammateViewHeader.tsx +82 -0
  454. package/components/TeleportError.tsx +189 -0
  455. package/components/TeleportProgress.tsx +140 -0
  456. package/components/TeleportRepoMismatchDialog.tsx +104 -0
  457. package/components/TeleportResumeWrapper.tsx +167 -0
  458. package/components/TeleportStash.tsx +116 -0
  459. package/components/TextInput.tsx +124 -0
  460. package/components/ThemePicker.tsx +333 -0
  461. package/components/ThinkingToggle.tsx +153 -0
  462. package/components/TokenWarning.tsx +179 -0
  463. package/components/ToolUseLoader.tsx +42 -0
  464. package/components/TrustDialog/TrustDialog.tsx +290 -0
  465. package/components/TrustDialog/utils.ts +245 -0
  466. package/components/ValidationErrorsList.tsx +148 -0
  467. package/components/VimTextInput.tsx +140 -0
  468. package/components/VirtualMessageList.tsx +1082 -0
  469. package/components/WorkflowMultiselectDialog.tsx +128 -0
  470. package/components/WorktreeExitDialog.tsx +231 -0
  471. package/components/agents/AgentDetail.tsx +220 -0
  472. package/components/agents/AgentEditor.tsx +178 -0
  473. package/components/agents/AgentNavigationFooter.tsx +26 -0
  474. package/components/agents/AgentsList.tsx +440 -0
  475. package/components/agents/AgentsMenu.tsx +800 -0
  476. package/components/agents/ColorPicker.tsx +112 -0
  477. package/components/agents/ModelSelector.tsx +68 -0
  478. package/components/agents/ToolSelector.tsx +562 -0
  479. package/components/agents/agentFileUtils.ts +272 -0
  480. package/components/agents/generateAgent.ts +197 -0
  481. package/components/agents/new-agent-creation/CreateAgentWizard.tsx +97 -0
  482. package/components/agents/new-agent-creation/wizard-steps/ColorStep.tsx +84 -0
  483. package/components/agents/new-agent-creation/wizard-steps/ConfirmStep.tsx +378 -0
  484. package/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx +74 -0
  485. package/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx +123 -0
  486. package/components/agents/new-agent-creation/wizard-steps/GenerateStep.tsx +143 -0
  487. package/components/agents/new-agent-creation/wizard-steps/LocationStep.tsx +80 -0
  488. package/components/agents/new-agent-creation/wizard-steps/MemoryStep.tsx +113 -0
  489. package/components/agents/new-agent-creation/wizard-steps/MethodStep.tsx +80 -0
  490. package/components/agents/new-agent-creation/wizard-steps/ModelStep.tsx +52 -0
  491. package/components/agents/new-agent-creation/wizard-steps/PromptStep.tsx +128 -0
  492. package/components/agents/new-agent-creation/wizard-steps/ToolsStep.tsx +61 -0
  493. package/components/agents/new-agent-creation/wizard-steps/TypeStep.tsx +103 -0
  494. package/components/agents/types.ts +27 -0
  495. package/components/agents/utils.ts +18 -0
  496. package/components/agents/validateAgent.ts +109 -0
  497. package/components/design-system/Byline.tsx +77 -0
  498. package/components/design-system/Dialog.tsx +138 -0
  499. package/components/design-system/Divider.tsx +149 -0
  500. package/components/design-system/FuzzyPicker.tsx +312 -0
  501. package/components/design-system/KeyboardShortcutHint.tsx +81 -0
  502. package/components/design-system/ListItem.tsx +244 -0
  503. package/components/design-system/LoadingState.tsx +94 -0
  504. package/components/design-system/Pane.tsx +77 -0
  505. package/components/design-system/ProgressBar.tsx +86 -0
  506. package/components/design-system/Ratchet.tsx +80 -0
  507. package/components/design-system/StatusIcon.tsx +95 -0
  508. package/components/design-system/Tabs.tsx +340 -0
  509. package/components/design-system/ThemeProvider.tsx +170 -0
  510. package/components/design-system/ThemedBox.tsx +156 -0
  511. package/components/design-system/ThemedText.tsx +124 -0
  512. package/components/design-system/color.ts +30 -0
  513. package/components/diff/DiffDetailView.tsx +281 -0
  514. package/components/diff/DiffDialog.tsx +383 -0
  515. package/components/diff/DiffFileList.tsx +292 -0
  516. package/components/grove/Grove.tsx +463 -0
  517. package/components/hooks/HooksConfigMenu.tsx +578 -0
  518. package/components/hooks/PromptDialog.tsx +90 -0
  519. package/components/hooks/SelectEventMode.tsx +127 -0
  520. package/components/hooks/SelectHookMode.tsx +112 -0
  521. package/components/hooks/SelectMatcherMode.tsx +144 -0
  522. package/components/hooks/ViewHookMode.tsx +199 -0
  523. package/components/mcp/CapabilitiesSection.tsx +61 -0
  524. package/components/mcp/ElicitationDialog.tsx +1169 -0
  525. package/components/mcp/MCPAgentServerMenu.tsx +183 -0
  526. package/components/mcp/MCPListPanel.tsx +504 -0
  527. package/components/mcp/MCPReconnect.tsx +167 -0
  528. package/components/mcp/MCPRemoteServerMenu.tsx +649 -0
  529. package/components/mcp/MCPSettings.tsx +398 -0
  530. package/components/mcp/MCPStdioServerMenu.tsx +177 -0
  531. package/components/mcp/MCPToolDetailView.tsx +212 -0
  532. package/components/mcp/MCPToolListView.tsx +141 -0
  533. package/components/mcp/McpParsingWarnings.tsx +213 -0
  534. package/components/mcp/index.ts +9 -0
  535. package/components/mcp/utils/reconnectHelpers.tsx +49 -0
  536. package/components/memory/MemoryFileSelector.tsx +438 -0
  537. package/components/memory/MemoryUpdateNotification.tsx +45 -0
  538. package/components/messageActions.tsx +450 -0
  539. package/components/messages/AdvisorMessage.tsx +158 -0
  540. package/components/messages/AssistantRedactedThinkingMessage.tsx +31 -0
  541. package/components/messages/AssistantTextMessage.tsx +270 -0
  542. package/components/messages/AssistantThinkingMessage.tsx +86 -0
  543. package/components/messages/AssistantToolUseMessage.tsx +368 -0
  544. package/components/messages/AttachmentMessage.tsx +536 -0
  545. package/components/messages/CollapsedReadSearchContent.tsx +484 -0
  546. package/components/messages/CompactBoundaryMessage.tsx +18 -0
  547. package/components/messages/GroupedToolUseContent.tsx +58 -0
  548. package/components/messages/HighlightedThinkingText.tsx +162 -0
  549. package/components/messages/HookProgressMessage.tsx +116 -0
  550. package/components/messages/PlanApprovalMessage.tsx +222 -0
  551. package/components/messages/RateLimitMessage.tsx +161 -0
  552. package/components/messages/ShutdownMessage.tsx +132 -0
  553. package/components/messages/SystemAPIErrorMessage.tsx +141 -0
  554. package/components/messages/SystemTextMessage.tsx +827 -0
  555. package/components/messages/TaskAssignmentMessage.tsx +76 -0
  556. package/components/messages/UserAgentNotificationMessage.tsx +83 -0
  557. package/components/messages/UserBashInputMessage.tsx +58 -0
  558. package/components/messages/UserBashOutputMessage.tsx +54 -0
  559. package/components/messages/UserChannelMessage.tsx +137 -0
  560. package/components/messages/UserCommandMessage.tsx +108 -0
  561. package/components/messages/UserImageMessage.tsx +59 -0
  562. package/components/messages/UserLocalCommandOutputMessage.tsx +167 -0
  563. package/components/messages/UserMemoryInputMessage.tsx +75 -0
  564. package/components/messages/UserPlanMessage.tsx +42 -0
  565. package/components/messages/UserPromptMessage.tsx +80 -0
  566. package/components/messages/UserResourceUpdateMessage.tsx +121 -0
  567. package/components/messages/UserTeammateMessage.tsx +206 -0
  568. package/components/messages/UserTextMessage.tsx +275 -0
  569. package/components/messages/UserToolResultMessage/RejectedPlanMessage.tsx +31 -0
  570. package/components/messages/UserToolResultMessage/RejectedToolUseMessage.tsx +16 -0
  571. package/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx +16 -0
  572. package/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +103 -0
  573. package/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +95 -0
  574. package/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +106 -0
  575. package/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx +104 -0
  576. package/components/messages/UserToolResultMessage/utils.tsx +44 -0
  577. package/components/messages/nullRenderingAttachments.ts +70 -0
  578. package/components/messages/teamMemCollapsed.tsx +140 -0
  579. package/components/messages/teamMemSaved.ts +19 -0
  580. package/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx +645 -0
  581. package/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.tsx +229 -0
  582. package/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.tsx +328 -0
  583. package/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.tsx +178 -0
  584. package/components/permissions/AskUserQuestionPermissionRequest/QuestionView.tsx +465 -0
  585. package/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.tsx +144 -0
  586. package/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.ts +179 -0
  587. package/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +482 -0
  588. package/components/permissions/BashPermissionRequest/bashToolUseOptions.tsx +147 -0
  589. package/components/permissions/ComputerUseApproval/ComputerUseApproval.tsx +441 -0
  590. package/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx +122 -0
  591. package/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx +768 -0
  592. package/components/permissions/FallbackPermissionRequest.tsx +333 -0
  593. package/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +182 -0
  594. package/components/permissions/FilePermissionDialog/FilePermissionDialog.tsx +204 -0
  595. package/components/permissions/FilePermissionDialog/ideDiffConfig.ts +42 -0
  596. package/components/permissions/FilePermissionDialog/permissionOptions.tsx +177 -0
  597. package/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts +212 -0
  598. package/components/permissions/FilePermissionDialog/usePermissionHandler.ts +185 -0
  599. package/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +161 -0
  600. package/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +89 -0
  601. package/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +115 -0
  602. package/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.tsx +166 -0
  603. package/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.tsx +235 -0
  604. package/components/permissions/PermissionDecisionDebugInfo.tsx +460 -0
  605. package/components/permissions/PermissionDialog.tsx +72 -0
  606. package/components/permissions/PermissionExplanation.tsx +272 -0
  607. package/components/permissions/PermissionPrompt.tsx +336 -0
  608. package/components/permissions/PermissionRequest.tsx +217 -0
  609. package/components/permissions/PermissionRequestTitle.tsx +66 -0
  610. package/components/permissions/PermissionRuleExplanation.tsx +121 -0
  611. package/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx +235 -0
  612. package/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.tsx +91 -0
  613. package/components/permissions/SandboxPermissionRequest.tsx +163 -0
  614. package/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx +230 -0
  615. package/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx +369 -0
  616. package/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.tsx +258 -0
  617. package/components/permissions/WorkerBadge.tsx +49 -0
  618. package/components/permissions/WorkerPendingPermission.tsx +105 -0
  619. package/components/permissions/hooks.ts +209 -0
  620. package/components/permissions/rules/AddPermissionRules.tsx +180 -0
  621. package/components/permissions/rules/AddWorkspaceDirectory.tsx +340 -0
  622. package/components/permissions/rules/PermissionRuleDescription.tsx +76 -0
  623. package/components/permissions/rules/PermissionRuleInput.tsx +138 -0
  624. package/components/permissions/rules/PermissionRuleList.tsx +1179 -0
  625. package/components/permissions/rules/RecentDenialsTab.tsx +207 -0
  626. package/components/permissions/rules/RemoveWorkspaceDirectory.tsx +110 -0
  627. package/components/permissions/rules/WorkspaceTab.tsx +150 -0
  628. package/components/permissions/shellPermissionHelpers.tsx +164 -0
  629. package/components/permissions/useShellPermissionFeedback.ts +148 -0
  630. package/components/permissions/utils.ts +25 -0
  631. package/components/sandbox/SandboxConfigTab.tsx +45 -0
  632. package/components/sandbox/SandboxDependenciesTab.tsx +120 -0
  633. package/components/sandbox/SandboxDoctorSection.tsx +46 -0
  634. package/components/sandbox/SandboxOverridesTab.tsx +193 -0
  635. package/components/sandbox/SandboxSettings.tsx +296 -0
  636. package/components/shell/ExpandShellOutputContext.tsx +36 -0
  637. package/components/shell/OutputLine.tsx +118 -0
  638. package/components/shell/ShellProgressMessage.tsx +150 -0
  639. package/components/shell/ShellTimeDisplay.tsx +74 -0
  640. package/components/skills/SkillsMenu.tsx +237 -0
  641. package/components/tasks/AsyncAgentDetailDialog.tsx +229 -0
  642. package/components/tasks/BackgroundTask.tsx +345 -0
  643. package/components/tasks/BackgroundTaskStatus.tsx +429 -0
  644. package/components/tasks/BackgroundTasksDialog.tsx +652 -0
  645. package/components/tasks/DreamDetailDialog.tsx +251 -0
  646. package/components/tasks/InProcessTeammateDetailDialog.tsx +266 -0
  647. package/components/tasks/RemoteSessionDetailDialog.tsx +904 -0
  648. package/components/tasks/RemoteSessionProgress.tsx +243 -0
  649. package/components/tasks/ShellDetailDialog.tsx +404 -0
  650. package/components/tasks/ShellProgress.tsx +87 -0
  651. package/components/tasks/renderToolActivity.tsx +33 -0
  652. package/components/tasks/taskStatusUtils.tsx +107 -0
  653. package/components/teams/TeamStatus.tsx +80 -0
  654. package/components/teams/TeamsDialog.tsx +715 -0
  655. package/components/ui/OrderedList.tsx +71 -0
  656. package/components/ui/OrderedListItem.tsx +45 -0
  657. package/components/ui/TreeSelect.tsx +397 -0
  658. package/components/wizard/WizardDialogLayout.tsx +65 -0
  659. package/components/wizard/WizardNavigationFooter.tsx +24 -0
  660. package/components/wizard/WizardProvider.tsx +213 -0
  661. package/components/wizard/index.ts +9 -0
  662. package/components/wizard/useWizard.ts +13 -0
  663. package/context.ts +189 -0
  664. package/cost-tracker.ts +323 -0
  665. package/entrypoints/cli.tsx +1 -1
  666. package/history.ts +464 -0
  667. package/hooks/fileSuggestions.ts +811 -0
  668. package/hooks/notifs/useAutoModeUnavailableNotification.ts +56 -0
  669. package/hooks/notifs/useCanSwitchToExistingSubscription.tsx +60 -0
  670. package/hooks/notifs/useDeprecationWarningNotification.tsx +44 -0
  671. package/hooks/notifs/useFastModeNotification.tsx +162 -0
  672. package/hooks/notifs/useIDEStatusIndicator.tsx +186 -0
  673. package/hooks/notifs/useInstallMessages.tsx +26 -0
  674. package/hooks/notifs/useLspInitializationNotification.tsx +143 -0
  675. package/hooks/notifs/useMcpConnectivityStatus.tsx +88 -0
  676. package/hooks/notifs/useModelMigrationNotifications.tsx +52 -0
  677. package/hooks/notifs/useNpmDeprecationNotification.tsx +25 -0
  678. package/hooks/notifs/usePluginAutoupdateNotification.tsx +83 -0
  679. package/hooks/notifs/usePluginInstallationStatus.tsx +128 -0
  680. package/hooks/notifs/useRateLimitWarningNotification.tsx +114 -0
  681. package/hooks/notifs/useSettingsErrors.tsx +69 -0
  682. package/hooks/notifs/useStartupNotification.ts +41 -0
  683. package/hooks/notifs/useTeammateShutdownNotification.ts +78 -0
  684. package/hooks/renderPlaceholder.ts +51 -0
  685. package/hooks/toolPermission/PermissionContext.ts +388 -0
  686. package/hooks/toolPermission/handlers/coordinatorHandler.ts +65 -0
  687. package/hooks/toolPermission/handlers/interactiveHandler.ts +536 -0
  688. package/hooks/toolPermission/handlers/swarmWorkerHandler.ts +159 -0
  689. package/hooks/toolPermission/permissionLogging.ts +238 -0
  690. package/hooks/unifiedSuggestions.ts +202 -0
  691. package/hooks/useAfterFirstRender.ts +17 -0
  692. package/hooks/useApiKeyVerification.ts +84 -0
  693. package/hooks/useArrowKeyHistory.tsx +229 -0
  694. package/hooks/useAssistantHistory.ts +250 -0
  695. package/hooks/useAwaySummary.ts +125 -0
  696. package/hooks/useBackgroundTaskNavigation.ts +251 -0
  697. package/hooks/useBlink.ts +34 -0
  698. package/hooks/useCanUseTool.tsx +204 -0
  699. package/hooks/useCancelRequest.ts +276 -0
  700. package/hooks/useChromeExtensionNotification.tsx +50 -0
  701. package/hooks/useClaudeCodeHintRecommendation.tsx +129 -0
  702. package/hooks/useClipboardImageHint.ts +77 -0
  703. package/hooks/useCommandKeybindings.tsx +108 -0
  704. package/hooks/useCommandQueue.ts +15 -0
  705. package/hooks/useCopyOnSelect.ts +98 -0
  706. package/hooks/useDeferredHookMessages.ts +46 -0
  707. package/hooks/useDiffData.ts +110 -0
  708. package/hooks/useDiffInIDE.ts +379 -0
  709. package/hooks/useDirectConnect.ts +229 -0
  710. package/hooks/useDoublePress.ts +62 -0
  711. package/hooks/useDynamicConfig.ts +22 -0
  712. package/hooks/useElapsedTime.ts +37 -0
  713. package/hooks/useExitOnCtrlCD.ts +95 -0
  714. package/hooks/useExitOnCtrlCDWithKeybindings.ts +24 -0
  715. package/hooks/useFileHistorySnapshotInit.ts +25 -0
  716. package/hooks/useGlobalKeybindings.tsx +249 -0
  717. package/hooks/useHistorySearch.ts +303 -0
  718. package/hooks/useIDEIntegration.tsx +70 -0
  719. package/hooks/useIdeAtMentioned.ts +76 -0
  720. package/hooks/useIdeConnectionStatus.ts +33 -0
  721. package/hooks/useIdeLogging.ts +41 -0
  722. package/hooks/useIdeSelection.ts +150 -0
  723. package/hooks/useInboxPoller.ts +969 -0
  724. package/hooks/useInputBuffer.ts +132 -0
  725. package/hooks/useIssueFlagBanner.ts +133 -0
  726. package/hooks/useLogMessages.ts +119 -0
  727. package/hooks/useLspPluginRecommendation.tsx +194 -0
  728. package/hooks/useMailboxBridge.ts +21 -0
  729. package/hooks/useMainLoopModel.ts +34 -0
  730. package/hooks/useManagePlugins.ts +304 -0
  731. package/hooks/useMemoryUsage.ts +39 -0
  732. package/hooks/useMergedClients.ts +23 -0
  733. package/hooks/useMergedCommands.ts +15 -0
  734. package/hooks/useMergedTools.ts +44 -0
  735. package/hooks/useMinDisplayTime.ts +35 -0
  736. package/hooks/useNotifyAfterTimeout.ts +65 -0
  737. package/hooks/useOfficialMarketplaceNotification.tsx +48 -0
  738. package/hooks/usePasteHandler.ts +285 -0
  739. package/hooks/usePluginRecommendationBase.tsx +105 -0
  740. package/hooks/usePrStatus.ts +106 -0
  741. package/hooks/usePromptSuggestion.ts +177 -0
  742. package/hooks/usePromptsFromClaudeInChrome.tsx +71 -0
  743. package/hooks/useQueueProcessor.ts +68 -0
  744. package/hooks/useRemoteSession.ts +605 -0
  745. package/hooks/useReplBridge.tsx +723 -0
  746. package/hooks/useSSHSession.ts +241 -0
  747. package/hooks/useScheduledTasks.ts +139 -0
  748. package/hooks/useSearchInput.ts +364 -0
  749. package/hooks/useSessionBackgrounding.ts +158 -0
  750. package/hooks/useSettings.ts +17 -0
  751. package/hooks/useSettingsChange.ts +25 -0
  752. package/hooks/useSkillImprovementSurvey.ts +105 -0
  753. package/hooks/useSkillsChange.ts +62 -0
  754. package/hooks/useSwarmInitialization.ts +81 -0
  755. package/hooks/useSwarmPermissionPoller.ts +330 -0
  756. package/hooks/useTaskListWatcher.ts +221 -0
  757. package/hooks/useTasksV2.ts +250 -0
  758. package/hooks/useTeammateViewAutoExit.ts +63 -0
  759. package/hooks/useTeleportResume.tsx +85 -0
  760. package/hooks/useTerminalSize.ts +15 -0
  761. package/hooks/useTextInput.ts +529 -0
  762. package/hooks/useTimeout.ts +14 -0
  763. package/hooks/useTurnDiffs.ts +213 -0
  764. package/hooks/useTypeahead.tsx +1385 -0
  765. package/hooks/useUpdateNotification.ts +34 -0
  766. package/hooks/useVimInput.ts +316 -0
  767. package/hooks/useVirtualScroll.ts +721 -0
  768. package/hooks/useVoice.ts +1144 -0
  769. package/hooks/useVoiceEnabled.ts +25 -0
  770. package/hooks/useVoiceIntegration.tsx +677 -0
  771. package/ink/Ansi.tsx +292 -0
  772. package/ink/bidi.ts +139 -0
  773. package/ink/clearTerminal.ts +74 -0
  774. package/ink/colorize.ts +231 -0
  775. package/ink/components/AlternateScreen.tsx +80 -0
  776. package/ink/components/App.tsx +658 -0
  777. package/ink/components/AppContext.ts +21 -0
  778. package/ink/components/Box.tsx +214 -0
  779. package/ink/components/Button.tsx +192 -0
  780. package/ink/components/ClockContext.tsx +112 -0
  781. package/ink/components/CursorDeclarationContext.ts +32 -0
  782. package/ink/components/ErrorOverview.tsx +109 -0
  783. package/ink/components/Link.tsx +42 -0
  784. package/ink/components/Newline.tsx +39 -0
  785. package/ink/components/NoSelect.tsx +68 -0
  786. package/ink/components/RawAnsi.tsx +57 -0
  787. package/ink/components/ScrollBox.tsx +237 -0
  788. package/ink/components/Spacer.tsx +20 -0
  789. package/ink/components/StdinContext.ts +49 -0
  790. package/ink/components/TerminalFocusContext.tsx +52 -0
  791. package/ink/components/TerminalSizeContext.tsx +7 -0
  792. package/ink/components/Text.tsx +254 -0
  793. package/ink/constants.ts +2 -0
  794. package/ink/dom.ts +484 -0
  795. package/ink/events/click-event.ts +38 -0
  796. package/ink/events/dispatcher.ts +233 -0
  797. package/ink/events/emitter.ts +39 -0
  798. package/ink/events/event-handlers.ts +73 -0
  799. package/ink/events/event.ts +11 -0
  800. package/ink/events/focus-event.ts +21 -0
  801. package/ink/events/input-event.ts +205 -0
  802. package/ink/events/keyboard-event.ts +51 -0
  803. package/ink/events/terminal-event.ts +107 -0
  804. package/ink/events/terminal-focus-event.ts +19 -0
  805. package/ink/focus.ts +181 -0
  806. package/ink/frame.ts +124 -0
  807. package/ink/get-max-width.ts +27 -0
  808. package/ink/global.d.ts +26 -0
  809. package/ink/hit-test.ts +130 -0
  810. package/ink/hooks/use-animation-frame.ts +57 -0
  811. package/ink/hooks/use-app.ts +8 -0
  812. package/ink/hooks/use-declared-cursor.ts +73 -0
  813. package/ink/hooks/use-input.ts +92 -0
  814. package/ink/hooks/use-interval.ts +67 -0
  815. package/ink/hooks/use-search-highlight.ts +53 -0
  816. package/ink/hooks/use-selection.ts +104 -0
  817. package/ink/hooks/use-stdin.ts +8 -0
  818. package/ink/hooks/use-tab-status.ts +72 -0
  819. package/ink/hooks/use-terminal-focus.ts +16 -0
  820. package/ink/hooks/use-terminal-title.ts +31 -0
  821. package/ink/hooks/use-terminal-viewport.ts +96 -0
  822. package/ink/ink.tsx +1754 -0
  823. package/ink/instances.ts +10 -0
  824. package/ink/layout/engine.ts +6 -0
  825. package/ink/layout/geometry.ts +97 -0
  826. package/ink/layout/node.ts +152 -0
  827. package/ink/layout/yoga.ts +308 -0
  828. package/ink/line-width-cache.ts +24 -0
  829. package/ink/log-update.ts +773 -0
  830. package/ink/measure-element.ts +23 -0
  831. package/ink/measure-text.ts +47 -0
  832. package/ink/node-cache.ts +54 -0
  833. package/ink/optimizer.ts +93 -0
  834. package/ink/output.ts +797 -0
  835. package/ink/parse-keypress.ts +801 -0
  836. package/ink/reconciler.ts +512 -0
  837. package/ink/render-border.ts +231 -0
  838. package/ink/render-node-to-output.ts +1462 -0
  839. package/ink/render-to-screen.ts +231 -0
  840. package/ink/renderer.ts +178 -0
  841. package/ink/root.ts +184 -0
  842. package/ink/screen.ts +1486 -0
  843. package/ink/searchHighlight.ts +93 -0
  844. package/ink/selection.ts +917 -0
  845. package/ink/squash-text-nodes.ts +92 -0
  846. package/ink/stringWidth.ts +223 -0
  847. package/ink/styles.ts +771 -0
  848. package/ink/supports-hyperlinks.ts +57 -0
  849. package/ink/tabstops.ts +46 -0
  850. package/ink/terminal-focus-state.ts +47 -0
  851. package/ink/terminal-querier.ts +212 -0
  852. package/ink/terminal.ts +248 -0
  853. package/ink/termio/ansi.ts +75 -0
  854. package/ink/termio/csi.ts +319 -0
  855. package/ink/termio/dec.ts +60 -0
  856. package/ink/termio/esc.ts +67 -0
  857. package/ink/termio/osc.ts +493 -0
  858. package/ink/termio/parser.ts +394 -0
  859. package/ink/termio/sgr.ts +308 -0
  860. package/ink/termio/tokenize.ts +319 -0
  861. package/ink/termio/types.ts +236 -0
  862. package/ink/termio.ts +42 -0
  863. package/ink/useTerminalNotification.ts +126 -0
  864. package/ink/warn.ts +9 -0
  865. package/ink/widest-line.ts +19 -0
  866. package/ink/wrap-text.ts +74 -0
  867. package/ink/wrapAnsi.ts +20 -0
  868. package/inspect.js +7 -0
  869. package/keybindings/KeybindingContext.tsx +243 -0
  870. package/keybindings/KeybindingProviderSetup.tsx +308 -0
  871. package/keybindings/defaultBindings.ts +340 -0
  872. package/keybindings/loadUserBindings.ts +472 -0
  873. package/keybindings/match.ts +120 -0
  874. package/keybindings/parser.ts +203 -0
  875. package/keybindings/reservedShortcuts.ts +127 -0
  876. package/keybindings/resolver.ts +244 -0
  877. package/keybindings/schema.ts +236 -0
  878. package/keybindings/shortcutFormat.ts +63 -0
  879. package/keybindings/template.ts +52 -0
  880. package/keybindings/useKeybinding.ts +196 -0
  881. package/keybindings/useShortcutDisplay.ts +59 -0
  882. package/keybindings/validate.ts +498 -0
  883. package/macro.ts +24 -0
  884. package/migrations/migrateAutoUpdatesToSettings.ts +61 -0
  885. package/migrations/migrateBypassPermissionsAcceptedToSettings.ts +40 -0
  886. package/migrations/migrateEnableAllProjectMcpServersToSettings.ts +118 -0
  887. package/migrations/migrateFennecToOpus.ts +45 -0
  888. package/migrations/migrateLegacyOpusToCurrent.ts +57 -0
  889. package/migrations/migrateOpusToOpus1m.ts +43 -0
  890. package/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.ts +22 -0
  891. package/migrations/migrateSonnet1mToSonnet45.ts +48 -0
  892. package/migrations/migrateSonnet45ToSonnet46.ts +67 -0
  893. package/migrations/resetAutoModeOptInForDefaultOffer.ts +51 -0
  894. package/migrations/resetProToOpusDefault.ts +51 -0
  895. package/package.json +29 -3
  896. package/patch-box.js +54 -0
  897. package/patch-compact.js +13 -0
  898. package/patch-condensed-center.js +13 -0
  899. package/patch-condensed-row.js +13 -0
  900. package/patch-condensed.js +13 -0
  901. package/patch-final.js +58 -0
  902. package/patch-input-body.js +46 -0
  903. package/patch-input-body2.js +35 -0
  904. package/patch-input-style.js +13 -0
  905. package/patch-input-width.js +13 -0
  906. package/patch-layout.js +87 -0
  907. package/patch-logo-row.js +12 -0
  908. package/patch-width.js +13 -0
  909. package/patch-width2.js +13 -0
  910. package/patch2.js +74 -0
  911. package/patch3.js +13 -0
  912. package/query.ts +1750 -0
  913. package/remote/RemoteSessionManager.ts +343 -0
  914. package/remote/SessionsWebSocket.ts +404 -0
  915. package/remote/remotePermissionBridge.ts +78 -0
  916. package/remote/sdkMessageAdapter.ts +302 -0
  917. package/skills/bundled/batch.ts +124 -0
  918. package/skills/bundled/claudeApi.ts +196 -0
  919. package/skills/bundled/claudeApiContent.ts +75 -0
  920. package/skills/bundled/claudeInChrome.ts +34 -0
  921. package/skills/bundled/debug.ts +103 -0
  922. package/skills/bundled/index.ts +79 -0
  923. package/skills/bundled/keybindings.ts +339 -0
  924. package/skills/bundled/loop.ts +92 -0
  925. package/skills/bundled/loremIpsum.ts +282 -0
  926. package/skills/bundled/remember.ts +82 -0
  927. package/skills/bundled/scheduleRemoteAgents.ts +447 -0
  928. package/skills/bundled/simplify.ts +69 -0
  929. package/skills/bundled/skillify.ts +197 -0
  930. package/skills/bundled/stuck.ts +79 -0
  931. package/skills/bundled/updateConfig.ts +475 -0
  932. package/skills/bundled/verify/SKILL.md +3 -0
  933. package/skills/bundled/verify/examples/cli.md +3 -0
  934. package/skills/bundled/verify/examples/server.md +3 -0
  935. package/skills/bundled/verify.ts +30 -0
  936. package/skills/bundled/verifyContent.ts +13 -0
  937. package/skills/bundledSkills.ts +220 -0
  938. package/skills/loadSkillsDir.ts +1086 -0
  939. package/skills/mcpSkillBuilders.ts +44 -0
  940. package/state/AppState.tsx +200 -0
  941. package/state/AppStateStore.ts +569 -0
  942. package/state/onChangeAppState.ts +171 -0
  943. package/state/selectors.ts +76 -0
  944. package/state/store.ts +34 -0
  945. package/state/teammateViewHelpers.ts +141 -0
  946. package/tasks/DreamTask/DreamTask.ts +157 -0
  947. package/tasks/InProcessTeammateTask/InProcessTeammateTask.tsx +126 -0
  948. package/tasks/InProcessTeammateTask/types.ts +121 -0
  949. package/tasks/LocalAgentTask/LocalAgentTask.tsx +683 -0
  950. package/tasks/LocalMainSessionTask.ts +479 -0
  951. package/tasks/LocalShellTask/LocalShellTask.tsx +523 -0
  952. package/tasks/LocalShellTask/guards.ts +41 -0
  953. package/tasks/LocalShellTask/killShellTasks.ts +76 -0
  954. package/tasks/RemoteAgentTask/RemoteAgentTask.tsx +856 -0
  955. package/tasks/pillLabel.ts +82 -0
  956. package/tasks/stopTask.ts +100 -0
  957. package/tasks/types.ts +46 -0
  958. package/types/command.ts +216 -0
  959. package/types/connectorText.ts +13 -0
  960. package/types/generated/events_mono/claude_code/v1/claude_code_internal_event.ts +865 -0
  961. package/types/generated/events_mono/common/v1/auth.ts +100 -0
  962. package/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.ts +223 -0
  963. package/types/generated/google/protobuf/timestamp.ts +187 -0
  964. package/types/hooks.ts +290 -0
  965. package/types/ids.ts +44 -0
  966. package/types/logs.ts +330 -0
  967. package/types/permissions.ts +441 -0
  968. package/types/plugin.ts +363 -0
  969. package/types/textInputTypes.ts +387 -0
@@ -0,0 +1,118 @@
1
+ import { logEvent } from 'src/services/analytics/index.js'
2
+ import {
3
+ getCurrentProjectConfig,
4
+ saveCurrentProjectConfig,
5
+ } from '../utils/config.js'
6
+ import { logError } from '../utils/log.js'
7
+ import {
8
+ getSettingsForSource,
9
+ updateSettingsForSource,
10
+ } from '../utils/settings/settings.js'
11
+
12
+ /**
13
+ * Migration: Move MCP server approval fields from project config to local settings
14
+ * This migrates both enableAllProjectMcpServers and enabledMcpjsonServers to the
15
+ * settings system for better management and consistency.
16
+ */
17
+ export function migrateEnableAllProjectMcpServersToSettings(): void {
18
+ const projectConfig = getCurrentProjectConfig()
19
+
20
+ // Check if any field exists in project config
21
+ const hasEnableAll = projectConfig.enableAllProjectMcpServers !== undefined
22
+ const hasEnabledServers =
23
+ projectConfig.enabledMcpjsonServers &&
24
+ projectConfig.enabledMcpjsonServers.length > 0
25
+ const hasDisabledServers =
26
+ projectConfig.disabledMcpjsonServers &&
27
+ projectConfig.disabledMcpjsonServers.length > 0
28
+
29
+ if (!hasEnableAll && !hasEnabledServers && !hasDisabledServers) {
30
+ return
31
+ }
32
+
33
+ try {
34
+ const existingSettings = getSettingsForSource('localSettings') || {}
35
+ const updates: Partial<{
36
+ enableAllProjectMcpServers: boolean
37
+ enabledMcpjsonServers: string[]
38
+ disabledMcpjsonServers: string[]
39
+ }> = {}
40
+ const fieldsToRemove: Array<
41
+ | 'enableAllProjectMcpServers'
42
+ | 'enabledMcpjsonServers'
43
+ | 'disabledMcpjsonServers'
44
+ > = []
45
+
46
+ // Migrate enableAllProjectMcpServers if it exists and hasn't been migrated
47
+ if (
48
+ hasEnableAll &&
49
+ existingSettings.enableAllProjectMcpServers === undefined
50
+ ) {
51
+ updates.enableAllProjectMcpServers =
52
+ projectConfig.enableAllProjectMcpServers
53
+ fieldsToRemove.push('enableAllProjectMcpServers')
54
+ } else if (hasEnableAll) {
55
+ // Already migrated, just mark for removal
56
+ fieldsToRemove.push('enableAllProjectMcpServers')
57
+ }
58
+
59
+ // Migrate enabledMcpjsonServers if it exists
60
+ if (hasEnabledServers && projectConfig.enabledMcpjsonServers) {
61
+ const existingEnabledServers =
62
+ existingSettings.enabledMcpjsonServers || []
63
+ // Merge the servers (avoiding duplicates)
64
+ updates.enabledMcpjsonServers = [
65
+ ...new Set([
66
+ ...existingEnabledServers,
67
+ ...projectConfig.enabledMcpjsonServers,
68
+ ]),
69
+ ]
70
+ fieldsToRemove.push('enabledMcpjsonServers')
71
+ }
72
+
73
+ // Migrate disabledMcpjsonServers if it exists
74
+ if (hasDisabledServers && projectConfig.disabledMcpjsonServers) {
75
+ const existingDisabledServers =
76
+ existingSettings.disabledMcpjsonServers || []
77
+ // Merge the servers (avoiding duplicates)
78
+ updates.disabledMcpjsonServers = [
79
+ ...new Set([
80
+ ...existingDisabledServers,
81
+ ...projectConfig.disabledMcpjsonServers,
82
+ ]),
83
+ ]
84
+ fieldsToRemove.push('disabledMcpjsonServers')
85
+ }
86
+
87
+ // Update settings if there are any updates
88
+ if (Object.keys(updates).length > 0) {
89
+ updateSettingsForSource('localSettings', updates)
90
+ }
91
+
92
+ // Remove migrated fields from project config
93
+ if (
94
+ fieldsToRemove.includes('enableAllProjectMcpServers') ||
95
+ fieldsToRemove.includes('enabledMcpjsonServers') ||
96
+ fieldsToRemove.includes('disabledMcpjsonServers')
97
+ ) {
98
+ saveCurrentProjectConfig(current => {
99
+ const {
100
+ enableAllProjectMcpServers: _enableAll,
101
+ enabledMcpjsonServers: _enabledServers,
102
+ disabledMcpjsonServers: _disabledServers,
103
+ ...configWithoutFields
104
+ } = current
105
+ return configWithoutFields
106
+ })
107
+ }
108
+
109
+ // Log the migration event
110
+ logEvent('tengu_migrate_mcp_approval_fields_success', {
111
+ migratedCount: fieldsToRemove.length,
112
+ })
113
+ } catch (e: unknown) {
114
+ // Log migration failure but don't throw to avoid breaking startup
115
+ logError(e)
116
+ logEvent('tengu_migrate_mcp_approval_fields_error', {})
117
+ }
118
+ }
@@ -0,0 +1,45 @@
1
+ import {
2
+ getSettingsForSource,
3
+ updateSettingsForSource,
4
+ } from '../utils/settings/settings.js'
5
+
6
+ /**
7
+ * Migrate users on removed fennec model aliases to their new Opus 4.6 aliases.
8
+ * - fennec-latest → opus
9
+ * - fennec-latest[1m] → opus[1m]
10
+ * - fennec-fast-latest → opus[1m] + fast mode
11
+ * - opus-4-5-fast → opus + fast mode
12
+ *
13
+ * Only touches userSettings. Reading and writing the same source keeps this
14
+ * idempotent without a completion flag. Fennec aliases in project/local/policy
15
+ * settings are left alone — we can't rewrite those, and reading merged
16
+ * settings here would cause infinite re-runs + silent global promotion.
17
+ */
18
+ export function migrateFennecToOpus(): void {
19
+ if (process.env.USER_TYPE !== 'ant') {
20
+ return
21
+ }
22
+
23
+ const settings = getSettingsForSource('userSettings')
24
+
25
+ const model = settings?.model
26
+ if (typeof model === 'string') {
27
+ if (model.startsWith('fennec-latest[1m]')) {
28
+ updateSettingsForSource('userSettings', {
29
+ model: 'opus[1m]',
30
+ })
31
+ } else if (model.startsWith('fennec-latest')) {
32
+ updateSettingsForSource('userSettings', {
33
+ model: 'opus',
34
+ })
35
+ } else if (
36
+ model.startsWith('fennec-fast-latest') ||
37
+ model.startsWith('opus-4-5-fast')
38
+ ) {
39
+ updateSettingsForSource('userSettings', {
40
+ model: 'opus[1m]',
41
+ fastMode: true,
42
+ })
43
+ }
44
+ }
45
+ }
@@ -0,0 +1,57 @@
1
+ import {
2
+ type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
3
+ logEvent,
4
+ } from '../services/analytics/index.js'
5
+ import { saveGlobalConfig } from '../utils/config.js'
6
+ import { isLegacyModelRemapEnabled } from '../utils/model/model.js'
7
+ import { getAPIProvider } from '../utils/model/providers.js'
8
+ import {
9
+ getSettingsForSource,
10
+ updateSettingsForSource,
11
+ } from '../utils/settings/settings.js'
12
+
13
+ /**
14
+ * Migrate first-party users off explicit Opus 4.0/4.1 model strings.
15
+ *
16
+ * The 'opus' alias already resolves to Opus 4.6 for 1P, so anyone still
17
+ * on an explicit 4.0/4.1 string pinned it in settings before 4.5 launched.
18
+ * parseUserSpecifiedModel now silently remaps these at runtime anyway —
19
+ * this migration cleans up the settings file so /model shows the right
20
+ * thing, and sets a timestamp so the REPL can show a one-time notification.
21
+ *
22
+ * Only touches userSettings. Legacy strings in project/local/policy settings
23
+ * are left alone (we can't/shouldn't rewrite those) and are still remapped at
24
+ * runtime by parseUserSpecifiedModel. Reading and writing the same source
25
+ * keeps this idempotent without a completion flag, and avoids silently
26
+ * promoting 'opus' to the global default for users who only pinned it in one
27
+ * project.
28
+ */
29
+ export function migrateLegacyOpusToCurrent(): void {
30
+ if (getAPIProvider() !== 'firstParty') {
31
+ return
32
+ }
33
+
34
+ if (!isLegacyModelRemapEnabled()) {
35
+ return
36
+ }
37
+
38
+ const model = getSettingsForSource('userSettings')?.model
39
+ if (
40
+ model !== 'claude-opus-4-20250514' &&
41
+ model !== 'claude-opus-4-1-20250805' &&
42
+ model !== 'claude-opus-4-0' &&
43
+ model !== 'claude-opus-4-1'
44
+ ) {
45
+ return
46
+ }
47
+
48
+ updateSettingsForSource('userSettings', { model: 'opus' })
49
+ saveGlobalConfig(current => ({
50
+ ...current,
51
+ legacyOpusMigrationTimestamp: Date.now(),
52
+ }))
53
+ logEvent('tengu_legacy_opus_migration', {
54
+ from_model:
55
+ model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
56
+ })
57
+ }
@@ -0,0 +1,43 @@
1
+ import { logEvent } from '../services/analytics/index.js'
2
+ import {
3
+ getDefaultMainLoopModelSetting,
4
+ isOpus1mMergeEnabled,
5
+ parseUserSpecifiedModel,
6
+ } from '../utils/model/model.js'
7
+ import {
8
+ getSettingsForSource,
9
+ updateSettingsForSource,
10
+ } from '../utils/settings/settings.js'
11
+
12
+ /**
13
+ * Migrate users with 'opus' pinned in their settings to 'opus[1m]' when they
14
+ * are eligible for the merged Opus 1M experience (Max/Team Premium on 1P).
15
+ *
16
+ * CLI invocations with --model opus are unaffected: that flag is a runtime
17
+ * override and does not touch userSettings, so it continues to use plain Opus.
18
+ *
19
+ * Pro subscribers are skipped — they retain separate Opus and Opus 1M options.
20
+ * 3P users are skipped — their model strings are full model IDs, not aliases.
21
+ *
22
+ * Idempotent: only writes if userSettings.model is exactly 'opus'.
23
+ */
24
+ export function migrateOpusToOpus1m(): void {
25
+ if (!isOpus1mMergeEnabled()) {
26
+ return
27
+ }
28
+
29
+ const model = getSettingsForSource('userSettings')?.model
30
+ if (model !== 'opus') {
31
+ return
32
+ }
33
+
34
+ const migrated = 'opus[1m]'
35
+ const modelToSet =
36
+ parseUserSpecifiedModel(migrated) ===
37
+ parseUserSpecifiedModel(getDefaultMainLoopModelSetting())
38
+ ? undefined
39
+ : migrated
40
+ updateSettingsForSource('userSettings', { model: modelToSet })
41
+
42
+ logEvent('tengu_opus_to_opus1m_migration', {})
43
+ }
@@ -0,0 +1,22 @@
1
+ import { saveGlobalConfig } from '../utils/config.js'
2
+
3
+ /**
4
+ * Migrate the `replBridgeEnabled` config key to `remoteControlAtStartup`.
5
+ *
6
+ * The old key was an implementation detail that leaked into user-facing config.
7
+ * This migration copies the value to the new key and removes the old one.
8
+ * Idempotent — only acts when the old key exists and the new one doesn't.
9
+ */
10
+ export function migrateReplBridgeEnabledToRemoteControlAtStartup(): void {
11
+ saveGlobalConfig(prev => {
12
+ // The old key is no longer in the GlobalConfig type, so access it via
13
+ // an untyped cast. Only migrate if the old key exists and the new key
14
+ // hasn't been set yet.
15
+ const oldValue = (prev as Record<string, unknown>)['replBridgeEnabled']
16
+ if (oldValue === undefined) return prev
17
+ if (prev.remoteControlAtStartup !== undefined) return prev
18
+ const next = { ...prev, remoteControlAtStartup: Boolean(oldValue) }
19
+ delete (next as Record<string, unknown>)['replBridgeEnabled']
20
+ return next
21
+ })
22
+ }
@@ -0,0 +1,48 @@
1
+ import {
2
+ getMainLoopModelOverride,
3
+ setMainLoopModelOverride,
4
+ } from '../bootstrap/state.js'
5
+ import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
6
+ import {
7
+ getSettingsForSource,
8
+ updateSettingsForSource,
9
+ } from '../utils/settings/settings.js'
10
+
11
+ /**
12
+ * Migrate users who had "sonnet[1m]" saved to the explicit "sonnet-4-5-20250929[1m]".
13
+ *
14
+ * The "sonnet" alias now resolves to Sonnet 4.6, so users who previously set
15
+ * "sonnet[1m]" (targeting Sonnet 4.5 with 1M context) need to be pinned to the
16
+ * explicit version to preserve their intended model.
17
+ *
18
+ * This is needed because Sonnet 4.6 1M was offered to a different group of users than
19
+ * Sonnet 4.5 1M, so we needed to pin existing sonnet[1m] users to Sonnet 4.5 1M.
20
+ *
21
+ * Reads from userSettings specifically (not merged settings) so we don't
22
+ * promote a project-scoped "sonnet[1m]" to the global default. Runs once,
23
+ * tracked by a completion flag in global config.
24
+ */
25
+ export function migrateSonnet1mToSonnet45(): void {
26
+ const config = getGlobalConfig()
27
+ if (config.sonnet1m45MigrationComplete) {
28
+ return
29
+ }
30
+
31
+ const model = getSettingsForSource('userSettings')?.model
32
+ if (model === 'sonnet[1m]') {
33
+ updateSettingsForSource('userSettings', {
34
+ model: 'sonnet-4-5-20250929[1m]',
35
+ })
36
+ }
37
+
38
+ // Also migrate the in-memory override if already set
39
+ const override = getMainLoopModelOverride()
40
+ if (override === 'sonnet[1m]') {
41
+ setMainLoopModelOverride('sonnet-4-5-20250929[1m]')
42
+ }
43
+
44
+ saveGlobalConfig(current => ({
45
+ ...current,
46
+ sonnet1m45MigrationComplete: true,
47
+ }))
48
+ }
@@ -0,0 +1,67 @@
1
+ import {
2
+ type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
3
+ logEvent,
4
+ } from '../services/analytics/index.js'
5
+ import {
6
+ isMaxSubscriber,
7
+ isProSubscriber,
8
+ isTeamPremiumSubscriber,
9
+ } from '../utils/auth.js'
10
+ import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
11
+ import { getAPIProvider } from '../utils/model/providers.js'
12
+ import {
13
+ getSettingsForSource,
14
+ updateSettingsForSource,
15
+ } from '../utils/settings/settings.js'
16
+
17
+ /**
18
+ * Migrate Pro/Max/Team Premium first-party users off explicit Sonnet 4.5
19
+ * model strings to the 'sonnet' alias (which now resolves to Sonnet 4.6).
20
+ *
21
+ * Users may have been pinned to explicit Sonnet 4.5 strings by:
22
+ * - The earlier migrateSonnet1mToSonnet45 migration (sonnet[1m] → explicit 4.5[1m])
23
+ * - Manually selecting it via /model
24
+ *
25
+ * Reads userSettings specifically (not merged) so we only migrate what /model
26
+ * wrote — project/local pins are left alone.
27
+ * Idempotent: only writes if userSettings.model matches a Sonnet 4.5 string.
28
+ */
29
+ export function migrateSonnet45ToSonnet46(): void {
30
+ if (getAPIProvider() !== 'firstParty') {
31
+ return
32
+ }
33
+
34
+ if (!isProSubscriber() && !isMaxSubscriber() && !isTeamPremiumSubscriber()) {
35
+ return
36
+ }
37
+
38
+ const model = getSettingsForSource('userSettings')?.model
39
+ if (
40
+ model !== 'claude-sonnet-4-5-20250929' &&
41
+ model !== 'claude-sonnet-4-5-20250929[1m]' &&
42
+ model !== 'sonnet-4-5-20250929' &&
43
+ model !== 'sonnet-4-5-20250929[1m]'
44
+ ) {
45
+ return
46
+ }
47
+
48
+ const has1m = model.endsWith('[1m]')
49
+ updateSettingsForSource('userSettings', {
50
+ model: has1m ? 'sonnet[1m]' : 'sonnet',
51
+ })
52
+
53
+ // Skip notification for brand-new users — they never experienced the old default
54
+ const config = getGlobalConfig()
55
+ if (config.numStartups > 1) {
56
+ saveGlobalConfig(current => ({
57
+ ...current,
58
+ sonnet45To46MigrationTimestamp: Date.now(),
59
+ }))
60
+ }
61
+
62
+ logEvent('tengu_sonnet45_to_46_migration', {
63
+ from_model:
64
+ model as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
65
+ has_1m: has1m,
66
+ })
67
+ }
@@ -0,0 +1,51 @@
1
+ import { feature } from 'bun:bundle'
2
+ import { logEvent } from 'src/services/analytics/index.js'
3
+ import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
4
+ import { logError } from '../utils/log.js'
5
+ import { getAutoModeEnabledState } from '../utils/permissions/permissionSetup.js'
6
+ import {
7
+ getSettingsForSource,
8
+ updateSettingsForSource,
9
+ } from '../utils/settings/settings.js'
10
+
11
+ /**
12
+ * One-shot migration: clear skipAutoPermissionPrompt for users who accepted
13
+ * the old 2-option AutoModeOptInDialog but don't have auto as their default.
14
+ * Re-surfaces the dialog so they see the new "make it my default mode" option.
15
+ * Guard lives in GlobalConfig (~/.claude.json), not settings.json, so it
16
+ * survives settings resets and doesn't re-arm itself.
17
+ *
18
+ * Only runs when tengu_auto_mode_config.enabled === 'enabled'. For 'opt-in'
19
+ * users, clearing skipAutoPermissionPrompt would remove auto from the carousel
20
+ * (permissionSetup.ts:988) — the dialog would become unreachable and the
21
+ * migration would defeat itself. In practice the ~40 target ants are all
22
+ * 'enabled' (they reached the old dialog via bare Shift+Tab, which requires
23
+ * 'enabled'), but the guard makes it safe regardless.
24
+ */
25
+ export function resetAutoModeOptInForDefaultOffer(): void {
26
+ if (feature('TRANSCRIPT_CLASSIFIER')) {
27
+ const config = getGlobalConfig()
28
+ if (config.hasResetAutoModeOptInForDefaultOffer) return
29
+ if (getAutoModeEnabledState() !== 'enabled') return
30
+
31
+ try {
32
+ const user = getSettingsForSource('userSettings')
33
+ if (
34
+ user?.skipAutoPermissionPrompt &&
35
+ user?.permissions?.defaultMode !== 'auto'
36
+ ) {
37
+ updateSettingsForSource('userSettings', {
38
+ skipAutoPermissionPrompt: undefined,
39
+ })
40
+ logEvent('tengu_migrate_reset_auto_opt_in_for_default_offer', {})
41
+ }
42
+
43
+ saveGlobalConfig(c => {
44
+ if (c.hasResetAutoModeOptInForDefaultOffer) return c
45
+ return { ...c, hasResetAutoModeOptInForDefaultOffer: true }
46
+ })
47
+ } catch (error) {
48
+ logError(new Error(`Failed to reset auto mode opt-in: ${error}`))
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,51 @@
1
+ import { logEvent } from 'src/services/analytics/index.js'
2
+ import { isProSubscriber } from '../utils/auth.js'
3
+ import { getGlobalConfig, saveGlobalConfig } from '../utils/config.js'
4
+ import { getAPIProvider } from '../utils/model/providers.js'
5
+ import { getSettings_DEPRECATED } from '../utils/settings/settings.js'
6
+
7
+ export function resetProToOpusDefault(): void {
8
+ const config = getGlobalConfig()
9
+
10
+ if (config.opusProMigrationComplete) {
11
+ return
12
+ }
13
+
14
+ const apiProvider = getAPIProvider()
15
+
16
+ // Pro users on firstParty get auto-migrated to Opus 4.5 default
17
+ if (apiProvider !== 'firstParty' || !isProSubscriber()) {
18
+ saveGlobalConfig(current => ({
19
+ ...current,
20
+ opusProMigrationComplete: true,
21
+ }))
22
+ logEvent('tengu_reset_pro_to_opus_default', { skipped: true })
23
+ return
24
+ }
25
+
26
+ const settings = getSettings_DEPRECATED()
27
+
28
+ // Only show notification if user was on default (no custom model setting)
29
+ if (settings?.model === undefined) {
30
+ const opusProMigrationTimestamp = Date.now()
31
+ saveGlobalConfig(current => ({
32
+ ...current,
33
+ opusProMigrationComplete: true,
34
+ opusProMigrationTimestamp,
35
+ }))
36
+ logEvent('tengu_reset_pro_to_opus_default', {
37
+ skipped: false,
38
+ had_custom_model: false,
39
+ })
40
+ } else {
41
+ // User has a custom model setting, just mark migration complete
42
+ saveGlobalConfig(current => ({
43
+ ...current,
44
+ opusProMigrationComplete: true,
45
+ }))
46
+ logEvent('tengu_reset_pro_to_opus_default', {
47
+ skipped: false,
48
+ had_custom_model: true,
49
+ })
50
+ }
51
+ }
package/package.json CHANGED
@@ -1,24 +1,49 @@
1
1
  {
2
2
  "name": "@xortex/xcode",
3
- "version": "3.0.0",
3
+ "version": "3.0.2",
4
4
  "description": "XCode - AI-powered coding assistant with XMem long-term memory. Supports Claude, Gemini, Kimi, DeepSeek via OpenRouter.",
5
5
  "main": "main.tsx",
6
6
  "bin": {
7
7
  "xcode": "./bin/xcode"
8
8
  },
9
9
  "scripts": {
10
- "start": "bun run ./entrypoints/cli.tsx || npx tsx ./entrypoints/cli.tsx",
10
+ "start": "bun run ./entrypoints/cli.tsx || tsx ./entrypoints/cli.tsx",
11
11
  "install-global": "npm install -g ."
12
12
  },
13
13
  "files": [
14
14
  "bin/",
15
15
  "entrypoints/",
16
16
  "main.tsx",
17
+ "macro.ts",
17
18
  "src/",
18
19
  "constants/",
19
20
  "utils/",
20
21
  "services/",
21
22
  "tools/",
23
+ "commands/",
24
+ "hooks/",
25
+ "ink/",
26
+ "keybindings/",
27
+ "tasks/",
28
+ "types/",
29
+ "state/",
30
+ "components/",
31
+ "skills/",
32
+ "migrations/",
33
+ "buddy/",
34
+ "bridge/",
35
+ "remote/",
36
+ "assistant/",
37
+ "cli/",
38
+ "context.ts",
39
+ "commands.ts",
40
+ "cost-tracker.ts",
41
+ "history.ts",
42
+ "Task.ts",
43
+ "Tool.ts",
44
+ "QueryEngine.ts",
45
+ "query.ts",
46
+ "*.js",
22
47
  "README.md",
23
48
  "LICENSE"
24
49
  ],
@@ -115,6 +140,7 @@
115
140
  "devDependencies": {
116
141
  "@types/lodash-es": "^4.17.12",
117
142
  "@types/node": "^25.5.0",
118
- "@types/react": "^19.2.14"
143
+ "@types/react": "^19.2.14",
144
+ "tsx": "^4.19.0"
119
145
  }
120
146
  }
package/patch-box.js ADDED
@@ -0,0 +1,54 @@
1
+ const fs = require('fs');
2
+ const inputPath = 'components/PromptInput/PromptInput.tsx';
3
+ let src = fs.readFileSync(inputPath, 'utf8');
4
+
5
+ // Replace the complicated border logic with a cleaner approach for the first prompt
6
+ // By removing Ink's built-in borders, we can simulate the "blue left border" and "grey background" using a parent Box and children.
7
+ const oldBoxRegex = /<Box flexDirection="row" alignItems="flex-start" justifyContent="flex-start" borderColor=\{messages\.length === 0 \? "#4285f4" : getBorderColor\(\)\} borderStyle=\{messages\.length === 0 \? "single" : "round"\} borderLeft=\{messages\.length === 0 \? true : false\} borderRight=\{false\} borderBottom=\{messages\.length === 0 \? false : true\} borderTop=\{messages\.length === 0 \? false : true\} backgroundColor=\{messages\.length === 0 \? "#1e1e1e" : undefined\} width=\{messages\.length === 0 \? Math\.floor\(columns \* 0\.6\) : "100%"\} alignSelf="center" borderText=\{messages\.length === 0 \? undefined : buildBorderText\(showFastIcon \?\? false, showFastIconHint, fastModeCooldown\)\} minHeight=\{messages\.length === 0 \? 2 : undefined\} paddingX=\{messages\.length === 0 \? 1 : 0\} paddingY=\{messages\.length === 0 \? 1 : 0\}>/g;
8
+
9
+ // If we can't find it, let's just do a simpler replace by reading the file and replacing the specific Box string
10
+ let targetPos = src.indexOf('<Box flexDirection="row" alignItems="flex-start" justifyContent="flex-start" borderColor={messages.length === 0 ? "#4285f4"');
11
+ if (targetPos > -1) {
12
+ let endPos = src.indexOf('>', targetPos);
13
+
14
+ const newBox = `
15
+ {messages.length === 0 ? (
16
+ <Box flexDirection="row" width={Math.floor(columns * 0.6)} alignSelf="center" height={5}>
17
+ <Box width={1} backgroundColor="blue" />
18
+ <Box flexGrow={1} backgroundColor="#1e1e1e" flexDirection="row" paddingX={1}>
19
+ <PromptInputModeIndicator mode={mode} isLoading={isLoading} viewingAgentName={viewingAgentName} viewingAgentColor={viewingAgentColor} />
20
+ <Box flexGrow={1} flexShrink={1} flexDirection="column" onClick={handleInputClick}>
21
+ <Box flexGrow={1} paddingTop={1}>{textInputElement}</Box>
22
+ <Box paddingBottom={1}>
23
+ <Text color="blue">Build </Text><Text dimColor>{modelDisplayName}</Text>
24
+ </Box>
25
+ </Box>
26
+ </Box>
27
+ </Box>
28
+ ) : (
29
+ <Box flexDirection="row" alignItems="flex-start" justifyContent="flex-start" borderColor={getBorderColor()} borderStyle="round" borderLeft={false} borderRight={false} borderBottom={true} width="100%" borderText={buildBorderText(showFastIcon ?? false, showFastIconHint, fastModeCooldown)}>
30
+ <PromptInputModeIndicator mode={mode} isLoading={isLoading} viewingAgentName={viewingAgentName} viewingAgentColor={viewingAgentColor} />
31
+ <Box flexGrow={1} flexShrink={1} flexDirection="column" onClick={handleInputClick}>
32
+ <Box>{textInputElement}</Box>
33
+ </Box>
34
+ </Box>
35
+ )}
36
+ `;
37
+
38
+ // Since we replaced the inner content too, we need to remove the original inner content.
39
+ // The original inner content is:
40
+ // <PromptInputModeIndicator ... />
41
+ // <Box flexGrow={1} ... >
42
+ // <Box minHeight={...}>{textInputElement}</Box>
43
+ // ... Build modelDisplayName ...
44
+ // </Box>
45
+ // </Box>}
46
+
47
+ const endOfBox = src.indexOf('</Box>}', targetPos);
48
+
49
+ src = src.substring(0, targetPos - 4) + newBox + src.substring(endOfBox + 7);
50
+ fs.writeFileSync(inputPath, src);
51
+ console.log("Updated Box layout!");
52
+ } else {
53
+ console.log("Could not find the target Box!");
54
+ }
@@ -0,0 +1,13 @@
1
+ const fs = require('fs');
2
+
3
+ const logoPath = 'components/LogoV2/LogoV2.tsx';
4
+ let logoSrc = fs.readFileSync(logoPath, 'utf8');
5
+
6
+ // Replace the compact layout return block
7
+ logoSrc = logoSrc.replace(
8
+ /<Text bold=\{true\}>\{welcomeMessage\}<\/Text>\{t12\}\{t13\}<Text dimColor=\{true\}>\{billingType\}<\/Text><Text dimColor=\{true\}>\{agentName \? \`@\$\{agentName\} · \$\{truncatedCwd\}\` : truncatedCwd\}<\/Text>/g,
9
+ `{t12}<Text bold>X Code v3.0.0</Text><Text bold={true}>{welcomeMessage}</Text>`
10
+ );
11
+
12
+ fs.writeFileSync(logoPath, logoSrc);
13
+ console.log("Patched compact layout!");
@@ -0,0 +1,13 @@
1
+ const fs = require('fs');
2
+
3
+ const condensedPath = 'components/LogoV2/CondensedLogo.tsx';
4
+ let condensedSrc = fs.readFileSync(condensedPath, 'utf8');
5
+
6
+ // Replace the return block for condensed logo to add width="100%"
7
+ condensedSrc = condensedSrc.replace(
8
+ /<OffscreenFreeze><Box flexDirection="column" alignItems="center">\{t4\}\{t6\}<Text bold>Welcome to Xcode now you can you have persistent memory\.<\/Text>\{t10\}\{t11\}<\/Box><\/OffscreenFreeze>/g,
9
+ `<OffscreenFreeze><Box width="100%" flexDirection="column" alignItems="center">{t4}{t6}<Text bold align="center">Welcome to Xcode now you can you have persistent memory.</Text>{t10}{t11}</Box></OffscreenFreeze>`
10
+ );
11
+
12
+ fs.writeFileSync(condensedPath, condensedSrc);
13
+ console.log("Patched CondensedLogo centering!");
@@ -0,0 +1,13 @@
1
+ const fs = require('fs');
2
+
3
+ const condensedPath = 'components/LogoV2/CondensedLogo.tsx';
4
+ let condensedSrc = fs.readFileSync(condensedPath, 'utf8');
5
+
6
+ // Replace the layout to put logo (t4) and text (t6) in a row
7
+ condensedSrc = condensedSrc.replace(
8
+ /<OffscreenFreeze><Box width="100%" flexDirection="column" alignItems="center">\{t4\}\{t6\}<Text bold align="center">Welcome to Xcode now you can you have persistent memory\.<\/Text>\{t10\}\{t11\}<\/Box><\/OffscreenFreeze>/g,
9
+ `<OffscreenFreeze><Box width="100%" flexDirection="column" alignItems="center"><Box flexDirection="row" alignItems="center" gap={2}>{t4}{t6}</Box><Text bold align="center">Welcome to Xcode now you can you have persistent memory.</Text>{t10}{t11}</Box></OffscreenFreeze>`
10
+ );
11
+
12
+ fs.writeFileSync(condensedPath, condensedSrc);
13
+ console.log("Patched CondensedLogo side-by-side!");