yzcode-cli 1.0.0

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 (1782) hide show
  1. package/QueryEngine.ts +1295 -0
  2. package/Task.ts +125 -0
  3. package/Tool.ts +792 -0
  4. package/bin/yzcode-init.js +31 -0
  5. package/bin/yzcode.js +35 -0
  6. package/cli/exit.ts +31 -0
  7. package/cli/handlers/agents.ts +70 -0
  8. package/cli/handlers/auth.ts +330 -0
  9. package/cli/handlers/autoMode.ts +170 -0
  10. package/cli/handlers/mcp.tsx +362 -0
  11. package/cli/handlers/plugins.ts +878 -0
  12. package/cli/handlers/util.tsx +110 -0
  13. package/cli/ndjsonSafeStringify.ts +32 -0
  14. package/cli/print.ts +5594 -0
  15. package/cli/remoteIO.ts +255 -0
  16. package/cli/structuredIO.ts +859 -0
  17. package/cli/transports/HybridTransport.ts +282 -0
  18. package/cli/transports/SSETransport.ts +711 -0
  19. package/cli/transports/SerialBatchEventUploader.ts +275 -0
  20. package/cli/transports/WebSocketTransport.ts +800 -0
  21. package/cli/transports/WorkerStateUploader.ts +131 -0
  22. package/cli/transports/ccrClient.ts +998 -0
  23. package/cli/transports/transportUtils.ts +45 -0
  24. package/cli/update.ts +422 -0
  25. package/commands/add-dir/add-dir.tsx +126 -0
  26. package/commands/add-dir/index.ts +11 -0
  27. package/commands/add-dir/validation.ts +110 -0
  28. package/commands/advisor.ts +109 -0
  29. package/commands/agents/agents.tsx +12 -0
  30. package/commands/agents/index.ts +10 -0
  31. package/commands/ant-trace/index.js +1 -0
  32. package/commands/autofix-pr/index.js +1 -0
  33. package/commands/backfill-sessions/index.js +1 -0
  34. package/commands/branch/branch.ts +296 -0
  35. package/commands/branch/index.ts +14 -0
  36. package/commands/break-cache/index.js +1 -0
  37. package/commands/bridge/bridge.tsx +509 -0
  38. package/commands/bridge/index.ts +26 -0
  39. package/commands/bridge-kick.ts +200 -0
  40. package/commands/brief.ts +130 -0
  41. package/commands/btw/btw.tsx +243 -0
  42. package/commands/btw/index.ts +13 -0
  43. package/commands/bughunter/index.js +1 -0
  44. package/commands/chrome/chrome.tsx +285 -0
  45. package/commands/chrome/index.ts +13 -0
  46. package/commands/clear/caches.ts +144 -0
  47. package/commands/clear/clear.ts +7 -0
  48. package/commands/clear/conversation.ts +251 -0
  49. package/commands/clear/index.ts +19 -0
  50. package/commands/color/color.ts +93 -0
  51. package/commands/color/index.ts +16 -0
  52. package/commands/commit-push-pr.ts +158 -0
  53. package/commands/commit.ts +92 -0
  54. package/commands/compact/compact.ts +287 -0
  55. package/commands/compact/index.ts +15 -0
  56. package/commands/config/config.tsx +7 -0
  57. package/commands/config/index.ts +11 -0
  58. package/commands/context/context-noninteractive.ts +325 -0
  59. package/commands/context/context.tsx +64 -0
  60. package/commands/context/index.ts +24 -0
  61. package/commands/copy/copy.tsx +371 -0
  62. package/commands/copy/index.ts +15 -0
  63. package/commands/cost/cost.ts +24 -0
  64. package/commands/cost/index.ts +23 -0
  65. package/commands/createMovedToPluginCommand.ts +65 -0
  66. package/commands/ctx_viz/index.js +1 -0
  67. package/commands/debug-tool-call/index.js +1 -0
  68. package/commands/desktop/desktop.tsx +9 -0
  69. package/commands/desktop/index.ts +26 -0
  70. package/commands/diff/diff.tsx +9 -0
  71. package/commands/diff/index.ts +8 -0
  72. package/commands/doctor/doctor.tsx +7 -0
  73. package/commands/doctor/index.ts +12 -0
  74. package/commands/effort/effort.tsx +183 -0
  75. package/commands/effort/index.ts +13 -0
  76. package/commands/env/index.js +1 -0
  77. package/commands/exit/exit.tsx +33 -0
  78. package/commands/exit/index.ts +12 -0
  79. package/commands/export/export.tsx +91 -0
  80. package/commands/export/index.ts +11 -0
  81. package/commands/extra-usage/extra-usage-core.ts +118 -0
  82. package/commands/extra-usage/extra-usage-noninteractive.ts +16 -0
  83. package/commands/extra-usage/extra-usage.tsx +17 -0
  84. package/commands/extra-usage/index.ts +31 -0
  85. package/commands/fast/fast.tsx +269 -0
  86. package/commands/fast/index.ts +26 -0
  87. package/commands/feedback/feedback.tsx +25 -0
  88. package/commands/feedback/index.ts +26 -0
  89. package/commands/files/files.ts +19 -0
  90. package/commands/files/index.ts +12 -0
  91. package/commands/good-claude/index.js +1 -0
  92. package/commands/heapdump/heapdump.ts +17 -0
  93. package/commands/heapdump/index.ts +12 -0
  94. package/commands/help/help.tsx +11 -0
  95. package/commands/help/index.ts +10 -0
  96. package/commands/hooks/hooks.tsx +13 -0
  97. package/commands/hooks/index.ts +11 -0
  98. package/commands/ide/ide.tsx +646 -0
  99. package/commands/ide/index.ts +11 -0
  100. package/commands/init-verifiers.ts +262 -0
  101. package/commands/init.ts +256 -0
  102. package/commands/insights.ts +3200 -0
  103. package/commands/install-github-app/ApiKeyStep.tsx +231 -0
  104. package/commands/install-github-app/CheckExistingSecretStep.tsx +190 -0
  105. package/commands/install-github-app/CheckGitHubStep.tsx +15 -0
  106. package/commands/install-github-app/ChooseRepoStep.tsx +211 -0
  107. package/commands/install-github-app/CreatingStep.tsx +65 -0
  108. package/commands/install-github-app/ErrorStep.tsx +85 -0
  109. package/commands/install-github-app/ExistingWorkflowStep.tsx +103 -0
  110. package/commands/install-github-app/InstallAppStep.tsx +94 -0
  111. package/commands/install-github-app/OAuthFlowStep.tsx +276 -0
  112. package/commands/install-github-app/SuccessStep.tsx +96 -0
  113. package/commands/install-github-app/WarningsStep.tsx +73 -0
  114. package/commands/install-github-app/index.ts +13 -0
  115. package/commands/install-github-app/install-github-app.tsx +587 -0
  116. package/commands/install-github-app/setupGitHubActions.ts +325 -0
  117. package/commands/install-slack-app/index.ts +12 -0
  118. package/commands/install-slack-app/install-slack-app.ts +30 -0
  119. package/commands/install.tsx +300 -0
  120. package/commands/issue/index.js +1 -0
  121. package/commands/keybindings/index.ts +13 -0
  122. package/commands/keybindings/keybindings.ts +53 -0
  123. package/commands/login/index.ts +14 -0
  124. package/commands/login/login.tsx +104 -0
  125. package/commands/logout/index.ts +10 -0
  126. package/commands/logout/logout.tsx +82 -0
  127. package/commands/mcp/addCommand.ts +280 -0
  128. package/commands/mcp/index.ts +12 -0
  129. package/commands/mcp/mcp.tsx +85 -0
  130. package/commands/mcp/xaaIdpCommand.ts +266 -0
  131. package/commands/memory/index.ts +10 -0
  132. package/commands/memory/memory.tsx +90 -0
  133. package/commands/mobile/index.ts +11 -0
  134. package/commands/mobile/mobile.tsx +274 -0
  135. package/commands/mock-limits/index.js +1 -0
  136. package/commands/model/index.ts +16 -0
  137. package/commands/model/model.tsx +297 -0
  138. package/commands/oauth-refresh/index.js +1 -0
  139. package/commands/onboarding/index.js +1 -0
  140. package/commands/output-style/index.ts +11 -0
  141. package/commands/output-style/output-style.tsx +7 -0
  142. package/commands/passes/index.ts +22 -0
  143. package/commands/passes/passes.tsx +24 -0
  144. package/commands/perf-issue/index.js +1 -0
  145. package/commands/permissions/index.ts +11 -0
  146. package/commands/permissions/permissions.tsx +10 -0
  147. package/commands/plan/index.ts +11 -0
  148. package/commands/plan/plan.tsx +122 -0
  149. package/commands/plugin/AddMarketplace.tsx +162 -0
  150. package/commands/plugin/BrowseMarketplace.tsx +802 -0
  151. package/commands/plugin/DiscoverPlugins.tsx +781 -0
  152. package/commands/plugin/ManageMarketplaces.tsx +838 -0
  153. package/commands/plugin/ManagePlugins.tsx +2215 -0
  154. package/commands/plugin/PluginErrors.tsx +124 -0
  155. package/commands/plugin/PluginOptionsDialog.tsx +357 -0
  156. package/commands/plugin/PluginOptionsFlow.tsx +135 -0
  157. package/commands/plugin/PluginSettings.tsx +1072 -0
  158. package/commands/plugin/PluginTrustWarning.tsx +32 -0
  159. package/commands/plugin/UnifiedInstalledCell.tsx +565 -0
  160. package/commands/plugin/ValidatePlugin.tsx +98 -0
  161. package/commands/plugin/index.tsx +11 -0
  162. package/commands/plugin/parseArgs.ts +103 -0
  163. package/commands/plugin/plugin.tsx +7 -0
  164. package/commands/plugin/pluginDetailsHelpers.tsx +117 -0
  165. package/commands/plugin/usePagination.ts +171 -0
  166. package/commands/pr_comments/index.ts +50 -0
  167. package/commands/privacy-settings/index.ts +14 -0
  168. package/commands/privacy-settings/privacy-settings.tsx +58 -0
  169. package/commands/rate-limit-options/index.ts +19 -0
  170. package/commands/rate-limit-options/rate-limit-options.tsx +210 -0
  171. package/commands/release-notes/index.ts +11 -0
  172. package/commands/release-notes/release-notes.ts +50 -0
  173. package/commands/reload-plugins/index.ts +18 -0
  174. package/commands/reload-plugins/reload-plugins.ts +61 -0
  175. package/commands/remote-env/index.ts +15 -0
  176. package/commands/remote-env/remote-env.tsx +7 -0
  177. package/commands/remote-setup/api.ts +182 -0
  178. package/commands/remote-setup/index.ts +20 -0
  179. package/commands/remote-setup/remote-setup.tsx +187 -0
  180. package/commands/rename/generateSessionName.ts +67 -0
  181. package/commands/rename/index.ts +12 -0
  182. package/commands/rename/rename.ts +87 -0
  183. package/commands/reset-limits/index.js +4 -0
  184. package/commands/resume/index.ts +12 -0
  185. package/commands/resume/resume.tsx +275 -0
  186. package/commands/review/UltrareviewOverageDialog.tsx +96 -0
  187. package/commands/review/reviewRemote.ts +316 -0
  188. package/commands/review/ultrareviewCommand.tsx +58 -0
  189. package/commands/review/ultrareviewEnabled.ts +14 -0
  190. package/commands/review.ts +57 -0
  191. package/commands/rewind/index.ts +13 -0
  192. package/commands/rewind/rewind.ts +13 -0
  193. package/commands/sandbox-toggle/index.ts +50 -0
  194. package/commands/sandbox-toggle/sandbox-toggle.tsx +83 -0
  195. package/commands/security-review.ts +243 -0
  196. package/commands/session/index.ts +16 -0
  197. package/commands/session/session.tsx +140 -0
  198. package/commands/share/index.js +1 -0
  199. package/commands/skills/index.ts +10 -0
  200. package/commands/skills/skills.tsx +8 -0
  201. package/commands/stats/index.ts +10 -0
  202. package/commands/stats/stats.tsx +7 -0
  203. package/commands/status/index.ts +12 -0
  204. package/commands/status/status.tsx +8 -0
  205. package/commands/statusline.tsx +24 -0
  206. package/commands/stickers/index.ts +11 -0
  207. package/commands/stickers/stickers.ts +16 -0
  208. package/commands/summary/index.js +1 -0
  209. package/commands/tag/index.ts +12 -0
  210. package/commands/tag/tag.tsx +215 -0
  211. package/commands/tasks/index.ts +11 -0
  212. package/commands/tasks/tasks.tsx +8 -0
  213. package/commands/teleport/index.js +1 -0
  214. package/commands/terminalSetup/index.ts +23 -0
  215. package/commands/terminalSetup/terminalSetup.tsx +531 -0
  216. package/commands/theme/index.ts +10 -0
  217. package/commands/theme/theme.tsx +57 -0
  218. package/commands/thinkback/index.ts +13 -0
  219. package/commands/thinkback/thinkback.tsx +554 -0
  220. package/commands/thinkback-play/index.ts +17 -0
  221. package/commands/thinkback-play/thinkback-play.ts +43 -0
  222. package/commands/ultraplan.tsx +471 -0
  223. package/commands/upgrade/index.ts +16 -0
  224. package/commands/upgrade/upgrade.tsx +38 -0
  225. package/commands/usage/index.ts +9 -0
  226. package/commands/usage/usage.tsx +7 -0
  227. package/commands/version.ts +22 -0
  228. package/commands/vim/index.ts +11 -0
  229. package/commands/vim/vim.ts +38 -0
  230. package/commands/voice/index.ts +20 -0
  231. package/commands/voice/voice.ts +150 -0
  232. package/commands.ts +754 -0
  233. package/components/AgentProgressLine.tsx +136 -0
  234. package/components/App.tsx +56 -0
  235. package/components/ApproveApiKey.tsx +123 -0
  236. package/components/AutoModeOptInDialog.tsx +142 -0
  237. package/components/AutoUpdater.tsx +198 -0
  238. package/components/AutoUpdaterWrapper.tsx +91 -0
  239. package/components/AwsAuthStatusBox.tsx +82 -0
  240. package/components/BaseTextInput.tsx +136 -0
  241. package/components/BashModeProgress.tsx +56 -0
  242. package/components/BridgeDialog.tsx +401 -0
  243. package/components/BypassPermissionsModeDialog.tsx +87 -0
  244. package/components/ChannelDowngradeDialog.tsx +102 -0
  245. package/components/ClaudeCodeHint/PluginHintMenu.tsx +78 -0
  246. package/components/ClaudeInChromeOnboarding.tsx +121 -0
  247. package/components/ClaudeMdExternalIncludesDialog.tsx +137 -0
  248. package/components/ClickableImageRef.tsx +73 -0
  249. package/components/CompactSummary.tsx +118 -0
  250. package/components/ConfigurableShortcutHint.tsx +57 -0
  251. package/components/ConsoleOAuthFlow.tsx +631 -0
  252. package/components/ContextSuggestions.tsx +47 -0
  253. package/components/ContextVisualization.tsx +489 -0
  254. package/components/CoordinatorAgentStatus.tsx +273 -0
  255. package/components/CostThresholdDialog.tsx +50 -0
  256. package/components/CtrlOToExpand.tsx +51 -0
  257. package/components/CustomSelect/SelectMulti.tsx +213 -0
  258. package/components/CustomSelect/index.ts +3 -0
  259. package/components/CustomSelect/option-map.ts +50 -0
  260. package/components/CustomSelect/select-input-option.tsx +488 -0
  261. package/components/CustomSelect/select-option.tsx +68 -0
  262. package/components/CustomSelect/select.tsx +690 -0
  263. package/components/CustomSelect/use-multi-select-state.ts +414 -0
  264. package/components/CustomSelect/use-select-input.ts +287 -0
  265. package/components/CustomSelect/use-select-navigation.ts +653 -0
  266. package/components/CustomSelect/use-select-state.ts +157 -0
  267. package/components/DesktopHandoff.tsx +193 -0
  268. package/components/DesktopUpsell/DesktopUpsellStartup.tsx +171 -0
  269. package/components/DevBar.tsx +49 -0
  270. package/components/DevChannelsDialog.tsx +105 -0
  271. package/components/DiagnosticsDisplay.tsx +95 -0
  272. package/components/EffortCallout.tsx +265 -0
  273. package/components/EffortIndicator.ts +42 -0
  274. package/components/ExitFlow.tsx +48 -0
  275. package/components/ExportDialog.tsx +128 -0
  276. package/components/FallbackToolUseErrorMessage.tsx +116 -0
  277. package/components/FallbackToolUseRejectedMessage.tsx +16 -0
  278. package/components/FastIcon.tsx +46 -0
  279. package/components/Feedback.tsx +592 -0
  280. package/components/FeedbackSurvey/FeedbackSurvey.tsx +174 -0
  281. package/components/FeedbackSurvey/FeedbackSurveyView.tsx +108 -0
  282. package/components/FeedbackSurvey/TranscriptSharePrompt.tsx +88 -0
  283. package/components/FeedbackSurvey/submitTranscriptShare.ts +112 -0
  284. package/components/FeedbackSurvey/useDebouncedDigitInput.ts +82 -0
  285. package/components/FeedbackSurvey/useFeedbackSurvey.tsx +296 -0
  286. package/components/FeedbackSurvey/useMemorySurvey.tsx +213 -0
  287. package/components/FeedbackSurvey/usePostCompactSurvey.tsx +206 -0
  288. package/components/FeedbackSurvey/useSurveyState.tsx +100 -0
  289. package/components/FileEditToolDiff.tsx +181 -0
  290. package/components/FileEditToolUpdatedMessage.tsx +124 -0
  291. package/components/FileEditToolUseRejectedMessage.tsx +170 -0
  292. package/components/FilePathLink.tsx +43 -0
  293. package/components/FullscreenLayout.tsx +637 -0
  294. package/components/GlobalSearchDialog.tsx +343 -0
  295. package/components/HelpV2/Commands.tsx +82 -0
  296. package/components/HelpV2/General.tsx +23 -0
  297. package/components/HelpV2/HelpV2.tsx +184 -0
  298. package/components/HighlightedCode/Fallback.tsx +193 -0
  299. package/components/HighlightedCode.tsx +190 -0
  300. package/components/HistorySearchDialog.tsx +118 -0
  301. package/components/IdeAutoConnectDialog.tsx +154 -0
  302. package/components/IdeOnboardingDialog.tsx +167 -0
  303. package/components/IdeStatusIndicator.tsx +58 -0
  304. package/components/IdleReturnDialog.tsx +118 -0
  305. package/components/InterruptedByUser.tsx +15 -0
  306. package/components/InvalidConfigDialog.tsx +156 -0
  307. package/components/InvalidSettingsDialog.tsx +89 -0
  308. package/components/KeybindingWarnings.tsx +55 -0
  309. package/components/LanguagePicker.tsx +86 -0
  310. package/components/LogSelector.tsx +1575 -0
  311. package/components/LogoV2/AnimatedAsterisk.tsx +50 -0
  312. package/components/LogoV2/AnimatedClawd.tsx +124 -0
  313. package/components/LogoV2/ChannelsNotice.tsx +266 -0
  314. package/components/LogoV2/Clawd.tsx +240 -0
  315. package/components/LogoV2/CondensedLogo.tsx +161 -0
  316. package/components/LogoV2/EmergencyTip.tsx +58 -0
  317. package/components/LogoV2/Feed.tsx +112 -0
  318. package/components/LogoV2/FeedColumn.tsx +59 -0
  319. package/components/LogoV2/GuestPassesUpsell.tsx +70 -0
  320. package/components/LogoV2/LogoV2.tsx +543 -0
  321. package/components/LogoV2/Opus1mMergeNotice.tsx +55 -0
  322. package/components/LogoV2/OverageCreditUpsell.tsx +166 -0
  323. package/components/LogoV2/VoiceModeNotice.tsx +68 -0
  324. package/components/LogoV2/WelcomeV2.tsx +433 -0
  325. package/components/LogoV2/feedConfigs.tsx +92 -0
  326. package/components/LspRecommendation/LspRecommendationMenu.tsx +88 -0
  327. package/components/MCPServerApprovalDialog.tsx +115 -0
  328. package/components/MCPServerDesktopImportDialog.tsx +203 -0
  329. package/components/MCPServerDialogCopy.tsx +15 -0
  330. package/components/MCPServerMultiselectDialog.tsx +133 -0
  331. package/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.tsx +149 -0
  332. package/components/ManagedSettingsSecurityDialog/utils.ts +144 -0
  333. package/components/Markdown.tsx +236 -0
  334. package/components/MarkdownTable.tsx +322 -0
  335. package/components/MemoryUsageIndicator.tsx +37 -0
  336. package/components/Message.tsx +627 -0
  337. package/components/MessageModel.tsx +43 -0
  338. package/components/MessageResponse.tsx +78 -0
  339. package/components/MessageRow.tsx +383 -0
  340. package/components/MessageSelector.tsx +831 -0
  341. package/components/MessageTimestamp.tsx +63 -0
  342. package/components/Messages.tsx +834 -0
  343. package/components/ModelPicker.tsx +448 -0
  344. package/components/NativeAutoUpdater.tsx +193 -0
  345. package/components/NotebookEditToolUseRejectedMessage.tsx +92 -0
  346. package/components/OffscreenFreeze.tsx +44 -0
  347. package/components/Onboarding.tsx +244 -0
  348. package/components/OutputStylePicker.tsx +112 -0
  349. package/components/PackageManagerAutoUpdater.tsx +104 -0
  350. package/components/Passes/Passes.tsx +184 -0
  351. package/components/PrBadge.tsx +97 -0
  352. package/components/PressEnterToContinue.tsx +15 -0
  353. package/components/PromptInput/HistorySearchInput.tsx +51 -0
  354. package/components/PromptInput/IssueFlagBanner.tsx +12 -0
  355. package/components/PromptInput/Notifications.tsx +332 -0
  356. package/components/PromptInput/PromptInput.tsx +2339 -0
  357. package/components/PromptInput/PromptInputFooter.tsx +191 -0
  358. package/components/PromptInput/PromptInputFooterLeftSide.tsx +517 -0
  359. package/components/PromptInput/PromptInputFooterSuggestions.tsx +293 -0
  360. package/components/PromptInput/PromptInputHelpMenu.tsx +358 -0
  361. package/components/PromptInput/PromptInputModeIndicator.tsx +93 -0
  362. package/components/PromptInput/PromptInputQueuedCommands.tsx +117 -0
  363. package/components/PromptInput/PromptInputStashNotice.tsx +25 -0
  364. package/components/PromptInput/SandboxPromptFooterHint.tsx +64 -0
  365. package/components/PromptInput/ShimmeredInput.tsx +143 -0
  366. package/components/PromptInput/VoiceIndicator.tsx +137 -0
  367. package/components/PromptInput/inputModes.ts +33 -0
  368. package/components/PromptInput/inputPaste.ts +90 -0
  369. package/components/PromptInput/useMaybeTruncateInput.ts +58 -0
  370. package/components/PromptInput/usePromptInputPlaceholder.ts +76 -0
  371. package/components/PromptInput/useShowFastIconHint.ts +31 -0
  372. package/components/PromptInput/useSwarmBanner.ts +155 -0
  373. package/components/PromptInput/utils.ts +60 -0
  374. package/components/QuickOpenDialog.tsx +244 -0
  375. package/components/RemoteCallout.tsx +76 -0
  376. package/components/RemoteEnvironmentDialog.tsx +340 -0
  377. package/components/ResumeTask.tsx +268 -0
  378. package/components/SandboxViolationExpandedView.tsx +99 -0
  379. package/components/ScrollKeybindingHandler.tsx +1012 -0
  380. package/components/SearchBox.tsx +72 -0
  381. package/components/SentryErrorBoundary.ts +28 -0
  382. package/components/SessionBackgroundHint.tsx +108 -0
  383. package/components/SessionPreview.tsx +194 -0
  384. package/components/Settings/Config.tsx +1822 -0
  385. package/components/Settings/Settings.tsx +137 -0
  386. package/components/Settings/Status.tsx +241 -0
  387. package/components/Settings/Usage.tsx +377 -0
  388. package/components/ShowInIDEPrompt.tsx +170 -0
  389. package/components/SkillImprovementSurvey.tsx +152 -0
  390. package/components/Spinner/FlashingChar.tsx +61 -0
  391. package/components/Spinner/GlimmerMessage.tsx +328 -0
  392. package/components/Spinner/ShimmerChar.tsx +36 -0
  393. package/components/Spinner/SpinnerAnimationRow.tsx +265 -0
  394. package/components/Spinner/SpinnerGlyph.tsx +80 -0
  395. package/components/Spinner/TeammateSpinnerLine.tsx +233 -0
  396. package/components/Spinner/TeammateSpinnerTree.tsx +272 -0
  397. package/components/Spinner/index.ts +10 -0
  398. package/components/Spinner/teammateSelectHint.ts +1 -0
  399. package/components/Spinner/useShimmerAnimation.ts +31 -0
  400. package/components/Spinner/useStalledAnimation.ts +75 -0
  401. package/components/Spinner/utils.ts +84 -0
  402. package/components/Spinner.tsx +562 -0
  403. package/components/Stats.tsx +1228 -0
  404. package/components/StatusLine.tsx +324 -0
  405. package/components/StatusNotices.tsx +55 -0
  406. package/components/StructuredDiff/Fallback.tsx +487 -0
  407. package/components/StructuredDiff/colorDiff.ts +37 -0
  408. package/components/StructuredDiff.tsx +190 -0
  409. package/components/StructuredDiffList.tsx +30 -0
  410. package/components/TagTabs.tsx +139 -0
  411. package/components/TaskListV2.tsx +378 -0
  412. package/components/TeammateViewHeader.tsx +82 -0
  413. package/components/TeleportError.tsx +189 -0
  414. package/components/TeleportProgress.tsx +140 -0
  415. package/components/TeleportRepoMismatchDialog.tsx +104 -0
  416. package/components/TeleportResumeWrapper.tsx +167 -0
  417. package/components/TeleportStash.tsx +116 -0
  418. package/components/TextInput.tsx +124 -0
  419. package/components/ThemePicker.tsx +333 -0
  420. package/components/ThinkingToggle.tsx +153 -0
  421. package/components/TokenWarning.tsx +179 -0
  422. package/components/ToolUseLoader.tsx +42 -0
  423. package/components/TrustDialog/TrustDialog.tsx +290 -0
  424. package/components/TrustDialog/utils.ts +245 -0
  425. package/components/ValidationErrorsList.tsx +148 -0
  426. package/components/VimTextInput.tsx +140 -0
  427. package/components/VirtualMessageList.tsx +1082 -0
  428. package/components/WorkflowMultiselectDialog.tsx +128 -0
  429. package/components/WorktreeExitDialog.tsx +231 -0
  430. package/components/agents/AgentDetail.tsx +220 -0
  431. package/components/agents/AgentEditor.tsx +178 -0
  432. package/components/agents/AgentNavigationFooter.tsx +26 -0
  433. package/components/agents/AgentsList.tsx +440 -0
  434. package/components/agents/AgentsMenu.tsx +800 -0
  435. package/components/agents/ColorPicker.tsx +112 -0
  436. package/components/agents/ModelSelector.tsx +68 -0
  437. package/components/agents/ToolSelector.tsx +562 -0
  438. package/components/agents/agentFileUtils.ts +272 -0
  439. package/components/agents/generateAgent.ts +197 -0
  440. package/components/agents/new-agent-creation/CreateAgentWizard.tsx +97 -0
  441. package/components/agents/new-agent-creation/wizard-steps/ColorStep.tsx +84 -0
  442. package/components/agents/new-agent-creation/wizard-steps/ConfirmStep.tsx +378 -0
  443. package/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.tsx +74 -0
  444. package/components/agents/new-agent-creation/wizard-steps/DescriptionStep.tsx +123 -0
  445. package/components/agents/new-agent-creation/wizard-steps/GenerateStep.tsx +143 -0
  446. package/components/agents/new-agent-creation/wizard-steps/LocationStep.tsx +80 -0
  447. package/components/agents/new-agent-creation/wizard-steps/MemoryStep.tsx +113 -0
  448. package/components/agents/new-agent-creation/wizard-steps/MethodStep.tsx +80 -0
  449. package/components/agents/new-agent-creation/wizard-steps/ModelStep.tsx +52 -0
  450. package/components/agents/new-agent-creation/wizard-steps/PromptStep.tsx +128 -0
  451. package/components/agents/new-agent-creation/wizard-steps/ToolsStep.tsx +61 -0
  452. package/components/agents/new-agent-creation/wizard-steps/TypeStep.tsx +103 -0
  453. package/components/agents/types.ts +27 -0
  454. package/components/agents/utils.ts +18 -0
  455. package/components/agents/validateAgent.ts +109 -0
  456. package/components/design-system/Byline.tsx +77 -0
  457. package/components/design-system/Dialog.tsx +138 -0
  458. package/components/design-system/Divider.tsx +149 -0
  459. package/components/design-system/FuzzyPicker.tsx +312 -0
  460. package/components/design-system/KeyboardShortcutHint.tsx +81 -0
  461. package/components/design-system/ListItem.tsx +244 -0
  462. package/components/design-system/LoadingState.tsx +94 -0
  463. package/components/design-system/Pane.tsx +77 -0
  464. package/components/design-system/ProgressBar.tsx +86 -0
  465. package/components/design-system/Ratchet.tsx +80 -0
  466. package/components/design-system/StatusIcon.tsx +95 -0
  467. package/components/design-system/Tabs.tsx +340 -0
  468. package/components/design-system/ThemeProvider.tsx +170 -0
  469. package/components/design-system/ThemedBox.tsx +156 -0
  470. package/components/design-system/ThemedText.tsx +124 -0
  471. package/components/design-system/color.ts +30 -0
  472. package/components/diff/DiffDetailView.tsx +281 -0
  473. package/components/diff/DiffDialog.tsx +383 -0
  474. package/components/diff/DiffFileList.tsx +292 -0
  475. package/components/grove/Grove.tsx +463 -0
  476. package/components/hooks/HooksConfigMenu.tsx +578 -0
  477. package/components/hooks/PromptDialog.tsx +90 -0
  478. package/components/hooks/SelectEventMode.tsx +127 -0
  479. package/components/hooks/SelectHookMode.tsx +112 -0
  480. package/components/hooks/SelectMatcherMode.tsx +144 -0
  481. package/components/hooks/ViewHookMode.tsx +199 -0
  482. package/components/mcp/CapabilitiesSection.tsx +61 -0
  483. package/components/mcp/ElicitationDialog.tsx +1169 -0
  484. package/components/mcp/MCPAgentServerMenu.tsx +183 -0
  485. package/components/mcp/MCPListPanel.tsx +504 -0
  486. package/components/mcp/MCPReconnect.tsx +167 -0
  487. package/components/mcp/MCPRemoteServerMenu.tsx +649 -0
  488. package/components/mcp/MCPSettings.tsx +398 -0
  489. package/components/mcp/MCPStdioServerMenu.tsx +177 -0
  490. package/components/mcp/MCPToolDetailView.tsx +212 -0
  491. package/components/mcp/MCPToolListView.tsx +141 -0
  492. package/components/mcp/McpParsingWarnings.tsx +213 -0
  493. package/components/mcp/index.ts +9 -0
  494. package/components/mcp/utils/reconnectHelpers.tsx +49 -0
  495. package/components/memory/MemoryFileSelector.tsx +438 -0
  496. package/components/memory/MemoryUpdateNotification.tsx +45 -0
  497. package/components/messageActions.tsx +450 -0
  498. package/components/messages/AdvisorMessage.tsx +158 -0
  499. package/components/messages/AssistantRedactedThinkingMessage.tsx +31 -0
  500. package/components/messages/AssistantTextMessage.tsx +270 -0
  501. package/components/messages/AssistantThinkingMessage.tsx +86 -0
  502. package/components/messages/AssistantToolUseMessage.tsx +368 -0
  503. package/components/messages/AttachmentMessage.tsx +536 -0
  504. package/components/messages/CollapsedReadSearchContent.tsx +484 -0
  505. package/components/messages/CompactBoundaryMessage.tsx +18 -0
  506. package/components/messages/GroupedToolUseContent.tsx +58 -0
  507. package/components/messages/HighlightedThinkingText.tsx +162 -0
  508. package/components/messages/HookProgressMessage.tsx +116 -0
  509. package/components/messages/PlanApprovalMessage.tsx +222 -0
  510. package/components/messages/RateLimitMessage.tsx +161 -0
  511. package/components/messages/ShutdownMessage.tsx +132 -0
  512. package/components/messages/SystemAPIErrorMessage.tsx +141 -0
  513. package/components/messages/SystemTextMessage.tsx +827 -0
  514. package/components/messages/TaskAssignmentMessage.tsx +76 -0
  515. package/components/messages/UserAgentNotificationMessage.tsx +83 -0
  516. package/components/messages/UserBashInputMessage.tsx +58 -0
  517. package/components/messages/UserBashOutputMessage.tsx +54 -0
  518. package/components/messages/UserChannelMessage.tsx +137 -0
  519. package/components/messages/UserCommandMessage.tsx +108 -0
  520. package/components/messages/UserImageMessage.tsx +59 -0
  521. package/components/messages/UserLocalCommandOutputMessage.tsx +167 -0
  522. package/components/messages/UserMemoryInputMessage.tsx +75 -0
  523. package/components/messages/UserPlanMessage.tsx +42 -0
  524. package/components/messages/UserPromptMessage.tsx +80 -0
  525. package/components/messages/UserResourceUpdateMessage.tsx +121 -0
  526. package/components/messages/UserTeammateMessage.tsx +206 -0
  527. package/components/messages/UserTextMessage.tsx +275 -0
  528. package/components/messages/UserToolResultMessage/RejectedPlanMessage.tsx +31 -0
  529. package/components/messages/UserToolResultMessage/RejectedToolUseMessage.tsx +16 -0
  530. package/components/messages/UserToolResultMessage/UserToolCanceledMessage.tsx +16 -0
  531. package/components/messages/UserToolResultMessage/UserToolErrorMessage.tsx +103 -0
  532. package/components/messages/UserToolResultMessage/UserToolRejectMessage.tsx +95 -0
  533. package/components/messages/UserToolResultMessage/UserToolResultMessage.tsx +106 -0
  534. package/components/messages/UserToolResultMessage/UserToolSuccessMessage.tsx +104 -0
  535. package/components/messages/UserToolResultMessage/utils.tsx +44 -0
  536. package/components/messages/nullRenderingAttachments.ts +70 -0
  537. package/components/messages/teamMemCollapsed.tsx +140 -0
  538. package/components/messages/teamMemSaved.ts +19 -0
  539. package/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.tsx +645 -0
  540. package/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.tsx +229 -0
  541. package/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.tsx +328 -0
  542. package/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.tsx +178 -0
  543. package/components/permissions/AskUserQuestionPermissionRequest/QuestionView.tsx +465 -0
  544. package/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.tsx +144 -0
  545. package/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.ts +179 -0
  546. package/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx +482 -0
  547. package/components/permissions/BashPermissionRequest/bashToolUseOptions.tsx +147 -0
  548. package/components/permissions/ComputerUseApproval/ComputerUseApproval.tsx +441 -0
  549. package/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.tsx +122 -0
  550. package/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.tsx +768 -0
  551. package/components/permissions/FallbackPermissionRequest.tsx +333 -0
  552. package/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.tsx +182 -0
  553. package/components/permissions/FilePermissionDialog/FilePermissionDialog.tsx +204 -0
  554. package/components/permissions/FilePermissionDialog/ideDiffConfig.ts +42 -0
  555. package/components/permissions/FilePermissionDialog/permissionOptions.tsx +177 -0
  556. package/components/permissions/FilePermissionDialog/useFilePermissionDialog.ts +212 -0
  557. package/components/permissions/FilePermissionDialog/usePermissionHandler.ts +185 -0
  558. package/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx +161 -0
  559. package/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.tsx +89 -0
  560. package/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.tsx +115 -0
  561. package/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.tsx +166 -0
  562. package/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.tsx +235 -0
  563. package/components/permissions/PermissionDecisionDebugInfo.tsx +460 -0
  564. package/components/permissions/PermissionDialog.tsx +72 -0
  565. package/components/permissions/PermissionExplanation.tsx +272 -0
  566. package/components/permissions/PermissionPrompt.tsx +336 -0
  567. package/components/permissions/PermissionRequest.tsx +217 -0
  568. package/components/permissions/PermissionRequestTitle.tsx +66 -0
  569. package/components/permissions/PermissionRuleExplanation.tsx +121 -0
  570. package/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.tsx +235 -0
  571. package/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.tsx +91 -0
  572. package/components/permissions/SandboxPermissionRequest.tsx +163 -0
  573. package/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx +230 -0
  574. package/components/permissions/SkillPermissionRequest/SkillPermissionRequest.tsx +369 -0
  575. package/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.tsx +258 -0
  576. package/components/permissions/WorkerBadge.tsx +49 -0
  577. package/components/permissions/WorkerPendingPermission.tsx +105 -0
  578. package/components/permissions/hooks.ts +209 -0
  579. package/components/permissions/rules/AddPermissionRules.tsx +180 -0
  580. package/components/permissions/rules/AddWorkspaceDirectory.tsx +340 -0
  581. package/components/permissions/rules/PermissionRuleDescription.tsx +76 -0
  582. package/components/permissions/rules/PermissionRuleInput.tsx +138 -0
  583. package/components/permissions/rules/PermissionRuleList.tsx +1179 -0
  584. package/components/permissions/rules/RecentDenialsTab.tsx +207 -0
  585. package/components/permissions/rules/RemoveWorkspaceDirectory.tsx +110 -0
  586. package/components/permissions/rules/WorkspaceTab.tsx +150 -0
  587. package/components/permissions/shellPermissionHelpers.tsx +164 -0
  588. package/components/permissions/useShellPermissionFeedback.ts +148 -0
  589. package/components/permissions/utils.ts +25 -0
  590. package/components/sandbox/SandboxConfigTab.tsx +45 -0
  591. package/components/sandbox/SandboxDependenciesTab.tsx +120 -0
  592. package/components/sandbox/SandboxDoctorSection.tsx +46 -0
  593. package/components/sandbox/SandboxOverridesTab.tsx +193 -0
  594. package/components/sandbox/SandboxSettings.tsx +296 -0
  595. package/components/shell/ExpandShellOutputContext.tsx +36 -0
  596. package/components/shell/OutputLine.tsx +118 -0
  597. package/components/shell/ShellProgressMessage.tsx +150 -0
  598. package/components/shell/ShellTimeDisplay.tsx +74 -0
  599. package/components/skills/SkillsMenu.tsx +237 -0
  600. package/components/tasks/AsyncAgentDetailDialog.tsx +229 -0
  601. package/components/tasks/BackgroundTask.tsx +345 -0
  602. package/components/tasks/BackgroundTaskStatus.tsx +429 -0
  603. package/components/tasks/BackgroundTasksDialog.tsx +652 -0
  604. package/components/tasks/DreamDetailDialog.tsx +251 -0
  605. package/components/tasks/InProcessTeammateDetailDialog.tsx +266 -0
  606. package/components/tasks/RemoteSessionDetailDialog.tsx +904 -0
  607. package/components/tasks/RemoteSessionProgress.tsx +243 -0
  608. package/components/tasks/ShellDetailDialog.tsx +404 -0
  609. package/components/tasks/ShellProgress.tsx +87 -0
  610. package/components/tasks/renderToolActivity.tsx +33 -0
  611. package/components/tasks/taskStatusUtils.tsx +107 -0
  612. package/components/teams/TeamStatus.tsx +80 -0
  613. package/components/teams/TeamsDialog.tsx +715 -0
  614. package/components/ui/OrderedList.tsx +71 -0
  615. package/components/ui/OrderedListItem.tsx +45 -0
  616. package/components/ui/TreeSelect.tsx +397 -0
  617. package/components/wizard/WizardDialogLayout.tsx +65 -0
  618. package/components/wizard/WizardNavigationFooter.tsx +24 -0
  619. package/components/wizard/WizardProvider.tsx +213 -0
  620. package/components/wizard/index.ts +9 -0
  621. package/components/wizard/useWizard.ts +13 -0
  622. package/constants/apiLimits.ts +94 -0
  623. package/constants/betas.ts +52 -0
  624. package/constants/common.ts +33 -0
  625. package/constants/cyberRiskInstruction.ts +24 -0
  626. package/constants/errorIds.ts +15 -0
  627. package/constants/figures.ts +45 -0
  628. package/constants/files.ts +156 -0
  629. package/constants/github-app.ts +144 -0
  630. package/constants/keys.ts +11 -0
  631. package/constants/messages.ts +1 -0
  632. package/constants/oauth.ts +234 -0
  633. package/constants/outputStyles.ts +216 -0
  634. package/constants/product.ts +76 -0
  635. package/constants/prompts.ts +914 -0
  636. package/constants/spinnerVerbs.ts +204 -0
  637. package/constants/system.ts +95 -0
  638. package/constants/systemPromptSections.ts +68 -0
  639. package/constants/toolLimits.ts +56 -0
  640. package/constants/tools.ts +112 -0
  641. package/constants/turnCompletionVerbs.ts +12 -0
  642. package/constants/xml.ts +86 -0
  643. package/context/QueuedMessageContext.tsx +63 -0
  644. package/context/fpsMetrics.tsx +30 -0
  645. package/context/mailbox.tsx +38 -0
  646. package/context/modalContext.tsx +58 -0
  647. package/context/notifications.tsx +240 -0
  648. package/context/overlayContext.tsx +151 -0
  649. package/context/promptOverlayContext.tsx +125 -0
  650. package/context/stats.tsx +220 -0
  651. package/context/voice.tsx +88 -0
  652. package/context.ts +189 -0
  653. package/cost-tracker.ts +323 -0
  654. package/costHook.ts +22 -0
  655. package/dialogLaunchers.tsx +133 -0
  656. package/entrypoints/agentSdkTypes.ts +443 -0
  657. package/entrypoints/cli.tsx +310 -0
  658. package/entrypoints/init.ts +340 -0
  659. package/entrypoints/mcp.ts +196 -0
  660. package/entrypoints/sandboxTypes.ts +156 -0
  661. package/entrypoints/sdk/controlSchemas.ts +663 -0
  662. package/entrypoints/sdk/coreSchemas.ts +1889 -0
  663. package/entrypoints/sdk/coreTypes.generated.ts +73 -0
  664. package/entrypoints/sdk/coreTypes.ts +62 -0
  665. package/entrypoints/sdk/runtimeTypes.ts +74 -0
  666. package/entrypoints/sdk/toolTypes.ts +12 -0
  667. package/global.d.ts +18 -0
  668. package/history.ts +464 -0
  669. package/hooks/fileSuggestions.ts +811 -0
  670. package/hooks/notifs/useAutoModeUnavailableNotification.ts +56 -0
  671. package/hooks/notifs/useCanSwitchToExistingSubscription.tsx +60 -0
  672. package/hooks/notifs/useDeprecationWarningNotification.tsx +44 -0
  673. package/hooks/notifs/useFastModeNotification.tsx +162 -0
  674. package/hooks/notifs/useIDEStatusIndicator.tsx +186 -0
  675. package/hooks/notifs/useInstallMessages.tsx +26 -0
  676. package/hooks/notifs/useLspInitializationNotification.tsx +143 -0
  677. package/hooks/notifs/useMcpConnectivityStatus.tsx +88 -0
  678. package/hooks/notifs/useModelMigrationNotifications.tsx +52 -0
  679. package/hooks/notifs/useNpmDeprecationNotification.tsx +25 -0
  680. package/hooks/notifs/usePluginAutoupdateNotification.tsx +83 -0
  681. package/hooks/notifs/usePluginInstallationStatus.tsx +128 -0
  682. package/hooks/notifs/useRateLimitWarningNotification.tsx +114 -0
  683. package/hooks/notifs/useSettingsErrors.tsx +69 -0
  684. package/hooks/notifs/useStartupNotification.ts +41 -0
  685. package/hooks/notifs/useTeammateShutdownNotification.ts +78 -0
  686. package/hooks/renderPlaceholder.ts +51 -0
  687. package/hooks/toolPermission/PermissionContext.ts +388 -0
  688. package/hooks/toolPermission/handlers/coordinatorHandler.ts +65 -0
  689. package/hooks/toolPermission/handlers/interactiveHandler.ts +536 -0
  690. package/hooks/toolPermission/handlers/swarmWorkerHandler.ts +159 -0
  691. package/hooks/toolPermission/permissionLogging.ts +238 -0
  692. package/hooks/unifiedSuggestions.ts +202 -0
  693. package/hooks/useAfterFirstRender.ts +17 -0
  694. package/hooks/useApiKeyVerification.ts +84 -0
  695. package/hooks/useArrowKeyHistory.tsx +229 -0
  696. package/hooks/useAssistantHistory.ts +250 -0
  697. package/hooks/useAwaySummary.ts +125 -0
  698. package/hooks/useBackgroundTaskNavigation.ts +251 -0
  699. package/hooks/useBlink.ts +34 -0
  700. package/hooks/useCanUseTool.tsx +204 -0
  701. package/hooks/useCancelRequest.ts +276 -0
  702. package/hooks/useChromeExtensionNotification.tsx +50 -0
  703. package/hooks/useClaudeCodeHintRecommendation.tsx +129 -0
  704. package/hooks/useClipboardImageHint.ts +77 -0
  705. package/hooks/useCommandKeybindings.tsx +108 -0
  706. package/hooks/useCommandQueue.ts +15 -0
  707. package/hooks/useCopyOnSelect.ts +98 -0
  708. package/hooks/useDeferredHookMessages.ts +46 -0
  709. package/hooks/useDiffData.ts +110 -0
  710. package/hooks/useDiffInIDE.ts +379 -0
  711. package/hooks/useDirectConnect.ts +229 -0
  712. package/hooks/useDoublePress.ts +62 -0
  713. package/hooks/useDynamicConfig.ts +22 -0
  714. package/hooks/useElapsedTime.ts +37 -0
  715. package/hooks/useExitOnCtrlCD.ts +95 -0
  716. package/hooks/useExitOnCtrlCDWithKeybindings.ts +24 -0
  717. package/hooks/useFileHistorySnapshotInit.ts +25 -0
  718. package/hooks/useGlobalKeybindings.tsx +249 -0
  719. package/hooks/useHistorySearch.ts +303 -0
  720. package/hooks/useIDEIntegration.tsx +70 -0
  721. package/hooks/useIdeAtMentioned.ts +76 -0
  722. package/hooks/useIdeConnectionStatus.ts +33 -0
  723. package/hooks/useIdeLogging.ts +41 -0
  724. package/hooks/useIdeSelection.ts +150 -0
  725. package/hooks/useInboxPoller.ts +969 -0
  726. package/hooks/useInputBuffer.ts +132 -0
  727. package/hooks/useIssueFlagBanner.ts +133 -0
  728. package/hooks/useLogMessages.ts +119 -0
  729. package/hooks/useLspPluginRecommendation.tsx +194 -0
  730. package/hooks/useMailboxBridge.ts +21 -0
  731. package/hooks/useMainLoopModel.ts +34 -0
  732. package/hooks/useManagePlugins.ts +304 -0
  733. package/hooks/useMemoryUsage.ts +39 -0
  734. package/hooks/useMergedClients.ts +23 -0
  735. package/hooks/useMergedCommands.ts +15 -0
  736. package/hooks/useMergedTools.ts +44 -0
  737. package/hooks/useMinDisplayTime.ts +35 -0
  738. package/hooks/useNotifyAfterTimeout.ts +65 -0
  739. package/hooks/useOfficialMarketplaceNotification.tsx +48 -0
  740. package/hooks/usePasteHandler.ts +285 -0
  741. package/hooks/usePluginRecommendationBase.tsx +105 -0
  742. package/hooks/usePrStatus.ts +106 -0
  743. package/hooks/usePromptSuggestion.ts +177 -0
  744. package/hooks/usePromptsFromClaudeInChrome.tsx +71 -0
  745. package/hooks/useQueueProcessor.ts +68 -0
  746. package/hooks/useRemoteSession.ts +605 -0
  747. package/hooks/useReplBridge.tsx +723 -0
  748. package/hooks/useSSHSession.ts +241 -0
  749. package/hooks/useScheduledTasks.ts +139 -0
  750. package/hooks/useSearchInput.ts +364 -0
  751. package/hooks/useSessionBackgrounding.ts +158 -0
  752. package/hooks/useSettings.ts +17 -0
  753. package/hooks/useSettingsChange.ts +25 -0
  754. package/hooks/useSkillImprovementSurvey.ts +105 -0
  755. package/hooks/useSkillsChange.ts +62 -0
  756. package/hooks/useSwarmInitialization.ts +81 -0
  757. package/hooks/useSwarmPermissionPoller.ts +330 -0
  758. package/hooks/useTaskListWatcher.ts +221 -0
  759. package/hooks/useTasksV2.ts +250 -0
  760. package/hooks/useTeammateViewAutoExit.ts +63 -0
  761. package/hooks/useTeleportResume.tsx +85 -0
  762. package/hooks/useTerminalSize.ts +15 -0
  763. package/hooks/useTextInput.ts +529 -0
  764. package/hooks/useTimeout.ts +14 -0
  765. package/hooks/useTurnDiffs.ts +213 -0
  766. package/hooks/useTypeahead.tsx +1385 -0
  767. package/hooks/useUpdateNotification.ts +34 -0
  768. package/hooks/useVimInput.ts +316 -0
  769. package/hooks/useVirtualScroll.ts +721 -0
  770. package/hooks/useVoice.ts +1144 -0
  771. package/hooks/useVoiceEnabled.ts +25 -0
  772. package/hooks/useVoiceIntegration.tsx +677 -0
  773. package/ink/Ansi.tsx +292 -0
  774. package/ink/bidi.ts +139 -0
  775. package/ink/clearTerminal.ts +74 -0
  776. package/ink/colorize.ts +231 -0
  777. package/ink/components/AlternateScreen.tsx +80 -0
  778. package/ink/components/App.tsx +658 -0
  779. package/ink/components/AppContext.ts +21 -0
  780. package/ink/components/Box.tsx +214 -0
  781. package/ink/components/Button.tsx +192 -0
  782. package/ink/components/ClockContext.tsx +112 -0
  783. package/ink/components/CursorDeclarationContext.ts +32 -0
  784. package/ink/components/ErrorOverview.tsx +109 -0
  785. package/ink/components/Link.tsx +42 -0
  786. package/ink/components/Newline.tsx +39 -0
  787. package/ink/components/NoSelect.tsx +68 -0
  788. package/ink/components/RawAnsi.tsx +57 -0
  789. package/ink/components/ScrollBox.tsx +237 -0
  790. package/ink/components/Spacer.tsx +20 -0
  791. package/ink/components/StdinContext.ts +49 -0
  792. package/ink/components/TerminalFocusContext.tsx +52 -0
  793. package/ink/components/TerminalSizeContext.tsx +7 -0
  794. package/ink/components/Text.tsx +254 -0
  795. package/ink/constants.ts +2 -0
  796. package/ink/dom.ts +484 -0
  797. package/ink/events/click-event.ts +38 -0
  798. package/ink/events/dispatcher.ts +235 -0
  799. package/ink/events/emitter.ts +39 -0
  800. package/ink/events/event-handlers.ts +73 -0
  801. package/ink/events/event.ts +11 -0
  802. package/ink/events/focus-event.ts +21 -0
  803. package/ink/events/input-event.ts +205 -0
  804. package/ink/events/keyboard-event.ts +51 -0
  805. package/ink/events/terminal-event.ts +107 -0
  806. package/ink/events/terminal-focus-event.ts +19 -0
  807. package/ink/focus.ts +181 -0
  808. package/ink/frame.ts +124 -0
  809. package/ink/get-max-width.ts +27 -0
  810. package/ink/global.d.ts +14 -0
  811. package/ink/hit-test.ts +130 -0
  812. package/ink/hooks/use-animation-frame.ts +57 -0
  813. package/ink/hooks/use-app.ts +8 -0
  814. package/ink/hooks/use-declared-cursor.ts +73 -0
  815. package/ink/hooks/use-input.ts +92 -0
  816. package/ink/hooks/use-interval.ts +67 -0
  817. package/ink/hooks/use-search-highlight.ts +53 -0
  818. package/ink/hooks/use-selection.ts +104 -0
  819. package/ink/hooks/use-stdin.ts +8 -0
  820. package/ink/hooks/use-tab-status.ts +72 -0
  821. package/ink/hooks/use-terminal-focus.ts +16 -0
  822. package/ink/hooks/use-terminal-title.ts +31 -0
  823. package/ink/hooks/use-terminal-viewport.ts +96 -0
  824. package/ink/ink.tsx +1723 -0
  825. package/ink/instances.ts +10 -0
  826. package/ink/layout/engine.ts +6 -0
  827. package/ink/layout/geometry.ts +97 -0
  828. package/ink/layout/node.ts +152 -0
  829. package/ink/layout/yoga.ts +308 -0
  830. package/ink/line-width-cache.ts +24 -0
  831. package/ink/log-update.ts +773 -0
  832. package/ink/measure-element.ts +23 -0
  833. package/ink/measure-text.ts +47 -0
  834. package/ink/node-cache.ts +54 -0
  835. package/ink/optimizer.ts +93 -0
  836. package/ink/output.ts +797 -0
  837. package/ink/parse-keypress.ts +801 -0
  838. package/ink/reconciler.ts +512 -0
  839. package/ink/render-border.ts +231 -0
  840. package/ink/render-node-to-output.ts +1462 -0
  841. package/ink/render-to-screen.ts +231 -0
  842. package/ink/renderer.ts +178 -0
  843. package/ink/root.ts +184 -0
  844. package/ink/screen.ts +1486 -0
  845. package/ink/searchHighlight.ts +93 -0
  846. package/ink/selection.ts +917 -0
  847. package/ink/squash-text-nodes.ts +92 -0
  848. package/ink/stringWidth.ts +222 -0
  849. package/ink/styles.ts +771 -0
  850. package/ink/supports-hyperlinks.ts +57 -0
  851. package/ink/tabstops.ts +46 -0
  852. package/ink/terminal-focus-state.ts +47 -0
  853. package/ink/terminal-querier.ts +212 -0
  854. package/ink/terminal.ts +248 -0
  855. package/ink/termio/ansi.ts +75 -0
  856. package/ink/termio/csi.ts +319 -0
  857. package/ink/termio/dec.ts +60 -0
  858. package/ink/termio/esc.ts +67 -0
  859. package/ink/termio/osc.ts +493 -0
  860. package/ink/termio/parser.ts +394 -0
  861. package/ink/termio/sgr.ts +308 -0
  862. package/ink/termio/tokenize.ts +319 -0
  863. package/ink/termio/types.ts +236 -0
  864. package/ink/termio.ts +42 -0
  865. package/ink/useTerminalNotification.ts +126 -0
  866. package/ink/warn.ts +9 -0
  867. package/ink/widest-line.ts +19 -0
  868. package/ink/wrap-text.ts +74 -0
  869. package/ink/wrapAnsi.ts +20 -0
  870. package/ink.ts +85 -0
  871. package/interactiveHelpers.tsx +366 -0
  872. package/main.tsx +4702 -0
  873. package/package.json +95 -0
  874. package/projectOnboardingState.ts +83 -0
  875. package/query/config.ts +46 -0
  876. package/query/deps.ts +40 -0
  877. package/query/stopHooks.ts +473 -0
  878. package/query/tokenBudget.ts +93 -0
  879. package/query.ts +1729 -0
  880. package/replLauncher.tsx +23 -0
  881. package/services/AgentSummary/agentSummary.ts +179 -0
  882. package/services/MagicDocs/magicDocs.ts +254 -0
  883. package/services/MagicDocs/prompts.ts +127 -0
  884. package/services/PromptSuggestion/promptSuggestion.ts +523 -0
  885. package/services/PromptSuggestion/speculation.ts +991 -0
  886. package/services/SessionMemory/prompts.ts +324 -0
  887. package/services/SessionMemory/sessionMemory.ts +495 -0
  888. package/services/SessionMemory/sessionMemoryUtils.ts +207 -0
  889. package/services/analytics/config.ts +38 -0
  890. package/services/analytics/datadog.ts +307 -0
  891. package/services/analytics/firstPartyEventLogger.ts +449 -0
  892. package/services/analytics/firstPartyEventLoggingExporter.ts +806 -0
  893. package/services/analytics/growthbook.ts +1155 -0
  894. package/services/analytics/index.ts +173 -0
  895. package/services/analytics/metadata.ts +973 -0
  896. package/services/analytics/sink.ts +114 -0
  897. package/services/analytics/sinkKillswitch.ts +25 -0
  898. package/services/api/adminRequests.ts +119 -0
  899. package/services/api/bootstrap.ts +141 -0
  900. package/services/api/claude.ts +3419 -0
  901. package/services/api/client.ts +389 -0
  902. package/services/api/dumpPrompts.ts +226 -0
  903. package/services/api/emptyUsage.ts +22 -0
  904. package/services/api/errorUtils.ts +260 -0
  905. package/services/api/errors.ts +1207 -0
  906. package/services/api/filesApi.ts +748 -0
  907. package/services/api/firstTokenDate.ts +60 -0
  908. package/services/api/grove.ts +357 -0
  909. package/services/api/logging.ts +788 -0
  910. package/services/api/metricsOptOut.ts +159 -0
  911. package/services/api/overageCreditGrant.ts +137 -0
  912. package/services/api/promptCacheBreakDetection.ts +727 -0
  913. package/services/api/referral.ts +281 -0
  914. package/services/api/sessionIngress.ts +514 -0
  915. package/services/api/ultrareviewQuota.ts +38 -0
  916. package/services/api/usage.ts +63 -0
  917. package/services/api/withRetry.ts +822 -0
  918. package/services/autoDream/autoDream.ts +324 -0
  919. package/services/autoDream/config.ts +21 -0
  920. package/services/autoDream/consolidationLock.ts +140 -0
  921. package/services/autoDream/consolidationPrompt.ts +65 -0
  922. package/services/awaySummary.ts +74 -0
  923. package/services/claudeAiLimits.ts +515 -0
  924. package/services/claudeAiLimitsHook.ts +23 -0
  925. package/services/compact/apiMicrocompact.ts +153 -0
  926. package/services/compact/autoCompact.ts +351 -0
  927. package/services/compact/compact.ts +1705 -0
  928. package/services/compact/compactWarningHook.ts +16 -0
  929. package/services/compact/compactWarningState.ts +18 -0
  930. package/services/compact/grouping.ts +63 -0
  931. package/services/compact/microCompact.ts +530 -0
  932. package/services/compact/postCompactCleanup.ts +77 -0
  933. package/services/compact/prompt.ts +374 -0
  934. package/services/compact/sessionMemoryCompact.ts +630 -0
  935. package/services/compact/timeBasedMCConfig.ts +43 -0
  936. package/services/diagnosticTracking.ts +397 -0
  937. package/services/extractMemories/extractMemories.ts +615 -0
  938. package/services/extractMemories/prompts.ts +154 -0
  939. package/services/internalLogging.ts +90 -0
  940. package/services/lsp/LSPClient.ts +447 -0
  941. package/services/lsp/LSPDiagnosticRegistry.ts +386 -0
  942. package/services/lsp/LSPServerInstance.ts +511 -0
  943. package/services/lsp/LSPServerManager.ts +420 -0
  944. package/services/lsp/config.ts +79 -0
  945. package/services/lsp/manager.ts +289 -0
  946. package/services/lsp/passiveFeedback.ts +328 -0
  947. package/services/mcp/InProcessTransport.ts +63 -0
  948. package/services/mcp/MCPConnectionManager.tsx +73 -0
  949. package/services/mcp/SdkControlTransport.ts +136 -0
  950. package/services/mcp/auth.ts +2465 -0
  951. package/services/mcp/channelAllowlist.ts +76 -0
  952. package/services/mcp/channelNotification.ts +316 -0
  953. package/services/mcp/channelPermissions.ts +240 -0
  954. package/services/mcp/claudeai.ts +164 -0
  955. package/services/mcp/client.ts +3348 -0
  956. package/services/mcp/config.ts +1578 -0
  957. package/services/mcp/elicitationHandler.ts +313 -0
  958. package/services/mcp/envExpansion.ts +38 -0
  959. package/services/mcp/headersHelper.ts +138 -0
  960. package/services/mcp/mcpStringUtils.ts +106 -0
  961. package/services/mcp/normalization.ts +23 -0
  962. package/services/mcp/oauthPort.ts +78 -0
  963. package/services/mcp/officialRegistry.ts +72 -0
  964. package/services/mcp/types.ts +258 -0
  965. package/services/mcp/useManageMCPConnections.ts +1141 -0
  966. package/services/mcp/utils.ts +575 -0
  967. package/services/mcp/vscodeSdkMcp.ts +112 -0
  968. package/services/mcp/xaa.ts +511 -0
  969. package/services/mcp/xaaIdpLogin.ts +487 -0
  970. package/services/mcpServerApproval.tsx +41 -0
  971. package/services/mockRateLimits.ts +882 -0
  972. package/services/notifier.ts +156 -0
  973. package/services/oauth/auth-code-listener.ts +211 -0
  974. package/services/oauth/client.ts +566 -0
  975. package/services/oauth/crypto.ts +23 -0
  976. package/services/oauth/getOauthProfile.ts +53 -0
  977. package/services/oauth/index.ts +198 -0
  978. package/services/plugins/PluginInstallationManager.ts +184 -0
  979. package/services/plugins/pluginCliCommands.ts +344 -0
  980. package/services/plugins/pluginOperations.ts +1088 -0
  981. package/services/policyLimits/index.ts +663 -0
  982. package/services/policyLimits/types.ts +27 -0
  983. package/services/preventSleep.ts +165 -0
  984. package/services/rateLimitMessages.ts +344 -0
  985. package/services/rateLimitMocking.ts +144 -0
  986. package/services/remoteManagedSettings/index.ts +638 -0
  987. package/services/remoteManagedSettings/securityCheck.tsx +74 -0
  988. package/services/remoteManagedSettings/syncCache.ts +112 -0
  989. package/services/remoteManagedSettings/syncCacheState.ts +96 -0
  990. package/services/remoteManagedSettings/types.ts +31 -0
  991. package/services/settingsSync/index.ts +581 -0
  992. package/services/settingsSync/types.ts +67 -0
  993. package/services/teamMemorySync/index.ts +1256 -0
  994. package/services/teamMemorySync/secretScanner.ts +324 -0
  995. package/services/teamMemorySync/teamMemSecretGuard.ts +44 -0
  996. package/services/teamMemorySync/types.ts +156 -0
  997. package/services/teamMemorySync/watcher.ts +387 -0
  998. package/services/tips/tipHistory.ts +17 -0
  999. package/services/tips/tipRegistry.ts +686 -0
  1000. package/services/tips/tipScheduler.ts +58 -0
  1001. package/services/tokenEstimation.ts +495 -0
  1002. package/services/toolUseSummary/toolUseSummaryGenerator.ts +112 -0
  1003. package/services/tools/StreamingToolExecutor.ts +530 -0
  1004. package/services/tools/toolExecution.ts +1745 -0
  1005. package/services/tools/toolHooks.ts +650 -0
  1006. package/services/tools/toolOrchestration.ts +188 -0
  1007. package/services/vcr.ts +406 -0
  1008. package/services/voice.ts +525 -0
  1009. package/services/voiceKeyterms.ts +106 -0
  1010. package/services/voiceStreamSTT.ts +544 -0
  1011. package/setup.ts +477 -0
  1012. package/state/AppState.tsx +200 -0
  1013. package/state/AppStateStore.ts +569 -0
  1014. package/state/onChangeAppState.ts +171 -0
  1015. package/state/selectors.ts +76 -0
  1016. package/state/store.ts +34 -0
  1017. package/state/teammateViewHelpers.ts +141 -0
  1018. package/tasks.ts +39 -0
  1019. package/tools/AgentTool/AgentTool.tsx +1398 -0
  1020. package/tools/AgentTool/UI.tsx +872 -0
  1021. package/tools/AgentTool/agentColorManager.ts +66 -0
  1022. package/tools/AgentTool/agentDisplay.ts +104 -0
  1023. package/tools/AgentTool/agentMemory.ts +177 -0
  1024. package/tools/AgentTool/agentMemorySnapshot.ts +197 -0
  1025. package/tools/AgentTool/agentToolUtils.ts +686 -0
  1026. package/tools/AgentTool/built-in/claudeCodeGuideAgent.ts +205 -0
  1027. package/tools/AgentTool/built-in/exploreAgent.ts +83 -0
  1028. package/tools/AgentTool/built-in/generalPurposeAgent.ts +34 -0
  1029. package/tools/AgentTool/built-in/planAgent.ts +92 -0
  1030. package/tools/AgentTool/built-in/statuslineSetup.ts +144 -0
  1031. package/tools/AgentTool/built-in/verificationAgent.ts +152 -0
  1032. package/tools/AgentTool/builtInAgents.ts +72 -0
  1033. package/tools/AgentTool/constants.ts +12 -0
  1034. package/tools/AgentTool/forkSubagent.ts +210 -0
  1035. package/tools/AgentTool/loadAgentsDir.ts +755 -0
  1036. package/tools/AgentTool/prompt.ts +287 -0
  1037. package/tools/AgentTool/resumeAgent.ts +265 -0
  1038. package/tools/AgentTool/runAgent.ts +973 -0
  1039. package/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +266 -0
  1040. package/tools/AskUserQuestionTool/prompt.ts +44 -0
  1041. package/tools/BashTool/BashTool.tsx +1144 -0
  1042. package/tools/BashTool/BashToolResultMessage.tsx +191 -0
  1043. package/tools/BashTool/UI.tsx +185 -0
  1044. package/tools/BashTool/bashCommandHelpers.ts +265 -0
  1045. package/tools/BashTool/bashPermissions.ts +2621 -0
  1046. package/tools/BashTool/bashSecurity.ts +2592 -0
  1047. package/tools/BashTool/commandSemantics.ts +140 -0
  1048. package/tools/BashTool/commentLabel.ts +13 -0
  1049. package/tools/BashTool/destructiveCommandWarning.ts +102 -0
  1050. package/tools/BashTool/modeValidation.ts +115 -0
  1051. package/tools/BashTool/pathValidation.ts +1303 -0
  1052. package/tools/BashTool/prompt.ts +369 -0
  1053. package/tools/BashTool/readOnlyValidation.ts +1990 -0
  1054. package/tools/BashTool/sedEditParser.ts +322 -0
  1055. package/tools/BashTool/sedValidation.ts +684 -0
  1056. package/tools/BashTool/shouldUseSandbox.ts +153 -0
  1057. package/tools/BashTool/toolName.ts +2 -0
  1058. package/tools/BashTool/utils.ts +223 -0
  1059. package/tools/BriefTool/BriefTool.ts +204 -0
  1060. package/tools/BriefTool/UI.tsx +101 -0
  1061. package/tools/BriefTool/attachments.ts +110 -0
  1062. package/tools/BriefTool/prompt.ts +22 -0
  1063. package/tools/BriefTool/upload.ts +174 -0
  1064. package/tools/ConfigTool/ConfigTool.ts +467 -0
  1065. package/tools/ConfigTool/UI.tsx +38 -0
  1066. package/tools/ConfigTool/constants.ts +1 -0
  1067. package/tools/ConfigTool/prompt.ts +93 -0
  1068. package/tools/ConfigTool/supportedSettings.ts +211 -0
  1069. package/tools/EnterPlanModeTool/EnterPlanModeTool.ts +126 -0
  1070. package/tools/EnterPlanModeTool/UI.tsx +33 -0
  1071. package/tools/EnterPlanModeTool/constants.ts +1 -0
  1072. package/tools/EnterPlanModeTool/prompt.ts +170 -0
  1073. package/tools/EnterWorktreeTool/EnterWorktreeTool.ts +127 -0
  1074. package/tools/EnterWorktreeTool/UI.tsx +20 -0
  1075. package/tools/EnterWorktreeTool/constants.ts +1 -0
  1076. package/tools/EnterWorktreeTool/prompt.ts +30 -0
  1077. package/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts +493 -0
  1078. package/tools/ExitPlanModeTool/UI.tsx +82 -0
  1079. package/tools/ExitPlanModeTool/constants.ts +2 -0
  1080. package/tools/ExitPlanModeTool/prompt.ts +29 -0
  1081. package/tools/ExitWorktreeTool/ExitWorktreeTool.ts +329 -0
  1082. package/tools/ExitWorktreeTool/UI.tsx +25 -0
  1083. package/tools/ExitWorktreeTool/constants.ts +1 -0
  1084. package/tools/ExitWorktreeTool/prompt.ts +32 -0
  1085. package/tools/FileEditTool/FileEditTool.ts +625 -0
  1086. package/tools/FileEditTool/UI.tsx +289 -0
  1087. package/tools/FileEditTool/constants.ts +11 -0
  1088. package/tools/FileEditTool/prompt.ts +28 -0
  1089. package/tools/FileEditTool/types.ts +85 -0
  1090. package/tools/FileEditTool/utils.ts +775 -0
  1091. package/tools/FileReadTool/FileReadTool.ts +1183 -0
  1092. package/tools/FileReadTool/UI.tsx +185 -0
  1093. package/tools/FileReadTool/imageProcessor.ts +94 -0
  1094. package/tools/FileReadTool/limits.ts +92 -0
  1095. package/tools/FileReadTool/prompt.ts +49 -0
  1096. package/tools/FileWriteTool/FileWriteTool.ts +434 -0
  1097. package/tools/FileWriteTool/UI.tsx +405 -0
  1098. package/tools/FileWriteTool/prompt.ts +18 -0
  1099. package/tools/GlobTool/GlobTool.ts +198 -0
  1100. package/tools/GlobTool/UI.tsx +63 -0
  1101. package/tools/GlobTool/prompt.ts +7 -0
  1102. package/tools/GrepTool/GrepTool.ts +577 -0
  1103. package/tools/GrepTool/UI.tsx +201 -0
  1104. package/tools/GrepTool/prompt.ts +18 -0
  1105. package/tools/LSPTool/LSPTool.ts +860 -0
  1106. package/tools/LSPTool/UI.tsx +228 -0
  1107. package/tools/LSPTool/formatters.ts +592 -0
  1108. package/tools/LSPTool/prompt.ts +21 -0
  1109. package/tools/LSPTool/schemas.ts +215 -0
  1110. package/tools/LSPTool/symbolContext.ts +90 -0
  1111. package/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +123 -0
  1112. package/tools/ListMcpResourcesTool/UI.tsx +29 -0
  1113. package/tools/ListMcpResourcesTool/prompt.ts +20 -0
  1114. package/tools/MCPTool/MCPTool.ts +77 -0
  1115. package/tools/MCPTool/UI.tsx +403 -0
  1116. package/tools/MCPTool/classifyForCollapse.ts +604 -0
  1117. package/tools/MCPTool/prompt.ts +3 -0
  1118. package/tools/McpAuthTool/McpAuthTool.ts +215 -0
  1119. package/tools/NotebookEditTool/NotebookEditTool.ts +490 -0
  1120. package/tools/NotebookEditTool/UI.tsx +93 -0
  1121. package/tools/NotebookEditTool/constants.ts +2 -0
  1122. package/tools/NotebookEditTool/prompt.ts +3 -0
  1123. package/tools/PowerShellTool/PowerShellTool.tsx +1001 -0
  1124. package/tools/PowerShellTool/UI.tsx +131 -0
  1125. package/tools/PowerShellTool/clmTypes.ts +211 -0
  1126. package/tools/PowerShellTool/commandSemantics.ts +142 -0
  1127. package/tools/PowerShellTool/commonParameters.ts +30 -0
  1128. package/tools/PowerShellTool/destructiveCommandWarning.ts +109 -0
  1129. package/tools/PowerShellTool/gitSafety.ts +176 -0
  1130. package/tools/PowerShellTool/modeValidation.ts +404 -0
  1131. package/tools/PowerShellTool/pathValidation.ts +2049 -0
  1132. package/tools/PowerShellTool/powershellPermissions.ts +1648 -0
  1133. package/tools/PowerShellTool/powershellSecurity.ts +1090 -0
  1134. package/tools/PowerShellTool/prompt.ts +145 -0
  1135. package/tools/PowerShellTool/readOnlyValidation.ts +1823 -0
  1136. package/tools/PowerShellTool/toolName.ts +2 -0
  1137. package/tools/REPLTool/constants.ts +46 -0
  1138. package/tools/REPLTool/primitiveTools.ts +39 -0
  1139. package/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +158 -0
  1140. package/tools/ReadMcpResourceTool/UI.tsx +37 -0
  1141. package/tools/ReadMcpResourceTool/prompt.ts +16 -0
  1142. package/tools/RemoteTriggerTool/RemoteTriggerTool.ts +161 -0
  1143. package/tools/RemoteTriggerTool/UI.tsx +17 -0
  1144. package/tools/RemoteTriggerTool/prompt.ts +15 -0
  1145. package/tools/ScheduleCronTool/CronCreateTool.ts +157 -0
  1146. package/tools/ScheduleCronTool/CronDeleteTool.ts +95 -0
  1147. package/tools/ScheduleCronTool/CronListTool.ts +97 -0
  1148. package/tools/ScheduleCronTool/UI.tsx +60 -0
  1149. package/tools/ScheduleCronTool/prompt.ts +135 -0
  1150. package/tools/SendMessageTool/SendMessageTool.ts +917 -0
  1151. package/tools/SendMessageTool/UI.tsx +31 -0
  1152. package/tools/SendMessageTool/constants.ts +1 -0
  1153. package/tools/SendMessageTool/prompt.ts +49 -0
  1154. package/tools/SkillTool/SkillTool.ts +1108 -0
  1155. package/tools/SkillTool/UI.tsx +128 -0
  1156. package/tools/SkillTool/constants.ts +1 -0
  1157. package/tools/SkillTool/prompt.ts +241 -0
  1158. package/tools/SleepTool/prompt.ts +17 -0
  1159. package/tools/SyntheticOutputTool/SyntheticOutputTool.ts +163 -0
  1160. package/tools/TaskCreateTool/TaskCreateTool.ts +138 -0
  1161. package/tools/TaskCreateTool/constants.ts +1 -0
  1162. package/tools/TaskCreateTool/prompt.ts +56 -0
  1163. package/tools/TaskGetTool/TaskGetTool.ts +128 -0
  1164. package/tools/TaskGetTool/constants.ts +1 -0
  1165. package/tools/TaskGetTool/prompt.ts +24 -0
  1166. package/tools/TaskListTool/TaskListTool.ts +116 -0
  1167. package/tools/TaskListTool/constants.ts +1 -0
  1168. package/tools/TaskListTool/prompt.ts +49 -0
  1169. package/tools/TaskOutputTool/TaskOutputTool.tsx +584 -0
  1170. package/tools/TaskOutputTool/constants.ts +1 -0
  1171. package/tools/TaskStopTool/TaskStopTool.ts +131 -0
  1172. package/tools/TaskStopTool/UI.tsx +41 -0
  1173. package/tools/TaskStopTool/prompt.ts +8 -0
  1174. package/tools/TaskUpdateTool/TaskUpdateTool.ts +406 -0
  1175. package/tools/TaskUpdateTool/constants.ts +1 -0
  1176. package/tools/TaskUpdateTool/prompt.ts +77 -0
  1177. package/tools/TeamCreateTool/TeamCreateTool.ts +240 -0
  1178. package/tools/TeamCreateTool/UI.tsx +6 -0
  1179. package/tools/TeamCreateTool/constants.ts +1 -0
  1180. package/tools/TeamCreateTool/prompt.ts +113 -0
  1181. package/tools/TeamDeleteTool/TeamDeleteTool.ts +139 -0
  1182. package/tools/TeamDeleteTool/UI.tsx +20 -0
  1183. package/tools/TeamDeleteTool/constants.ts +1 -0
  1184. package/tools/TeamDeleteTool/prompt.ts +16 -0
  1185. package/tools/TodoWriteTool/TodoWriteTool.ts +115 -0
  1186. package/tools/TodoWriteTool/constants.ts +1 -0
  1187. package/tools/TodoWriteTool/prompt.ts +184 -0
  1188. package/tools/ToolSearchTool/ToolSearchTool.ts +471 -0
  1189. package/tools/ToolSearchTool/constants.ts +1 -0
  1190. package/tools/ToolSearchTool/prompt.ts +121 -0
  1191. package/tools/WebFetchTool/UI.tsx +72 -0
  1192. package/tools/WebFetchTool/WebFetchTool.ts +318 -0
  1193. package/tools/WebFetchTool/preapproved.ts +166 -0
  1194. package/tools/WebFetchTool/prompt.ts +46 -0
  1195. package/tools/WebFetchTool/utils.ts +530 -0
  1196. package/tools/WebSearchTool/UI.tsx +101 -0
  1197. package/tools/WebSearchTool/WebSearchTool.ts +435 -0
  1198. package/tools/WebSearchTool/prompt.ts +34 -0
  1199. package/tools/WorkflowTool/constants.ts +5 -0
  1200. package/tools/shared/gitOperationTracking.ts +277 -0
  1201. package/tools/shared/spawnMultiAgent.ts +1093 -0
  1202. package/tools/testing/TestingPermissionTool.tsx +74 -0
  1203. package/tools/utils.ts +40 -0
  1204. package/tools.ts +392 -0
  1205. package/types/command.ts +216 -0
  1206. package/types/connectorText.ts +21 -0
  1207. package/types/generated/events_mono/claude_code/v1/claude_code_internal_event.ts +865 -0
  1208. package/types/generated/events_mono/common/v1/auth.ts +100 -0
  1209. package/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.ts +223 -0
  1210. package/types/generated/google/protobuf/timestamp.ts +187 -0
  1211. package/types/hooks.ts +290 -0
  1212. package/types/ids.ts +44 -0
  1213. package/types/logs.ts +330 -0
  1214. package/types/permissions.ts +441 -0
  1215. package/types/plugin.ts +363 -0
  1216. package/types/textInputTypes.ts +387 -0
  1217. package/utils/CircularBuffer.ts +84 -0
  1218. package/utils/Cursor.ts +1530 -0
  1219. package/utils/QueryGuard.ts +121 -0
  1220. package/utils/Shell.ts +474 -0
  1221. package/utils/ShellCommand.ts +465 -0
  1222. package/utils/abortController.ts +99 -0
  1223. package/utils/activityManager.ts +164 -0
  1224. package/utils/advisor.ts +145 -0
  1225. package/utils/agentContext.ts +178 -0
  1226. package/utils/agentId.ts +99 -0
  1227. package/utils/agentSwarmsEnabled.ts +44 -0
  1228. package/utils/agenticSessionSearch.ts +307 -0
  1229. package/utils/analyzeContext.ts +1382 -0
  1230. package/utils/ansiToPng.ts +334 -0
  1231. package/utils/ansiToSvg.ts +272 -0
  1232. package/utils/api.ts +718 -0
  1233. package/utils/apiPreconnect.ts +71 -0
  1234. package/utils/appleTerminalBackup.ts +124 -0
  1235. package/utils/argumentSubstitution.ts +145 -0
  1236. package/utils/array.ts +13 -0
  1237. package/utils/asciicast.ts +239 -0
  1238. package/utils/attachments.ts +3997 -0
  1239. package/utils/attribution.ts +393 -0
  1240. package/utils/auth.ts +2002 -0
  1241. package/utils/authFileDescriptor.ts +196 -0
  1242. package/utils/authPortable.ts +19 -0
  1243. package/utils/autoModeDenials.ts +26 -0
  1244. package/utils/autoRunIssue.tsx +122 -0
  1245. package/utils/autoUpdater.ts +561 -0
  1246. package/utils/aws.ts +74 -0
  1247. package/utils/awsAuthStatusManager.ts +81 -0
  1248. package/utils/background/remote/preconditions.ts +235 -0
  1249. package/utils/background/remote/remoteSession.ts +98 -0
  1250. package/utils/backgroundHousekeeping.ts +94 -0
  1251. package/utils/bash/ParsedCommand.ts +318 -0
  1252. package/utils/bash/ShellSnapshot.ts +582 -0
  1253. package/utils/bash/ast.ts +2679 -0
  1254. package/utils/bash/bashParser.ts +4436 -0
  1255. package/utils/bash/bashPipeCommand.ts +294 -0
  1256. package/utils/bash/commands.ts +1339 -0
  1257. package/utils/bash/heredoc.ts +733 -0
  1258. package/utils/bash/parser.ts +230 -0
  1259. package/utils/bash/prefix.ts +204 -0
  1260. package/utils/bash/registry.ts +53 -0
  1261. package/utils/bash/shellCompletion.ts +259 -0
  1262. package/utils/bash/shellPrefix.ts +28 -0
  1263. package/utils/bash/shellQuote.ts +304 -0
  1264. package/utils/bash/shellQuoting.ts +128 -0
  1265. package/utils/bash/specs/alias.ts +14 -0
  1266. package/utils/bash/specs/index.ts +18 -0
  1267. package/utils/bash/specs/nohup.ts +13 -0
  1268. package/utils/bash/specs/pyright.ts +91 -0
  1269. package/utils/bash/specs/sleep.ts +13 -0
  1270. package/utils/bash/specs/srun.ts +31 -0
  1271. package/utils/bash/specs/time.ts +13 -0
  1272. package/utils/bash/specs/timeout.ts +20 -0
  1273. package/utils/bash/treeSitterAnalysis.ts +506 -0
  1274. package/utils/betas.ts +434 -0
  1275. package/utils/billing.ts +78 -0
  1276. package/utils/binaryCheck.ts +53 -0
  1277. package/utils/browser.ts +68 -0
  1278. package/utils/bufferedWriter.ts +100 -0
  1279. package/utils/bundledMode.ts +22 -0
  1280. package/utils/caCerts.ts +115 -0
  1281. package/utils/caCertsConfig.ts +88 -0
  1282. package/utils/cachePaths.ts +38 -0
  1283. package/utils/classifierApprovals.ts +88 -0
  1284. package/utils/classifierApprovalsHook.ts +17 -0
  1285. package/utils/claudeCodeHints.ts +193 -0
  1286. package/utils/claudeDesktop.ts +152 -0
  1287. package/utils/claudeInChrome/chromeNativeHost.ts +527 -0
  1288. package/utils/claudeInChrome/common.ts +540 -0
  1289. package/utils/claudeInChrome/mcpServer.ts +293 -0
  1290. package/utils/claudeInChrome/prompt.ts +83 -0
  1291. package/utils/claudeInChrome/setup.ts +400 -0
  1292. package/utils/claudeInChrome/setupPortable.ts +233 -0
  1293. package/utils/claudeInChrome/toolRendering.tsx +262 -0
  1294. package/utils/claudemd.ts +1479 -0
  1295. package/utils/cleanup.ts +602 -0
  1296. package/utils/cleanupRegistry.ts +25 -0
  1297. package/utils/cliArgs.ts +60 -0
  1298. package/utils/cliHighlight.ts +54 -0
  1299. package/utils/codeIndexing.ts +206 -0
  1300. package/utils/collapseBackgroundBashNotifications.ts +84 -0
  1301. package/utils/collapseHookSummaries.ts +59 -0
  1302. package/utils/collapseReadSearch.ts +1109 -0
  1303. package/utils/collapseTeammateShutdowns.ts +55 -0
  1304. package/utils/combinedAbortSignal.ts +47 -0
  1305. package/utils/commandLifecycle.ts +21 -0
  1306. package/utils/commitAttribution.ts +961 -0
  1307. package/utils/completionCache.ts +166 -0
  1308. package/utils/computerUse/appNames.ts +196 -0
  1309. package/utils/computerUse/cleanup.ts +86 -0
  1310. package/utils/computerUse/common.ts +61 -0
  1311. package/utils/computerUse/computerUseLock.ts +215 -0
  1312. package/utils/computerUse/drainRunLoop.ts +79 -0
  1313. package/utils/computerUse/escHotkey.ts +54 -0
  1314. package/utils/computerUse/executor.ts +658 -0
  1315. package/utils/computerUse/gates.ts +72 -0
  1316. package/utils/computerUse/hostAdapter.ts +69 -0
  1317. package/utils/computerUse/inputLoader.ts +30 -0
  1318. package/utils/computerUse/mcpServer.ts +106 -0
  1319. package/utils/computerUse/setup.ts +53 -0
  1320. package/utils/computerUse/swiftLoader.ts +23 -0
  1321. package/utils/computerUse/toolRendering.tsx +125 -0
  1322. package/utils/computerUse/wrapper.tsx +336 -0
  1323. package/utils/concurrentSessions.ts +204 -0
  1324. package/utils/config.ts +1817 -0
  1325. package/utils/configConstants.ts +21 -0
  1326. package/utils/contentArray.ts +51 -0
  1327. package/utils/context.ts +221 -0
  1328. package/utils/contextAnalysis.ts +272 -0
  1329. package/utils/contextSuggestions.ts +235 -0
  1330. package/utils/controlMessageCompat.ts +32 -0
  1331. package/utils/conversationRecovery.ts +597 -0
  1332. package/utils/cron.ts +308 -0
  1333. package/utils/cronJitterConfig.ts +75 -0
  1334. package/utils/cronScheduler.ts +565 -0
  1335. package/utils/cronTasks.ts +458 -0
  1336. package/utils/cronTasksLock.ts +195 -0
  1337. package/utils/crossProjectResume.ts +75 -0
  1338. package/utils/crypto.ts +13 -0
  1339. package/utils/cwd.ts +32 -0
  1340. package/utils/debug.ts +268 -0
  1341. package/utils/debugFilter.ts +157 -0
  1342. package/utils/deepLink/banner.ts +123 -0
  1343. package/utils/deepLink/parseDeepLink.ts +170 -0
  1344. package/utils/deepLink/protocolHandler.ts +136 -0
  1345. package/utils/deepLink/registerProtocol.ts +348 -0
  1346. package/utils/deepLink/terminalLauncher.ts +557 -0
  1347. package/utils/deepLink/terminalPreference.ts +54 -0
  1348. package/utils/desktopDeepLink.ts +236 -0
  1349. package/utils/detectRepository.ts +178 -0
  1350. package/utils/diagLogs.ts +94 -0
  1351. package/utils/diff.ts +177 -0
  1352. package/utils/directMemberMessage.ts +69 -0
  1353. package/utils/displayTags.ts +51 -0
  1354. package/utils/doctorContextWarnings.ts +265 -0
  1355. package/utils/doctorDiagnostic.ts +625 -0
  1356. package/utils/dxt/helpers.ts +88 -0
  1357. package/utils/dxt/zip.ts +226 -0
  1358. package/utils/earlyInput.ts +191 -0
  1359. package/utils/editor.ts +183 -0
  1360. package/utils/effort.ts +329 -0
  1361. package/utils/embeddedTools.ts +29 -0
  1362. package/utils/env.ts +347 -0
  1363. package/utils/envDynamic.ts +151 -0
  1364. package/utils/envUtils.ts +183 -0
  1365. package/utils/envValidation.ts +38 -0
  1366. package/utils/errorLogSink.ts +235 -0
  1367. package/utils/errors.ts +238 -0
  1368. package/utils/exampleCommands.ts +184 -0
  1369. package/utils/execFileNoThrow.ts +150 -0
  1370. package/utils/execFileNoThrowPortable.ts +89 -0
  1371. package/utils/execSyncWrapper.ts +38 -0
  1372. package/utils/exportRenderer.tsx +98 -0
  1373. package/utils/extraUsage.ts +23 -0
  1374. package/utils/fastMode.ts +532 -0
  1375. package/utils/file.ts +584 -0
  1376. package/utils/fileHistory.ts +1115 -0
  1377. package/utils/fileOperationAnalytics.ts +71 -0
  1378. package/utils/filePersistence/filePersistence.ts +287 -0
  1379. package/utils/filePersistence/outputsScanner.ts +126 -0
  1380. package/utils/filePersistence/types.ts +28 -0
  1381. package/utils/fileRead.ts +102 -0
  1382. package/utils/fileReadCache.ts +96 -0
  1383. package/utils/fileStateCache.ts +142 -0
  1384. package/utils/findExecutable.ts +17 -0
  1385. package/utils/fingerprint.ts +76 -0
  1386. package/utils/forkedAgent.ts +689 -0
  1387. package/utils/format.ts +308 -0
  1388. package/utils/formatBriefTimestamp.ts +81 -0
  1389. package/utils/fpsTracker.ts +47 -0
  1390. package/utils/frontmatterParser.ts +370 -0
  1391. package/utils/fsOperations.ts +770 -0
  1392. package/utils/fullscreen.ts +202 -0
  1393. package/utils/generatedFiles.ts +136 -0
  1394. package/utils/generators.ts +88 -0
  1395. package/utils/genericProcessUtils.ts +184 -0
  1396. package/utils/getWorktreePaths.ts +70 -0
  1397. package/utils/getWorktreePathsPortable.ts +27 -0
  1398. package/utils/ghPrStatus.ts +106 -0
  1399. package/utils/git/gitConfigParser.ts +277 -0
  1400. package/utils/git/gitFilesystem.ts +699 -0
  1401. package/utils/git/gitignore.ts +99 -0
  1402. package/utils/git.ts +926 -0
  1403. package/utils/gitDiff.ts +532 -0
  1404. package/utils/gitSettings.ts +18 -0
  1405. package/utils/github/ghAuthStatus.ts +29 -0
  1406. package/utils/githubRepoPathMapping.ts +162 -0
  1407. package/utils/glob.ts +130 -0
  1408. package/utils/gracefulShutdown.ts +529 -0
  1409. package/utils/groupToolUses.ts +182 -0
  1410. package/utils/handlePromptSubmit.ts +610 -0
  1411. package/utils/hash.ts +46 -0
  1412. package/utils/headlessProfiler.ts +178 -0
  1413. package/utils/heapDumpService.ts +303 -0
  1414. package/utils/heatmap.ts +198 -0
  1415. package/utils/highlightMatch.tsx +28 -0
  1416. package/utils/hooks/AsyncHookRegistry.ts +309 -0
  1417. package/utils/hooks/apiQueryHookHelper.ts +141 -0
  1418. package/utils/hooks/execAgentHook.ts +339 -0
  1419. package/utils/hooks/execHttpHook.ts +242 -0
  1420. package/utils/hooks/execPromptHook.ts +211 -0
  1421. package/utils/hooks/fileChangedWatcher.ts +191 -0
  1422. package/utils/hooks/hookEvents.ts +192 -0
  1423. package/utils/hooks/hookHelpers.ts +83 -0
  1424. package/utils/hooks/hooksConfigManager.ts +400 -0
  1425. package/utils/hooks/hooksConfigSnapshot.ts +133 -0
  1426. package/utils/hooks/hooksSettings.ts +271 -0
  1427. package/utils/hooks/postSamplingHooks.ts +70 -0
  1428. package/utils/hooks/registerFrontmatterHooks.ts +67 -0
  1429. package/utils/hooks/registerSkillHooks.ts +64 -0
  1430. package/utils/hooks/sessionHooks.ts +447 -0
  1431. package/utils/hooks/skillImprovement.ts +267 -0
  1432. package/utils/hooks/ssrfGuard.ts +294 -0
  1433. package/utils/hooks.ts +5022 -0
  1434. package/utils/horizontalScroll.ts +137 -0
  1435. package/utils/http.ts +136 -0
  1436. package/utils/hyperlink.ts +39 -0
  1437. package/utils/iTermBackup.ts +73 -0
  1438. package/utils/ide.ts +1494 -0
  1439. package/utils/idePathConversion.ts +90 -0
  1440. package/utils/idleTimeout.ts +53 -0
  1441. package/utils/imagePaste.ts +416 -0
  1442. package/utils/imageResizer.ts +880 -0
  1443. package/utils/imageStore.ts +167 -0
  1444. package/utils/imageValidation.ts +104 -0
  1445. package/utils/immediateCommand.ts +15 -0
  1446. package/utils/inProcessTeammateHelpers.ts +102 -0
  1447. package/utils/ink.ts +26 -0
  1448. package/utils/intl.ts +94 -0
  1449. package/utils/jetbrains.ts +191 -0
  1450. package/utils/json.ts +277 -0
  1451. package/utils/jsonRead.ts +16 -0
  1452. package/utils/keyboardShortcuts.ts +14 -0
  1453. package/utils/lazySchema.ts +8 -0
  1454. package/utils/listSessionsImpl.ts +454 -0
  1455. package/utils/localInstaller.ts +162 -0
  1456. package/utils/lockfile.ts +43 -0
  1457. package/utils/log.ts +362 -0
  1458. package/utils/logoV2Utils.ts +350 -0
  1459. package/utils/mailbox.ts +73 -0
  1460. package/utils/managedEnv.ts +199 -0
  1461. package/utils/managedEnvConstants.ts +191 -0
  1462. package/utils/markdown.ts +381 -0
  1463. package/utils/markdownConfigLoader.ts +600 -0
  1464. package/utils/mcp/dateTimeParser.ts +121 -0
  1465. package/utils/mcp/elicitationValidation.ts +336 -0
  1466. package/utils/mcpInstructionsDelta.ts +130 -0
  1467. package/utils/mcpOutputStorage.ts +189 -0
  1468. package/utils/mcpValidation.ts +208 -0
  1469. package/utils/mcpWebSocketTransport.ts +200 -0
  1470. package/utils/memoize.ts +269 -0
  1471. package/utils/memory/types.ts +12 -0
  1472. package/utils/memory/versions.ts +8 -0
  1473. package/utils/memoryFileDetection.ts +289 -0
  1474. package/utils/messagePredicates.ts +8 -0
  1475. package/utils/messageQueueManager.ts +547 -0
  1476. package/utils/messages/mappers.ts +290 -0
  1477. package/utils/messages/systemInit.ts +96 -0
  1478. package/utils/messages.ts +5512 -0
  1479. package/utils/model/agent.ts +157 -0
  1480. package/utils/model/aliases.ts +25 -0
  1481. package/utils/model/antModels.ts +64 -0
  1482. package/utils/model/bedrock.ts +265 -0
  1483. package/utils/model/check1mAccess.ts +72 -0
  1484. package/utils/model/configs.ts +118 -0
  1485. package/utils/model/contextWindowUpgradeCheck.ts +47 -0
  1486. package/utils/model/deprecation.ts +101 -0
  1487. package/utils/model/model.ts +618 -0
  1488. package/utils/model/modelAllowlist.ts +170 -0
  1489. package/utils/model/modelCapabilities.ts +118 -0
  1490. package/utils/model/modelOptions.ts +540 -0
  1491. package/utils/model/modelStrings.ts +166 -0
  1492. package/utils/model/modelSupportOverrides.ts +50 -0
  1493. package/utils/model/providers.ts +40 -0
  1494. package/utils/model/validateModel.ts +159 -0
  1495. package/utils/modelCost.ts +231 -0
  1496. package/utils/modifiers.ts +36 -0
  1497. package/utils/mtls.ts +179 -0
  1498. package/utils/nativeInstaller/download.ts +523 -0
  1499. package/utils/nativeInstaller/index.ts +18 -0
  1500. package/utils/nativeInstaller/installer.ts +1708 -0
  1501. package/utils/nativeInstaller/packageManagers.ts +336 -0
  1502. package/utils/nativeInstaller/pidLock.ts +433 -0
  1503. package/utils/notebook.ts +224 -0
  1504. package/utils/objectGroupBy.ts +18 -0
  1505. package/utils/pasteStore.ts +104 -0
  1506. package/utils/path.ts +155 -0
  1507. package/utils/pdf.ts +300 -0
  1508. package/utils/pdfUtils.ts +70 -0
  1509. package/utils/peerAddress.ts +21 -0
  1510. package/utils/permissions/PermissionMode.ts +141 -0
  1511. package/utils/permissions/PermissionPromptToolResultSchema.ts +127 -0
  1512. package/utils/permissions/PermissionResult.ts +35 -0
  1513. package/utils/permissions/PermissionRule.ts +40 -0
  1514. package/utils/permissions/PermissionUpdate.ts +389 -0
  1515. package/utils/permissions/PermissionUpdateSchema.ts +78 -0
  1516. package/utils/permissions/autoModeState.ts +39 -0
  1517. package/utils/permissions/bashClassifier.ts +61 -0
  1518. package/utils/permissions/bypassPermissionsKillswitch.ts +155 -0
  1519. package/utils/permissions/classifierDecision.ts +98 -0
  1520. package/utils/permissions/classifierShared.ts +39 -0
  1521. package/utils/permissions/dangerousPatterns.ts +80 -0
  1522. package/utils/permissions/denialTracking.ts +45 -0
  1523. package/utils/permissions/filesystem.ts +1777 -0
  1524. package/utils/permissions/getNextPermissionMode.ts +101 -0
  1525. package/utils/permissions/pathValidation.ts +485 -0
  1526. package/utils/permissions/permissionExplainer.ts +250 -0
  1527. package/utils/permissions/permissionRuleParser.ts +198 -0
  1528. package/utils/permissions/permissionSetup.ts +1532 -0
  1529. package/utils/permissions/permissions.ts +1486 -0
  1530. package/utils/permissions/permissionsLoader.ts +296 -0
  1531. package/utils/permissions/shadowedRuleDetection.ts +234 -0
  1532. package/utils/permissions/shellRuleMatching.ts +228 -0
  1533. package/utils/permissions/yoloClassifier.ts +1495 -0
  1534. package/utils/planModeV2.ts +95 -0
  1535. package/utils/plans.ts +397 -0
  1536. package/utils/platform.ts +150 -0
  1537. package/utils/plugins/addDirPluginSettings.ts +71 -0
  1538. package/utils/plugins/cacheUtils.ts +196 -0
  1539. package/utils/plugins/dependencyResolver.ts +305 -0
  1540. package/utils/plugins/fetchTelemetry.ts +135 -0
  1541. package/utils/plugins/gitAvailability.ts +69 -0
  1542. package/utils/plugins/headlessPluginInstall.ts +174 -0
  1543. package/utils/plugins/hintRecommendation.ts +164 -0
  1544. package/utils/plugins/installCounts.ts +292 -0
  1545. package/utils/plugins/installedPluginsManager.ts +1268 -0
  1546. package/utils/plugins/loadPluginAgents.ts +348 -0
  1547. package/utils/plugins/loadPluginCommands.ts +946 -0
  1548. package/utils/plugins/loadPluginHooks.ts +287 -0
  1549. package/utils/plugins/loadPluginOutputStyles.ts +178 -0
  1550. package/utils/plugins/lspPluginIntegration.ts +387 -0
  1551. package/utils/plugins/lspRecommendation.ts +374 -0
  1552. package/utils/plugins/managedPlugins.ts +27 -0
  1553. package/utils/plugins/marketplaceHelpers.ts +592 -0
  1554. package/utils/plugins/marketplaceManager.ts +2643 -0
  1555. package/utils/plugins/mcpPluginIntegration.ts +634 -0
  1556. package/utils/plugins/mcpbHandler.ts +968 -0
  1557. package/utils/plugins/officialMarketplace.ts +25 -0
  1558. package/utils/plugins/officialMarketplaceGcs.ts +216 -0
  1559. package/utils/plugins/officialMarketplaceStartupCheck.ts +439 -0
  1560. package/utils/plugins/orphanedPluginFilter.ts +114 -0
  1561. package/utils/plugins/parseMarketplaceInput.ts +162 -0
  1562. package/utils/plugins/performStartupChecks.tsx +70 -0
  1563. package/utils/plugins/pluginAutoupdate.ts +284 -0
  1564. package/utils/plugins/pluginBlocklist.ts +127 -0
  1565. package/utils/plugins/pluginDirectories.ts +178 -0
  1566. package/utils/plugins/pluginFlagging.ts +208 -0
  1567. package/utils/plugins/pluginIdentifier.ts +123 -0
  1568. package/utils/plugins/pluginInstallationHelpers.ts +595 -0
  1569. package/utils/plugins/pluginLoader.ts +3302 -0
  1570. package/utils/plugins/pluginOptionsStorage.ts +400 -0
  1571. package/utils/plugins/pluginPolicy.ts +20 -0
  1572. package/utils/plugins/pluginStartupCheck.ts +341 -0
  1573. package/utils/plugins/pluginVersioning.ts +157 -0
  1574. package/utils/plugins/reconciler.ts +265 -0
  1575. package/utils/plugins/refresh.ts +215 -0
  1576. package/utils/plugins/schemas.ts +1681 -0
  1577. package/utils/plugins/validatePlugin.ts +903 -0
  1578. package/utils/plugins/walkPluginMarkdown.ts +69 -0
  1579. package/utils/plugins/zipCache.ts +406 -0
  1580. package/utils/plugins/zipCacheAdapters.ts +164 -0
  1581. package/utils/powershell/dangerousCmdlets.ts +185 -0
  1582. package/utils/powershell/parser.ts +1804 -0
  1583. package/utils/powershell/staticPrefix.ts +316 -0
  1584. package/utils/preflightChecks.tsx +151 -0
  1585. package/utils/privacyLevel.ts +55 -0
  1586. package/utils/process.ts +68 -0
  1587. package/utils/processUserInput/processBashCommand.tsx +140 -0
  1588. package/utils/processUserInput/processSlashCommand.tsx +922 -0
  1589. package/utils/processUserInput/processTextPrompt.ts +100 -0
  1590. package/utils/processUserInput/processUserInput.ts +605 -0
  1591. package/utils/profilerBase.ts +46 -0
  1592. package/utils/promptCategory.ts +49 -0
  1593. package/utils/promptEditor.ts +188 -0
  1594. package/utils/promptShellExecution.ts +183 -0
  1595. package/utils/proxy.ts +426 -0
  1596. package/utils/queryContext.ts +179 -0
  1597. package/utils/queryHelpers.ts +552 -0
  1598. package/utils/queryProfiler.ts +301 -0
  1599. package/utils/queueProcessor.ts +95 -0
  1600. package/utils/readEditContext.ts +227 -0
  1601. package/utils/readFileInRange.ts +383 -0
  1602. package/utils/releaseNotes.ts +360 -0
  1603. package/utils/renderOptions.ts +77 -0
  1604. package/utils/ripgrep.ts +679 -0
  1605. package/utils/sandbox/sandbox-adapter.ts +987 -0
  1606. package/utils/sandbox/sandbox-ui-utils.ts +12 -0
  1607. package/utils/sanitization.ts +91 -0
  1608. package/utils/screenshotClipboard.ts +121 -0
  1609. package/utils/sdkEventQueue.ts +134 -0
  1610. package/utils/secureStorage/fallbackStorage.ts +70 -0
  1611. package/utils/secureStorage/index.ts +17 -0
  1612. package/utils/secureStorage/keychainPrefetch.ts +116 -0
  1613. package/utils/secureStorage/macOsKeychainHelpers.ts +111 -0
  1614. package/utils/secureStorage/macOsKeychainStorage.ts +231 -0
  1615. package/utils/secureStorage/plainTextStorage.ts +84 -0
  1616. package/utils/semanticBoolean.ts +29 -0
  1617. package/utils/semanticNumber.ts +36 -0
  1618. package/utils/semver.ts +59 -0
  1619. package/utils/sequential.ts +56 -0
  1620. package/utils/sessionActivity.ts +133 -0
  1621. package/utils/sessionEnvVars.ts +22 -0
  1622. package/utils/sessionEnvironment.ts +166 -0
  1623. package/utils/sessionFileAccessHooks.ts +250 -0
  1624. package/utils/sessionIngressAuth.ts +140 -0
  1625. package/utils/sessionRestore.ts +551 -0
  1626. package/utils/sessionStart.ts +232 -0
  1627. package/utils/sessionState.ts +150 -0
  1628. package/utils/sessionStorage.ts +5105 -0
  1629. package/utils/sessionStoragePortable.ts +793 -0
  1630. package/utils/sessionTitle.ts +129 -0
  1631. package/utils/sessionUrl.ts +64 -0
  1632. package/utils/set.ts +53 -0
  1633. package/utils/settings/allErrors.ts +32 -0
  1634. package/utils/settings/applySettingsChange.ts +92 -0
  1635. package/utils/settings/changeDetector.ts +488 -0
  1636. package/utils/settings/constants.ts +202 -0
  1637. package/utils/settings/internalWrites.ts +37 -0
  1638. package/utils/settings/managedPath.ts +34 -0
  1639. package/utils/settings/mdm/constants.ts +81 -0
  1640. package/utils/settings/mdm/rawRead.ts +130 -0
  1641. package/utils/settings/mdm/settings.ts +316 -0
  1642. package/utils/settings/permissionValidation.ts +262 -0
  1643. package/utils/settings/pluginOnlyPolicy.ts +60 -0
  1644. package/utils/settings/schemaOutput.ts +8 -0
  1645. package/utils/settings/settings.ts +1015 -0
  1646. package/utils/settings/settingsCache.ts +80 -0
  1647. package/utils/settings/toolValidationConfig.ts +103 -0
  1648. package/utils/settings/types.ts +1148 -0
  1649. package/utils/settings/validateEditTool.ts +45 -0
  1650. package/utils/settings/validation.ts +265 -0
  1651. package/utils/settings/validationTips.ts +164 -0
  1652. package/utils/shell/bashProvider.ts +255 -0
  1653. package/utils/shell/outputLimits.ts +14 -0
  1654. package/utils/shell/powershellDetection.ts +107 -0
  1655. package/utils/shell/powershellProvider.ts +123 -0
  1656. package/utils/shell/prefix.ts +367 -0
  1657. package/utils/shell/readOnlyCommandValidation.ts +1893 -0
  1658. package/utils/shell/resolveDefaultShell.ts +14 -0
  1659. package/utils/shell/shellProvider.ts +33 -0
  1660. package/utils/shell/shellToolUtils.ts +22 -0
  1661. package/utils/shell/specPrefix.ts +241 -0
  1662. package/utils/shellConfig.ts +167 -0
  1663. package/utils/sideQuery.ts +222 -0
  1664. package/utils/sideQuestion.ts +155 -0
  1665. package/utils/signal.ts +43 -0
  1666. package/utils/sinks.ts +16 -0
  1667. package/utils/skills/skillChangeDetector.ts +311 -0
  1668. package/utils/slashCommandParsing.ts +60 -0
  1669. package/utils/sleep.ts +84 -0
  1670. package/utils/sliceAnsi.ts +91 -0
  1671. package/utils/slowOperations.ts +286 -0
  1672. package/utils/standaloneAgent.ts +23 -0
  1673. package/utils/startupProfiler.ts +194 -0
  1674. package/utils/staticRender.tsx +116 -0
  1675. package/utils/stats.ts +1061 -0
  1676. package/utils/statsCache.ts +434 -0
  1677. package/utils/status.tsx +362 -0
  1678. package/utils/statusNoticeDefinitions.tsx +198 -0
  1679. package/utils/statusNoticeHelpers.ts +20 -0
  1680. package/utils/stream.ts +76 -0
  1681. package/utils/streamJsonStdoutGuard.ts +123 -0
  1682. package/utils/streamlinedTransform.ts +201 -0
  1683. package/utils/stringUtils.ts +235 -0
  1684. package/utils/subprocessEnv.ts +99 -0
  1685. package/utils/suggestions/commandSuggestions.ts +567 -0
  1686. package/utils/suggestions/directoryCompletion.ts +263 -0
  1687. package/utils/suggestions/shellHistoryCompletion.ts +119 -0
  1688. package/utils/suggestions/skillUsageTracking.ts +55 -0
  1689. package/utils/suggestions/slackChannelSuggestions.ts +209 -0
  1690. package/utils/swarm/It2SetupPrompt.tsx +380 -0
  1691. package/utils/swarm/backends/ITermBackend.ts +370 -0
  1692. package/utils/swarm/backends/InProcessBackend.ts +339 -0
  1693. package/utils/swarm/backends/PaneBackendExecutor.ts +354 -0
  1694. package/utils/swarm/backends/TmuxBackend.ts +764 -0
  1695. package/utils/swarm/backends/detection.ts +128 -0
  1696. package/utils/swarm/backends/it2Setup.ts +245 -0
  1697. package/utils/swarm/backends/registry.ts +464 -0
  1698. package/utils/swarm/backends/teammateModeSnapshot.ts +87 -0
  1699. package/utils/swarm/backends/types.ts +311 -0
  1700. package/utils/swarm/constants.ts +33 -0
  1701. package/utils/swarm/inProcessRunner.ts +1552 -0
  1702. package/utils/swarm/leaderPermissionBridge.ts +54 -0
  1703. package/utils/swarm/permissionSync.ts +928 -0
  1704. package/utils/swarm/reconnection.ts +119 -0
  1705. package/utils/swarm/spawnInProcess.ts +328 -0
  1706. package/utils/swarm/spawnUtils.ts +146 -0
  1707. package/utils/swarm/teamHelpers.ts +683 -0
  1708. package/utils/swarm/teammateInit.ts +129 -0
  1709. package/utils/swarm/teammateLayoutManager.ts +107 -0
  1710. package/utils/swarm/teammateModel.ts +10 -0
  1711. package/utils/swarm/teammatePromptAddendum.ts +18 -0
  1712. package/utils/systemDirectories.ts +74 -0
  1713. package/utils/systemPrompt.ts +123 -0
  1714. package/utils/systemPromptType.ts +14 -0
  1715. package/utils/systemTheme.ts +119 -0
  1716. package/utils/taggedId.ts +54 -0
  1717. package/utils/task/TaskOutput.ts +390 -0
  1718. package/utils/task/diskOutput.ts +451 -0
  1719. package/utils/task/framework.ts +308 -0
  1720. package/utils/task/outputFormatting.ts +38 -0
  1721. package/utils/task/sdkProgress.ts +36 -0
  1722. package/utils/tasks.ts +862 -0
  1723. package/utils/teamDiscovery.ts +81 -0
  1724. package/utils/teamMemoryOps.ts +88 -0
  1725. package/utils/teammate.ts +292 -0
  1726. package/utils/teammateContext.ts +96 -0
  1727. package/utils/teammateMailbox.ts +1183 -0
  1728. package/utils/telemetry/betaSessionTracing.ts +491 -0
  1729. package/utils/telemetry/bigqueryExporter.ts +252 -0
  1730. package/utils/telemetry/events.ts +75 -0
  1731. package/utils/telemetry/instrumentation.ts +825 -0
  1732. package/utils/telemetry/logger.ts +26 -0
  1733. package/utils/telemetry/perfettoTracing.ts +1120 -0
  1734. package/utils/telemetry/pluginTelemetry.ts +289 -0
  1735. package/utils/telemetry/sessionTracing.ts +927 -0
  1736. package/utils/telemetry/skillLoadedEvent.ts +39 -0
  1737. package/utils/telemetryAttributes.ts +71 -0
  1738. package/utils/teleport/api.ts +466 -0
  1739. package/utils/teleport/environmentSelection.ts +77 -0
  1740. package/utils/teleport/environments.ts +120 -0
  1741. package/utils/teleport/gitBundle.ts +292 -0
  1742. package/utils/teleport.tsx +1226 -0
  1743. package/utils/tempfile.ts +31 -0
  1744. package/utils/terminal.ts +131 -0
  1745. package/utils/terminalPanel.ts +191 -0
  1746. package/utils/textHighlighting.ts +166 -0
  1747. package/utils/theme.ts +639 -0
  1748. package/utils/thinking.ts +162 -0
  1749. package/utils/timeouts.ts +39 -0
  1750. package/utils/tmuxSocket.ts +427 -0
  1751. package/utils/todo/types.ts +18 -0
  1752. package/utils/tokenBudget.ts +73 -0
  1753. package/utils/tokens.ts +261 -0
  1754. package/utils/toolErrors.ts +132 -0
  1755. package/utils/toolPool.ts +79 -0
  1756. package/utils/toolResultStorage.ts +1040 -0
  1757. package/utils/toolSchemaCache.ts +26 -0
  1758. package/utils/toolSearch.ts +756 -0
  1759. package/utils/transcriptSearch.ts +202 -0
  1760. package/utils/treeify.ts +170 -0
  1761. package/utils/truncate.ts +179 -0
  1762. package/utils/ultraplan/ccrSession.ts +349 -0
  1763. package/utils/ultraplan/keyword.ts +127 -0
  1764. package/utils/unaryLogging.ts +39 -0
  1765. package/utils/undercover.ts +89 -0
  1766. package/utils/user.ts +194 -0
  1767. package/utils/userAgent.ts +10 -0
  1768. package/utils/userConfig.ts +181 -0
  1769. package/utils/userPromptKeywords.ts +27 -0
  1770. package/utils/uuid.ts +27 -0
  1771. package/utils/warningHandler.ts +121 -0
  1772. package/utils/which.ts +82 -0
  1773. package/utils/windowsPaths.ts +173 -0
  1774. package/utils/withResolvers.ts +13 -0
  1775. package/utils/words.ts +800 -0
  1776. package/utils/workloadContext.ts +57 -0
  1777. package/utils/worktree.ts +1519 -0
  1778. package/utils/worktreeModeEnabled.ts +11 -0
  1779. package/utils/xdg.ts +65 -0
  1780. package/utils/xml.ts +16 -0
  1781. package/utils/yaml.ts +15 -0
  1782. package/utils/zodToJsonSchema.ts +23 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Approved channel plugins allowlist. --channels plugin:name@marketplace
3
+ * entries only register if {marketplace, plugin} is on this list. server:
4
+ * entries always fail (schema is plugin-only). The
5
+ * --dangerously-load-development-channels flag bypasses for both kinds.
6
+ * Lives in GrowthBook so it can be updated without a release.
7
+ *
8
+ * Plugin-level granularity: if a plugin is approved, all its channel
9
+ * servers are. Per-server gating was overengineering — a plugin that
10
+ * sprouts a malicious second server is already compromised, and per-server
11
+ * entries would break on harmless plugin refactors.
12
+ *
13
+ * The allowlist check is a pure {marketplace, plugin} comparison against
14
+ * the user's typed tag. The gate's separate 'marketplace' step verifies
15
+ * the tag matches what's actually installed before this check runs.
16
+ */
17
+
18
+ import { z } from 'zod/v4'
19
+ import { lazySchema } from '../../utils/lazySchema.js'
20
+ import { parsePluginIdentifier } from '../../utils/plugins/pluginIdentifier.js'
21
+ import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js'
22
+
23
+ export type ChannelAllowlistEntry = {
24
+ marketplace: string
25
+ plugin: string
26
+ }
27
+
28
+ const ChannelAllowlistSchema = lazySchema(() =>
29
+ z.array(
30
+ z.object({
31
+ marketplace: z.string(),
32
+ plugin: z.string(),
33
+ }),
34
+ ),
35
+ )
36
+
37
+ export function getChannelAllowlist(): ChannelAllowlistEntry[] {
38
+ const raw = getFeatureValue_CACHED_MAY_BE_STALE<unknown>(
39
+ 'tengu_harbor_ledger',
40
+ [],
41
+ )
42
+ const parsed = ChannelAllowlistSchema().safeParse(raw)
43
+ return parsed.success ? parsed.data : []
44
+ }
45
+
46
+ /**
47
+ * Overall channels on/off. Checked before any per-server gating —
48
+ * when false, --channels is a no-op and no handlers register.
49
+ * Default false; GrowthBook 5-min refresh.
50
+ */
51
+ export function isChannelsEnabled(): boolean {
52
+ return getFeatureValue_CACHED_MAY_BE_STALE('tengu_harbor', false)
53
+ }
54
+
55
+ /**
56
+ * Pure allowlist check keyed off the connection's pluginSource — for UI
57
+ * pre-filtering so the IDE only shows "Enable channel?" for servers that will
58
+ * actually pass the gate. Not a security boundary: channel_enable still runs
59
+ * the full gate. Matches the allowlist comparison inside gateChannelServer()
60
+ * but standalone (no session/marketplace coupling — those are tautologies
61
+ * when the entry is derived from pluginSource).
62
+ *
63
+ * Returns false for undefined pluginSource (non-plugin server — can never
64
+ * match the {marketplace, plugin}-keyed ledger) and for @-less sources
65
+ * (builtin/inline — same reason).
66
+ */
67
+ export function isChannelAllowlisted(
68
+ pluginSource: string | undefined,
69
+ ): boolean {
70
+ if (!pluginSource) return false
71
+ const { name, marketplace } = parsePluginIdentifier(pluginSource)
72
+ if (!marketplace) return false
73
+ return getChannelAllowlist().some(
74
+ e => e.plugin === name && e.marketplace === marketplace,
75
+ )
76
+ }
@@ -0,0 +1,316 @@
1
+ /**
2
+ * Channel notifications — lets an MCP server push user messages into the
3
+ * conversation. A "channel" (Discord, Slack, SMS, etc.) is just an MCP server
4
+ * that:
5
+ * - exposes tools for outbound messages (e.g. `send_message`) — standard MCP
6
+ * - sends `notifications/claude/channel` notifications for inbound — this file
7
+ *
8
+ * The notification handler wraps the content in a <channel> tag and
9
+ * enqueues it. SleepTool polls hasCommandsInQueue() and wakes within 1s.
10
+ * The model sees where the message came from and decides which tool to reply
11
+ * with (the channel's MCP tool, SendUserMessage, or both).
12
+ *
13
+ * feature('KAIROS') || feature('KAIROS_CHANNELS'). Runtime gate tengu_harbor.
14
+ * Requires claude.ai OAuth auth — API key users are blocked until
15
+ * console gets a channelsEnabled admin surface. Teams/Enterprise orgs
16
+ * must explicitly opt in via channelsEnabled: true in managed settings.
17
+ */
18
+
19
+ import type { ServerCapabilities } from '@modelcontextprotocol/sdk/types.js'
20
+ import { z } from 'zod/v4'
21
+ import { type ChannelEntry, getAllowedChannels } from '../../bootstrap/state.js'
22
+ import { CHANNEL_TAG } from '../../constants/xml.js'
23
+ import {
24
+ getClaudeAIOAuthTokens,
25
+ getSubscriptionType,
26
+ } from '../../utils/auth.js'
27
+ import { lazySchema } from '../../utils/lazySchema.js'
28
+ import { parsePluginIdentifier } from '../../utils/plugins/pluginIdentifier.js'
29
+ import { getSettingsForSource } from '../../utils/settings/settings.js'
30
+ import { escapeXmlAttr } from '../../utils/xml.js'
31
+ import {
32
+ type ChannelAllowlistEntry,
33
+ getChannelAllowlist,
34
+ isChannelsEnabled,
35
+ } from './channelAllowlist.js'
36
+
37
+ export const ChannelMessageNotificationSchema = lazySchema(() =>
38
+ z.object({
39
+ method: z.literal('notifications/claude/channel'),
40
+ params: z.object({
41
+ content: z.string(),
42
+ // Opaque passthrough — thread_id, user, whatever the channel wants the
43
+ // model to see. Rendered as attributes on the <channel> tag.
44
+ meta: z.record(z.string(), z.string()).optional(),
45
+ }),
46
+ }),
47
+ )
48
+
49
+ /**
50
+ * Structured permission reply from a channel server. Servers that support
51
+ * this declare `capabilities.experimental['claude/channel/permission']` and
52
+ * emit this event INSTEAD of relaying "yes tbxkq" as text via
53
+ * notifications/claude/channel. Explicit opt-in per server — a channel that
54
+ * just wants to relay text never becomes a permission surface by accident.
55
+ *
56
+ * The server parses the user's reply (spec: /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i)
57
+ * and emits {request_id, behavior}. CC matches request_id against its
58
+ * pending map. Unlike the regex-intercept approach, text in the general
59
+ * channel can never accidentally match — approval requires the server
60
+ * to deliberately emit this specific event.
61
+ */
62
+ export const CHANNEL_PERMISSION_METHOD =
63
+ 'notifications/claude/channel/permission'
64
+ export const ChannelPermissionNotificationSchema = lazySchema(() =>
65
+ z.object({
66
+ method: z.literal(CHANNEL_PERMISSION_METHOD),
67
+ params: z.object({
68
+ request_id: z.string(),
69
+ behavior: z.enum(['allow', 'deny']),
70
+ }),
71
+ }),
72
+ )
73
+
74
+ /**
75
+ * Outbound: CC → server. Fired from interactiveHandler.ts when a
76
+ * permission dialog opens and the server has declared the permission
77
+ * capability. Server formats the message for its platform (Telegram
78
+ * markdown, iMessage rich text, Discord embed) and sends it to the
79
+ * human. When the human replies "yes tbxkq", the server parses that
80
+ * against PERMISSION_REPLY_RE and emits the inbound schema above.
81
+ *
82
+ * Not a zod schema — CC SENDS this, doesn't validate it. A type here
83
+ * keeps both halves of the protocol documented side by side.
84
+ */
85
+ export const CHANNEL_PERMISSION_REQUEST_METHOD =
86
+ 'notifications/claude/channel/permission_request'
87
+ export type ChannelPermissionRequestParams = {
88
+ request_id: string
89
+ tool_name: string
90
+ description: string
91
+ /** JSON-stringified tool input, truncated to 200 chars with …. Full
92
+ * input is in the local terminal dialog; this is a phone-sized
93
+ * preview. Server decides whether/how to show it. */
94
+ input_preview: string
95
+ }
96
+
97
+ /**
98
+ * Meta keys become XML attribute NAMES — a crafted key like
99
+ * `x="" injected="y` would break out of the attribute structure. Only
100
+ * accept keys that look like plain identifiers. This is stricter than
101
+ * the XML spec (which allows `:`, `.`, `-`) but channel servers only
102
+ * send `chat_id`, `user`, `thread_ts`, `message_id` in practice.
103
+ */
104
+ const SAFE_META_KEY = /^[a-zA-Z_][a-zA-Z0-9_]*$/
105
+
106
+ export function wrapChannelMessage(
107
+ serverName: string,
108
+ content: string,
109
+ meta?: Record<string, string>,
110
+ ): string {
111
+ const attrs = Object.entries(meta ?? {})
112
+ .filter(([k]) => SAFE_META_KEY.test(k))
113
+ .map(([k, v]) => ` ${k}="${escapeXmlAttr(v)}"`)
114
+ .join('')
115
+ return `<${CHANNEL_TAG} source="${escapeXmlAttr(serverName)}"${attrs}>\n${content}\n</${CHANNEL_TAG}>`
116
+ }
117
+
118
+ /**
119
+ * Effective allowlist for the current session. Team/enterprise orgs can set
120
+ * allowedChannelPlugins in managed settings — when set, it REPLACES the
121
+ * GrowthBook ledger (admin owns the trust decision). Undefined falls back
122
+ * to the ledger. Unmanaged users always get the ledger.
123
+ *
124
+ * Callers already read sub/policy for the policy gate — pass them in to
125
+ * avoid double-reading getSettingsForSource (uncached).
126
+ */
127
+ export function getEffectiveChannelAllowlist(
128
+ sub: ReturnType<typeof getSubscriptionType>,
129
+ orgList: ChannelAllowlistEntry[] | undefined,
130
+ ): {
131
+ entries: ChannelAllowlistEntry[]
132
+ source: 'org' | 'ledger'
133
+ } {
134
+ if ((sub === 'team' || sub === 'enterprise') && orgList) {
135
+ return { entries: orgList, source: 'org' }
136
+ }
137
+ return { entries: getChannelAllowlist(), source: 'ledger' }
138
+ }
139
+
140
+ export type ChannelGateResult =
141
+ | { action: 'register' }
142
+ | {
143
+ action: 'skip'
144
+ kind:
145
+ | 'capability'
146
+ | 'disabled'
147
+ | 'auth'
148
+ | 'policy'
149
+ | 'session'
150
+ | 'marketplace'
151
+ | 'allowlist'
152
+ reason: string
153
+ }
154
+
155
+ /**
156
+ * Match a connected MCP server against the user's parsed --channels entries.
157
+ * server-kind is exact match on bare name; plugin-kind matches on the second
158
+ * segment of plugin:X:Y. Returns the matching entry so callers can read its
159
+ * kind — that's the user's trust declaration, not inferred from runtime shape.
160
+ */
161
+ export function findChannelEntry(
162
+ serverName: string,
163
+ channels: readonly ChannelEntry[],
164
+ ): ChannelEntry | undefined {
165
+ // split unconditionally — for a bare name like 'slack', parts is ['slack']
166
+ // and the plugin-kind branch correctly never matches (parts[0] !== 'plugin').
167
+ const parts = serverName.split(':')
168
+ return channels.find(c =>
169
+ c.kind === 'server'
170
+ ? serverName === c.name
171
+ : parts[0] === 'plugin' && parts[1] === c.name,
172
+ )
173
+ }
174
+
175
+ /**
176
+ * Gate an MCP server's channel-notification path. Caller checks
177
+ * feature('KAIROS') || feature('KAIROS_CHANNELS') first (build-time
178
+ * elimination). Gate order: capability → runtime gate (tengu_harbor) →
179
+ * auth (OAuth only) → org policy → session --channels → allowlist.
180
+ * API key users are blocked at the auth layer — channels requires
181
+ * claude.ai auth; console orgs have no admin opt-in surface yet.
182
+ *
183
+ * skip Not a channel server, or managed org hasn't opted in, or
184
+ * not in session --channels. Connection stays up; handler
185
+ * not registered.
186
+ * register Subscribe to notifications/claude/channel.
187
+ *
188
+ * Which servers can connect at all is governed by allowedMcpServers —
189
+ * this gate only decides whether the notification handler registers.
190
+ */
191
+ export function gateChannelServer(
192
+ serverName: string,
193
+ capabilities: ServerCapabilities | undefined,
194
+ pluginSource: string | undefined,
195
+ ): ChannelGateResult {
196
+ // Channel servers declare `experimental['claude/channel']: {}` (MCP's
197
+ // presence-signal idiom — same as `tools: {}`). Truthy covers `{}` and
198
+ // `true`; absent/undefined/explicit-`false` all fail. Key matches the
199
+ // notification method namespace (notifications/claude/channel).
200
+ if (!capabilities?.experimental?.['claude/channel']) {
201
+ return {
202
+ action: 'skip',
203
+ kind: 'capability',
204
+ reason: 'server did not declare claude/channel capability',
205
+ }
206
+ }
207
+
208
+ // Overall runtime gate. After capability so normal MCP servers never hit
209
+ // this path. Before auth/policy so the killswitch works regardless of
210
+ // session state.
211
+ if (!isChannelsEnabled()) {
212
+ return {
213
+ action: 'skip',
214
+ kind: 'disabled',
215
+ reason: 'channels feature is not currently available',
216
+ }
217
+ }
218
+
219
+ // OAuth-only. API key users (console) are blocked — there's no
220
+ // channelsEnabled admin surface in console yet, so the policy opt-in
221
+ // flow doesn't exist for them. Drop this when console parity lands.
222
+ if (!getClaudeAIOAuthTokens()?.accessToken) {
223
+ return {
224
+ action: 'skip',
225
+ kind: 'auth',
226
+ reason: 'channels requires claude.ai authentication (run /login)',
227
+ }
228
+ }
229
+
230
+ // Teams/Enterprise opt-in. Managed orgs must explicitly enable channels.
231
+ // Default OFF — absent or false blocks. Keyed off subscription tier, not
232
+ // "policy settings exist" — a team org with zero configured policy keys
233
+ // (remote endpoint returns 404) is still a managed org and must not fall
234
+ // through to the unmanaged path.
235
+ const sub = getSubscriptionType()
236
+ const managed = sub === 'team' || sub === 'enterprise'
237
+ const policy = managed ? getSettingsForSource('policySettings') : undefined
238
+ if (managed && policy?.channelsEnabled !== true) {
239
+ return {
240
+ action: 'skip',
241
+ kind: 'policy',
242
+ reason:
243
+ 'channels not enabled by org policy (set channelsEnabled: true in managed settings)',
244
+ }
245
+ }
246
+
247
+ // User-level session opt-in. A server must be explicitly listed in
248
+ // --channels to push inbound this session — protects against a trusted
249
+ // server surprise-adding the capability.
250
+ const entry = findChannelEntry(serverName, getAllowedChannels())
251
+ if (!entry) {
252
+ return {
253
+ action: 'skip',
254
+ kind: 'session',
255
+ reason: `server ${serverName} not in --channels list for this session`,
256
+ }
257
+ }
258
+
259
+ if (entry.kind === 'plugin') {
260
+ // Marketplace verification: the tag is intent (plugin:slack@anthropic),
261
+ // the runtime name is just plugin:slack:X — could be slack@anthropic or
262
+ // slack@evil depending on what's installed. Verify they match before
263
+ // trusting the tag for the allowlist check below. Source is stashed on
264
+ // the config at addPluginScopeToServers — undefined (non-plugin server,
265
+ // shouldn't happen for plugin-kind entry) or @-less (builtin/inline)
266
+ // both fail the comparison.
267
+ const actual = pluginSource
268
+ ? parsePluginIdentifier(pluginSource).marketplace
269
+ : undefined
270
+ if (actual !== entry.marketplace) {
271
+ return {
272
+ action: 'skip',
273
+ kind: 'marketplace',
274
+ reason: `you asked for plugin:${entry.name}@${entry.marketplace} but the installed ${entry.name} plugin is from ${actual ?? 'an unknown source'}`,
275
+ }
276
+ }
277
+
278
+ // Approved-plugin allowlist. Marketplace gate already verified
279
+ // tag == reality, so this is a pure entry check. entry.dev (per-entry,
280
+ // not the session-wide bit) bypasses — so accepting the dev dialog for
281
+ // one entry doesn't leak allowlist-bypass to --channels entries.
282
+ if (!entry.dev) {
283
+ const { entries, source } = getEffectiveChannelAllowlist(
284
+ sub,
285
+ policy?.allowedChannelPlugins,
286
+ )
287
+ if (
288
+ !entries.some(
289
+ e => e.plugin === entry.name && e.marketplace === entry.marketplace,
290
+ )
291
+ ) {
292
+ return {
293
+ action: 'skip',
294
+ kind: 'allowlist',
295
+ reason:
296
+ source === 'org'
297
+ ? `plugin ${entry.name}@${entry.marketplace} is not on your org's approved channels list (set allowedChannelPlugins in managed settings)`
298
+ : `plugin ${entry.name}@${entry.marketplace} is not on the approved channels allowlist (use --dangerously-load-development-channels for local dev)`,
299
+ }
300
+ }
301
+ }
302
+ } else {
303
+ // server-kind: allowlist schema is {marketplace, plugin} — a server entry
304
+ // can never match. Without this, --channels server:plugin:foo:bar would
305
+ // match a plugin's runtime name and register with no allowlist check.
306
+ if (!entry.dev) {
307
+ return {
308
+ action: 'skip',
309
+ kind: 'allowlist',
310
+ reason: `server ${entry.name} is not on the approved channels allowlist (use --dangerously-load-development-channels for local dev)`,
311
+ }
312
+ }
313
+ }
314
+
315
+ return { action: 'register' }
316
+ }
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Permission prompts over channels (Telegram, iMessage, Discord).
3
+ *
4
+ * Mirrors `BridgePermissionCallbacks` — when CC hits a permission dialog,
5
+ * it ALSO sends the prompt via active channels and races the reply against
6
+ * local UI / bridge / hooks / classifier. First resolver wins via claim().
7
+ *
8
+ * Inbound is a structured event: the server parses the user's "yes tbxkq"
9
+ * reply and emits notifications/claude/channel/permission with
10
+ * {request_id, behavior}. CC never sees the reply as text — approval
11
+ * requires the server to deliberately emit that specific event, not just
12
+ * relay content. Servers opt in by declaring
13
+ * capabilities.experimental['claude/channel/permission'].
14
+ *
15
+ * Kenneth's "would this let Claude self-approve?": the approving party is
16
+ * the human via the channel, not Claude. But the trust boundary isn't the
17
+ * terminal — it's the allowlist (tengu_harbor_ledger). A compromised
18
+ * channel server CAN fabricate "yes <id>" without the human seeing the
19
+ * prompt. Accepted risk: a compromised channel already has unlimited
20
+ * conversation-injection turns (social-engineer over time, wait for
21
+ * acceptEdits, etc.); inject-then-self-approve is faster, not more
22
+ * capable. The dialog slows a compromised channel; it doesn't stop one.
23
+ * See PR discussion 2956440848.
24
+ */
25
+
26
+ import { jsonStringify } from '../../utils/slowOperations.js'
27
+ import { getFeatureValue_CACHED_MAY_BE_STALE } from '../analytics/growthbook.js'
28
+
29
+ /**
30
+ * GrowthBook runtime gate — separate from the channels gate (tengu_harbor)
31
+ * so channels can ship without permission-relay riding along (Kenneth: "no
32
+ * bake time if it goes out tomorrow"). Default false; flip without a release.
33
+ * Checked once at useManageMCPConnections mount — mid-session flag changes
34
+ * don't apply until restart.
35
+ */
36
+ export function isChannelPermissionRelayEnabled(): boolean {
37
+ return getFeatureValue_CACHED_MAY_BE_STALE('tengu_harbor_permissions', false)
38
+ }
39
+
40
+ export type ChannelPermissionResponse = {
41
+ behavior: 'allow' | 'deny'
42
+ /** Which channel server the reply came from (e.g., "plugin:telegram:tg"). */
43
+ fromServer: string
44
+ }
45
+
46
+ export type ChannelPermissionCallbacks = {
47
+ /** Register a resolver for a request ID. Returns unsubscribe. */
48
+ onResponse(
49
+ requestId: string,
50
+ handler: (response: ChannelPermissionResponse) => void,
51
+ ): () => void
52
+ /** Resolve a pending request from a structured channel event
53
+ * (notifications/claude/channel/permission). Returns true if the ID
54
+ * was pending — the server parsed the user's reply and emitted
55
+ * {request_id, behavior}; we just match against the map. */
56
+ resolve(
57
+ requestId: string,
58
+ behavior: 'allow' | 'deny',
59
+ fromServer: string,
60
+ ): boolean
61
+ }
62
+
63
+ /**
64
+ * Reply format spec for channel servers to implement:
65
+ * /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i
66
+ *
67
+ * 5 lowercase letters, no 'l' (looks like 1/I). Case-insensitive (phone
68
+ * autocorrect). No bare yes/no (conversational). No prefix/suffix chatter.
69
+ *
70
+ * CC generates the ID and sends the prompt. The SERVER parses the user's
71
+ * reply and emits notifications/claude/channel/permission with {request_id,
72
+ * behavior} — CC doesn't regex-match text anymore. Exported so plugins can
73
+ * import the exact regex rather than hand-copying it.
74
+ */
75
+ export const PERMISSION_REPLY_RE = /^\s*(y|yes|n|no)\s+([a-km-z]{5})\s*$/i
76
+
77
+ // 25-letter alphabet: a-z minus 'l' (looks like 1/I). 25^5 ≈ 9.8M space.
78
+ const ID_ALPHABET = 'abcdefghijkmnopqrstuvwxyz'
79
+
80
+ // Substring blocklist — 5 random letters can spell things (Kenneth, in the
81
+ // launch thread: "this is why i bias to numbers, hard to have anything worse
82
+ // than 80085"). Non-exhaustive, covers the send-to-your-boss-by-accident
83
+ // tier. If a generated ID contains any of these, re-hash with a salt.
84
+ // prettier-ignore
85
+ const ID_AVOID_SUBSTRINGS = [
86
+ 'fuck',
87
+ 'shit',
88
+ 'cunt',
89
+ 'cock',
90
+ 'dick',
91
+ 'twat',
92
+ 'piss',
93
+ 'crap',
94
+ 'bitch',
95
+ 'whore',
96
+ 'ass',
97
+ 'tit',
98
+ 'cum',
99
+ 'fag',
100
+ 'dyke',
101
+ 'nig',
102
+ 'kike',
103
+ 'rape',
104
+ 'nazi',
105
+ 'damn',
106
+ 'poo',
107
+ 'pee',
108
+ 'wank',
109
+ 'anus',
110
+ ]
111
+
112
+ function hashToId(input: string): string {
113
+ // FNV-1a → uint32, then base-25 encode. Not crypto, just a stable
114
+ // short letters-only ID. 32 bits / log2(25) ≈ 6.9 letters of entropy;
115
+ // taking 5 wastes a little, plenty for this.
116
+ let h = 0x811c9dc5
117
+ for (let i = 0; i < input.length; i++) {
118
+ h ^= input.charCodeAt(i)
119
+ h = Math.imul(h, 0x01000193)
120
+ }
121
+ h = h >>> 0
122
+ let s = ''
123
+ for (let i = 0; i < 5; i++) {
124
+ s += ID_ALPHABET[h % 25]
125
+ h = Math.floor(h / 25)
126
+ }
127
+ return s
128
+ }
129
+
130
+ /**
131
+ * Short ID from a toolUseID. 5 letters from a 25-char alphabet (a-z minus
132
+ * 'l' — looks like 1/I in many fonts). 25^5 ≈ 9.8M space, birthday
133
+ * collision at 50% needs ~3K simultaneous pending prompts, absurd for a
134
+ * single interactive session. Letters-only so phone users don't switch
135
+ * keyboard modes (hex alternates a-f/0-9 → mode toggles). Re-hashes with
136
+ * a salt suffix if the result contains a blocklisted substring — 5 random
137
+ * letters can spell things you don't want in a text message to your phone.
138
+ * toolUseIDs are `toolu_` + base64-ish; we hash rather than slice.
139
+ */
140
+ export function shortRequestId(toolUseID: string): string {
141
+ // 7 length-3 × 3 positions × 25² + 15 length-4 × 2 × 25 + 2 length-5
142
+ // ≈ 13,877 blocked IDs out of 9.8M — roughly 1 in 700 hits the blocklist.
143
+ // Cap at 10 retries; (1/700)^10 is negligible.
144
+ let candidate = hashToId(toolUseID)
145
+ for (let salt = 0; salt < 10; salt++) {
146
+ if (!ID_AVOID_SUBSTRINGS.some(bad => candidate.includes(bad))) {
147
+ return candidate
148
+ }
149
+ candidate = hashToId(`${toolUseID}:${salt}`)
150
+ }
151
+ return candidate
152
+ }
153
+
154
+ /**
155
+ * Truncate tool input to a phone-sized JSON preview. 200 chars is
156
+ * roughly 3 lines on a narrow phone screen. Full input is in the local
157
+ * terminal dialog; the channel gets a summary so Write(5KB-file) doesn't
158
+ * flood your texts. Server decides whether/how to show it.
159
+ */
160
+ export function truncateForPreview(input: unknown): string {
161
+ try {
162
+ const s = jsonStringify(input)
163
+ return s.length > 200 ? s.slice(0, 200) + '…' : s
164
+ } catch {
165
+ return '(unserializable)'
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Filter MCP clients down to those that can relay permission prompts.
171
+ * Three conditions, ALL required: connected + in the session's --channels
172
+ * allowlist + declares BOTH capabilities. The second capability is the
173
+ * server's explicit opt-in — a relay-only channel never becomes a
174
+ * permission surface by accident (Kenneth's "users may be unpleasantly
175
+ * surprised"). Centralized here so a future fourth condition lands once.
176
+ */
177
+ export function filterPermissionRelayClients<
178
+ T extends {
179
+ type: string
180
+ name: string
181
+ capabilities?: { experimental?: Record<string, unknown> }
182
+ },
183
+ >(
184
+ clients: readonly T[],
185
+ isInAllowlist: (name: string) => boolean,
186
+ ): (T & { type: 'connected' })[] {
187
+ return clients.filter(
188
+ (c): c is T & { type: 'connected' } =>
189
+ c.type === 'connected' &&
190
+ isInAllowlist(c.name) &&
191
+ c.capabilities?.experimental?.['claude/channel'] !== undefined &&
192
+ c.capabilities?.experimental?.['claude/channel/permission'] !== undefined,
193
+ )
194
+ }
195
+
196
+ /**
197
+ * Factory for the callbacks object. The pending Map is closed over — NOT
198
+ * module-level (per src/CLAUDE.md), NOT in AppState (functions-in-state
199
+ * causes issues with equality/serialization). Same lifetime pattern as
200
+ * `replBridgePermissionCallbacks`: constructed once per session inside
201
+ * a React hook, stable reference stored in AppState.
202
+ *
203
+ * resolve() is called from the dedicated notification handler
204
+ * (notifications/claude/channel/permission) with the structured payload.
205
+ * The server already parsed "yes tbxkq" → {request_id, behavior}; we just
206
+ * match against the pending map. No regex on CC's side — text in the
207
+ * general channel can't accidentally approve anything.
208
+ */
209
+ export function createChannelPermissionCallbacks(): ChannelPermissionCallbacks {
210
+ const pending = new Map<
211
+ string,
212
+ (response: ChannelPermissionResponse) => void
213
+ >()
214
+
215
+ return {
216
+ onResponse(requestId, handler) {
217
+ // Lowercase here too — resolve() already does; asymmetry means a
218
+ // future caller passing a mixed-case ID would silently never match.
219
+ // shortRequestId always emits lowercase so this is a noop today,
220
+ // but the symmetry makes the contract explicit.
221
+ const key = requestId.toLowerCase()
222
+ pending.set(key, handler)
223
+ return () => {
224
+ pending.delete(key)
225
+ }
226
+ },
227
+
228
+ resolve(requestId, behavior, fromServer) {
229
+ const key = requestId.toLowerCase()
230
+ const resolver = pending.get(key)
231
+ if (!resolver) return false
232
+ // Delete BEFORE calling — if resolver throws or re-enters, the
233
+ // entry is already gone. Also handles duplicate events (second
234
+ // emission falls through — server bug or network dup, ignore).
235
+ pending.delete(key)
236
+ resolver({ behavior, fromServer })
237
+ return true
238
+ },
239
+ }
240
+ }