@xortex/xcode 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (934) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +171 -0
  3. package/bin/xcode +127 -0
  4. package/bin/xcode-test +84 -0
  5. package/bin/xcode.cmd +31 -0
  6. package/constants/apiLimits.ts +94 -0
  7. package/constants/betas.ts +52 -0
  8. package/constants/common.ts +33 -0
  9. package/constants/cyberRiskInstruction.ts +24 -0
  10. package/constants/errorIds.ts +15 -0
  11. package/constants/figures.ts +45 -0
  12. package/constants/files.ts +156 -0
  13. package/constants/github-app.ts +144 -0
  14. package/constants/keys.ts +11 -0
  15. package/constants/messages.ts +1 -0
  16. package/constants/oauth.ts +234 -0
  17. package/constants/outputStyles.ts +216 -0
  18. package/constants/product.ts +76 -0
  19. package/constants/prompts.ts +939 -0
  20. package/constants/spinnerVerbs.ts +204 -0
  21. package/constants/system.ts +95 -0
  22. package/constants/systemPromptSections.ts +68 -0
  23. package/constants/toolLimits.ts +56 -0
  24. package/constants/tools.ts +112 -0
  25. package/constants/turnCompletionVerbs.ts +12 -0
  26. package/constants/xml.ts +86 -0
  27. package/entrypoints/agentSdkTypes.ts +443 -0
  28. package/entrypoints/cli.tsx +307 -0
  29. package/entrypoints/init.ts +340 -0
  30. package/entrypoints/mcp.ts +196 -0
  31. package/entrypoints/sandboxTypes.ts +156 -0
  32. package/entrypoints/sdk/controlSchemas.ts +663 -0
  33. package/entrypoints/sdk/coreSchemas.ts +1889 -0
  34. package/entrypoints/sdk/coreTypes.generated.ts +2 -0
  35. package/entrypoints/sdk/coreTypes.ts +62 -0
  36. package/entrypoints/sdk/runtimeTypes.ts +140 -0
  37. package/entrypoints/sdk/sdkUtilityTypes.ts +3 -0
  38. package/entrypoints/sdk/toolTypes.ts +90 -0
  39. package/main.tsx +4686 -0
  40. package/package.json +120 -0
  41. package/services/AgentSummary/agentSummary.ts +179 -0
  42. package/services/MagicDocs/magicDocs.ts +254 -0
  43. package/services/MagicDocs/prompts.ts +127 -0
  44. package/services/PromptSuggestion/promptSuggestion.ts +523 -0
  45. package/services/PromptSuggestion/speculation.ts +991 -0
  46. package/services/SessionMemory/prompts.ts +324 -0
  47. package/services/SessionMemory/sessionMemory.ts +495 -0
  48. package/services/SessionMemory/sessionMemoryUtils.ts +207 -0
  49. package/services/analytics/config.ts +38 -0
  50. package/services/analytics/datadog.ts +307 -0
  51. package/services/analytics/firstPartyEventLogger.ts +449 -0
  52. package/services/analytics/firstPartyEventLoggingExporter.ts +806 -0
  53. package/services/analytics/growthbook.ts +1155 -0
  54. package/services/analytics/index.ts +173 -0
  55. package/services/analytics/metadata.ts +973 -0
  56. package/services/analytics/sink.ts +114 -0
  57. package/services/analytics/sinkKillswitch.ts +25 -0
  58. package/services/api/adminRequests.ts +119 -0
  59. package/services/api/bootstrap.ts +141 -0
  60. package/services/api/claude.ts +3422 -0
  61. package/services/api/client.ts +406 -0
  62. package/services/api/dumpPrompts.ts +226 -0
  63. package/services/api/emptyUsage.ts +22 -0
  64. package/services/api/errorUtils.ts +260 -0
  65. package/services/api/errors.ts +1207 -0
  66. package/services/api/filesApi.ts +748 -0
  67. package/services/api/firstTokenDate.ts +60 -0
  68. package/services/api/gemini.ts +359 -0
  69. package/services/api/geminiAdapter.ts +123 -0
  70. package/services/api/geminiClient.ts +291 -0
  71. package/services/api/grove.ts +357 -0
  72. package/services/api/logging.ts +788 -0
  73. package/services/api/metricsOptOut.ts +159 -0
  74. package/services/api/openRouterClient.ts +453 -0
  75. package/services/api/overageCreditGrant.ts +137 -0
  76. package/services/api/promptCacheBreakDetection.ts +727 -0
  77. package/services/api/referral.ts +281 -0
  78. package/services/api/sessionIngress.ts +514 -0
  79. package/services/api/ultrareviewQuota.ts +38 -0
  80. package/services/api/usage.ts +63 -0
  81. package/services/api/withRetry.ts +822 -0
  82. package/services/autoDream/autoDream.ts +324 -0
  83. package/services/autoDream/config.ts +21 -0
  84. package/services/autoDream/consolidationLock.ts +140 -0
  85. package/services/autoDream/consolidationPrompt.ts +65 -0
  86. package/services/awaySummary.ts +74 -0
  87. package/services/claudeAiLimits.ts +515 -0
  88. package/services/claudeAiLimitsHook.ts +23 -0
  89. package/services/compact/apiMicrocompact.ts +153 -0
  90. package/services/compact/autoCompact.ts +351 -0
  91. package/services/compact/compact.ts +1705 -0
  92. package/services/compact/compactWarningHook.ts +16 -0
  93. package/services/compact/compactWarningState.ts +18 -0
  94. package/services/compact/grouping.ts +63 -0
  95. package/services/compact/microCompact.ts +530 -0
  96. package/services/compact/postCompactCleanup.ts +77 -0
  97. package/services/compact/prompt.ts +374 -0
  98. package/services/compact/sessionMemoryCompact.ts +630 -0
  99. package/services/compact/timeBasedMCConfig.ts +43 -0
  100. package/services/diagnosticTracking.ts +397 -0
  101. package/services/extractMemories/extractMemories.ts +517 -0
  102. package/services/extractMemories/prompts.ts +154 -0
  103. package/services/internalLogging.ts +90 -0
  104. package/services/lsp/LSPClient.ts +447 -0
  105. package/services/lsp/LSPDiagnosticRegistry.ts +386 -0
  106. package/services/lsp/LSPServerInstance.ts +511 -0
  107. package/services/lsp/LSPServerManager.ts +420 -0
  108. package/services/lsp/config.ts +79 -0
  109. package/services/lsp/manager.ts +289 -0
  110. package/services/lsp/passiveFeedback.ts +328 -0
  111. package/services/mcp/InProcessTransport.ts +63 -0
  112. package/services/mcp/MCPConnectionManager.tsx +73 -0
  113. package/services/mcp/SdkControlTransport.ts +136 -0
  114. package/services/mcp/auth.ts +2465 -0
  115. package/services/mcp/channelAllowlist.ts +76 -0
  116. package/services/mcp/channelNotification.ts +316 -0
  117. package/services/mcp/channelPermissions.ts +240 -0
  118. package/services/mcp/claudeai.ts +164 -0
  119. package/services/mcp/client.ts +3348 -0
  120. package/services/mcp/config.ts +1578 -0
  121. package/services/mcp/elicitationHandler.ts +313 -0
  122. package/services/mcp/envExpansion.ts +38 -0
  123. package/services/mcp/headersHelper.ts +138 -0
  124. package/services/mcp/mcpStringUtils.ts +106 -0
  125. package/services/mcp/normalization.ts +23 -0
  126. package/services/mcp/oauthPort.ts +78 -0
  127. package/services/mcp/officialRegistry.ts +72 -0
  128. package/services/mcp/types.ts +258 -0
  129. package/services/mcp/useManageMCPConnections.ts +1141 -0
  130. package/services/mcp/utils.ts +575 -0
  131. package/services/mcp/vscodeSdkMcp.ts +112 -0
  132. package/services/mcp/xaa.ts +511 -0
  133. package/services/mcp/xaaIdpLogin.ts +487 -0
  134. package/services/mcpServerApproval.tsx +41 -0
  135. package/services/mockRateLimits.ts +882 -0
  136. package/services/notifier.ts +156 -0
  137. package/services/oauth/auth-code-listener.ts +211 -0
  138. package/services/oauth/client.ts +566 -0
  139. package/services/oauth/crypto.ts +23 -0
  140. package/services/oauth/getOauthProfile.ts +53 -0
  141. package/services/oauth/index.ts +198 -0
  142. package/services/plugins/PluginInstallationManager.ts +184 -0
  143. package/services/plugins/pluginCliCommands.ts +344 -0
  144. package/services/plugins/pluginOperations.ts +1088 -0
  145. package/services/policyLimits/index.ts +663 -0
  146. package/services/policyLimits/types.ts +27 -0
  147. package/services/preventSleep.ts +165 -0
  148. package/services/rateLimitMessages.ts +344 -0
  149. package/services/rateLimitMocking.ts +144 -0
  150. package/services/remoteManagedSettings/index.ts +638 -0
  151. package/services/remoteManagedSettings/securityCheck.tsx +74 -0
  152. package/services/remoteManagedSettings/syncCache.ts +112 -0
  153. package/services/remoteManagedSettings/syncCacheState.ts +96 -0
  154. package/services/remoteManagedSettings/types.ts +31 -0
  155. package/services/settingsSync/index.ts +581 -0
  156. package/services/settingsSync/types.ts +67 -0
  157. package/services/teamMemorySync/index.ts +1256 -0
  158. package/services/teamMemorySync/secretScanner.ts +324 -0
  159. package/services/teamMemorySync/teamMemSecretGuard.ts +44 -0
  160. package/services/teamMemorySync/types.ts +156 -0
  161. package/services/teamMemorySync/watcher.ts +387 -0
  162. package/services/tips/tipHistory.ts +17 -0
  163. package/services/tips/tipRegistry.ts +686 -0
  164. package/services/tips/tipScheduler.ts +58 -0
  165. package/services/tokenEstimation.ts +495 -0
  166. package/services/toolUseSummary/toolUseSummaryGenerator.ts +112 -0
  167. package/services/tools/StreamingToolExecutor.ts +530 -0
  168. package/services/tools/toolExecution.ts +1745 -0
  169. package/services/tools/toolHooks.ts +650 -0
  170. package/services/tools/toolOrchestration.ts +188 -0
  171. package/services/vcr.ts +406 -0
  172. package/services/voice.ts +525 -0
  173. package/services/voiceKeyterms.ts +106 -0
  174. package/services/voiceStreamSTT.ts +544 -0
  175. package/tools/AgentTool/AgentTool.tsx +1398 -0
  176. package/tools/AgentTool/UI.tsx +872 -0
  177. package/tools/AgentTool/agentColorManager.ts +66 -0
  178. package/tools/AgentTool/agentDisplay.ts +104 -0
  179. package/tools/AgentTool/agentMemory.ts +177 -0
  180. package/tools/AgentTool/agentMemorySnapshot.ts +197 -0
  181. package/tools/AgentTool/agentToolUtils.ts +686 -0
  182. package/tools/AgentTool/built-in/claudeCodeGuideAgent.ts +205 -0
  183. package/tools/AgentTool/built-in/exploreAgent.ts +83 -0
  184. package/tools/AgentTool/built-in/generalPurposeAgent.ts +34 -0
  185. package/tools/AgentTool/built-in/planAgent.ts +92 -0
  186. package/tools/AgentTool/built-in/statuslineSetup.ts +144 -0
  187. package/tools/AgentTool/built-in/verificationAgent.ts +152 -0
  188. package/tools/AgentTool/builtInAgents.ts +72 -0
  189. package/tools/AgentTool/constants.ts +12 -0
  190. package/tools/AgentTool/forkSubagent.ts +210 -0
  191. package/tools/AgentTool/loadAgentsDir.ts +755 -0
  192. package/tools/AgentTool/prompt.ts +287 -0
  193. package/tools/AgentTool/resumeAgent.ts +265 -0
  194. package/tools/AgentTool/runAgent.ts +973 -0
  195. package/tools/AskUserQuestionTool/AskUserQuestionTool.tsx +266 -0
  196. package/tools/AskUserQuestionTool/prompt.ts +44 -0
  197. package/tools/BashTool/BashTool.tsx +1144 -0
  198. package/tools/BashTool/BashToolResultMessage.tsx +191 -0
  199. package/tools/BashTool/UI.tsx +185 -0
  200. package/tools/BashTool/bashCommandHelpers.ts +265 -0
  201. package/tools/BashTool/bashPermissions.ts +2621 -0
  202. package/tools/BashTool/bashSecurity.ts +2592 -0
  203. package/tools/BashTool/commandSemantics.ts +140 -0
  204. package/tools/BashTool/commentLabel.ts +13 -0
  205. package/tools/BashTool/destructiveCommandWarning.ts +102 -0
  206. package/tools/BashTool/modeValidation.ts +115 -0
  207. package/tools/BashTool/pathValidation.ts +1303 -0
  208. package/tools/BashTool/prompt.ts +369 -0
  209. package/tools/BashTool/readOnlyValidation.ts +1990 -0
  210. package/tools/BashTool/sedEditParser.ts +322 -0
  211. package/tools/BashTool/sedValidation.ts +684 -0
  212. package/tools/BashTool/shouldUseSandbox.ts +153 -0
  213. package/tools/BashTool/toolName.ts +2 -0
  214. package/tools/BashTool/utils.ts +223 -0
  215. package/tools/BriefTool/BriefTool.ts +204 -0
  216. package/tools/BriefTool/UI.tsx +101 -0
  217. package/tools/BriefTool/attachments.ts +110 -0
  218. package/tools/BriefTool/prompt.ts +22 -0
  219. package/tools/BriefTool/upload.ts +174 -0
  220. package/tools/ConfigTool/ConfigTool.ts +467 -0
  221. package/tools/ConfigTool/UI.tsx +38 -0
  222. package/tools/ConfigTool/constants.ts +1 -0
  223. package/tools/ConfigTool/prompt.ts +93 -0
  224. package/tools/ConfigTool/supportedSettings.ts +211 -0
  225. package/tools/EnterPlanModeTool/EnterPlanModeTool.ts +126 -0
  226. package/tools/EnterPlanModeTool/UI.tsx +33 -0
  227. package/tools/EnterPlanModeTool/constants.ts +1 -0
  228. package/tools/EnterPlanModeTool/prompt.ts +170 -0
  229. package/tools/EnterWorktreeTool/EnterWorktreeTool.ts +127 -0
  230. package/tools/EnterWorktreeTool/UI.tsx +20 -0
  231. package/tools/EnterWorktreeTool/constants.ts +1 -0
  232. package/tools/EnterWorktreeTool/prompt.ts +30 -0
  233. package/tools/ExitPlanModeTool/ExitPlanModeV2Tool.ts +493 -0
  234. package/tools/ExitPlanModeTool/UI.tsx +82 -0
  235. package/tools/ExitPlanModeTool/constants.ts +2 -0
  236. package/tools/ExitPlanModeTool/prompt.ts +29 -0
  237. package/tools/ExitWorktreeTool/ExitWorktreeTool.ts +329 -0
  238. package/tools/ExitWorktreeTool/UI.tsx +25 -0
  239. package/tools/ExitWorktreeTool/constants.ts +1 -0
  240. package/tools/ExitWorktreeTool/prompt.ts +32 -0
  241. package/tools/FileEditTool/FileEditTool.ts +625 -0
  242. package/tools/FileEditTool/UI.tsx +289 -0
  243. package/tools/FileEditTool/constants.ts +11 -0
  244. package/tools/FileEditTool/prompt.ts +28 -0
  245. package/tools/FileEditTool/types.ts +85 -0
  246. package/tools/FileEditTool/utils.ts +775 -0
  247. package/tools/FileReadTool/FileReadTool.ts +1183 -0
  248. package/tools/FileReadTool/UI.tsx +185 -0
  249. package/tools/FileReadTool/imageProcessor.ts +94 -0
  250. package/tools/FileReadTool/limits.ts +92 -0
  251. package/tools/FileReadTool/prompt.ts +49 -0
  252. package/tools/FileWriteTool/FileWriteTool.ts +434 -0
  253. package/tools/FileWriteTool/UI.tsx +405 -0
  254. package/tools/FileWriteTool/prompt.ts +18 -0
  255. package/tools/GlobTool/GlobTool.ts +198 -0
  256. package/tools/GlobTool/UI.tsx +63 -0
  257. package/tools/GlobTool/prompt.ts +7 -0
  258. package/tools/GrepTool/GrepTool.ts +577 -0
  259. package/tools/GrepTool/UI.tsx +201 -0
  260. package/tools/GrepTool/prompt.ts +18 -0
  261. package/tools/LSPTool/LSPTool.ts +860 -0
  262. package/tools/LSPTool/UI.tsx +228 -0
  263. package/tools/LSPTool/formatters.ts +592 -0
  264. package/tools/LSPTool/prompt.ts +21 -0
  265. package/tools/LSPTool/schemas.ts +215 -0
  266. package/tools/LSPTool/symbolContext.ts +90 -0
  267. package/tools/ListMcpResourcesTool/ListMcpResourcesTool.ts +123 -0
  268. package/tools/ListMcpResourcesTool/UI.tsx +29 -0
  269. package/tools/ListMcpResourcesTool/prompt.ts +20 -0
  270. package/tools/MCPTool/MCPTool.ts +77 -0
  271. package/tools/MCPTool/UI.tsx +403 -0
  272. package/tools/MCPTool/classifyForCollapse.ts +604 -0
  273. package/tools/MCPTool/prompt.ts +3 -0
  274. package/tools/McpAuthTool/McpAuthTool.ts +215 -0
  275. package/tools/NotebookEditTool/NotebookEditTool.ts +490 -0
  276. package/tools/NotebookEditTool/UI.tsx +93 -0
  277. package/tools/NotebookEditTool/constants.ts +2 -0
  278. package/tools/NotebookEditTool/prompt.ts +3 -0
  279. package/tools/PowerShellTool/PowerShellTool.tsx +1001 -0
  280. package/tools/PowerShellTool/UI.tsx +131 -0
  281. package/tools/PowerShellTool/clmTypes.ts +211 -0
  282. package/tools/PowerShellTool/commandSemantics.ts +142 -0
  283. package/tools/PowerShellTool/commonParameters.ts +30 -0
  284. package/tools/PowerShellTool/destructiveCommandWarning.ts +109 -0
  285. package/tools/PowerShellTool/gitSafety.ts +176 -0
  286. package/tools/PowerShellTool/modeValidation.ts +404 -0
  287. package/tools/PowerShellTool/pathValidation.ts +2049 -0
  288. package/tools/PowerShellTool/powershellPermissions.ts +1648 -0
  289. package/tools/PowerShellTool/powershellSecurity.ts +1090 -0
  290. package/tools/PowerShellTool/prompt.ts +145 -0
  291. package/tools/PowerShellTool/readOnlyValidation.ts +1823 -0
  292. package/tools/PowerShellTool/toolName.ts +2 -0
  293. package/tools/REPLTool/constants.ts +46 -0
  294. package/tools/REPLTool/primitiveTools.ts +39 -0
  295. package/tools/ReadMcpResourceTool/ReadMcpResourceTool.ts +158 -0
  296. package/tools/ReadMcpResourceTool/UI.tsx +37 -0
  297. package/tools/ReadMcpResourceTool/prompt.ts +16 -0
  298. package/tools/RemoteTriggerTool/RemoteTriggerTool.ts +161 -0
  299. package/tools/RemoteTriggerTool/UI.tsx +17 -0
  300. package/tools/RemoteTriggerTool/prompt.ts +15 -0
  301. package/tools/ScheduleCronTool/CronCreateTool.ts +157 -0
  302. package/tools/ScheduleCronTool/CronDeleteTool.ts +95 -0
  303. package/tools/ScheduleCronTool/CronListTool.ts +97 -0
  304. package/tools/ScheduleCronTool/UI.tsx +60 -0
  305. package/tools/ScheduleCronTool/prompt.ts +135 -0
  306. package/tools/SendMessageTool/SendMessageTool.ts +917 -0
  307. package/tools/SendMessageTool/UI.tsx +31 -0
  308. package/tools/SendMessageTool/constants.ts +1 -0
  309. package/tools/SendMessageTool/prompt.ts +49 -0
  310. package/tools/SkillTool/SkillTool.ts +1108 -0
  311. package/tools/SkillTool/UI.tsx +128 -0
  312. package/tools/SkillTool/constants.ts +1 -0
  313. package/tools/SkillTool/prompt.ts +241 -0
  314. package/tools/SleepTool/prompt.ts +17 -0
  315. package/tools/SyntheticOutputTool/SyntheticOutputTool.ts +163 -0
  316. package/tools/TaskCreateTool/TaskCreateTool.ts +138 -0
  317. package/tools/TaskCreateTool/constants.ts +1 -0
  318. package/tools/TaskCreateTool/prompt.ts +56 -0
  319. package/tools/TaskGetTool/TaskGetTool.ts +128 -0
  320. package/tools/TaskGetTool/constants.ts +1 -0
  321. package/tools/TaskGetTool/prompt.ts +24 -0
  322. package/tools/TaskListTool/TaskListTool.ts +116 -0
  323. package/tools/TaskListTool/constants.ts +1 -0
  324. package/tools/TaskListTool/prompt.ts +49 -0
  325. package/tools/TaskOutputTool/TaskOutputTool.tsx +584 -0
  326. package/tools/TaskOutputTool/constants.ts +1 -0
  327. package/tools/TaskStopTool/TaskStopTool.ts +131 -0
  328. package/tools/TaskStopTool/UI.tsx +41 -0
  329. package/tools/TaskStopTool/prompt.ts +8 -0
  330. package/tools/TaskUpdateTool/TaskUpdateTool.ts +406 -0
  331. package/tools/TaskUpdateTool/constants.ts +1 -0
  332. package/tools/TaskUpdateTool/prompt.ts +77 -0
  333. package/tools/TeamCreateTool/TeamCreateTool.ts +240 -0
  334. package/tools/TeamCreateTool/UI.tsx +6 -0
  335. package/tools/TeamCreateTool/constants.ts +1 -0
  336. package/tools/TeamCreateTool/prompt.ts +113 -0
  337. package/tools/TeamDeleteTool/TeamDeleteTool.ts +139 -0
  338. package/tools/TeamDeleteTool/UI.tsx +20 -0
  339. package/tools/TeamDeleteTool/constants.ts +1 -0
  340. package/tools/TeamDeleteTool/prompt.ts +16 -0
  341. package/tools/TodoWriteTool/TodoWriteTool.ts +115 -0
  342. package/tools/TodoWriteTool/constants.ts +1 -0
  343. package/tools/TodoWriteTool/prompt.ts +184 -0
  344. package/tools/ToolSearchTool/ToolSearchTool.ts +471 -0
  345. package/tools/ToolSearchTool/constants.ts +1 -0
  346. package/tools/ToolSearchTool/prompt.ts +121 -0
  347. package/tools/TungstenTool/TungstenTool.ts +4 -0
  348. package/tools/WebFetchTool/UI.tsx +72 -0
  349. package/tools/WebFetchTool/WebFetchTool.ts +318 -0
  350. package/tools/WebFetchTool/preapproved.ts +166 -0
  351. package/tools/WebFetchTool/prompt.ts +46 -0
  352. package/tools/WebFetchTool/utils.ts +530 -0
  353. package/tools/WebSearchTool/UI.tsx +101 -0
  354. package/tools/WebSearchTool/WebSearchTool.ts +435 -0
  355. package/tools/WebSearchTool/prompt.ts +34 -0
  356. package/tools/WorkflowTool/constants.ts +2 -0
  357. package/tools/XMemIngestTool/XMemIngestTool.ts +140 -0
  358. package/tools/XMemIngestTool/prompt.ts +13 -0
  359. package/tools/XMemRetrieveTool/XMemRetrieveTool.ts +177 -0
  360. package/tools/XMemRetrieveTool/prompt.ts +16 -0
  361. package/tools/XMemSearchTool/XMemSearchTool.ts +172 -0
  362. package/tools/XMemSearchTool/prompt.ts +11 -0
  363. package/tools/shared/gitOperationTracking.ts +277 -0
  364. package/tools/shared/spawnMultiAgent.ts +1093 -0
  365. package/tools/testing/TestingPermissionTool.tsx +74 -0
  366. package/tools/utils.ts +40 -0
  367. package/utils/CircularBuffer.ts +84 -0
  368. package/utils/Cursor.ts +1530 -0
  369. package/utils/QueryGuard.ts +121 -0
  370. package/utils/Shell.ts +474 -0
  371. package/utils/ShellCommand.ts +465 -0
  372. package/utils/abortController.ts +99 -0
  373. package/utils/activityManager.ts +164 -0
  374. package/utils/advisor.ts +145 -0
  375. package/utils/agentContext.ts +178 -0
  376. package/utils/agentId.ts +99 -0
  377. package/utils/agentSwarmsEnabled.ts +44 -0
  378. package/utils/agenticSessionSearch.ts +307 -0
  379. package/utils/analyzeContext.ts +1382 -0
  380. package/utils/ansiToPng.ts +334 -0
  381. package/utils/ansiToSvg.ts +272 -0
  382. package/utils/api.ts +718 -0
  383. package/utils/apiPreconnect.ts +71 -0
  384. package/utils/appleTerminalBackup.ts +124 -0
  385. package/utils/argumentSubstitution.ts +145 -0
  386. package/utils/array.ts +13 -0
  387. package/utils/asciicast.ts +239 -0
  388. package/utils/attachments.ts +4091 -0
  389. package/utils/attribution.ts +393 -0
  390. package/utils/auth.ts +2002 -0
  391. package/utils/authFileDescriptor.ts +196 -0
  392. package/utils/authPortable.ts +19 -0
  393. package/utils/autoModeDenials.ts +26 -0
  394. package/utils/autoRunIssue.tsx +122 -0
  395. package/utils/autoUpdater.ts +561 -0
  396. package/utils/aws.ts +74 -0
  397. package/utils/awsAuthStatusManager.ts +81 -0
  398. package/utils/axios.ts +8 -0
  399. package/utils/background/remote/preconditions.ts +235 -0
  400. package/utils/background/remote/remoteSession.ts +98 -0
  401. package/utils/backgroundHousekeeping.ts +94 -0
  402. package/utils/bash/ParsedCommand.ts +318 -0
  403. package/utils/bash/ShellSnapshot.ts +582 -0
  404. package/utils/bash/ast.ts +2679 -0
  405. package/utils/bash/bashParser.ts +4436 -0
  406. package/utils/bash/bashPipeCommand.ts +294 -0
  407. package/utils/bash/commands.ts +1339 -0
  408. package/utils/bash/heredoc.ts +733 -0
  409. package/utils/bash/parser.ts +230 -0
  410. package/utils/bash/prefix.ts +204 -0
  411. package/utils/bash/registry.ts +53 -0
  412. package/utils/bash/shellCompletion.ts +259 -0
  413. package/utils/bash/shellPrefix.ts +28 -0
  414. package/utils/bash/shellQuote.ts +304 -0
  415. package/utils/bash/shellQuoting.ts +128 -0
  416. package/utils/bash/specs/alias.ts +14 -0
  417. package/utils/bash/specs/index.ts +18 -0
  418. package/utils/bash/specs/nohup.ts +13 -0
  419. package/utils/bash/specs/pyright.ts +91 -0
  420. package/utils/bash/specs/sleep.ts +13 -0
  421. package/utils/bash/specs/srun.ts +31 -0
  422. package/utils/bash/specs/time.ts +13 -0
  423. package/utils/bash/specs/timeout.ts +20 -0
  424. package/utils/bash/treeSitterAnalysis.ts +506 -0
  425. package/utils/betas.ts +434 -0
  426. package/utils/billing.ts +78 -0
  427. package/utils/binaryCheck.ts +53 -0
  428. package/utils/browser.ts +68 -0
  429. package/utils/bufferedWriter.ts +100 -0
  430. package/utils/bundledMode.ts +22 -0
  431. package/utils/caCerts.ts +115 -0
  432. package/utils/caCertsConfig.ts +88 -0
  433. package/utils/cachePaths.ts +38 -0
  434. package/utils/classifierApprovals.ts +88 -0
  435. package/utils/classifierApprovalsHook.ts +17 -0
  436. package/utils/claudeCodeHints.ts +193 -0
  437. package/utils/claudeDesktop.ts +152 -0
  438. package/utils/claudeInChrome/chromeNativeHost.ts +527 -0
  439. package/utils/claudeInChrome/common.ts +540 -0
  440. package/utils/claudeInChrome/mcpServer.ts +292 -0
  441. package/utils/claudeInChrome/prompt.ts +83 -0
  442. package/utils/claudeInChrome/setup.ts +400 -0
  443. package/utils/claudeInChrome/setupPortable.ts +233 -0
  444. package/utils/claudeInChrome/toolRendering.tsx +262 -0
  445. package/utils/claudemd.ts +1479 -0
  446. package/utils/cleanup.ts +602 -0
  447. package/utils/cleanupRegistry.ts +25 -0
  448. package/utils/cliArgs.ts +60 -0
  449. package/utils/cliHighlight.ts +54 -0
  450. package/utils/codeIndexing.ts +206 -0
  451. package/utils/collapseBackgroundBashNotifications.ts +84 -0
  452. package/utils/collapseHookSummaries.ts +59 -0
  453. package/utils/collapseReadSearch.ts +1109 -0
  454. package/utils/collapseTeammateShutdowns.ts +55 -0
  455. package/utils/color-diff-mock.ts +27 -0
  456. package/utils/combinedAbortSignal.ts +47 -0
  457. package/utils/commandLifecycle.ts +21 -0
  458. package/utils/commitAttribution.ts +961 -0
  459. package/utils/completionCache.ts +166 -0
  460. package/utils/computerUse/appNames.ts +196 -0
  461. package/utils/computerUse/cleanup.ts +86 -0
  462. package/utils/computerUse/common.ts +61 -0
  463. package/utils/computerUse/computerUseLock.ts +215 -0
  464. package/utils/computerUse/drainRunLoop.ts +79 -0
  465. package/utils/computerUse/escHotkey.ts +54 -0
  466. package/utils/computerUse/executor.ts +658 -0
  467. package/utils/computerUse/gates.ts +72 -0
  468. package/utils/computerUse/hostAdapter.ts +69 -0
  469. package/utils/computerUse/inputLoader.ts +30 -0
  470. package/utils/computerUse/mcpServer.ts +106 -0
  471. package/utils/computerUse/setup.ts +53 -0
  472. package/utils/computerUse/swiftLoader.ts +23 -0
  473. package/utils/computerUse/toolRendering.tsx +125 -0
  474. package/utils/computerUse/wrapper.tsx +336 -0
  475. package/utils/concurrentSessions.ts +204 -0
  476. package/utils/config.ts +1817 -0
  477. package/utils/configConstants.ts +21 -0
  478. package/utils/contentArray.ts +51 -0
  479. package/utils/context.ts +221 -0
  480. package/utils/contextAnalysis.ts +272 -0
  481. package/utils/contextSuggestions.ts +235 -0
  482. package/utils/controlMessageCompat.ts +32 -0
  483. package/utils/conversationRecovery.ts +597 -0
  484. package/utils/cron.ts +308 -0
  485. package/utils/cronJitterConfig.ts +75 -0
  486. package/utils/cronScheduler.ts +565 -0
  487. package/utils/cronTasks.ts +458 -0
  488. package/utils/cronTasksLock.ts +195 -0
  489. package/utils/crossProjectResume.ts +75 -0
  490. package/utils/crypto.ts +13 -0
  491. package/utils/cwd.ts +32 -0
  492. package/utils/debug.ts +268 -0
  493. package/utils/debugFilter.ts +157 -0
  494. package/utils/deepLink/banner.ts +123 -0
  495. package/utils/deepLink/parseDeepLink.ts +170 -0
  496. package/utils/deepLink/protocolHandler.ts +136 -0
  497. package/utils/deepLink/registerProtocol.ts +348 -0
  498. package/utils/deepLink/terminalLauncher.ts +557 -0
  499. package/utils/deepLink/terminalPreference.ts +54 -0
  500. package/utils/desktopDeepLink.ts +236 -0
  501. package/utils/detectRepository.ts +178 -0
  502. package/utils/diagLogs.ts +94 -0
  503. package/utils/diff.ts +177 -0
  504. package/utils/directMemberMessage.ts +69 -0
  505. package/utils/displayTags.ts +51 -0
  506. package/utils/doctorContextWarnings.ts +265 -0
  507. package/utils/doctorDiagnostic.ts +625 -0
  508. package/utils/dxt/helpers.ts +88 -0
  509. package/utils/dxt/zip.ts +226 -0
  510. package/utils/earlyInput.ts +191 -0
  511. package/utils/editor.ts +183 -0
  512. package/utils/effort.ts +329 -0
  513. package/utils/embeddedTools.ts +29 -0
  514. package/utils/env.ts +347 -0
  515. package/utils/envDynamic.ts +151 -0
  516. package/utils/envUtils.ts +183 -0
  517. package/utils/envValidation.ts +38 -0
  518. package/utils/errorLogSink.ts +235 -0
  519. package/utils/errors.ts +238 -0
  520. package/utils/exampleCommands.ts +184 -0
  521. package/utils/execFileNoThrow.ts +150 -0
  522. package/utils/execFileNoThrowPortable.ts +89 -0
  523. package/utils/execSyncWrapper.ts +38 -0
  524. package/utils/exportRenderer.tsx +98 -0
  525. package/utils/extraUsage.ts +23 -0
  526. package/utils/fastMode.ts +532 -0
  527. package/utils/file.ts +584 -0
  528. package/utils/fileHistory.ts +1115 -0
  529. package/utils/fileOperationAnalytics.ts +71 -0
  530. package/utils/filePersistence/filePersistence.ts +287 -0
  531. package/utils/filePersistence/outputsScanner.ts +126 -0
  532. package/utils/fileRead.ts +102 -0
  533. package/utils/fileReadCache.ts +96 -0
  534. package/utils/fileStateCache.ts +142 -0
  535. package/utils/findExecutable.ts +17 -0
  536. package/utils/fingerprint.ts +76 -0
  537. package/utils/forkedAgent.ts +689 -0
  538. package/utils/format.ts +308 -0
  539. package/utils/formatBriefTimestamp.ts +81 -0
  540. package/utils/fpsTracker.ts +47 -0
  541. package/utils/frontmatterParser.ts +370 -0
  542. package/utils/fsOperations.ts +770 -0
  543. package/utils/fullscreen.ts +202 -0
  544. package/utils/generatedFiles.ts +136 -0
  545. package/utils/generators.ts +88 -0
  546. package/utils/genericProcessUtils.ts +184 -0
  547. package/utils/getWorktreePaths.ts +70 -0
  548. package/utils/getWorktreePathsPortable.ts +27 -0
  549. package/utils/ghPrStatus.ts +106 -0
  550. package/utils/git/gitConfigParser.ts +277 -0
  551. package/utils/git/gitFilesystem.ts +699 -0
  552. package/utils/git/gitignore.ts +99 -0
  553. package/utils/git.ts +926 -0
  554. package/utils/gitDiff.ts +532 -0
  555. package/utils/gitSettings.ts +18 -0
  556. package/utils/github/ghAuthStatus.ts +29 -0
  557. package/utils/githubRepoPathMapping.ts +162 -0
  558. package/utils/glob.ts +130 -0
  559. package/utils/gracefulShutdown.ts +529 -0
  560. package/utils/groupToolUses.ts +182 -0
  561. package/utils/handlePromptSubmit.ts +610 -0
  562. package/utils/hash.ts +46 -0
  563. package/utils/headlessProfiler.ts +178 -0
  564. package/utils/heapDumpService.ts +303 -0
  565. package/utils/heatmap.ts +198 -0
  566. package/utils/highlightMatch.tsx +28 -0
  567. package/utils/hooks/AsyncHookRegistry.ts +309 -0
  568. package/utils/hooks/apiQueryHookHelper.ts +141 -0
  569. package/utils/hooks/execAgentHook.ts +339 -0
  570. package/utils/hooks/execHttpHook.ts +242 -0
  571. package/utils/hooks/execPromptHook.ts +211 -0
  572. package/utils/hooks/fileChangedWatcher.ts +191 -0
  573. package/utils/hooks/hookEvents.ts +192 -0
  574. package/utils/hooks/hookHelpers.ts +83 -0
  575. package/utils/hooks/hooksConfigManager.ts +400 -0
  576. package/utils/hooks/hooksConfigSnapshot.ts +133 -0
  577. package/utils/hooks/hooksSettings.ts +271 -0
  578. package/utils/hooks/postSamplingHooks.ts +70 -0
  579. package/utils/hooks/registerFrontmatterHooks.ts +67 -0
  580. package/utils/hooks/registerSkillHooks.ts +64 -0
  581. package/utils/hooks/sessionHooks.ts +447 -0
  582. package/utils/hooks/skillImprovement.ts +267 -0
  583. package/utils/hooks/ssrfGuard.ts +294 -0
  584. package/utils/hooks.ts +5022 -0
  585. package/utils/horizontalScroll.ts +137 -0
  586. package/utils/http.ts +136 -0
  587. package/utils/hyperlink.ts +39 -0
  588. package/utils/iTermBackup.ts +73 -0
  589. package/utils/ide.ts +1494 -0
  590. package/utils/idePathConversion.ts +90 -0
  591. package/utils/idleTimeout.ts +53 -0
  592. package/utils/imagePaste.ts +416 -0
  593. package/utils/imageResizer.ts +880 -0
  594. package/utils/imageStore.ts +167 -0
  595. package/utils/imageValidation.ts +104 -0
  596. package/utils/immediateCommand.ts +15 -0
  597. package/utils/inProcessTeammateHelpers.ts +102 -0
  598. package/utils/ink.ts +26 -0
  599. package/utils/intl.ts +94 -0
  600. package/utils/jetbrains.ts +191 -0
  601. package/utils/json.ts +277 -0
  602. package/utils/jsonRead.ts +16 -0
  603. package/utils/keyboardShortcuts.ts +14 -0
  604. package/utils/lazySchema.ts +8 -0
  605. package/utils/listSessionsImpl.ts +454 -0
  606. package/utils/localInstaller.ts +162 -0
  607. package/utils/lockfile.ts +43 -0
  608. package/utils/log.ts +362 -0
  609. package/utils/logoV2Utils.ts +347 -0
  610. package/utils/mailbox.ts +73 -0
  611. package/utils/managedEnv.ts +199 -0
  612. package/utils/managedEnvConstants.ts +191 -0
  613. package/utils/markdown.ts +381 -0
  614. package/utils/markdownConfigLoader.ts +600 -0
  615. package/utils/mcp/dateTimeParser.ts +121 -0
  616. package/utils/mcp/elicitationValidation.ts +336 -0
  617. package/utils/mcpInstructionsDelta.ts +130 -0
  618. package/utils/mcpOutputStorage.ts +189 -0
  619. package/utils/mcpValidation.ts +208 -0
  620. package/utils/mcpWebSocketTransport.ts +200 -0
  621. package/utils/memoize.ts +269 -0
  622. package/utils/memory/types.ts +12 -0
  623. package/utils/memory/versions.ts +8 -0
  624. package/utils/memoryFileDetection.ts +289 -0
  625. package/utils/messagePredicates.ts +8 -0
  626. package/utils/messageQueueManager.ts +547 -0
  627. package/utils/messages/mappers.ts +290 -0
  628. package/utils/messages/systemInit.ts +96 -0
  629. package/utils/messages.ts +5520 -0
  630. package/utils/model/agent.ts +157 -0
  631. package/utils/model/aliases.ts +35 -0
  632. package/utils/model/antModels.ts +64 -0
  633. package/utils/model/bedrock.ts +265 -0
  634. package/utils/model/check1mAccess.ts +72 -0
  635. package/utils/model/configs.ts +158 -0
  636. package/utils/model/contextWindowUpgradeCheck.ts +47 -0
  637. package/utils/model/deprecation.ts +101 -0
  638. package/utils/model/model.ts +654 -0
  639. package/utils/model/modelAllowlist.ts +170 -0
  640. package/utils/model/modelCapabilities.ts +118 -0
  641. package/utils/model/modelOptions.ts +589 -0
  642. package/utils/model/modelStrings.ts +170 -0
  643. package/utils/model/modelSupportOverrides.ts +50 -0
  644. package/utils/model/providers.ts +42 -0
  645. package/utils/model/validateModel.ts +159 -0
  646. package/utils/modelCost.ts +231 -0
  647. package/utils/modifiers.ts +36 -0
  648. package/utils/mtls.ts +179 -0
  649. package/utils/nativeInstaller/download.ts +523 -0
  650. package/utils/nativeInstaller/index.ts +18 -0
  651. package/utils/nativeInstaller/installer.ts +1708 -0
  652. package/utils/nativeInstaller/packageManagers.ts +336 -0
  653. package/utils/nativeInstaller/pidLock.ts +433 -0
  654. package/utils/notebook.ts +224 -0
  655. package/utils/objectGroupBy.ts +18 -0
  656. package/utils/pasteStore.ts +104 -0
  657. package/utils/path.ts +155 -0
  658. package/utils/pdf.ts +300 -0
  659. package/utils/pdfUtils.ts +70 -0
  660. package/utils/peerAddress.ts +21 -0
  661. package/utils/permissions/PermissionMode.ts +141 -0
  662. package/utils/permissions/PermissionPromptToolResultSchema.ts +127 -0
  663. package/utils/permissions/PermissionResult.ts +35 -0
  664. package/utils/permissions/PermissionRule.ts +40 -0
  665. package/utils/permissions/PermissionUpdate.ts +389 -0
  666. package/utils/permissions/PermissionUpdateSchema.ts +78 -0
  667. package/utils/permissions/autoModeState.ts +39 -0
  668. package/utils/permissions/bashClassifier.ts +61 -0
  669. package/utils/permissions/bypassPermissionsKillswitch.ts +155 -0
  670. package/utils/permissions/classifierDecision.ts +98 -0
  671. package/utils/permissions/classifierShared.ts +39 -0
  672. package/utils/permissions/dangerousPatterns.ts +80 -0
  673. package/utils/permissions/denialTracking.ts +45 -0
  674. package/utils/permissions/filesystem.ts +1777 -0
  675. package/utils/permissions/getNextPermissionMode.ts +101 -0
  676. package/utils/permissions/pathValidation.ts +485 -0
  677. package/utils/permissions/permissionExplainer.ts +250 -0
  678. package/utils/permissions/permissionRuleParser.ts +198 -0
  679. package/utils/permissions/permissionSetup.ts +1532 -0
  680. package/utils/permissions/permissions.ts +1486 -0
  681. package/utils/permissions/permissionsLoader.ts +296 -0
  682. package/utils/permissions/shadowedRuleDetection.ts +234 -0
  683. package/utils/permissions/shellRuleMatching.ts +228 -0
  684. package/utils/permissions/yoloClassifier.ts +1495 -0
  685. package/utils/planModeV2.ts +95 -0
  686. package/utils/plans.ts +397 -0
  687. package/utils/platform.ts +150 -0
  688. package/utils/plugins/addDirPluginSettings.ts +71 -0
  689. package/utils/plugins/cacheUtils.ts +196 -0
  690. package/utils/plugins/dependencyResolver.ts +305 -0
  691. package/utils/plugins/fetchTelemetry.ts +135 -0
  692. package/utils/plugins/gitAvailability.ts +69 -0
  693. package/utils/plugins/headlessPluginInstall.ts +174 -0
  694. package/utils/plugins/hintRecommendation.ts +164 -0
  695. package/utils/plugins/installCounts.ts +292 -0
  696. package/utils/plugins/installedPluginsManager.ts +1268 -0
  697. package/utils/plugins/loadPluginAgents.ts +348 -0
  698. package/utils/plugins/loadPluginCommands.ts +946 -0
  699. package/utils/plugins/loadPluginHooks.ts +287 -0
  700. package/utils/plugins/loadPluginOutputStyles.ts +178 -0
  701. package/utils/plugins/lspPluginIntegration.ts +387 -0
  702. package/utils/plugins/lspRecommendation.ts +374 -0
  703. package/utils/plugins/managedPlugins.ts +27 -0
  704. package/utils/plugins/marketplaceHelpers.ts +592 -0
  705. package/utils/plugins/marketplaceManager.ts +2643 -0
  706. package/utils/plugins/mcpPluginIntegration.ts +634 -0
  707. package/utils/plugins/mcpbHandler.ts +968 -0
  708. package/utils/plugins/officialMarketplace.ts +25 -0
  709. package/utils/plugins/officialMarketplaceGcs.ts +216 -0
  710. package/utils/plugins/officialMarketplaceStartupCheck.ts +439 -0
  711. package/utils/plugins/orphanedPluginFilter.ts +114 -0
  712. package/utils/plugins/parseMarketplaceInput.ts +162 -0
  713. package/utils/plugins/performStartupChecks.tsx +70 -0
  714. package/utils/plugins/pluginAutoupdate.ts +284 -0
  715. package/utils/plugins/pluginBlocklist.ts +127 -0
  716. package/utils/plugins/pluginDirectories.ts +178 -0
  717. package/utils/plugins/pluginFlagging.ts +208 -0
  718. package/utils/plugins/pluginIdentifier.ts +123 -0
  719. package/utils/plugins/pluginInstallationHelpers.ts +595 -0
  720. package/utils/plugins/pluginLoader.ts +3302 -0
  721. package/utils/plugins/pluginOptionsStorage.ts +400 -0
  722. package/utils/plugins/pluginPolicy.ts +20 -0
  723. package/utils/plugins/pluginStartupCheck.ts +341 -0
  724. package/utils/plugins/pluginVersioning.ts +157 -0
  725. package/utils/plugins/reconciler.ts +265 -0
  726. package/utils/plugins/refresh.ts +215 -0
  727. package/utils/plugins/schemas.ts +1681 -0
  728. package/utils/plugins/validatePlugin.ts +903 -0
  729. package/utils/plugins/walkPluginMarkdown.ts +69 -0
  730. package/utils/plugins/zipCache.ts +406 -0
  731. package/utils/plugins/zipCacheAdapters.ts +164 -0
  732. package/utils/powershell/dangerousCmdlets.ts +185 -0
  733. package/utils/powershell/parser.ts +1804 -0
  734. package/utils/powershell/staticPrefix.ts +316 -0
  735. package/utils/preflightChecks.tsx +151 -0
  736. package/utils/privacyLevel.ts +55 -0
  737. package/utils/process.ts +68 -0
  738. package/utils/processUserInput/processBashCommand.tsx +140 -0
  739. package/utils/processUserInput/processSlashCommand.tsx +922 -0
  740. package/utils/processUserInput/processTextPrompt.ts +100 -0
  741. package/utils/processUserInput/processUserInput.ts +605 -0
  742. package/utils/profilerBase.ts +46 -0
  743. package/utils/promptCategory.ts +49 -0
  744. package/utils/promptEditor.ts +188 -0
  745. package/utils/promptShellExecution.ts +183 -0
  746. package/utils/proxy.ts +426 -0
  747. package/utils/queryContext.ts +179 -0
  748. package/utils/queryHelpers.ts +552 -0
  749. package/utils/queryProfiler.ts +301 -0
  750. package/utils/queueProcessor.ts +95 -0
  751. package/utils/readEditContext.ts +227 -0
  752. package/utils/readFileInRange.ts +383 -0
  753. package/utils/releaseNotes.ts +360 -0
  754. package/utils/renderOptions.ts +113 -0
  755. package/utils/ripgrep.ts +679 -0
  756. package/utils/sandbox/sandbox-adapter.ts +985 -0
  757. package/utils/sandbox/sandbox-ui-utils.ts +12 -0
  758. package/utils/sanitization.ts +91 -0
  759. package/utils/screenshotClipboard.ts +121 -0
  760. package/utils/sdkEventQueue.ts +134 -0
  761. package/utils/secureStorage/fallbackStorage.ts +70 -0
  762. package/utils/secureStorage/index.ts +17 -0
  763. package/utils/secureStorage/keychainPrefetch.ts +116 -0
  764. package/utils/secureStorage/macOsKeychainHelpers.ts +111 -0
  765. package/utils/secureStorage/macOsKeychainStorage.ts +231 -0
  766. package/utils/secureStorage/plainTextStorage.ts +84 -0
  767. package/utils/semanticBoolean.ts +29 -0
  768. package/utils/semanticNumber.ts +36 -0
  769. package/utils/semver.ts +59 -0
  770. package/utils/sequential.ts +56 -0
  771. package/utils/sessionActivity.ts +133 -0
  772. package/utils/sessionEnvVars.ts +22 -0
  773. package/utils/sessionEnvironment.ts +166 -0
  774. package/utils/sessionFileAccessHooks.ts +250 -0
  775. package/utils/sessionIngressAuth.ts +140 -0
  776. package/utils/sessionRestore.ts +551 -0
  777. package/utils/sessionStart.ts +232 -0
  778. package/utils/sessionState.ts +150 -0
  779. package/utils/sessionStorage.ts +5105 -0
  780. package/utils/sessionStoragePortable.ts +793 -0
  781. package/utils/sessionTitle.ts +129 -0
  782. package/utils/sessionUrl.ts +64 -0
  783. package/utils/set.ts +53 -0
  784. package/utils/settings/allErrors.ts +32 -0
  785. package/utils/settings/applySettingsChange.ts +92 -0
  786. package/utils/settings/changeDetector.ts +488 -0
  787. package/utils/settings/constants.ts +202 -0
  788. package/utils/settings/internalWrites.ts +37 -0
  789. package/utils/settings/managedPath.ts +34 -0
  790. package/utils/settings/mdm/constants.ts +81 -0
  791. package/utils/settings/mdm/rawRead.ts +130 -0
  792. package/utils/settings/mdm/settings.ts +316 -0
  793. package/utils/settings/permissionValidation.ts +262 -0
  794. package/utils/settings/pluginOnlyPolicy.ts +60 -0
  795. package/utils/settings/schemaOutput.ts +8 -0
  796. package/utils/settings/settings.ts +1015 -0
  797. package/utils/settings/settingsCache.ts +80 -0
  798. package/utils/settings/toolValidationConfig.ts +103 -0
  799. package/utils/settings/types.ts +1149 -0
  800. package/utils/settings/validateEditTool.ts +45 -0
  801. package/utils/settings/validation.ts +265 -0
  802. package/utils/settings/validationTips.ts +164 -0
  803. package/utils/shell/bashProvider.ts +255 -0
  804. package/utils/shell/outputLimits.ts +14 -0
  805. package/utils/shell/powershellDetection.ts +107 -0
  806. package/utils/shell/powershellProvider.ts +123 -0
  807. package/utils/shell/prefix.ts +367 -0
  808. package/utils/shell/readOnlyCommandValidation.ts +1893 -0
  809. package/utils/shell/resolveDefaultShell.ts +14 -0
  810. package/utils/shell/shellProvider.ts +33 -0
  811. package/utils/shell/shellToolUtils.ts +22 -0
  812. package/utils/shell/specPrefix.ts +241 -0
  813. package/utils/shellConfig.ts +167 -0
  814. package/utils/sideQuery.ts +222 -0
  815. package/utils/sideQuestion.ts +155 -0
  816. package/utils/signal.ts +43 -0
  817. package/utils/sinks.ts +16 -0
  818. package/utils/skills/skillChangeDetector.ts +311 -0
  819. package/utils/slashCommandParsing.ts +60 -0
  820. package/utils/sleep.ts +84 -0
  821. package/utils/sliceAnsi.ts +91 -0
  822. package/utils/slowOperations.ts +286 -0
  823. package/utils/standaloneAgent.ts +23 -0
  824. package/utils/startupProfiler.ts +194 -0
  825. package/utils/staticRender.tsx +116 -0
  826. package/utils/stats.ts +1061 -0
  827. package/utils/statsCache.ts +434 -0
  828. package/utils/status.tsx +362 -0
  829. package/utils/statusNoticeDefinitions.tsx +198 -0
  830. package/utils/statusNoticeHelpers.ts +20 -0
  831. package/utils/stream.ts +76 -0
  832. package/utils/streamJsonStdoutGuard.ts +123 -0
  833. package/utils/streamlinedTransform.ts +201 -0
  834. package/utils/stringUtils.ts +235 -0
  835. package/utils/subprocessEnv.ts +99 -0
  836. package/utils/suggestions/commandSuggestions.ts +567 -0
  837. package/utils/suggestions/directoryCompletion.ts +263 -0
  838. package/utils/suggestions/shellHistoryCompletion.ts +119 -0
  839. package/utils/suggestions/skillUsageTracking.ts +55 -0
  840. package/utils/suggestions/slackChannelSuggestions.ts +209 -0
  841. package/utils/swarm/It2SetupPrompt.tsx +380 -0
  842. package/utils/swarm/backends/ITermBackend.ts +370 -0
  843. package/utils/swarm/backends/InProcessBackend.ts +339 -0
  844. package/utils/swarm/backends/PaneBackendExecutor.ts +354 -0
  845. package/utils/swarm/backends/TmuxBackend.ts +764 -0
  846. package/utils/swarm/backends/detection.ts +128 -0
  847. package/utils/swarm/backends/it2Setup.ts +245 -0
  848. package/utils/swarm/backends/registry.ts +464 -0
  849. package/utils/swarm/backends/teammateModeSnapshot.ts +87 -0
  850. package/utils/swarm/backends/types.ts +311 -0
  851. package/utils/swarm/constants.ts +33 -0
  852. package/utils/swarm/inProcessRunner.ts +1552 -0
  853. package/utils/swarm/leaderPermissionBridge.ts +54 -0
  854. package/utils/swarm/permissionSync.ts +928 -0
  855. package/utils/swarm/reconnection.ts +119 -0
  856. package/utils/swarm/spawnInProcess.ts +328 -0
  857. package/utils/swarm/spawnUtils.ts +146 -0
  858. package/utils/swarm/teamHelpers.ts +683 -0
  859. package/utils/swarm/teammateInit.ts +129 -0
  860. package/utils/swarm/teammateLayoutManager.ts +107 -0
  861. package/utils/swarm/teammateModel.ts +10 -0
  862. package/utils/swarm/teammatePromptAddendum.ts +18 -0
  863. package/utils/systemDirectories.ts +74 -0
  864. package/utils/systemPrompt.ts +123 -0
  865. package/utils/systemPromptType.ts +14 -0
  866. package/utils/systemTheme.ts +119 -0
  867. package/utils/taggedId.ts +54 -0
  868. package/utils/task/TaskOutput.ts +390 -0
  869. package/utils/task/diskOutput.ts +451 -0
  870. package/utils/task/framework.ts +308 -0
  871. package/utils/task/outputFormatting.ts +38 -0
  872. package/utils/task/sdkProgress.ts +36 -0
  873. package/utils/tasks.ts +862 -0
  874. package/utils/teamDiscovery.ts +81 -0
  875. package/utils/teamMemoryOps.ts +88 -0
  876. package/utils/teammate.ts +292 -0
  877. package/utils/teammateContext.ts +96 -0
  878. package/utils/teammateMailbox.ts +1183 -0
  879. package/utils/telemetry/betaSessionTracing.ts +491 -0
  880. package/utils/telemetry/bigqueryExporter.ts +252 -0
  881. package/utils/telemetry/events.ts +75 -0
  882. package/utils/telemetry/instrumentation.ts +825 -0
  883. package/utils/telemetry/logger.ts +26 -0
  884. package/utils/telemetry/perfettoTracing.ts +1120 -0
  885. package/utils/telemetry/pluginTelemetry.ts +289 -0
  886. package/utils/telemetry/sessionTracing.ts +927 -0
  887. package/utils/telemetry/skillLoadedEvent.ts +39 -0
  888. package/utils/telemetryAttributes.ts +71 -0
  889. package/utils/teleport/api.ts +466 -0
  890. package/utils/teleport/environmentSelection.ts +77 -0
  891. package/utils/teleport/environments.ts +120 -0
  892. package/utils/teleport/gitBundle.ts +292 -0
  893. package/utils/teleport.tsx +1226 -0
  894. package/utils/tempfile.ts +31 -0
  895. package/utils/terminal.ts +131 -0
  896. package/utils/terminalPanel.ts +191 -0
  897. package/utils/textHighlighting.ts +166 -0
  898. package/utils/theme.ts +639 -0
  899. package/utils/thinking.ts +162 -0
  900. package/utils/timeouts.ts +39 -0
  901. package/utils/tmuxSocket.ts +427 -0
  902. package/utils/todo/types.ts +18 -0
  903. package/utils/tokenBudget.ts +73 -0
  904. package/utils/tokens.ts +261 -0
  905. package/utils/toolErrors.ts +132 -0
  906. package/utils/toolPool.ts +79 -0
  907. package/utils/toolResultStorage.ts +1040 -0
  908. package/utils/toolSchemaCache.ts +26 -0
  909. package/utils/toolSearch.ts +756 -0
  910. package/utils/transcriptSearch.ts +202 -0
  911. package/utils/treeify.ts +170 -0
  912. package/utils/truncate.ts +179 -0
  913. package/utils/ultraplan/ccrSession.ts +349 -0
  914. package/utils/ultraplan/keyword.ts +127 -0
  915. package/utils/ultraplan/prompt.txt +1 -0
  916. package/utils/unaryLogging.ts +39 -0
  917. package/utils/undercover.ts +89 -0
  918. package/utils/user.ts +194 -0
  919. package/utils/userAgent.ts +10 -0
  920. package/utils/userPromptKeywords.ts +27 -0
  921. package/utils/uuid.ts +27 -0
  922. package/utils/warningHandler.ts +121 -0
  923. package/utils/which.ts +82 -0
  924. package/utils/windowsPaths.ts +173 -0
  925. package/utils/withResolvers.ts +13 -0
  926. package/utils/words.ts +800 -0
  927. package/utils/workloadContext.ts +57 -0
  928. package/utils/worktree.ts +1519 -0
  929. package/utils/worktreeModeEnabled.ts +11 -0
  930. package/utils/xdg.ts +65 -0
  931. package/utils/xmem.ts +6 -0
  932. package/utils/xml.ts +16 -0
  933. package/utils/yaml.ts +15 -0
  934. package/utils/zodToJsonSchema.ts +23 -0
@@ -0,0 +1,72 @@
1
+ import type { CoordinateMode, CuSubGates } from '@ant/computer-use-mcp/types'
2
+
3
+ import { getDynamicConfig_CACHED_MAY_BE_STALE } from '../../services/analytics/growthbook.js'
4
+ import { getSubscriptionType } from '../auth.js'
5
+ import { isEnvTruthy } from '../envUtils.js'
6
+
7
+ type ChicagoConfig = CuSubGates & {
8
+ enabled: boolean
9
+ coordinateMode: CoordinateMode
10
+ }
11
+
12
+ const DEFAULTS: ChicagoConfig = {
13
+ enabled: false,
14
+ pixelValidation: false,
15
+ clipboardPasteMultiline: true,
16
+ mouseAnimation: true,
17
+ hideBeforeAction: true,
18
+ autoTargetDisplay: true,
19
+ clipboardGuard: true,
20
+ coordinateMode: 'pixels',
21
+ }
22
+
23
+ // Spread over defaults so a partial JSON ({"enabled": true} alone) inherits the
24
+ // rest. The generic on getDynamicConfig is a type assertion, not a validator —
25
+ // GB returning a partial object would otherwise surface undefined fields.
26
+ function readConfig(): ChicagoConfig {
27
+ return {
28
+ ...DEFAULTS,
29
+ ...getDynamicConfig_CACHED_MAY_BE_STALE<Partial<ChicagoConfig>>(
30
+ 'tengu_malort_pedway',
31
+ DEFAULTS,
32
+ ),
33
+ }
34
+ }
35
+
36
+ // Max/Pro only for external rollout. Ant bypass so dogfooding continues
37
+ // regardless of subscription tier — not all ants are max/pro, and per
38
+ // CLAUDE.md:281, USER_TYPE !== 'ant' branches get zero antfooding.
39
+ function hasRequiredSubscription(): boolean {
40
+ if (process.env.USER_TYPE === 'ant') return true
41
+ const tier = getSubscriptionType()
42
+ return tier === 'max' || tier === 'pro'
43
+ }
44
+
45
+ export function getChicagoEnabled(): boolean {
46
+ // Disable for ants whose shell inherited monorepo dev config.
47
+ // MONOREPO_ROOT_DIR is exported by config/local/zsh/zshrc, which
48
+ // laptop-setup.sh wires into ~/.zshrc — its presence is the cheap
49
+ // proxy for "has monorepo access". Override: ALLOW_ANT_COMPUTER_USE_MCP=1.
50
+ if (
51
+ process.env.USER_TYPE === 'ant' &&
52
+ process.env.MONOREPO_ROOT_DIR &&
53
+ !isEnvTruthy(process.env.ALLOW_ANT_COMPUTER_USE_MCP)
54
+ ) {
55
+ return false
56
+ }
57
+ return hasRequiredSubscription() && readConfig().enabled
58
+ }
59
+
60
+ export function getChicagoSubGates(): CuSubGates {
61
+ const { enabled: _e, coordinateMode: _c, ...subGates } = readConfig()
62
+ return subGates
63
+ }
64
+
65
+ // Frozen at first read — setup.ts builds tool descriptions and executor.ts
66
+ // scales coordinates off the same value. A live read here lets a mid-session
67
+ // GB flip tell the model "pixels" while transforming clicks as normalized.
68
+ let frozenCoordinateMode: CoordinateMode | undefined
69
+ export function getChicagoCoordinateMode(): CoordinateMode {
70
+ frozenCoordinateMode ??= readConfig().coordinateMode
71
+ return frozenCoordinateMode
72
+ }
@@ -0,0 +1,69 @@
1
+ import type {
2
+ ComputerUseHostAdapter,
3
+ Logger,
4
+ } from '@ant/computer-use-mcp/types'
5
+ import { format } from 'util'
6
+ import { logForDebugging } from '../debug.js'
7
+ import { COMPUTER_USE_MCP_SERVER_NAME } from './common.js'
8
+ import { createCliExecutor } from './executor.js'
9
+ import { getChicagoEnabled, getChicagoSubGates } from './gates.js'
10
+ import { requireComputerUseSwift } from './swiftLoader.js'
11
+
12
+ class DebugLogger implements Logger {
13
+ silly(message: string, ...args: unknown[]): void {
14
+ logForDebugging(format(message, ...args), { level: 'debug' })
15
+ }
16
+ debug(message: string, ...args: unknown[]): void {
17
+ logForDebugging(format(message, ...args), { level: 'debug' })
18
+ }
19
+ info(message: string, ...args: unknown[]): void {
20
+ logForDebugging(format(message, ...args), { level: 'info' })
21
+ }
22
+ warn(message: string, ...args: unknown[]): void {
23
+ logForDebugging(format(message, ...args), { level: 'warn' })
24
+ }
25
+ error(message: string, ...args: unknown[]): void {
26
+ logForDebugging(format(message, ...args), { level: 'error' })
27
+ }
28
+ }
29
+
30
+ let cached: ComputerUseHostAdapter | undefined
31
+
32
+ /**
33
+ * Process-lifetime singleton. Built once on first CU tool call; native modules
34
+ * (both `@ant/computer-use-input` and `@ant/computer-use-swift`) are loaded
35
+ * here via the executor factory, which throws on load failure — there is no
36
+ * degraded mode.
37
+ */
38
+ export function getComputerUseHostAdapter(): ComputerUseHostAdapter {
39
+ if (cached) return cached
40
+ cached = {
41
+ serverName: COMPUTER_USE_MCP_SERVER_NAME,
42
+ logger: new DebugLogger(),
43
+ executor: createCliExecutor({
44
+ getMouseAnimationEnabled: () => getChicagoSubGates().mouseAnimation,
45
+ getHideBeforeActionEnabled: () => getChicagoSubGates().hideBeforeAction,
46
+ }),
47
+ ensureOsPermissions: async () => {
48
+ const cu = requireComputerUseSwift()
49
+ const accessibility = cu.tcc.checkAccessibility()
50
+ const screenRecording = cu.tcc.checkScreenRecording()
51
+ return accessibility && screenRecording
52
+ ? { granted: true }
53
+ : { granted: false, accessibility, screenRecording }
54
+ },
55
+ isDisabled: () => !getChicagoEnabled(),
56
+ getSubGates: getChicagoSubGates,
57
+ // cleanup.ts always unhides at turn end — no user preference to disable it.
58
+ getAutoUnhideEnabled: () => true,
59
+
60
+ // Pixel-validation JPEG decode+crop. MUST be synchronous (the package
61
+ // does `patch1.equals(patch2)` directly on the return value). Cowork uses
62
+ // Electron's `nativeImage` (sync); our `image-processor-napi` is
63
+ // sharp-compatible and async-only. Returning null → validation skipped,
64
+ // click proceeds — the designed fallback per `PixelCompareResult.skipped`.
65
+ // The sub-gate defaults to false anyway.
66
+ cropRawPatch: () => null,
67
+ }
68
+ return cached
69
+ }
@@ -0,0 +1,30 @@
1
+ import type {
2
+ ComputerUseInput,
3
+ ComputerUseInputAPI,
4
+ } from '@ant/computer-use-input'
5
+
6
+ let cached: ComputerUseInputAPI | undefined
7
+
8
+ /**
9
+ * Package's js/index.js reads COMPUTER_USE_INPUT_NODE_PATH (baked by
10
+ * build-with-plugins.ts on darwin targets, unset otherwise — falls through to
11
+ * the node_modules prebuilds/ path).
12
+ *
13
+ * The package exports a discriminated union on `isSupported` — narrowed here
14
+ * once so callers get the bare `ComputerUseInputAPI` without re-checking.
15
+ *
16
+ * key()/keys() dispatch enigo work onto DispatchQueue.main via
17
+ * dispatch2::run_on_main, then block a tokio worker on a channel. Under
18
+ * Electron (CFRunLoop drains the main queue) this works; under libuv
19
+ * (Node/bun) the main queue never drains and the promise hangs. The executor
20
+ * calls these inside drainRunLoop().
21
+ */
22
+ export function requireComputerUseInput(): ComputerUseInputAPI {
23
+ if (cached) return cached
24
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
25
+ const input = require('@ant/computer-use-input') as ComputerUseInput
26
+ if (!input.isSupported) {
27
+ throw new Error('@ant/computer-use-input is not supported on this platform')
28
+ }
29
+ return (cached = input)
30
+ }
@@ -0,0 +1,106 @@
1
+ import {
2
+ buildComputerUseTools,
3
+ createComputerUseMcpServer,
4
+ } from '@ant/computer-use-mcp'
5
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
6
+ import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js'
7
+ import { homedir } from 'os'
8
+
9
+ import { shutdownDatadog } from '../../services/analytics/datadog.js'
10
+ import { shutdown1PEventLogging } from '../../services/analytics/firstPartyEventLogger.js'
11
+ import { initializeAnalyticsSink } from '../../services/analytics/sink.js'
12
+ import { enableConfigs } from '../config.js'
13
+ import { logForDebugging } from '../debug.js'
14
+ import { filterAppsForDescription } from './appNames.js'
15
+ import { getChicagoCoordinateMode } from './gates.js'
16
+ import { getComputerUseHostAdapter } from './hostAdapter.js'
17
+
18
+ const APP_ENUM_TIMEOUT_MS = 1000
19
+
20
+ /**
21
+ * Enumerate installed apps, timed. Fails soft — if Spotlight is slow or
22
+ * claude-swift throws, the tool description just omits the list. Resolution
23
+ * happens at call time regardless; the model just doesn't get hints.
24
+ */
25
+ async function tryGetInstalledAppNames(): Promise<string[] | undefined> {
26
+ const adapter = getComputerUseHostAdapter()
27
+ const enumP = adapter.executor.listInstalledApps()
28
+ let timer: ReturnType<typeof setTimeout> | undefined
29
+ const timeoutP = new Promise<undefined>(resolve => {
30
+ timer = setTimeout(resolve, APP_ENUM_TIMEOUT_MS, undefined)
31
+ })
32
+ const installed = await Promise.race([enumP, timeoutP])
33
+ .catch(() => undefined)
34
+ .finally(() => clearTimeout(timer))
35
+ if (!installed) {
36
+ // The enumeration continues in the background — swallow late rejections.
37
+ void enumP.catch(() => {})
38
+ logForDebugging(
39
+ `[Computer Use MCP] app enumeration exceeded ${APP_ENUM_TIMEOUT_MS}ms or failed; tool description omits list`,
40
+ )
41
+ return undefined
42
+ }
43
+ return filterAppsForDescription(installed, homedir())
44
+ }
45
+
46
+ /**
47
+ * Construct the in-process server. Delegates to the package's
48
+ * `createComputerUseMcpServer` for the Server object + stub CallTool handler,
49
+ * then REPLACES the ListTools handler with one that includes installed-app
50
+ * names in the `request_access` description (the package's factory doesn't
51
+ * take `installedAppNames`, and Cowork builds its own tool array in
52
+ * serverDef.ts for the same reason).
53
+ *
54
+ * Async so the 1s app-enumeration timeout doesn't block startup — called from
55
+ * an `await import()` in `client.ts` on first CU connection, not `main.tsx`.
56
+ *
57
+ * Real dispatch still goes through `wrapper.tsx`'s `.call()` override; this
58
+ * server exists only to answer ListTools.
59
+ */
60
+ export async function createComputerUseMcpServerForCli(): Promise<
61
+ ReturnType<typeof createComputerUseMcpServer>
62
+ > {
63
+ const adapter = getComputerUseHostAdapter()
64
+ const coordinateMode = getChicagoCoordinateMode()
65
+ const server = createComputerUseMcpServer(adapter, coordinateMode)
66
+
67
+ const installedAppNames = await tryGetInstalledAppNames()
68
+ const tools = buildComputerUseTools(
69
+ adapter.executor.capabilities,
70
+ coordinateMode,
71
+ installedAppNames,
72
+ )
73
+ server.setRequestHandler(ListToolsRequestSchema, async () =>
74
+ adapter.isDisabled() ? { tools: [] } : { tools },
75
+ )
76
+
77
+ return server
78
+ }
79
+
80
+ /**
81
+ * Subprocess entrypoint for `--computer-use-mcp`. Mirror of
82
+ * `runClaudeInChromeMcpServer` — stdio transport, exit on stdin close,
83
+ * flush analytics before exit.
84
+ */
85
+ export async function runComputerUseMcpServer(): Promise<void> {
86
+ enableConfigs()
87
+ initializeAnalyticsSink()
88
+
89
+ const server = await createComputerUseMcpServerForCli()
90
+ const transport = new StdioServerTransport()
91
+
92
+ let exiting = false
93
+ const shutdownAndExit = async (): Promise<void> => {
94
+ if (exiting) return
95
+ exiting = true
96
+ await Promise.all([shutdown1PEventLogging(), shutdownDatadog()])
97
+ // eslint-disable-next-line custom-rules/no-process-exit
98
+ process.exit(0)
99
+ }
100
+ process.stdin.on('end', () => void shutdownAndExit())
101
+ process.stdin.on('error', () => void shutdownAndExit())
102
+
103
+ logForDebugging('[Computer Use MCP] Starting MCP server')
104
+ await server.connect(transport)
105
+ logForDebugging('[Computer Use MCP] MCP server started')
106
+ }
@@ -0,0 +1,53 @@
1
+ import { buildComputerUseTools } from '@ant/computer-use-mcp'
2
+ import { join } from 'path'
3
+ import { fileURLToPath } from 'url'
4
+ import { buildMcpToolName } from '../../services/mcp/mcpStringUtils.js'
5
+ import type { ScopedMcpServerConfig } from '../../services/mcp/types.js'
6
+
7
+ import { isInBundledMode } from '../bundledMode.js'
8
+ import { CLI_CU_CAPABILITIES, COMPUTER_USE_MCP_SERVER_NAME } from './common.js'
9
+ import { getChicagoCoordinateMode } from './gates.js'
10
+
11
+ /**
12
+ * Build the dynamic MCP config + allowed tool names. Mirror of
13
+ * `setupClaudeInChrome`. The `mcp__computer-use__*` tools are added to
14
+ * `allowedTools` so they bypass the normal permission prompt — the package's
15
+ * `request_access` handles approval for the whole session.
16
+ *
17
+ * The MCP layer isn't ceremony: the API backend detects `mcp__computer-use__*`
18
+ * tool names and emits a CU availability hint into the system prompt
19
+ * (COMPUTER_USE_MCP_AVAILABILITY_HINT in the anthropic repo). Built-in tools
20
+ * with different names wouldn't trigger it. Cowork uses the same names for the
21
+ * same reason (apps/desktop/src/main/local-agent-mode/systemPrompt.ts:314).
22
+ */
23
+ export function setupComputerUseMCP(): {
24
+ mcpConfig: Record<string, ScopedMcpServerConfig>
25
+ allowedTools: string[]
26
+ } {
27
+ const allowedTools = buildComputerUseTools(
28
+ CLI_CU_CAPABILITIES,
29
+ getChicagoCoordinateMode(),
30
+ ).map(t => buildMcpToolName(COMPUTER_USE_MCP_SERVER_NAME, t.name))
31
+
32
+ // command/args are never spawned — client.ts intercepts by name and
33
+ // uses the in-process server. The config just needs to exist with
34
+ // type 'stdio' to hit the right branch. Mirrors Chrome's setup.
35
+ const args = isInBundledMode()
36
+ ? ['--computer-use-mcp']
37
+ : [
38
+ join(fileURLToPath(import.meta.url), '..', 'cli.js'),
39
+ '--computer-use-mcp',
40
+ ]
41
+
42
+ return {
43
+ mcpConfig: {
44
+ [COMPUTER_USE_MCP_SERVER_NAME]: {
45
+ type: 'stdio',
46
+ command: process.execPath,
47
+ args,
48
+ scope: 'dynamic',
49
+ } as const,
50
+ },
51
+ allowedTools,
52
+ }
53
+ }
@@ -0,0 +1,23 @@
1
+ import type { ComputerUseAPI } from '@ant/computer-use-swift'
2
+
3
+ let cached: ComputerUseAPI | undefined
4
+
5
+ /**
6
+ * Package's js/index.js reads COMPUTER_USE_SWIFT_NODE_PATH (baked by
7
+ * build-with-plugins.ts on darwin targets, unset otherwise — falls through to
8
+ * the node_modules prebuilds/ path). We cache the loaded native module.
9
+ *
10
+ * The four @MainActor methods (captureExcluding, captureRegion,
11
+ * apps.listInstalled, resolvePrepareCapture) dispatch to DispatchQueue.main
12
+ * and will hang under libuv unless CFRunLoop is pumped — call sites wrap
13
+ * these in drainRunLoop().
14
+ */
15
+ export function requireComputerUseSwift(): ComputerUseAPI {
16
+ if (process.platform !== 'darwin') {
17
+ throw new Error('@ant/computer-use-swift is macOS-only')
18
+ }
19
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
20
+ return (cached ??= require('@ant/computer-use-swift') as ComputerUseAPI)
21
+ }
22
+
23
+ export type { ComputerUseAPI }
@@ -0,0 +1,125 @@
1
+ import * as React from 'react';
2
+ import { MessageResponse } from '../../components/MessageResponse.js';
3
+ import { Text } from '../../ink.js';
4
+ import { truncateToWidth } from '../format.js';
5
+ import type { MCPToolResult } from '../mcpValidation.js';
6
+ type CuToolInput = Record<string, unknown> & {
7
+ coordinate?: [number, number];
8
+ start_coordinate?: [number, number];
9
+ text?: string;
10
+ apps?: Array<{
11
+ displayName?: string;
12
+ }>;
13
+ region?: [number, number, number, number];
14
+ direction?: string;
15
+ amount?: number;
16
+ duration?: number;
17
+ };
18
+ function fmtCoord(c: [number, number] | undefined): string {
19
+ return c ? `(${c[0]}, ${c[1]})` : '';
20
+ }
21
+ const RESULT_SUMMARY: Readonly<Partial<Record<string, string>>> = {
22
+ screenshot: 'Captured',
23
+ zoom: 'Captured',
24
+ request_access: 'Access updated',
25
+ left_click: 'Clicked',
26
+ right_click: 'Clicked',
27
+ middle_click: 'Clicked',
28
+ double_click: 'Clicked',
29
+ triple_click: 'Clicked',
30
+ type: 'Typed',
31
+ key: 'Pressed',
32
+ hold_key: 'Pressed',
33
+ scroll: 'Scrolled',
34
+ left_click_drag: 'Dragged',
35
+ open_application: 'Opened'
36
+ };
37
+
38
+ /**
39
+ * Rendering overrides for `mcp__computer-use__*` tools. Spread into the MCP
40
+ * tool object in `client.ts` after the default `userFacingName`, so these win.
41
+ * Mirror of `getClaudeInChromeMCPToolOverrides`.
42
+ */
43
+ export function getComputerUseMCPRenderingOverrides(toolName: string): {
44
+ userFacingName: () => string;
45
+ renderToolUseMessage: (input: Record<string, unknown>, options: {
46
+ verbose: boolean;
47
+ }) => React.ReactNode;
48
+ renderToolResultMessage: (output: MCPToolResult, progressMessages: unknown[], options: {
49
+ verbose: boolean;
50
+ }) => React.ReactNode;
51
+ } {
52
+ return {
53
+ userFacingName() {
54
+ return `Computer Use[${toolName}]`;
55
+ },
56
+ // AssistantToolUseMessage.tsx contract: null hides the ENTIRE row, '' shows
57
+ // the tool name without "(args)". Every path below returns '' when there's
58
+ // nothing to show — never null.
59
+ renderToolUseMessage(input: CuToolInput) {
60
+ switch (toolName) {
61
+ case 'screenshot':
62
+ case 'left_mouse_down':
63
+ case 'left_mouse_up':
64
+ case 'cursor_position':
65
+ case 'list_granted_applications':
66
+ case 'read_clipboard':
67
+ return '';
68
+ case 'left_click':
69
+ case 'right_click':
70
+ case 'middle_click':
71
+ case 'double_click':
72
+ case 'triple_click':
73
+ case 'mouse_move':
74
+ return fmtCoord(input.coordinate);
75
+ case 'left_click_drag':
76
+ return input.start_coordinate ? `${fmtCoord(input.start_coordinate)} → ${fmtCoord(input.coordinate)}` : `to ${fmtCoord(input.coordinate)}`;
77
+ case 'type':
78
+ return typeof input.text === 'string' ? `"${truncateToWidth(input.text, 40)}"` : '';
79
+ case 'key':
80
+ case 'hold_key':
81
+ return typeof input.text === 'string' ? input.text : '';
82
+ case 'scroll':
83
+ return [input.direction, input.amount && `×${input.amount}`, input.coordinate && `at ${fmtCoord(input.coordinate)}`].filter(Boolean).join(' ');
84
+ case 'zoom':
85
+ {
86
+ const r = input.region;
87
+ return Array.isArray(r) && r.length === 4 ? `[${r[0]}, ${r[1]}, ${r[2]}, ${r[3]}]` : '';
88
+ }
89
+ case 'wait':
90
+ return typeof input.duration === 'number' ? `${input.duration}s` : '';
91
+ case 'write_clipboard':
92
+ return typeof input.text === 'string' ? `"${truncateToWidth(input.text, 40)}"` : '';
93
+ case 'open_application':
94
+ return typeof input.bundle_id === 'string' ? String(input.bundle_id) : '';
95
+ case 'request_access':
96
+ {
97
+ const apps = input.apps;
98
+ if (!Array.isArray(apps)) return '';
99
+ const names = apps.map(a => typeof a?.displayName === 'string' ? a.displayName : '').filter(Boolean);
100
+ return names.join(', ');
101
+ }
102
+ case 'computer_batch':
103
+ {
104
+ const actions = input.actions;
105
+ return Array.isArray(actions) ? `${actions.length} actions` : '';
106
+ }
107
+ default:
108
+ return '';
109
+ }
110
+ },
111
+ renderToolResultMessage(output, _progress, {
112
+ verbose
113
+ }) {
114
+ if (verbose || typeof output !== 'object' || output === null) return null;
115
+
116
+ // Non-verbose: one-line dim summary, like Chrome's pattern.
117
+ const summary = RESULT_SUMMARY[toolName];
118
+ if (!summary) return null;
119
+ return <MessageResponse height={1}>
120
+ <Text dimColor>{summary}</Text>
121
+ </MessageResponse>;
122
+ }
123
+ };
124
+ }
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIk1lc3NhZ2VSZXNwb25zZSIsIlRleHQiLCJ0cnVuY2F0ZVRvV2lkdGgiLCJNQ1BUb29sUmVzdWx0IiwiQ3VUb29sSW5wdXQiLCJSZWNvcmQiLCJjb29yZGluYXRlIiwic3RhcnRfY29vcmRpbmF0ZSIsInRleHQiLCJhcHBzIiwiQXJyYXkiLCJkaXNwbGF5TmFtZSIsInJlZ2lvbiIsImRpcmVjdGlvbiIsImFtb3VudCIsImR1cmF0aW9uIiwiZm10Q29vcmQiLCJjIiwiUkVTVUxUX1NVTU1BUlkiLCJSZWFkb25seSIsIlBhcnRpYWwiLCJzY3JlZW5zaG90Iiwiem9vbSIsInJlcXVlc3RfYWNjZXNzIiwibGVmdF9jbGljayIsInJpZ2h0X2NsaWNrIiwibWlkZGxlX2NsaWNrIiwiZG91YmxlX2NsaWNrIiwidHJpcGxlX2NsaWNrIiwidHlwZSIsImtleSIsImhvbGRfa2V5Iiwic2Nyb2xsIiwibGVmdF9jbGlja19kcmFnIiwib3Blbl9hcHBsaWNhdGlvbiIsImdldENvbXB1dGVyVXNlTUNQUmVuZGVyaW5nT3ZlcnJpZGVzIiwidG9vbE5hbWUiLCJ1c2VyRmFjaW5nTmFtZSIsInJlbmRlclRvb2xVc2VNZXNzYWdlIiwiaW5wdXQiLCJvcHRpb25zIiwidmVyYm9zZSIsIlJlYWN0Tm9kZSIsInJlbmRlclRvb2xSZXN1bHRNZXNzYWdlIiwib3V0cHV0IiwicHJvZ3Jlc3NNZXNzYWdlcyIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwiciIsImlzQXJyYXkiLCJsZW5ndGgiLCJidW5kbGVfaWQiLCJTdHJpbmciLCJuYW1lcyIsIm1hcCIsImEiLCJhY3Rpb25zIiwiX3Byb2dyZXNzIiwic3VtbWFyeSJdLCJzb3VyY2VzIjpbInRvb2xSZW5kZXJpbmcudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgTWVzc2FnZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9NZXNzYWdlUmVzcG9uc2UuanMnXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdHJ1bmNhdGVUb1dpZHRoIH0gZnJvbSAnLi4vZm9ybWF0LmpzJ1xuaW1wb3J0IHR5cGUgeyBNQ1BUb29sUmVzdWx0IH0gZnJvbSAnLi4vbWNwVmFsaWRhdGlvbi5qcydcblxudHlwZSBDdVRvb2xJbnB1dCA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYge1xuICBjb29yZGluYXRlPzogW251bWJlciwgbnVtYmVyXVxuICBzdGFydF9jb29yZGluYXRlPzogW251bWJlciwgbnVtYmVyXVxuICB0ZXh0Pzogc3RyaW5nXG4gIGFwcHM/OiBBcnJheTx7IGRpc3BsYXlOYW1lPzogc3RyaW5nIH0+XG4gIHJlZ2lvbj86IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdXG4gIGRpcmVjdGlvbj86IHN0cmluZ1xuICBhbW91bnQ/OiBudW1iZXJcbiAgZHVyYXRpb24/OiBudW1iZXJcbn1cblxuZnVuY3Rpb24gZm10Q29vcmQoYzogW251bWJlciwgbnVtYmVyXSB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiBjID8gYCgke2NbMF19LCAke2NbMV19KWAgOiAnJ1xufVxuXG5jb25zdCBSRVNVTFRfU1VNTUFSWTogUmVhZG9ubHk8UGFydGlhbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pj4gPSB7XG4gIHNjcmVlbnNob3Q6ICdDYXB0dXJlZCcsXG4gIHpvb206ICdDYXB0dXJlZCcsXG4gIHJlcXVlc3RfYWNjZXNzOiAnQWNjZXNzIHVwZGF0ZWQnLFxuICBsZWZ0X2NsaWNrOiAnQ2xpY2tlZCcsXG4gIHJpZ2h0X2NsaWNrOiAnQ2xpY2tlZCcsXG4gIG1pZGRsZV9jbGljazogJ0NsaWNrZWQnLFxuICBkb3VibGVfY2xpY2s6ICdDbGlja2VkJyxcbiAgdHJpcGxlX2NsaWNrOiAnQ2xpY2tlZCcsXG4gIHR5cGU6ICdUeXBlZCcsXG4gIGtleTogJ1ByZXNzZWQnLFxuICBob2xkX2tleTogJ1ByZXNzZWQnLFxuICBzY3JvbGw6ICdTY3JvbGxlZCcsXG4gIGxlZnRfY2xpY2tfZHJhZzogJ0RyYWdnZWQnLFxuICBvcGVuX2FwcGxpY2F0aW9uOiAnT3BlbmVkJyxcbn1cblxuLyoqXG4gKiBSZW5kZXJpbmcgb3ZlcnJpZGVzIGZvciBgbWNwX19jb21wdXRlci11c2VfXypgIHRvb2xzLiBTcHJlYWQgaW50byB0aGUgTUNQXG4gKiB0b29sIG9iamVjdCBpbiBgY2xpZW50LnRzYCBhZnRlciB0aGUgZGVmYXVsdCBgdXNlckZhY2luZ05hbWVgLCBzbyB0aGVzZSB3aW4uXG4gKiBNaXJyb3Igb2YgYGdldENsYXVkZUluQ2hyb21lTUNQVG9vbE92ZXJyaWRlc2AuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21wdXRlclVzZU1DUFJlbmRlcmluZ092ZXJyaWRlcyh0b29sTmFtZTogc3RyaW5nKToge1xuICB1c2VyRmFjaW5nTmFtZTogKCkgPT4gc3RyaW5nXG4gIHJlbmRlclRvb2xVc2VNZXNzYWdlOiAoXG4gICAgaW5wdXQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIG9wdGlvbnM6IHsgdmVyYm9zZTogYm9vbGVhbiB9LFxuICApID0+IFJlYWN0LlJlYWN0Tm9kZVxuICByZW5kZXJUb29sUmVzdWx0TWVzc2FnZTogKFxuICAgIG91dHB1dDogTUNQVG9vbFJlc3VsdCxcbiAgICBwcm9ncmVzc01lc3NhZ2VzOiB1bmtub3duW10sXG4gICAgb3B0aW9uczogeyB2ZXJib3NlOiBib29sZWFuIH0sXG4gICkgPT4gUmVhY3QuUmVhY3ROb2RlXG59IHtcbiAgcmV0dXJuIHtcbiAgICB1c2VyRmFjaW5nTmFtZSgpIHtcbiAgICAgIHJldHVybiBgQ29tcHV0ZXIgVXNlWyR7dG9vbE5hbWV9XWBcbiAgICB9LFxuXG4gICAgLy8gQXNzaXN0YW50VG9vbFVzZU1lc3NhZ2UudHN4IGNvbnRyYWN0OiBudWxsIGhpZGVzIHRoZSBFTlRJUkUgcm93LCAnJyBzaG93c1xuICAgIC8vIHRoZSB0b29sIG5hbWUgd2l0aG91dCBcIihhcmdzKVwiLiBFdmVyeSBwYXRoIGJlbG93IHJldHVybnMgJycgd2hlbiB0aGVyZSdzXG4gICAgLy8gbm90aGluZyB0byBzaG93IOKAlCBuZXZlciBudWxsLlxuICAgIHJlbmRlclRvb2xVc2VNZXNzYWdlKGlucHV0OiBDdVRvb2xJbnB1dCkge1xuICAgICAgc3dpdGNoICh0b29sTmFtZSkge1xuICAgICAgICBjYXNlICdzY3JlZW5zaG90JzpcbiAgICAgICAgY2FzZSAnbGVmdF9tb3VzZV9kb3duJzpcbiAgICAgICAgY2FzZSAnbGVmdF9tb3VzZV91cCc6XG4gICAgICAgIGNhc2UgJ2N1cnNvcl9wb3NpdGlvbic6XG4gICAgICAgIGNhc2UgJ2xpc3RfZ3JhbnRlZF9hcHBsaWNhdGlvbnMnOlxuICAgICAgICBjYXNlICdyZWFkX2NsaXBib2FyZCc6XG4gICAgICAgICAgcmV0dXJuICcnXG5cbiAgICAgICAgY2FzZSAnbGVmdF9jbGljayc6XG4gICAgICAgIGNhc2UgJ3JpZ2h0X2NsaWNrJzpcbiAgICAgICAgY2FzZSAnbWlkZGxlX2NsaWNrJzpcbiAgICAgICAgY2FzZSAnZG91YmxlX2NsaWNrJzpcbiAgICAgICAgY2FzZSAndHJpcGxlX2NsaWNrJzpcbiAgICAgICAgY2FzZSAnbW91c2VfbW92ZSc6XG4gICAgICAgICAgcmV0dXJuIGZtdENvb3JkKGlucHV0LmNvb3JkaW5hdGUpXG5cbiAgICAgICAgY2FzZSAnbGVmdF9jbGlja19kcmFnJzpcbiAgICAgICAgICByZXR1cm4gaW5wdXQuc3RhcnRfY29vcmRpbmF0ZVxuICAgICAgICAgICAgPyBgJHtmbXRDb29yZChpbnB1dC5zdGFydF9jb29yZGluYXRlKX0g4oaSICR7Zm10Q29vcmQoaW5wdXQuY29vcmRpbmF0ZSl9YFxuICAgICAgICAgICAgOiBgdG8gJHtmbXRDb29yZChpbnB1dC5jb29yZGluYXRlKX1gXG5cbiAgICAgICAgY2FzZSAndHlwZSc6XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dC50ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBgXCIke3RydW5jYXRlVG9XaWR0aChpbnB1dC50ZXh0LCA0MCl9XCJgXG4gICAgICAgICAgICA6ICcnXG5cbiAgICAgICAgY2FzZSAna2V5JzpcbiAgICAgICAgY2FzZSAnaG9sZF9rZXknOlxuICAgICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQudGV4dCA9PT0gJ3N0cmluZycgPyBpbnB1dC50ZXh0IDogJydcblxuICAgICAgICBjYXNlICdzY3JvbGwnOlxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBpbnB1dC5kaXJlY3Rpb24sXG4gICAgICAgICAgICBpbnB1dC5hbW91bnQgJiYgYMOXJHtpbnB1dC5hbW91bnR9YCxcbiAgICAgICAgICAgIGlucHV0LmNvb3JkaW5hdGUgJiYgYGF0ICR7Zm10Q29vcmQoaW5wdXQuY29vcmRpbmF0ZSl9YCxcbiAgICAgICAgICBdXG4gICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAuam9pbignICcpXG5cbiAgICAgICAgY2FzZSAnem9vbSc6IHtcbiAgICAgICAgICBjb25zdCByID0gaW5wdXQucmVnaW9uXG4gICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocikgJiYgci5sZW5ndGggPT09IDRcbiAgICAgICAgICAgID8gYFske3JbMF19LCAke3JbMV19LCAke3JbMl19LCAke3JbM119XWBcbiAgICAgICAgICAgIDogJydcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3dhaXQnOlxuICAgICAgICAgIHJldHVybiB0eXBlb2YgaW5wdXQuZHVyYXRpb24gPT09ICdudW1iZXInID8gYCR7aW5wdXQuZHVyYXRpb259c2AgOiAnJ1xuXG4gICAgICAgIGNhc2UgJ3dyaXRlX2NsaXBib2FyZCc6XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dC50ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgPyBgXCIke3RydW5jYXRlVG9XaWR0aChpbnB1dC50ZXh0LCA0MCl9XCJgXG4gICAgICAgICAgICA6ICcnXG5cbiAgICAgICAgY2FzZSAnb3Blbl9hcHBsaWNhdGlvbic6XG4gICAgICAgICAgcmV0dXJuIHR5cGVvZiBpbnB1dC5idW5kbGVfaWQgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICA/IFN0cmluZyhpbnB1dC5idW5kbGVfaWQpXG4gICAgICAgICAgICA6ICcnXG5cbiAgICAgICAgY2FzZSAncmVxdWVzdF9hY2Nlc3MnOiB7XG4gICAgICAgICAgY29uc3QgYXBwcyA9IGlucHV0LmFwcHNcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXBwcykpIHJldHVybiAnJ1xuICAgICAgICAgIGNvbnN0IG5hbWVzID0gYXBwc1xuICAgICAgICAgICAgLm1hcChhID0+ICh0eXBlb2YgYT8uZGlzcGxheU5hbWUgPT09ICdzdHJpbmcnID8gYS5kaXNwbGF5TmFtZSA6ICcnKSlcbiAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICByZXR1cm4gbmFtZXMuam9pbignLCAnKVxuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnY29tcHV0ZXJfYmF0Y2gnOiB7XG4gICAgICAgICAgY29uc3QgYWN0aW9ucyA9IGlucHV0LmFjdGlvbnNcbiAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhY3Rpb25zKSA/IGAke2FjdGlvbnMubGVuZ3RofSBhY3Rpb25zYCA6ICcnXG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAnJ1xuICAgICAgfVxuICAgIH0sXG5cbiAgICByZW5kZXJUb29sUmVzdWx0TWVzc2FnZShvdXRwdXQsIF9wcm9ncmVzcywgeyB2ZXJib3NlIH0pIHtcbiAgICAgIGlmICh2ZXJib3NlIHx8IHR5cGVvZiBvdXRwdXQgIT09ICdvYmplY3QnIHx8IG91dHB1dCA9PT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICAgICAgLy8gTm9uLXZlcmJvc2U6IG9uZS1saW5lIGRpbSBzdW1tYXJ5LCBsaWtlIENocm9tZSdzIHBhdHRlcm4uXG4gICAgICBjb25zdCBzdW1tYXJ5ID0gUkVTVUxUX1NVTU1BUllbdG9vbE5hbWVdXG4gICAgICBpZiAoIXN1bW1hcnkpIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8TWVzc2FnZVJlc3BvbnNlIGhlaWdodD17MX0+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+e3N1bW1hcnl9PC9UZXh0PlxuICAgICAgICA8L01lc3NhZ2VSZXNwb25zZT5cbiAgICAgIClcbiAgICB9LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBU0MsZUFBZSxRQUFRLHFDQUFxQztBQUNyRSxTQUFTQyxJQUFJLFFBQVEsY0FBYztBQUNuQyxTQUFTQyxlQUFlLFFBQVEsY0FBYztBQUM5QyxjQUFjQyxhQUFhLFFBQVEscUJBQXFCO0FBRXhELEtBQUtDLFdBQVcsR0FBR0MsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRztFQUMzQ0MsVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0VBQzdCQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztFQUNuQ0MsSUFBSSxDQUFDLEVBQUUsTUFBTTtFQUNiQyxJQUFJLENBQUMsRUFBRUMsS0FBSyxDQUFDO0lBQUVDLFdBQVcsQ0FBQyxFQUFFLE1BQU07RUFBQyxDQUFDLENBQUM7RUFDdENDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0VBQ3pDQyxTQUFTLENBQUMsRUFBRSxNQUFNO0VBQ2xCQyxNQUFNLENBQUMsRUFBRSxNQUFNO0VBQ2ZDLFFBQVEsQ0FBQyxFQUFFLE1BQU07QUFDbkIsQ0FBQztBQUVELFNBQVNDLFFBQVFBLENBQUNDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxNQUFNLENBQUM7RUFDekQsT0FB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