@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,129 @@
1
+ /**
2
+ * Teammate Initialization Module
3
+ *
4
+ * Handles initialization for Claude Code instances running as teammates in a swarm.
5
+ * Registers a Stop hook to notify the team leader when the teammate becomes idle.
6
+ */
7
+
8
+ import type { AppState } from '../../state/AppState.js'
9
+ import { logForDebugging } from '../debug.js'
10
+ import { addFunctionHook } from '../hooks/sessionHooks.js'
11
+ import { applyPermissionUpdate } from '../permissions/PermissionUpdate.js'
12
+ import { jsonStringify } from '../slowOperations.js'
13
+ import { getTeammateColor } from '../teammate.js'
14
+ import {
15
+ createIdleNotification,
16
+ getLastPeerDmSummary,
17
+ writeToMailbox,
18
+ } from '../teammateMailbox.js'
19
+ import { readTeamFile, setMemberActive } from './teamHelpers.js'
20
+
21
+ /**
22
+ * Initializes hooks for a teammate running in a swarm.
23
+ * Should be called early in session startup after AppState is available.
24
+ *
25
+ * Registers a Stop hook that sends an idle notification to the team leader
26
+ * when this teammate's session stops.
27
+ */
28
+ export function initializeTeammateHooks(
29
+ setAppState: (updater: (prev: AppState) => AppState) => void,
30
+ sessionId: string,
31
+ teamInfo: { teamName: string; agentId: string; agentName: string },
32
+ ): void {
33
+ const { teamName, agentId, agentName } = teamInfo
34
+
35
+ // Read team file to get leader ID
36
+ const teamFile = readTeamFile(teamName)
37
+ if (!teamFile) {
38
+ logForDebugging(`[TeammateInit] Team file not found for team: ${teamName}`)
39
+ return
40
+ }
41
+
42
+ const leadAgentId = teamFile.leadAgentId
43
+
44
+ // Apply team-wide allowed paths if any exist
45
+ if (teamFile.teamAllowedPaths && teamFile.teamAllowedPaths.length > 0) {
46
+ logForDebugging(
47
+ `[TeammateInit] Found ${teamFile.teamAllowedPaths.length} team-wide allowed path(s)`,
48
+ )
49
+
50
+ for (const allowedPath of teamFile.teamAllowedPaths) {
51
+ // For absolute paths (starting with /), prepend one / to create //path/** pattern
52
+ // For relative paths, just use path/**
53
+ const ruleContent = allowedPath.path.startsWith('/')
54
+ ? `/${allowedPath.path}/**`
55
+ : `${allowedPath.path}/**`
56
+
57
+ logForDebugging(
58
+ `[TeammateInit] Applying team permission: ${allowedPath.toolName} allowed in ${allowedPath.path} (rule: ${ruleContent})`,
59
+ )
60
+
61
+ setAppState(prev => ({
62
+ ...prev,
63
+ toolPermissionContext: applyPermissionUpdate(
64
+ prev.toolPermissionContext,
65
+ {
66
+ type: 'addRules',
67
+ rules: [
68
+ {
69
+ toolName: allowedPath.toolName,
70
+ ruleContent,
71
+ },
72
+ ],
73
+ behavior: 'allow',
74
+ destination: 'session',
75
+ },
76
+ ),
77
+ }))
78
+ }
79
+ }
80
+
81
+ // Find the leader's name from the members array
82
+ const leadMember = teamFile.members.find(m => m.agentId === leadAgentId)
83
+ const leadAgentName = leadMember?.name || 'team-lead'
84
+
85
+ // Don't register hook if this agent is the leader
86
+ if (agentId === leadAgentId) {
87
+ logForDebugging(
88
+ '[TeammateInit] This agent is the team leader - skipping idle notification hook',
89
+ )
90
+ return
91
+ }
92
+
93
+ logForDebugging(
94
+ `[TeammateInit] Registering Stop hook for teammate ${agentName} to notify leader ${leadAgentName}`,
95
+ )
96
+
97
+ // Register Stop hook to notify leader when this teammate stops
98
+ addFunctionHook(
99
+ setAppState,
100
+ sessionId,
101
+ 'Stop',
102
+ '', // No matcher - applies to all Stop events
103
+ async (messages, _signal) => {
104
+ // Mark this teammate as idle in the team config (fire and forget)
105
+ void setMemberActive(teamName, agentName, false)
106
+
107
+ // Send idle notification to the team leader using agent name (not UUID)
108
+ // Must await to ensure the write completes before process shutdown
109
+ const notification = createIdleNotification(agentName, {
110
+ idleReason: 'available',
111
+ summary: getLastPeerDmSummary(messages),
112
+ })
113
+ await writeToMailbox(leadAgentName, {
114
+ from: agentName,
115
+ text: jsonStringify(notification),
116
+ timestamp: new Date().toISOString(),
117
+ color: getTeammateColor(),
118
+ })
119
+ logForDebugging(
120
+ `[TeammateInit] Sent idle notification to leader ${leadAgentName}`,
121
+ )
122
+ return true // Don't block the Stop
123
+ },
124
+ 'Failed to send idle notification to team leader',
125
+ {
126
+ timeout: 10000,
127
+ },
128
+ )
129
+ }
@@ -0,0 +1,107 @@
1
+ import type { AgentColorName } from '../../tools/AgentTool/agentColorManager.js'
2
+ import { AGENT_COLORS } from '../../tools/AgentTool/agentColorManager.js'
3
+ import { detectAndGetBackend } from './backends/registry.js'
4
+ import type { PaneBackend } from './backends/types.js'
5
+
6
+ // Track color assignments for teammates (persisted per session)
7
+ const teammateColorAssignments = new Map<string, AgentColorName>()
8
+ let colorIndex = 0
9
+
10
+ /**
11
+ * Gets the appropriate backend for the current environment.
12
+ * detectAndGetBackend() caches internally — no need for a second cache here.
13
+ */
14
+ async function getBackend(): Promise<PaneBackend> {
15
+ return (await detectAndGetBackend()).backend
16
+ }
17
+
18
+ /**
19
+ * Assigns a unique color to a teammate from the available palette.
20
+ * Colors are assigned in round-robin order.
21
+ */
22
+ export function assignTeammateColor(teammateId: string): AgentColorName {
23
+ const existing = teammateColorAssignments.get(teammateId)
24
+ if (existing) {
25
+ return existing
26
+ }
27
+
28
+ const color = AGENT_COLORS[colorIndex % AGENT_COLORS.length]!
29
+ teammateColorAssignments.set(teammateId, color)
30
+ colorIndex++
31
+
32
+ return color
33
+ }
34
+
35
+ /**
36
+ * Gets the assigned color for a teammate, if any.
37
+ */
38
+ export function getTeammateColor(
39
+ teammateId: string,
40
+ ): AgentColorName | undefined {
41
+ return teammateColorAssignments.get(teammateId)
42
+ }
43
+
44
+ /**
45
+ * Clears all teammate color assignments.
46
+ * Called during team cleanup to reset state for potential new teams.
47
+ */
48
+ export function clearTeammateColors(): void {
49
+ teammateColorAssignments.clear()
50
+ colorIndex = 0
51
+ }
52
+
53
+ /**
54
+ * Checks if we're currently running inside a tmux session.
55
+ * Uses the detection module directly for this check.
56
+ */
57
+ export async function isInsideTmux(): Promise<boolean> {
58
+ const { isInsideTmux: checkTmux } = await import('./backends/detection.js')
59
+ return checkTmux()
60
+ }
61
+
62
+ /**
63
+ * Creates a new teammate pane in the swarm view.
64
+ * Automatically selects the appropriate backend (tmux or iTerm2) based on environment.
65
+ *
66
+ * When running INSIDE tmux:
67
+ * - Uses TmuxBackend to split the current window
68
+ * - Leader stays on left (30%), teammates on right (70%)
69
+ *
70
+ * When running in iTerm2 (not in tmux) with it2 CLI:
71
+ * - Uses ITermBackend for native iTerm2 split panes
72
+ *
73
+ * When running OUTSIDE tmux/iTerm2:
74
+ * - Falls back to TmuxBackend with external claude-swarm session
75
+ */
76
+ export async function createTeammatePaneInSwarmView(
77
+ teammateName: string,
78
+ teammateColor: AgentColorName,
79
+ ): Promise<{ paneId: string; isFirstTeammate: boolean }> {
80
+ const backend = await getBackend()
81
+ return backend.createTeammatePaneInSwarmView(teammateName, teammateColor)
82
+ }
83
+
84
+ /**
85
+ * Enables pane border status for a window (shows pane titles).
86
+ * Delegates to the detected backend.
87
+ */
88
+ export async function enablePaneBorderStatus(
89
+ windowTarget?: string,
90
+ useSwarmSocket = false,
91
+ ): Promise<void> {
92
+ const backend = await getBackend()
93
+ return backend.enablePaneBorderStatus(windowTarget, useSwarmSocket)
94
+ }
95
+
96
+ /**
97
+ * Sends a command to a specific pane.
98
+ * Delegates to the detected backend.
99
+ */
100
+ export async function sendCommandToPane(
101
+ paneId: string,
102
+ command: string,
103
+ useSwarmSocket = false,
104
+ ): Promise<void> {
105
+ const backend = await getBackend()
106
+ return backend.sendCommandToPane(paneId, command, useSwarmSocket)
107
+ }
@@ -0,0 +1,10 @@
1
+ import { CLAUDE_OPUS_4_6_CONFIG } from '../model/configs.js'
2
+ import { getAPIProvider } from '../model/providers.js'
3
+
4
+ // @[MODEL LAUNCH]: Update the fallback model below.
5
+ // When the user has never set teammateDefaultModel in /config, new teammates
6
+ // use Opus 4.6. Must be provider-aware so Bedrock/Vertex/Foundry customers get
7
+ // the correct model ID.
8
+ export function getHardcodedTeammateModelFallback(): string {
9
+ return CLAUDE_OPUS_4_6_CONFIG[getAPIProvider()]
10
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Teammate-specific system prompt addendum.
3
+ *
4
+ * This is appended to the full main agent system prompt for teammates.
5
+ * It explains visibility constraints and communication requirements.
6
+ */
7
+
8
+ export const TEAMMATE_SYSTEM_PROMPT_ADDENDUM = `
9
+ # Agent Teammate Communication
10
+
11
+ IMPORTANT: You are running as an agent in a team. To communicate with anyone on your team:
12
+ - Use the SendMessage tool with \`to: "<name>"\` to send messages to specific teammates
13
+ - Use the SendMessage tool with \`to: "*"\` sparingly for team-wide broadcasts
14
+
15
+ Just writing a response in text is not visible to others on your team - you MUST use the SendMessage tool.
16
+
17
+ The user interacts primarily with the team lead. Your work is coordinated through the task system and teammate messaging.
18
+ `
@@ -0,0 +1,74 @@
1
+ import { homedir } from 'os'
2
+ import { join } from 'path'
3
+ import { logForDebugging } from './debug.js'
4
+ import { getPlatform, type Platform } from './platform.js'
5
+
6
+ export type SystemDirectories = {
7
+ HOME: string
8
+ DESKTOP: string
9
+ DOCUMENTS: string
10
+ DOWNLOADS: string
11
+ [key: string]: string // Index signature for compatibility with Record<string, string>
12
+ }
13
+
14
+ type EnvLike = Record<string, string | undefined>
15
+
16
+ type SystemDirectoriesOptions = {
17
+ env?: EnvLike
18
+ homedir?: string
19
+ platform?: Platform
20
+ }
21
+
22
+ /**
23
+ * Get cross-platform system directories
24
+ * Handles differences between Windows, macOS, Linux, and WSL
25
+ * @param options Optional overrides for testing (env, homedir, platform)
26
+ */
27
+ export function getSystemDirectories(
28
+ options?: SystemDirectoriesOptions,
29
+ ): SystemDirectories {
30
+ const platform = options?.platform ?? getPlatform()
31
+ const homeDir = options?.homedir ?? homedir()
32
+ const env = options?.env ?? process.env
33
+
34
+ // Default paths used by most platforms
35
+ const defaults: SystemDirectories = {
36
+ HOME: homeDir,
37
+ DESKTOP: join(homeDir, 'Desktop'),
38
+ DOCUMENTS: join(homeDir, 'Documents'),
39
+ DOWNLOADS: join(homeDir, 'Downloads'),
40
+ }
41
+
42
+ switch (platform) {
43
+ case 'windows': {
44
+ // Windows: Use USERPROFILE if available (handles localized folder names)
45
+ const userProfile = env.USERPROFILE || homeDir
46
+ return {
47
+ HOME: homeDir,
48
+ DESKTOP: join(userProfile, 'Desktop'),
49
+ DOCUMENTS: join(userProfile, 'Documents'),
50
+ DOWNLOADS: join(userProfile, 'Downloads'),
51
+ }
52
+ }
53
+
54
+ case 'linux':
55
+ case 'wsl': {
56
+ // Linux/WSL: Check XDG Base Directory specification first
57
+ return {
58
+ HOME: homeDir,
59
+ DESKTOP: env.XDG_DESKTOP_DIR || defaults.DESKTOP,
60
+ DOCUMENTS: env.XDG_DOCUMENTS_DIR || defaults.DOCUMENTS,
61
+ DOWNLOADS: env.XDG_DOWNLOAD_DIR || defaults.DOWNLOADS,
62
+ }
63
+ }
64
+
65
+ case 'macos':
66
+ default: {
67
+ // macOS and unknown platforms use standard paths
68
+ if (platform === 'unknown') {
69
+ logForDebugging(`Unknown platform detected, using default paths`)
70
+ }
71
+ return defaults
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,123 @@
1
+ import { feature } from 'bun:bundle'
2
+ import {
3
+ type AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
4
+ logEvent,
5
+ } from '../services/analytics/index.js'
6
+ import type { ToolUseContext } from '../Tool.js'
7
+ import type { AgentDefinition } from '../tools/AgentTool/loadAgentsDir.js'
8
+ import { isBuiltInAgent } from '../tools/AgentTool/loadAgentsDir.js'
9
+ import { isEnvTruthy } from './envUtils.js'
10
+ import { asSystemPrompt, type SystemPrompt } from './systemPromptType.js'
11
+
12
+ export { asSystemPrompt, type SystemPrompt } from './systemPromptType.js'
13
+
14
+ // Dead code elimination: conditional import for proactive mode.
15
+ // Same pattern as prompts.ts — lazy require to avoid pulling the module
16
+ // into non-proactive builds.
17
+ /* eslint-disable @typescript-eslint/no-require-imports */
18
+ const proactiveModule =
19
+ feature('PROACTIVE') || feature('KAIROS')
20
+ ? (require('../proactive/index.js') as typeof import('../proactive/index.js'))
21
+ : null
22
+ /* eslint-enable @typescript-eslint/no-require-imports */
23
+
24
+ function isProactiveActive_SAFE_TO_CALL_ANYWHERE(): boolean {
25
+ return proactiveModule?.isProactiveActive() ?? false
26
+ }
27
+
28
+ /**
29
+ * Builds the effective system prompt array based on priority:
30
+ * 0. Override system prompt (if set, e.g., via loop mode - REPLACES all other prompts)
31
+ * 1. Coordinator system prompt (if coordinator mode is active)
32
+ * 2. Agent system prompt (if mainThreadAgentDefinition is set)
33
+ * - In proactive mode: agent prompt is APPENDED to default (agent adds domain
34
+ * instructions on top of the autonomous agent prompt, like teammates do)
35
+ * - Otherwise: agent prompt REPLACES default
36
+ * 3. Custom system prompt (if specified via --system-prompt)
37
+ * 4. Default system prompt (the standard Claude Code prompt)
38
+ *
39
+ * Plus appendSystemPrompt is always added at the end if specified (except when override is set).
40
+ */
41
+ export function buildEffectiveSystemPrompt({
42
+ mainThreadAgentDefinition,
43
+ toolUseContext,
44
+ customSystemPrompt,
45
+ defaultSystemPrompt,
46
+ appendSystemPrompt,
47
+ overrideSystemPrompt,
48
+ }: {
49
+ mainThreadAgentDefinition: AgentDefinition | undefined
50
+ toolUseContext: Pick<ToolUseContext, 'options'>
51
+ customSystemPrompt: string | undefined
52
+ defaultSystemPrompt: string[]
53
+ appendSystemPrompt: string | undefined
54
+ overrideSystemPrompt?: string | null
55
+ }): SystemPrompt {
56
+ if (overrideSystemPrompt) {
57
+ return asSystemPrompt([overrideSystemPrompt])
58
+ }
59
+ // Coordinator mode: use coordinator prompt instead of default
60
+ // Use inline env check instead of coordinatorModule to avoid circular
61
+ // dependency issues during test module loading.
62
+ if (
63
+ feature('COORDINATOR_MODE') &&
64
+ isEnvTruthy(process.env.CLAUDE_CODE_COORDINATOR_MODE) &&
65
+ !mainThreadAgentDefinition
66
+ ) {
67
+ // Lazy require to avoid circular dependency at module load time
68
+ const { getCoordinatorSystemPrompt } =
69
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
70
+ require('../coordinator/coordinatorMode.js') as typeof import('../coordinator/coordinatorMode.js')
71
+ return asSystemPrompt([
72
+ getCoordinatorSystemPrompt(),
73
+ ...(appendSystemPrompt ? [appendSystemPrompt] : []),
74
+ ])
75
+ }
76
+
77
+ const agentSystemPrompt = mainThreadAgentDefinition
78
+ ? isBuiltInAgent(mainThreadAgentDefinition)
79
+ ? mainThreadAgentDefinition.getSystemPrompt({
80
+ toolUseContext: { options: toolUseContext.options },
81
+ })
82
+ : mainThreadAgentDefinition.getSystemPrompt()
83
+ : undefined
84
+
85
+ // Log agent memory loaded event for main loop agents
86
+ if (mainThreadAgentDefinition?.memory) {
87
+ logEvent('tengu_agent_memory_loaded', {
88
+ ...(process.env.USER_TYPE === 'ant' && {
89
+ agent_type:
90
+ mainThreadAgentDefinition.agentType as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
91
+ }),
92
+ scope:
93
+ mainThreadAgentDefinition.memory as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
94
+ source:
95
+ 'main-thread' as AnalyticsMetadata_I_VERIFIED_THIS_IS_NOT_CODE_OR_FILEPATHS,
96
+ })
97
+ }
98
+
99
+ // In proactive mode, agent instructions are appended to the default prompt
100
+ // rather than replacing it. The proactive default prompt is already lean
101
+ // (autonomous agent identity + memory + env + proactive section), and agents
102
+ // add domain-specific behavior on top — same pattern as teammates.
103
+ if (
104
+ agentSystemPrompt &&
105
+ (feature('PROACTIVE') || feature('KAIROS')) &&
106
+ isProactiveActive_SAFE_TO_CALL_ANYWHERE()
107
+ ) {
108
+ return asSystemPrompt([
109
+ ...defaultSystemPrompt,
110
+ `\n# Custom Agent Instructions\n${agentSystemPrompt}`,
111
+ ...(appendSystemPrompt ? [appendSystemPrompt] : []),
112
+ ])
113
+ }
114
+
115
+ return asSystemPrompt([
116
+ ...(agentSystemPrompt
117
+ ? [agentSystemPrompt]
118
+ : customSystemPrompt
119
+ ? [customSystemPrompt]
120
+ : defaultSystemPrompt),
121
+ ...(appendSystemPrompt ? [appendSystemPrompt] : []),
122
+ ])
123
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Branded type for system prompt arrays.
3
+ *
4
+ * This module is intentionally dependency-free so it can be imported
5
+ * from anywhere without risking circular initialization issues.
6
+ */
7
+
8
+ export type SystemPrompt = readonly string[] & {
9
+ readonly __brand: 'SystemPrompt'
10
+ }
11
+
12
+ export function asSystemPrompt(value: readonly string[]): SystemPrompt {
13
+ return value as SystemPrompt
14
+ }
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Terminal dark/light mode detection for the 'auto' theme setting.
3
+ *
4
+ * Detection is based on the terminal's actual background color (queried via
5
+ * OSC 11 by systemThemeWatcher.ts) rather than the OS appearance setting —
6
+ * a dark terminal on a light-mode OS should still resolve to 'dark'.
7
+ *
8
+ * The detected theme is cached module-level so callers can resolve 'auto'
9
+ * without awaiting the async OSC round-trip. The cache is seeded from
10
+ * $COLORFGBG (synchronous, set by some terminals at launch) and then
11
+ * updated by the watcher once the OSC 11 response arrives.
12
+ */
13
+
14
+ import type { ThemeName, ThemeSetting } from './theme.js'
15
+
16
+ export type SystemTheme = 'dark' | 'light'
17
+
18
+ let cachedSystemTheme: SystemTheme | undefined
19
+
20
+ /**
21
+ * Get the current terminal theme. Cached after first detection; the watcher
22
+ * updates the cache on live changes.
23
+ */
24
+ export function getSystemThemeName(): SystemTheme {
25
+ if (cachedSystemTheme === undefined) {
26
+ cachedSystemTheme = detectFromColorFgBg() ?? 'dark'
27
+ }
28
+ return cachedSystemTheme
29
+ }
30
+
31
+ /**
32
+ * Update the cached terminal theme. Called by the watcher when the OSC 11
33
+ * query returns so non-React call sites stay in sync.
34
+ */
35
+ export function setCachedSystemTheme(theme: SystemTheme): void {
36
+ cachedSystemTheme = theme
37
+ }
38
+
39
+ /**
40
+ * Resolve a ThemeSetting (which may be 'auto') to a concrete ThemeName.
41
+ */
42
+ export function resolveThemeSetting(setting: ThemeSetting): ThemeName {
43
+ if (setting === 'auto') {
44
+ return getSystemThemeName()
45
+ }
46
+ return setting
47
+ }
48
+
49
+ /**
50
+ * Parse an OSC color response data string into a theme.
51
+ *
52
+ * Accepts XParseColor formats returned by OSC 10/11 queries:
53
+ * - `rgb:R/G/B` where each component is 1–4 hex digits (each scaled to
54
+ * [0, 16^n - 1] for n digits). This is what xterm, iTerm2, Terminal.app,
55
+ * Ghostty, kitty, Alacritty, etc. return.
56
+ * - `#RRGGBB` / `#RRRRGGGGBBBB` (rare, but cheap to accept).
57
+ *
58
+ * Returns undefined for unrecognized formats so callers can fall back.
59
+ */
60
+ export function themeFromOscColor(data: string): SystemTheme | undefined {
61
+ const rgb = parseOscRgb(data)
62
+ if (!rgb) return undefined
63
+ // ITU-R BT.709 relative luminance. Midpoint split: > 0.5 is light.
64
+ const luminance = 0.2126 * rgb.r + 0.7152 * rgb.g + 0.0722 * rgb.b
65
+ return luminance > 0.5 ? 'light' : 'dark'
66
+ }
67
+
68
+ type Rgb = { r: number; g: number; b: number }
69
+
70
+ function parseOscRgb(data: string): Rgb | undefined {
71
+ // rgb:RRRR/GGGG/BBBB — each component is 1–4 hex digits.
72
+ // Some terminals append an alpha component (rgba:…/…/…/…); ignore it.
73
+ const rgbMatch =
74
+ /^rgba?:([0-9a-f]{1,4})\/([0-9a-f]{1,4})\/([0-9a-f]{1,4})/i.exec(data)
75
+ if (rgbMatch) {
76
+ return {
77
+ r: hexComponent(rgbMatch[1]!),
78
+ g: hexComponent(rgbMatch[2]!),
79
+ b: hexComponent(rgbMatch[3]!),
80
+ }
81
+ }
82
+ // #RRGGBB or #RRRRGGGGBBBB — split into three equal hex runs.
83
+ const hashMatch = /^#([0-9a-f]+)$/i.exec(data)
84
+ if (hashMatch && hashMatch[1]!.length % 3 === 0) {
85
+ const hex = hashMatch[1]!
86
+ const n = hex.length / 3
87
+ return {
88
+ r: hexComponent(hex.slice(0, n)),
89
+ g: hexComponent(hex.slice(n, 2 * n)),
90
+ b: hexComponent(hex.slice(2 * n)),
91
+ }
92
+ }
93
+ return undefined
94
+ }
95
+
96
+ /** Normalize a 1–4 digit hex component to [0, 1]. */
97
+ function hexComponent(hex: string): number {
98
+ const max = 16 ** hex.length - 1
99
+ return parseInt(hex, 16) / max
100
+ }
101
+
102
+ /**
103
+ * Read $COLORFGBG for a synchronous initial guess before the OSC 11
104
+ * round-trip completes. Format is `fg;bg` (or `fg;other;bg`) where values
105
+ * are ANSI color indices. rxvt convention: bg 0–6 or 8 are dark; bg 7
106
+ * and 9–15 are light. Only set by some terminals (rxvt-family, Konsole,
107
+ * iTerm2 with the option enabled), so this is a best-effort hint.
108
+ */
109
+ function detectFromColorFgBg(): SystemTheme | undefined {
110
+ const colorfgbg = process.env['COLORFGBG']
111
+ if (!colorfgbg) return undefined
112
+ const parts = colorfgbg.split(';')
113
+ const bg = parts[parts.length - 1]
114
+ if (bg === undefined || bg === '') return undefined
115
+ const bgNum = Number(bg)
116
+ if (!Number.isInteger(bgNum) || bgNum < 0 || bgNum > 15) return undefined
117
+ // 0–6 and 8 are dark ANSI colors; 7 (white) and 9–15 (bright) are light.
118
+ return bgNum <= 6 || bgNum === 8 ? 'dark' : 'light'
119
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Tagged ID encoding compatible with the API's tagged_id.py format.
3
+ *
4
+ * Produces IDs like "user_01PaGUP2rbg1XDh7Z9W1CEpd" from a UUID string.
5
+ * The format is: {tag}_{version}{base58(uuid_as_128bit_int)}
6
+ *
7
+ * This must stay in sync with api/api/common/utils/tagged_id.py.
8
+ */
9
+
10
+ const BASE_58_CHARS =
11
+ '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
12
+ const VERSION = '01'
13
+ // ceil(128 / log2(58)) = 22
14
+ const ENCODED_LENGTH = 22
15
+
16
+ /**
17
+ * Encode a 128-bit unsigned integer as a fixed-length base58 string.
18
+ */
19
+ function base58Encode(n: bigint): string {
20
+ const base = BigInt(BASE_58_CHARS.length)
21
+ const result = new Array<string>(ENCODED_LENGTH).fill(BASE_58_CHARS[0]!)
22
+ let i = ENCODED_LENGTH - 1
23
+ let value = n
24
+ while (value > 0n) {
25
+ const rem = Number(value % base)
26
+ result[i] = BASE_58_CHARS[rem]!
27
+ value = value / base
28
+ i--
29
+ }
30
+ return result.join('')
31
+ }
32
+
33
+ /**
34
+ * Parse a UUID string (with or without hyphens) into a 128-bit bigint.
35
+ */
36
+ function uuidToBigInt(uuid: string): bigint {
37
+ const hex = uuid.replace(/-/g, '')
38
+ if (hex.length !== 32) {
39
+ throw new Error(`Invalid UUID hex length: ${hex.length}`)
40
+ }
41
+ return BigInt('0x' + hex)
42
+ }
43
+
44
+ /**
45
+ * Convert an account UUID to a tagged ID in the API's format.
46
+ *
47
+ * @param tag - The tag prefix (e.g. "user", "org")
48
+ * @param uuid - A UUID string (with or without hyphens)
49
+ * @returns Tagged ID string like "user_01PaGUP2rbg1XDh7Z9W1CEpd"
50
+ */
51
+ export function toTaggedId(tag: string, uuid: string): string {
52
+ const n = uuidToBigInt(uuid)
53
+ return `${tag}_${VERSION}${base58Encode(n)}`
54
+ }