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,458 @@
1
+ // Scheduled prompts, stored in <project>/.claude/scheduled_tasks.json.
2
+ //
3
+ // Tasks come in two flavors:
4
+ // - One-shot (recurring: false/undefined) — fire once, then auto-delete.
5
+ // - Recurring (recurring: true) — fire on schedule, reschedule from now,
6
+ // persist until explicitly deleted via CronDelete or auto-expire after
7
+ // a configurable limit (DEFAULT_CRON_JITTER_CONFIG.recurringMaxAgeMs).
8
+ //
9
+ // File format:
10
+ // { "tasks": [{ id, cron, prompt, createdAt, recurring?, permanent? }] }
11
+
12
+ import { randomUUID } from 'crypto'
13
+ import { readFileSync } from 'fs'
14
+ import { mkdir, writeFile } from 'fs/promises'
15
+ import { join } from 'path'
16
+ import {
17
+ addSessionCronTask,
18
+ getProjectRoot,
19
+ getSessionCronTasks,
20
+ removeSessionCronTasks,
21
+ } from '../bootstrap/state.js'
22
+ import { computeNextCronRun, parseCronExpression } from './cron.js'
23
+ import { logForDebugging } from './debug.js'
24
+ import { isFsInaccessible } from './errors.js'
25
+ import { getFsImplementation } from './fsOperations.js'
26
+ import { safeParseJSON } from './json.js'
27
+ import { logError } from './log.js'
28
+ import { jsonStringify } from './slowOperations.js'
29
+
30
+ export type CronTask = {
31
+ id: string
32
+ /** 5-field cron string (local time) — validated on write, re-validated on read. */
33
+ cron: string
34
+ /** Prompt to enqueue when the task fires. */
35
+ prompt: string
36
+ /** Epoch ms when the task was created. Anchor for missed-task detection. */
37
+ createdAt: number
38
+ /**
39
+ * Epoch ms of the most recent fire. Written back by the scheduler after
40
+ * each recurring fire so next-fire computation survives process restarts.
41
+ * The scheduler anchors first-sight from `lastFiredAt ?? createdAt` — a
42
+ * never-fired task uses createdAt (correct for pinned crons like
43
+ * `30 14 27 2 *` whose next-from-now is next year); a fired-before task
44
+ * reconstructs the same `nextFireAt` the prior process had in memory.
45
+ * Never set for one-shots (they're deleted on fire).
46
+ */
47
+ lastFiredAt?: number
48
+ /** When true, the task reschedules after firing instead of being deleted. */
49
+ recurring?: boolean
50
+ /**
51
+ * When true, the task is exempt from recurringMaxAgeMs auto-expiry.
52
+ * System escape hatch for assistant mode's built-in tasks (catch-up/
53
+ * morning-checkin/dream) — the installer's writeIfMissing() skips existing
54
+ * files so re-install can't recreate them. Not settable via CronCreateTool;
55
+ * only written directly to scheduled_tasks.json by src/assistant/install.ts.
56
+ */
57
+ permanent?: boolean
58
+ /**
59
+ * Runtime-only flag. false → session-scoped (never written to disk).
60
+ * File-backed tasks leave this undefined; writeCronTasks strips it so
61
+ * the on-disk shape stays { id, cron, prompt, createdAt, lastFiredAt?, recurring?, permanent? }.
62
+ */
63
+ durable?: boolean
64
+ /**
65
+ * Runtime-only. When set, the task was created by an in-process teammate.
66
+ * The scheduler routes fires to that teammate's queue instead of the main
67
+ * REPL's. Never written to disk (teammate crons are always session-only).
68
+ */
69
+ agentId?: string
70
+ }
71
+
72
+ type CronFile = { tasks: CronTask[] }
73
+
74
+ const CRON_FILE_REL = join('.claude', 'scheduled_tasks.json')
75
+
76
+ /**
77
+ * Path to the cron file. `dir` defaults to getProjectRoot() — pass it
78
+ * explicitly from contexts that don't run through main.tsx (e.g. the Agent
79
+ * SDK daemon, which has no bootstrap state).
80
+ */
81
+ export function getCronFilePath(dir?: string): string {
82
+ return join(dir ?? getProjectRoot(), CRON_FILE_REL)
83
+ }
84
+
85
+ /**
86
+ * Read and parse .claude/scheduled_tasks.json. Returns an empty task list if the file
87
+ * is missing, empty, or malformed. Tasks with invalid cron strings are
88
+ * silently dropped (logged at debug level) so a single bad entry never
89
+ * blocks the whole file.
90
+ */
91
+ export async function readCronTasks(dir?: string): Promise<CronTask[]> {
92
+ const fs = getFsImplementation()
93
+ let raw: string
94
+ try {
95
+ raw = await fs.readFile(getCronFilePath(dir), { encoding: 'utf-8' })
96
+ } catch (e: unknown) {
97
+ if (isFsInaccessible(e)) return []
98
+ logError(e)
99
+ return []
100
+ }
101
+
102
+ const parsed = safeParseJSON(raw, false)
103
+ if (!parsed || typeof parsed !== 'object') return []
104
+ const file = parsed as Partial<CronFile>
105
+ if (!Array.isArray(file.tasks)) return []
106
+
107
+ const out: CronTask[] = []
108
+ for (const t of file.tasks) {
109
+ if (
110
+ !t ||
111
+ typeof t.id !== 'string' ||
112
+ typeof t.cron !== 'string' ||
113
+ typeof t.prompt !== 'string' ||
114
+ typeof t.createdAt !== 'number'
115
+ ) {
116
+ logForDebugging(
117
+ `[ScheduledTasks] skipping malformed task: ${jsonStringify(t)}`,
118
+ )
119
+ continue
120
+ }
121
+ if (!parseCronExpression(t.cron)) {
122
+ logForDebugging(
123
+ `[ScheduledTasks] skipping task ${t.id} with invalid cron '${t.cron}'`,
124
+ )
125
+ continue
126
+ }
127
+ out.push({
128
+ id: t.id,
129
+ cron: t.cron,
130
+ prompt: t.prompt,
131
+ createdAt: t.createdAt,
132
+ ...(typeof t.lastFiredAt === 'number'
133
+ ? { lastFiredAt: t.lastFiredAt }
134
+ : {}),
135
+ ...(t.recurring ? { recurring: true } : {}),
136
+ ...(t.permanent ? { permanent: true } : {}),
137
+ })
138
+ }
139
+ return out
140
+ }
141
+
142
+ /**
143
+ * Sync check for whether the cron file has any valid tasks. Used by
144
+ * cronScheduler.start() to decide whether to auto-enable. One file read.
145
+ */
146
+ export function hasCronTasksSync(dir?: string): boolean {
147
+ let raw: string
148
+ try {
149
+ // eslint-disable-next-line custom-rules/no-sync-fs -- called once from cronScheduler.start()
150
+ raw = readFileSync(getCronFilePath(dir), 'utf-8')
151
+ } catch {
152
+ return false
153
+ }
154
+ const parsed = safeParseJSON(raw, false)
155
+ if (!parsed || typeof parsed !== 'object') return false
156
+ const tasks = (parsed as Partial<CronFile>).tasks
157
+ return Array.isArray(tasks) && tasks.length > 0
158
+ }
159
+
160
+ /**
161
+ * Overwrite .claude/scheduled_tasks.json with the given tasks. Creates .claude/ if
162
+ * missing. Empty task list writes an empty file (rather than deleting) so
163
+ * the file watcher sees a change event on last-task-removed.
164
+ */
165
+ export async function writeCronTasks(
166
+ tasks: CronTask[],
167
+ dir?: string,
168
+ ): Promise<void> {
169
+ const root = dir ?? getProjectRoot()
170
+ await mkdir(join(root, '.claude'), { recursive: true })
171
+ // Strip the runtime-only `durable` flag — everything on disk is durable
172
+ // by definition, and keeping the flag out means readCronTasks() naturally
173
+ // yields durable: undefined without having to set it explicitly.
174
+ const body: CronFile = {
175
+ tasks: tasks.map(({ durable: _durable, ...rest }) => rest),
176
+ }
177
+ await writeFile(
178
+ getCronFilePath(root),
179
+ jsonStringify(body, null, 2) + '\n',
180
+ 'utf-8',
181
+ )
182
+ }
183
+
184
+ /**
185
+ * Append a task. Returns the generated id. Caller is responsible for having
186
+ * already validated the cron string (the tool does this via validateInput).
187
+ *
188
+ * When `durable` is false the task is held in process memory only
189
+ * (bootstrap/state.ts) — it fires on schedule this session but is never
190
+ * written to .claude/scheduled_tasks.json and dies with the process. The
191
+ * scheduler merges session tasks into its tick loop directly, so no file
192
+ * change event is needed.
193
+ */
194
+ export async function addCronTask(
195
+ cron: string,
196
+ prompt: string,
197
+ recurring: boolean,
198
+ durable: boolean,
199
+ agentId?: string,
200
+ ): Promise<string> {
201
+ // Short ID — 8 hex chars is plenty for MAX_JOBS=50, avoids slice/prefix
202
+ // juggling between the tool layer (shows short IDs) and disk.
203
+ const id = randomUUID().slice(0, 8)
204
+ const task = {
205
+ id,
206
+ cron,
207
+ prompt,
208
+ createdAt: Date.now(),
209
+ ...(recurring ? { recurring: true } : {}),
210
+ }
211
+ if (!durable) {
212
+ addSessionCronTask({ ...task, ...(agentId ? { agentId } : {}) })
213
+ return id
214
+ }
215
+ const tasks = await readCronTasks()
216
+ tasks.push(task)
217
+ await writeCronTasks(tasks)
218
+ return id
219
+ }
220
+
221
+ /**
222
+ * Remove tasks by id. No-op if none match (e.g. another session raced us).
223
+ * Used for both fire-once cleanup and explicit CronDelete.
224
+ *
225
+ * When called with `dir` undefined (REPL path), also sweeps the in-memory
226
+ * session store — the caller doesn't know which store an id lives in.
227
+ * Daemon callers pass `dir` explicitly; they have no session, and the
228
+ * `dir !== undefined` guard keeps this function from touching bootstrap
229
+ * state on that path (tests enforce this).
230
+ */
231
+ export async function removeCronTasks(
232
+ ids: string[],
233
+ dir?: string,
234
+ ): Promise<void> {
235
+ if (ids.length === 0) return
236
+ // Sweep session store first. If every id was accounted for there, we're
237
+ // done — skip the file read entirely. removeSessionCronTasks is a no-op
238
+ // (returns 0) on miss, so pre-existing durable-delete paths fall through
239
+ // without allocating.
240
+ if (dir === undefined && removeSessionCronTasks(ids) === ids.length) {
241
+ return
242
+ }
243
+ const idSet = new Set(ids)
244
+ const tasks = await readCronTasks(dir)
245
+ const remaining = tasks.filter(t => !idSet.has(t.id))
246
+ if (remaining.length === tasks.length) return
247
+ await writeCronTasks(remaining, dir)
248
+ }
249
+
250
+ /**
251
+ * Stamp `lastFiredAt` on the given recurring tasks and write back. Batched
252
+ * so N fires in one scheduler tick = one read-modify-write, not N. Only
253
+ * touches file-backed tasks — session tasks die with the process, no point
254
+ * persisting their fire time. No-op if none of the ids match (task was
255
+ * deleted between fire and write — e.g. user ran CronDelete mid-tick).
256
+ *
257
+ * Scheduler lock means at most one process calls this; chokidar picks up
258
+ * the write and triggers a reload which re-seeds `nextFireAt` from the
259
+ * just-written `lastFiredAt` — idempotent (same computation, same answer).
260
+ */
261
+ export async function markCronTasksFired(
262
+ ids: string[],
263
+ firedAt: number,
264
+ dir?: string,
265
+ ): Promise<void> {
266
+ if (ids.length === 0) return
267
+ const idSet = new Set(ids)
268
+ const tasks = await readCronTasks(dir)
269
+ let changed = false
270
+ for (const t of tasks) {
271
+ if (idSet.has(t.id)) {
272
+ t.lastFiredAt = firedAt
273
+ changed = true
274
+ }
275
+ }
276
+ if (!changed) return
277
+ await writeCronTasks(tasks, dir)
278
+ }
279
+
280
+ /**
281
+ * File-backed tasks + session-only tasks, merged. Session tasks get
282
+ * `durable: false` so callers can distinguish them. File tasks are
283
+ * returned as-is (durable undefined → truthy).
284
+ *
285
+ * Only merges when `dir` is undefined — daemon callers (explicit `dir`)
286
+ * have no session store to merge with.
287
+ */
288
+ export async function listAllCronTasks(dir?: string): Promise<CronTask[]> {
289
+ const fileTasks = await readCronTasks(dir)
290
+ if (dir !== undefined) return fileTasks
291
+ const sessionTasks = getSessionCronTasks().map(t => ({
292
+ ...t,
293
+ durable: false as const,
294
+ }))
295
+ return [...fileTasks, ...sessionTasks]
296
+ }
297
+
298
+ /**
299
+ * Next fire time in epoch ms for a cron string, strictly after `fromMs`.
300
+ * Returns null if invalid or no match in the next 366 days.
301
+ */
302
+ export function nextCronRunMs(cron: string, fromMs: number): number | null {
303
+ const fields = parseCronExpression(cron)
304
+ if (!fields) return null
305
+ const next = computeNextCronRun(fields, new Date(fromMs))
306
+ return next ? next.getTime() : null
307
+ }
308
+
309
+ /**
310
+ * Cron scheduler tuning knobs. Sourced at runtime from the
311
+ * `tengu_kairos_cron_config` GrowthBook JSON config (see cronJitterConfig.ts)
312
+ * so ops can adjust behavior fleet-wide without shipping a client build.
313
+ * Defaults here preserve the pre-config behavior exactly.
314
+ */
315
+ export type CronJitterConfig = {
316
+ /** Recurring-task forward delay as a fraction of the interval between fires. */
317
+ recurringFrac: number
318
+ /** Upper bound on recurring forward delay regardless of interval length. */
319
+ recurringCapMs: number
320
+ /** One-shot backward lead: maximum ms a task may fire early. */
321
+ oneShotMaxMs: number
322
+ /**
323
+ * One-shot backward lead: minimum ms a task fires early when the minute-mod
324
+ * gate matches. 0 = taskIds hashing near zero fire on the exact mark. Raise
325
+ * this to guarantee nobody lands on the wall-clock boundary.
326
+ */
327
+ oneShotFloorMs: number
328
+ /**
329
+ * Jitter fires landing on minutes where `minute % N === 0`. 30 → :00/:30
330
+ * (the human-rounding hotspots). 15 → :00/:15/:30/:45. 1 → every minute.
331
+ */
332
+ oneShotMinuteMod: number
333
+ /**
334
+ * Recurring tasks auto-expire this many ms after creation (unless marked
335
+ * `permanent`). Cron is the primary driver of multi-day sessions (p99
336
+ * uptime 61min → 53h post-#19931), and unbounded recurrence lets Tier-1
337
+ * heap leaks compound indefinitely. The default (7 days) covers "check
338
+ * my PRs every hour this week" workflows while capping worst-case
339
+ * session lifetime. Permanent tasks (assistant mode's catch-up/
340
+ * morning-checkin/dream) never age out — they can't be recreated if
341
+ * deleted because install.ts's writeIfMissing() skips existing files.
342
+ *
343
+ * `0` = unlimited (tasks never auto-expire).
344
+ */
345
+ recurringMaxAgeMs: number
346
+ }
347
+
348
+ export const DEFAULT_CRON_JITTER_CONFIG: CronJitterConfig = {
349
+ recurringFrac: 0.1,
350
+ recurringCapMs: 15 * 60 * 1000,
351
+ oneShotMaxMs: 90 * 1000,
352
+ oneShotFloorMs: 0,
353
+ oneShotMinuteMod: 30,
354
+ recurringMaxAgeMs: 7 * 24 * 60 * 60 * 1000,
355
+ }
356
+
357
+ /**
358
+ * taskId is an 8-hex-char UUID slice (see {@link addCronTask}) → parse as
359
+ * u32 → [0, 1). Stable across restarts, uniformly distributed across the
360
+ * fleet. Non-hex ids (hand-edited JSON) fall back to 0 = no jitter.
361
+ */
362
+ function jitterFrac(taskId: string): number {
363
+ const frac = parseInt(taskId.slice(0, 8), 16) / 0x1_0000_0000
364
+ return Number.isFinite(frac) ? frac : 0
365
+ }
366
+
367
+ /**
368
+ * Same as {@link nextCronRunMs}, plus a deterministic per-task delay to
369
+ * avoid a thundering herd when many sessions schedule the same cron string
370
+ * (e.g. `0 * * * *` → everyone hits inference at :00).
371
+ *
372
+ * The delay is proportional to the current gap between fires
373
+ * ({@link CronJitterConfig.recurringFrac}, capped at
374
+ * {@link CronJitterConfig.recurringCapMs}) so at defaults an hourly task
375
+ * spreads across [:00, :06) but a per-minute task only spreads by a few
376
+ * seconds.
377
+ *
378
+ * Only used for recurring tasks. One-shot tasks use
379
+ * {@link oneShotJitteredNextCronRunMs} (backward jitter, minute-gated).
380
+ */
381
+ export function jitteredNextCronRunMs(
382
+ cron: string,
383
+ fromMs: number,
384
+ taskId: string,
385
+ cfg: CronJitterConfig = DEFAULT_CRON_JITTER_CONFIG,
386
+ ): number | null {
387
+ const t1 = nextCronRunMs(cron, fromMs)
388
+ if (t1 === null) return null
389
+ const t2 = nextCronRunMs(cron, t1)
390
+ // No second match in the next year (e.g. pinned date) → nothing to
391
+ // proportion against, and near-certainly not a herd risk. Fire on t1.
392
+ if (t2 === null) return t1
393
+ const jitter = Math.min(
394
+ jitterFrac(taskId) * cfg.recurringFrac * (t2 - t1),
395
+ cfg.recurringCapMs,
396
+ )
397
+ return t1 + jitter
398
+ }
399
+
400
+ /**
401
+ * Same as {@link nextCronRunMs}, minus a deterministic per-task lead time
402
+ * when the fire time lands on a minute boundary matching
403
+ * {@link CronJitterConfig.oneShotMinuteMod}.
404
+ *
405
+ * One-shot tasks are user-pinned ("remind me at 3pm") so delaying them
406
+ * breaks the contract — but firing slightly early is invisible and spreads
407
+ * the inference spike from everyone picking the same round wall-clock time.
408
+ * At defaults (mod 30, max 90 s, floor 0) only :00 and :30 get jitter,
409
+ * because humans round to the half-hour.
410
+ *
411
+ * During an incident, ops can push `tengu_kairos_cron_config` with e.g.
412
+ * `{oneShotMinuteMod: 15, oneShotMaxMs: 300000, oneShotFloorMs: 30000}` to
413
+ * spread :00/:15/:30/:45 fires across a [t-5min, t-30s] window — every task
414
+ * gets at least 30 s of lead, so nobody lands on the exact mark.
415
+ *
416
+ * Checks the computed fire time rather than the cron string so
417
+ * `0 15 * * *`, step expressions, and `0,30 9 * * *` all get jitter
418
+ * when they land on a matching minute. Clamped to `fromMs` so a task created
419
+ * inside its own jitter window doesn't fire before it was created.
420
+ */
421
+ export function oneShotJitteredNextCronRunMs(
422
+ cron: string,
423
+ fromMs: number,
424
+ taskId: string,
425
+ cfg: CronJitterConfig = DEFAULT_CRON_JITTER_CONFIG,
426
+ ): number | null {
427
+ const t1 = nextCronRunMs(cron, fromMs)
428
+ if (t1 === null) return null
429
+ // Cron resolution is 1 minute → computed times always have :00 seconds,
430
+ // so a minute-field check is sufficient to identify the hot marks.
431
+ // getMinutes() (local), not getUTCMinutes(): cron is evaluated in local
432
+ // time, and "user picked a round time" means round in *their* TZ. In
433
+ // half-hour-offset zones (India UTC+5:30) local :00 is UTC :30 — the
434
+ // UTC check would jitter the wrong marks.
435
+ if (new Date(t1).getMinutes() % cfg.oneShotMinuteMod !== 0) return t1
436
+ // floor + frac * (max - floor) → uniform over [floor, max). With floor=0
437
+ // this reduces to the original frac * max. With floor>0, even a taskId
438
+ // hashing to 0 gets `floor` ms of lead — nobody fires on the exact mark.
439
+ const lead =
440
+ cfg.oneShotFloorMs +
441
+ jitterFrac(taskId) * (cfg.oneShotMaxMs - cfg.oneShotFloorMs)
442
+ // t1 > fromMs is guaranteed by nextCronRunMs (strictly after), so the
443
+ // max() only bites when the task was created inside its own lead window.
444
+ return Math.max(t1 - lead, fromMs)
445
+ }
446
+
447
+ /**
448
+ * A task is "missed" when its next scheduled run (computed from createdAt)
449
+ * is in the past. Surfaced to the user at startup. Works for both one-shot
450
+ * and recurring tasks — a recurring task whose window passed while Claude
451
+ * was down is still "missed".
452
+ */
453
+ export function findMissedTasks(tasks: CronTask[], nowMs: number): CronTask[] {
454
+ return tasks.filter(t => {
455
+ const next = nextCronRunMs(t.cron, t.createdAt)
456
+ return next !== null && next < nowMs
457
+ })
458
+ }
@@ -0,0 +1,195 @@
1
+ // Scheduler lease lock for .claude/scheduled_tasks.json.
2
+ //
3
+ // When multiple Claude sessions run in the same project directory, only one
4
+ // should drive the cron scheduler. The first session to acquire this lock
5
+ // becomes the scheduler; others stay passive and periodically probe the lock.
6
+ // If the owner dies (PID no longer running), a passive session takes over.
7
+ //
8
+ // Pattern mirrors computerUseLock.ts: O_EXCL atomic create, PID liveness
9
+ // probe, stale-lock recovery, cleanup-on-exit.
10
+
11
+ import { mkdir, readFile, unlink, writeFile } from 'fs/promises'
12
+ import { dirname, join } from 'path'
13
+ import { z } from 'zod/v4'
14
+ import { getProjectRoot, getSessionId } from '../bootstrap/state.js'
15
+ import { registerCleanup } from './cleanupRegistry.js'
16
+ import { logForDebugging } from './debug.js'
17
+ import { getErrnoCode } from './errors.js'
18
+ import { isProcessRunning } from './genericProcessUtils.js'
19
+ import { safeParseJSON } from './json.js'
20
+ import { lazySchema } from './lazySchema.js'
21
+ import { jsonStringify } from './slowOperations.js'
22
+
23
+ const LOCK_FILE_REL = join('.claude', 'scheduled_tasks.lock')
24
+
25
+ const schedulerLockSchema = lazySchema(() =>
26
+ z.object({
27
+ sessionId: z.string(),
28
+ pid: z.number(),
29
+ acquiredAt: z.number(),
30
+ }),
31
+ )
32
+ type SchedulerLock = z.infer<ReturnType<typeof schedulerLockSchema>>
33
+
34
+ /**
35
+ * Options for out-of-REPL callers (Agent SDK daemon) that don't have
36
+ * bootstrap state. When omitted, falls back to getProjectRoot() +
37
+ * getSessionId() as before. lockIdentity should be stable for the lifetime
38
+ * of one daemon process (e.g. a randomUUID() captured at startup).
39
+ */
40
+ export type SchedulerLockOptions = {
41
+ dir?: string
42
+ lockIdentity?: string
43
+ }
44
+
45
+ let unregisterCleanup: (() => void) | undefined
46
+ // Suppress repeat "held by X" log lines when polling a live owner.
47
+ let lastBlockedBy: string | undefined
48
+
49
+ function getLockPath(dir?: string): string {
50
+ return join(dir ?? getProjectRoot(), LOCK_FILE_REL)
51
+ }
52
+
53
+ async function readLock(dir?: string): Promise<SchedulerLock | undefined> {
54
+ let raw: string
55
+ try {
56
+ raw = await readFile(getLockPath(dir), 'utf8')
57
+ } catch {
58
+ return undefined
59
+ }
60
+ const result = schedulerLockSchema().safeParse(safeParseJSON(raw, false))
61
+ return result.success ? result.data : undefined
62
+ }
63
+
64
+ async function tryCreateExclusive(
65
+ lock: SchedulerLock,
66
+ dir?: string,
67
+ ): Promise<boolean> {
68
+ const path = getLockPath(dir)
69
+ const body = jsonStringify(lock)
70
+ try {
71
+ await writeFile(path, body, { flag: 'wx' })
72
+ return true
73
+ } catch (e: unknown) {
74
+ const code = getErrnoCode(e)
75
+ if (code === 'EEXIST') return false
76
+ if (code === 'ENOENT') {
77
+ // .claude/ doesn't exist yet — create it and retry once. In steady
78
+ // state the dir already exists (scheduled_tasks.json lives there),
79
+ // so this path is hit at most once.
80
+ await mkdir(dirname(path), { recursive: true })
81
+ try {
82
+ await writeFile(path, body, { flag: 'wx' })
83
+ return true
84
+ } catch (retryErr: unknown) {
85
+ if (getErrnoCode(retryErr) === 'EEXIST') return false
86
+ throw retryErr
87
+ }
88
+ }
89
+ throw e
90
+ }
91
+ }
92
+
93
+ function registerLockCleanup(opts?: SchedulerLockOptions): void {
94
+ unregisterCleanup?.()
95
+ unregisterCleanup = registerCleanup(async () => {
96
+ await releaseSchedulerLock(opts)
97
+ })
98
+ }
99
+
100
+ /**
101
+ * Try to acquire the scheduler lock for the current session.
102
+ * Returns true on success, false if another live session holds it.
103
+ *
104
+ * Uses O_EXCL ('wx') for atomic test-and-set. If the file exists:
105
+ * - Already ours → true (idempotent re-acquire)
106
+ * - Another live PID → false
107
+ * - Stale (PID dead / corrupt) → unlink and retry exclusive create once
108
+ *
109
+ * If two sessions race to recover a stale lock, only one create succeeds.
110
+ */
111
+ export async function tryAcquireSchedulerLock(
112
+ opts?: SchedulerLockOptions,
113
+ ): Promise<boolean> {
114
+ const dir = opts?.dir
115
+ // "sessionId" in the lock file is really just a stable owner key. REPL
116
+ // uses getSessionId(); daemon callers supply their own UUID. PID remains
117
+ // the liveness signal regardless.
118
+ const sessionId = opts?.lockIdentity ?? getSessionId()
119
+ const lock: SchedulerLock = {
120
+ sessionId,
121
+ pid: process.pid,
122
+ acquiredAt: Date.now(),
123
+ }
124
+
125
+ if (await tryCreateExclusive(lock, dir)) {
126
+ lastBlockedBy = undefined
127
+ registerLockCleanup(opts)
128
+ logForDebugging(
129
+ `[ScheduledTasks] acquired scheduler lock (PID ${process.pid})`,
130
+ )
131
+ return true
132
+ }
133
+
134
+ const existing = await readLock(dir)
135
+
136
+ // Already ours (idempotent). After --resume the session ID is restored
137
+ // but the process has a new PID — update the lock file so other sessions
138
+ // see a live PID and don't steal it.
139
+ if (existing?.sessionId === sessionId) {
140
+ if (existing.pid !== process.pid) {
141
+ await writeFile(getLockPath(dir), jsonStringify(lock))
142
+ registerLockCleanup(opts)
143
+ }
144
+ return true
145
+ }
146
+
147
+ // Corrupt or unparseable — treat as stale.
148
+ // Another live session — blocked.
149
+ if (existing && isProcessRunning(existing.pid)) {
150
+ if (lastBlockedBy !== existing.sessionId) {
151
+ lastBlockedBy = existing.sessionId
152
+ logForDebugging(
153
+ `[ScheduledTasks] scheduler lock held by session ${existing.sessionId} (PID ${existing.pid})`,
154
+ )
155
+ }
156
+ return false
157
+ }
158
+
159
+ // Stale — unlink and retry the exclusive create once.
160
+ if (existing) {
161
+ logForDebugging(
162
+ `[ScheduledTasks] recovering stale scheduler lock from PID ${existing.pid}`,
163
+ )
164
+ }
165
+ await unlink(getLockPath(dir)).catch(() => {})
166
+ if (await tryCreateExclusive(lock, dir)) {
167
+ lastBlockedBy = undefined
168
+ registerLockCleanup(opts)
169
+ return true
170
+ }
171
+ // Another session won the recovery race.
172
+ return false
173
+ }
174
+
175
+ /**
176
+ * Release the scheduler lock if the current session owns it.
177
+ */
178
+ export async function releaseSchedulerLock(
179
+ opts?: SchedulerLockOptions,
180
+ ): Promise<void> {
181
+ unregisterCleanup?.()
182
+ unregisterCleanup = undefined
183
+ lastBlockedBy = undefined
184
+
185
+ const dir = opts?.dir
186
+ const sessionId = opts?.lockIdentity ?? getSessionId()
187
+ const existing = await readLock(dir)
188
+ if (!existing || existing.sessionId !== sessionId) return
189
+ try {
190
+ await unlink(getLockPath(dir))
191
+ logForDebugging('[ScheduledTasks] released scheduler lock')
192
+ } catch {
193
+ // Already gone.
194
+ }
195
+ }