thaddeus 1.0.26 → 1.0.28

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 (2082) hide show
  1. package/package.json +14 -5
  2. package/src/QueryEngine.js +926 -0
  3. package/src/Task.js +49 -0
  4. package/src/Tool.js +61 -0
  5. package/src/assistant/gate.js +5 -0
  6. package/src/assistant/index.js +106 -0
  7. package/src/assistant/sessionHistory.js +145 -0
  8. package/src/bootstrap/state.js +1163 -0
  9. package/src/bridge/bridgeApi.js +304 -0
  10. package/src/bridge/bridgeConfig.js +39 -0
  11. package/src/bridge/bridgeDebug.js +73 -0
  12. package/src/bridge/bridgeEnabled.js +185 -0
  13. package/src/bridge/bridgeMain.js +2289 -0
  14. package/src/bridge/bridgeMessaging.js +353 -0
  15. package/src/bridge/bridgePermissionCallbacks.js +10 -0
  16. package/src/bridge/bridgePointer.js +175 -0
  17. package/src/bridge/bridgeStatusUtil.js +105 -0
  18. package/src/bridge/bridgeUI.js +411 -0
  19. package/src/bridge/capacityWake.js +35 -0
  20. package/src/bridge/codeSessionApi.js +111 -0
  21. package/src/bridge/createSession.js +273 -0
  22. package/src/bridge/debugUtils.js +115 -0
  23. package/src/bridge/envLessBridgeConfig.js +120 -0
  24. package/src/bridge/flushGate.js +65 -0
  25. package/src/bridge/inboundAttachments.js +152 -0
  26. package/src/bridge/inboundMessages.js +63 -0
  27. package/src/bridge/initReplBridge.js +431 -0
  28. package/src/bridge/jwtUtils.js +185 -0
  29. package/src/bridge/peerSessions.js +5 -0
  30. package/src/bridge/pollConfig.js +85 -0
  31. package/src/bridge/pollConfigDefaults.js +62 -0
  32. package/src/bridge/remoteBridgeCore.js +712 -0
  33. package/src/bridge/replBridge.js +1719 -0
  34. package/src/bridge/replBridgeHandle.js +30 -0
  35. package/src/bridge/replBridgeTransport.js +236 -0
  36. package/src/bridge/sessionIdCompat.js +56 -0
  37. package/src/bridge/sessionRunner.js +421 -0
  38. package/src/bridge/trustedDevice.js +170 -0
  39. package/src/bridge/types.js +9 -0
  40. package/src/bridge/webhookSanitizer.js +6 -0
  41. package/src/bridge/workSecret.js +99 -0
  42. package/src/buddy/CompanionSprite.js +348 -0
  43. package/src/buddy/companion.js +107 -0
  44. package/src/buddy/prompt.js +33 -0
  45. package/src/buddy/sprites.js +488 -0
  46. package/src/buddy/types.js +90 -0
  47. package/src/buddy/useBuddyNotification.js +85 -0
  48. package/src/cli/bg.js +17 -0
  49. package/src/cli/exit.js +30 -0
  50. package/src/cli/handlers/agents.js +55 -0
  51. package/src/cli/handlers/auth.js +249 -0
  52. package/src/cli/handlers/autoMode.js +128 -0
  53. package/src/cli/handlers/mcp.js +335 -0
  54. package/src/cli/handlers/plugins.js +634 -0
  55. package/src/cli/handlers/templateJobs.js +19 -0
  56. package/src/cli/handlers/util.js +76 -0
  57. package/src/cli/ndjsonSafeStringify.js +27 -0
  58. package/src/cli/print.js +4294 -0
  59. package/src/cli/remoteIO.js +208 -0
  60. package/src/cli/structuredIO.js +644 -0
  61. package/src/cli/transports/HybridTransport.js +233 -0
  62. package/src/cli/transports/SSETransport.js +538 -0
  63. package/src/cli/transports/SerialBatchEventUploader.js +224 -0
  64. package/src/cli/transports/WebSocketTransport.js +613 -0
  65. package/src/cli/transports/WorkerStateUploader.js +88 -0
  66. package/src/cli/transports/ccrClient.js +711 -0
  67. package/src/cli/transports/transportUtils.js +39 -0
  68. package/src/cli/update.js +314 -0
  69. package/src/commandCenter/launch.js +39 -0
  70. package/src/commandCenter/phoneApi.js +168 -0
  71. package/src/commandCenter/phoneStore.js +159 -0
  72. package/src/commandCenter/reactorBus.js +130 -0
  73. package/src/commandCenter/server.js +288 -0
  74. package/src/commandCenter/server.ts +42 -7
  75. package/src/commandCenter/tunnel.js +199 -0
  76. package/src/commands/add-dir/add-dir.js +121 -0
  77. package/src/commands/add-dir/index.js +8 -0
  78. package/src/commands/add-dir/validation.js +76 -0
  79. package/src/commands/advisor.js +88 -0
  80. package/src/commands/agents/agents.js +10 -0
  81. package/src/commands/agents/index.js +7 -0
  82. package/src/commands/agents-platform/index.js +2 -0
  83. package/src/commands/assistant/index.js +86 -0
  84. package/src/commands/backup/index.js +31 -0
  85. package/src/commands/branch/branch.js +205 -0
  86. package/src/commands/branch/index.js +11 -0
  87. package/src/commands/bridge/bridge.js +513 -0
  88. package/src/commands/bridge/index.js +22 -0
  89. package/src/commands/bridge-kick.js +179 -0
  90. package/src/commands/brief.js +89 -0
  91. package/src/commands/btw/btw.js +235 -0
  92. package/src/commands/btw/index.js +9 -0
  93. package/src/commands/buddy/buddy.js +100 -0
  94. package/src/commands/buddy/index.js +11 -0
  95. package/src/commands/chrome/chrome.js +291 -0
  96. package/src/commands/chrome/index.js +10 -0
  97. package/src/commands/clear/caches.js +116 -0
  98. package/src/commands/clear/clear.js +5 -0
  99. package/src/commands/clear/conversation.js +189 -0
  100. package/src/commands/clear/index.js +9 -0
  101. package/src/commands/color/color.js +58 -0
  102. package/src/commands/color/index.js +9 -0
  103. package/src/commands/commit-push-pr.js +137 -0
  104. package/src/commands/commit.js +80 -0
  105. package/src/commands/compact/compact.js +194 -0
  106. package/src/commands/compact/index.js +11 -0
  107. package/src/commands/config/config.js +6 -0
  108. package/src/commands/config/index.js +8 -0
  109. package/src/commands/context/context-noninteractive.js +219 -0
  110. package/src/commands/context/context.js +45 -0
  111. package/src/commands/context/index.js +21 -0
  112. package/src/commands/coordinator.js +34 -0
  113. package/src/commands/copy/copy.js +366 -0
  114. package/src/commands/copy/index.js +7 -0
  115. package/src/commands/cost/cost.js +21 -0
  116. package/src/commands/cost/index.js +16 -0
  117. package/src/commands/createMovedToPluginCommand.js +33 -0
  118. package/src/commands/desktop/desktop.js +6 -0
  119. package/src/commands/desktop/index.js +22 -0
  120. package/src/commands/diff/diff.js +6 -0
  121. package/src/commands/diff/index.js +6 -0
  122. package/src/commands/doctor/doctor.js +6 -0
  123. package/src/commands/doctor/index.js +9 -0
  124. package/src/commands/effort/effort.js +166 -0
  125. package/src/commands/effort/index.js +11 -0
  126. package/src/commands/exit/exit.js +32 -0
  127. package/src/commands/exit/index.js +9 -0
  128. package/src/commands/export/export.js +87 -0
  129. package/src/commands/export/index.js +8 -0
  130. package/src/commands/extra-usage/extra-usage-core.js +99 -0
  131. package/src/commands/extra-usage/extra-usage-noninteractive.js +13 -0
  132. package/src/commands/extra-usage/extra-usage.js +15 -0
  133. package/src/commands/extra-usage/index.js +29 -0
  134. package/src/commands/fast/fast.js +276 -0
  135. package/src/commands/fast/index.js +19 -0
  136. package/src/commands/feedback/feedback.js +11 -0
  137. package/src/commands/feedback/index.js +20 -0
  138. package/src/commands/files/files.js +11 -0
  139. package/src/commands/files/index.js +9 -0
  140. package/src/commands/force-snip.js +19 -0
  141. package/src/commands/fork/index.js +67 -0
  142. package/src/commands/heapdump/heapdump.js +14 -0
  143. package/src/commands/heapdump/index.js +9 -0
  144. package/src/commands/help/help.js +6 -0
  145. package/src/commands/help/index.js +7 -0
  146. package/src/commands/hooks/hooks.js +12 -0
  147. package/src/commands/hooks/index.js +8 -0
  148. package/src/commands/ide/ide.js +615 -0
  149. package/src/commands/ide/index.js +8 -0
  150. package/src/commands/init-verifiers.js +258 -0
  151. package/src/commands/init.js +248 -0
  152. package/src/commands/insights.js +2554 -0
  153. package/src/commands/install-github-app/ApiKeyStep.js +230 -0
  154. package/src/commands/install-github-app/CheckExistingSecretStep.js +194 -0
  155. package/src/commands/install-github-app/CheckGitHubStep.js +16 -0
  156. package/src/commands/install-github-app/ChooseRepoStep.js +211 -0
  157. package/src/commands/install-github-app/CreatingStep.js +53 -0
  158. package/src/commands/install-github-app/ErrorStep.js +84 -0
  159. package/src/commands/install-github-app/ExistingWorkflowStep.js +105 -0
  160. package/src/commands/install-github-app/InstallAppStep.js +97 -0
  161. package/src/commands/install-github-app/OAuthFlowStep.js +190 -0
  162. package/src/commands/install-github-app/SuccessStep.js +94 -0
  163. package/src/commands/install-github-app/WarningsStep.js +71 -0
  164. package/src/commands/install-github-app/index.js +10 -0
  165. package/src/commands/install-github-app/install-github-app.js +593 -0
  166. package/src/commands/install-github-app/setupGitHubActions.js +227 -0
  167. package/src/commands/install-slack-app/index.js +9 -0
  168. package/src/commands/install-slack-app/install-slack-app.js +25 -0
  169. package/src/commands/install.js +198 -0
  170. package/src/commands/keybindings/index.js +10 -0
  171. package/src/commands/keybindings/keybindings.js +47 -0
  172. package/src/commands/login/index.js +21 -0
  173. package/src/commands/login/login.js +135 -0
  174. package/src/commands/logout/index.js +11 -0
  175. package/src/commands/logout/logout.js +75 -0
  176. package/src/commands/mcp/addCommand.js +183 -0
  177. package/src/commands/mcp/index.js +9 -0
  178. package/src/commands/mcp/mcp.js +78 -0
  179. package/src/commands/mcp/xaaIdpCommand.js +193 -0
  180. package/src/commands/memories/index.js +9 -0
  181. package/src/commands/memories/index.ts +12 -0
  182. package/src/commands/memories/memories.tsx +949 -0
  183. package/src/commands/memory/index.js +7 -0
  184. package/src/commands/memory/memory.js +71 -0
  185. package/src/commands/mobile/index.js +9 -0
  186. package/src/commands/mobile/mobile.js +279 -0
  187. package/src/commands/model/index.js +14 -0
  188. package/src/commands/model/model.js +284 -0
  189. package/src/commands/output-style/index.js +8 -0
  190. package/src/commands/output-style/output-style.js +6 -0
  191. package/src/commands/passes/index.js +17 -0
  192. package/src/commands/passes/passes.js +23 -0
  193. package/src/commands/peers/index.js +68 -0
  194. package/src/commands/permissions/index.js +8 -0
  195. package/src/commands/permissions/permissions.js +9 -0
  196. package/src/commands/plan/index.js +8 -0
  197. package/src/commands/plan/plan.js +116 -0
  198. package/src/commands/plugin/AddMarketplace.js +96 -0
  199. package/src/commands/plugin/BrowseMarketplace.js +582 -0
  200. package/src/commands/plugin/DiscoverPlugins.js +613 -0
  201. package/src/commands/plugin/ManageMarketplaces.js +583 -0
  202. package/src/commands/plugin/ManagePlugins.js +1783 -0
  203. package/src/commands/plugin/PluginErrors.js +124 -0
  204. package/src/commands/plugin/PluginOptionsDialog.js +367 -0
  205. package/src/commands/plugin/PluginOptionsFlow.js +97 -0
  206. package/src/commands/plugin/PluginSettings.js +1041 -0
  207. package/src/commands/plugin/PluginTrustWarning.js +35 -0
  208. package/src/commands/plugin/UnifiedInstalledCell.js +616 -0
  209. package/src/commands/plugin/ValidatePlugin.js +96 -0
  210. package/src/commands/plugin/index.js +10 -0
  211. package/src/commands/plugin/parseArgs.js +71 -0
  212. package/src/commands/plugin/plugin.js +6 -0
  213. package/src/commands/plugin/pluginDetailsHelpers.js +95 -0
  214. package/src/commands/plugin/usePagination.js +89 -0
  215. package/src/commands/pr_comments/index.js +49 -0
  216. package/src/commands/privacy-settings/index.js +11 -0
  217. package/src/commands/privacy-settings/privacy-settings.js +55 -0
  218. package/src/commands/proactive.js +29 -0
  219. package/src/commands/rate-limit-options/index.js +15 -0
  220. package/src/commands/rate-limit-options/rate-limit-options.js +213 -0
  221. package/src/commands/release-notes/index.js +8 -0
  222. package/src/commands/release-notes/release-notes.js +38 -0
  223. package/src/commands/reload-plugins/index.js +11 -0
  224. package/src/commands/reload-plugins/reload-plugins.js +52 -0
  225. package/src/commands/remote-env/index.js +12 -0
  226. package/src/commands/remote-env/remote-env.js +6 -0
  227. package/src/commands/remote-setup/api.js +155 -0
  228. package/src/commands/remote-setup/index.js +15 -0
  229. package/src/commands/remote-setup/remote-setup.js +150 -0
  230. package/src/commands/remoteControlServer/index.js +58 -0
  231. package/src/commands/rename/generateSessionName.js +58 -0
  232. package/src/commands/rename/index.js +9 -0
  233. package/src/commands/rename/rename.js +52 -0
  234. package/src/commands/resume/index.js +9 -0
  235. package/src/commands/resume/resume.js +239 -0
  236. package/src/commands/review/UltrareviewOverageDialog.js +97 -0
  237. package/src/commands/review/reviewRemote.js +259 -0
  238. package/src/commands/review/ultrareviewCommand.js +58 -0
  239. package/src/commands/review/ultrareviewEnabled.js +10 -0
  240. package/src/commands/review.js +53 -0
  241. package/src/commands/rewind/index.js +10 -0
  242. package/src/commands/rewind/rewind.js +7 -0
  243. package/src/commands/sandbox-toggle/index.js +41 -0
  244. package/src/commands/sandbox-toggle/sandbox-toggle.js +73 -0
  245. package/src/commands/security-review.js +231 -0
  246. package/src/commands/session/index.js +13 -0
  247. package/src/commands/session/session.js +143 -0
  248. package/src/commands/skills/index.js +7 -0
  249. package/src/commands/skills/skills.js +6 -0
  250. package/src/commands/speak.js +21 -0
  251. package/src/commands/start-business.js +1575 -0
  252. package/src/commands/start-business.ts +1581 -0
  253. package/src/commands/stats/index.js +7 -0
  254. package/src/commands/stats/stats.js +6 -0
  255. package/src/commands/status/index.js +8 -0
  256. package/src/commands/status/status.js +6 -0
  257. package/src/commands/statusline.js +22 -0
  258. package/src/commands/stickers/index.js +8 -0
  259. package/src/commands/stickers/stickers.js +14 -0
  260. package/src/commands/subscribe-pr.js +131 -0
  261. package/src/commands/tag/index.js +9 -0
  262. package/src/commands/tag/tag.js +215 -0
  263. package/src/commands/tasks/index.js +8 -0
  264. package/src/commands/tasks/tasks.js +6 -0
  265. package/src/commands/terminalSetup/index.js +18 -0
  266. package/src/commands/terminalSetup/terminalSetup.js +491 -0
  267. package/src/commands/thaddeus-usage/index.js +17 -0
  268. package/src/commands/theme/index.js +7 -0
  269. package/src/commands/theme/theme.js +51 -0
  270. package/src/commands/thinkback/index.js +9 -0
  271. package/src/commands/thinkback/thinkback.js +528 -0
  272. package/src/commands/thinkback-play/index.js +13 -0
  273. package/src/commands/thinkback-play/thinkback-play.js +34 -0
  274. package/src/commands/torch.js +122 -0
  275. package/src/commands/ultraplan.js +416 -0
  276. package/src/commands/upgrade/index.js +12 -0
  277. package/src/commands/upgrade/upgrade.js +38 -0
  278. package/src/commands/usage/index.js +7 -0
  279. package/src/commands/usage/usage.js +6 -0
  280. package/src/commands/version.js +17 -0
  281. package/src/commands/vim/index.js +8 -0
  282. package/src/commands/vim/vim.js +25 -0
  283. package/src/commands/voice/index.js +13 -0
  284. package/src/commands/voice/voice.js +44 -0
  285. package/src/commands/workflows/index.js +123 -0
  286. package/src/commands.js +614 -0
  287. package/src/commands.ts +4 -0
  288. package/src/components/AgentProgressLine.js +112 -0
  289. package/src/components/AntModelSwitchCallout.js +8 -0
  290. package/src/components/App.js +46 -0
  291. package/src/components/ApproveApiKey.js +125 -0
  292. package/src/components/AutoModeOptInDialog.js +140 -0
  293. package/src/components/AutoUpdater.js +156 -0
  294. package/src/components/AutoUpdaterWrapper.js +78 -0
  295. package/src/components/AwsAuthStatusBox.js +88 -0
  296. package/src/components/BaseTextInput.js +105 -0
  297. package/src/components/BashModeProgress.js +49 -0
  298. package/src/components/BridgeDialog.js +415 -0
  299. package/src/components/BypassPermissionsModeDialog.js +87 -0
  300. package/src/components/ChannelDowngradeDialog.js +101 -0
  301. package/src/components/ClaudeInChromeOnboarding.js +126 -0
  302. package/src/components/ClaudeMdExternalIncludesDialog.js +137 -0
  303. package/src/components/ClickableImageRef.js +65 -0
  304. package/src/components/CompactSummary.js +120 -0
  305. package/src/components/ConfigurableShortcutHint.js +35 -0
  306. package/src/components/ConsoleOAuthFlow.js +554 -0
  307. package/src/components/ContextSuggestions.js +44 -0
  308. package/src/components/ContextVisualization.js +482 -0
  309. package/src/components/CoordinatorAgentStatus.js +261 -0
  310. package/src/components/CostThresholdDialog.js +49 -0
  311. package/src/components/CtrlOToExpand.js +50 -0
  312. package/src/components/CustomSelect/SelectMulti.js +150 -0
  313. package/src/components/CustomSelect/index.js +2 -0
  314. package/src/components/CustomSelect/option-map.js +32 -0
  315. package/src/components/CustomSelect/select-input-option.js +426 -0
  316. package/src/components/CustomSelect/select-option.js +24 -0
  317. package/src/components/CustomSelect/select.js +518 -0
  318. package/src/components/CustomSelect/use-multi-select-state.js +214 -0
  319. package/src/components/CustomSelect/use-select-input.js +170 -0
  320. package/src/components/CustomSelect/use-select-navigation.js +366 -0
  321. package/src/components/CustomSelect/use-select-state.js +22 -0
  322. package/src/components/DesktopHandoff.js +195 -0
  323. package/src/components/DesktopUpsell/DesktopUpsellStartup.js +174 -0
  324. package/src/components/DevBar.js +51 -0
  325. package/src/components/DevChannelsDialog.js +104 -0
  326. package/src/components/DiagnosticsDisplay.js +91 -0
  327. package/src/components/EffortCallout.js +264 -0
  328. package/src/components/EffortIndicator.js +28 -0
  329. package/src/components/ExitFlow.js +41 -0
  330. package/src/components/ExportDialog.js +101 -0
  331. package/src/components/FallbackToolUseErrorMessage.js +116 -0
  332. package/src/components/FallbackToolUseRejectedMessage.js +17 -0
  333. package/src/components/FastIcon.js +43 -0
  334. package/src/components/Feedback.js +369 -0
  335. package/src/components/FeedbackSurvey/FeedbackSurvey.js +151 -0
  336. package/src/components/FeedbackSurvey/FeedbackSurveyView.js +104 -0
  337. package/src/components/FeedbackSurvey/TranscriptSharePrompt.js +84 -0
  338. package/src/components/FeedbackSurvey/submitTranscriptShare.js +10 -0
  339. package/src/components/FeedbackSurvey/useDebouncedDigitInput.js +51 -0
  340. package/src/components/FeedbackSurvey/useFeedbackSurvey.js +258 -0
  341. package/src/components/FeedbackSurvey/useFrustrationDetection.js +8 -0
  342. package/src/components/FeedbackSurvey/useMemorySurvey.js +191 -0
  343. package/src/components/FeedbackSurvey/usePostCompactSurvey.js +202 -0
  344. package/src/components/FeedbackSurvey/useSurveyState.js +80 -0
  345. package/src/components/FileEditToolDiff.js +167 -0
  346. package/src/components/FileEditToolUpdatedMessage.js +112 -0
  347. package/src/components/FileEditToolUseRejectedMessage.js +158 -0
  348. package/src/components/FilePathLink.js +35 -0
  349. package/src/components/FullscreenLayout.js +578 -0
  350. package/src/components/GlobalSearchDialog.js +340 -0
  351. package/src/components/HelpV2/Commands.js +66 -0
  352. package/src/components/HelpV2/General.js +25 -0
  353. package/src/components/HelpV2/HelpV2.js +186 -0
  354. package/src/components/HighlightedCode/Fallback.js +193 -0
  355. package/src/components/HighlightedCode.js +185 -0
  356. package/src/components/HistorySearchDialog.js +93 -0
  357. package/src/components/IdeAutoConnectDialog.js +154 -0
  358. package/src/components/IdeOnboardingDialog.js +175 -0
  359. package/src/components/IdeStatusIndicator.js +50 -0
  360. package/src/components/IdleReturnDialog.js +117 -0
  361. package/src/components/InterruptedByUser.js +16 -0
  362. package/src/components/InvalidConfigDialog.js +135 -0
  363. package/src/components/InvalidSettingsDialog.js +85 -0
  364. package/src/components/KeybindingWarnings.js +55 -0
  365. package/src/components/LanguagePicker.js +84 -0
  366. package/src/components/LogSelector.js +1579 -0
  367. package/src/components/LogoV2/AnimatedAsterisk.js +43 -0
  368. package/src/components/LogoV2/AnimatedClawd.js +64 -0
  369. package/src/components/LogoV2/ChannelsNotice.js +262 -0
  370. package/src/components/LogoV2/Clawd.js +33 -0
  371. package/src/components/LogoV2/CondensedLogo.js +160 -0
  372. package/src/components/LogoV2/EmergencyTip.js +48 -0
  373. package/src/components/LogoV2/Feed.js +85 -0
  374. package/src/components/LogoV2/FeedColumn.js +55 -0
  375. package/src/components/LogoV2/GuestPassesUpsell.js +71 -0
  376. package/src/components/LogoV2/LogoV2.js +565 -0
  377. package/src/components/LogoV2/Opus1mMergeNotice.js +57 -0
  378. package/src/components/LogoV2/OverageCreditUpsell.js +161 -0
  379. package/src/components/LogoV2/VoiceModeNotice.js +71 -0
  380. package/src/components/LogoV2/WelcomeV2.js +14 -0
  381. package/src/components/LogoV2/feedConfigs.js +79 -0
  382. package/src/components/LspRecommendation/LspRecommendationMenu.js +46 -0
  383. package/src/components/MCPServerApprovalDialog.js +114 -0
  384. package/src/components/MCPServerDesktopImportDialog.js +206 -0
  385. package/src/components/MCPServerDialogCopy.js +16 -0
  386. package/src/components/MCPServerMultiselectDialog.js +134 -0
  387. package/src/components/ManagedSettingsSecurityDialog/ManagedSettingsSecurityDialog.js +150 -0
  388. package/src/components/ManagedSettingsSecurityDialog/utils.js +105 -0
  389. package/src/components/Markdown.js +233 -0
  390. package/src/components/MarkdownTable.js +280 -0
  391. package/src/components/MemoryUsageIndicator.js +28 -0
  392. package/src/components/Message.js +564 -0
  393. package/src/components/MessageModel.js +37 -0
  394. package/src/components/MessageResponse.js +73 -0
  395. package/src/components/MessageRow.js +346 -0
  396. package/src/components/MessageSelector.js +744 -0
  397. package/src/components/MessageTimestamp.js +58 -0
  398. package/src/components/Messages.js +645 -0
  399. package/src/components/ModelPicker.js +452 -0
  400. package/src/components/NativeAutoUpdater.js +152 -0
  401. package/src/components/NotebookEditToolUseRejectedMessage.js +84 -0
  402. package/src/components/OffscreenFreeze.js +35 -0
  403. package/src/components/Onboarding.js +174 -0
  404. package/src/components/OutputStylePicker.js +103 -0
  405. package/src/components/PackageManagerAutoUpdater.js +99 -0
  406. package/src/components/Passes/Passes.js +114 -0
  407. package/src/components/PrBadge.js +91 -0
  408. package/src/components/PressEnterToContinue.js +16 -0
  409. package/src/components/PromptInput/HistorySearchInput.js +45 -0
  410. package/src/components/PromptInput/IssueFlagBanner.js +8 -0
  411. package/src/components/PromptInput/Notifications.js +220 -0
  412. package/src/components/PromptInput/PromptInput.js +2014 -0
  413. package/src/components/PromptInput/PromptInputFooter.js +85 -0
  414. package/src/components/PromptInput/PromptInputFooterLeftSide.js +408 -0
  415. package/src/components/PromptInput/PromptInputFooterSuggestions.js +281 -0
  416. package/src/components/PromptInput/PromptInputHelpMenu.js +380 -0
  417. package/src/components/PromptInput/PromptInputModeIndicator.js +73 -0
  418. package/src/components/PromptInput/PromptInputQueuedCommands.js +105 -0
  419. package/src/components/PromptInput/PromptInputStashNotice.js +21 -0
  420. package/src/components/PromptInput/SandboxPromptFooterHint.js +66 -0
  421. package/src/components/PromptInput/ShimmeredInput.js +133 -0
  422. package/src/components/PromptInput/VoiceIndicator.js +137 -0
  423. package/src/components/PromptInput/inputModes.js +24 -0
  424. package/src/components/PromptInput/inputPaste.js +62 -0
  425. package/src/components/PromptInput/useMaybeTruncateInput.js +33 -0
  426. package/src/components/PromptInput/usePromptInputPlaceholder.js +53 -0
  427. package/src/components/PromptInput/useShowFastIconHint.js +23 -0
  428. package/src/components/PromptInput/useSwarmBanner.js +112 -0
  429. package/src/components/PromptInput/utils.js +50 -0
  430. package/src/components/QuickOpenDialog.js +244 -0
  431. package/src/components/RemoteCallout.js +53 -0
  432. package/src/components/RemoteEnvironmentDialog.js +346 -0
  433. package/src/components/ResumeTask.js +173 -0
  434. package/src/components/SandboxViolationExpandedView.js +106 -0
  435. package/src/components/ScrollKeybindingHandler.js +982 -0
  436. package/src/components/SearchBox.js +56 -0
  437. package/src/components/SentryErrorBoundary.js +16 -0
  438. package/src/components/SessionBackgroundHint.js +105 -0
  439. package/src/components/SessionPreview.js +200 -0
  440. package/src/components/Settings/Config.js +1626 -0
  441. package/src/components/Settings/Settings.js +131 -0
  442. package/src/components/Settings/Status.js +230 -0
  443. package/src/components/Settings/Usage.js +341 -0
  444. package/src/components/ShowInIDEPrompt.js +152 -0
  445. package/src/components/SkillImprovementSurvey.js +130 -0
  446. package/src/components/Spinner/FlashingChar.js +52 -0
  447. package/src/components/Spinner/GlimmerMessage.js +329 -0
  448. package/src/components/Spinner/ShimmerChar.js +23 -0
  449. package/src/components/Spinner/SpinnerAnimationRow.js +170 -0
  450. package/src/components/Spinner/SpinnerGlyph.js +70 -0
  451. package/src/components/Spinner/TeammateSpinnerLine.js +171 -0
  452. package/src/components/Spinner/TeammateSpinnerTree.js +269 -0
  453. package/src/components/Spinner/index.js +9 -0
  454. package/src/components/Spinner/teammateSelectHint.js +1 -0
  455. package/src/components/Spinner/useShimmerAnimation.js +22 -0
  456. package/src/components/Spinner/useStalledAnimation.js +63 -0
  457. package/src/components/Spinner/utils.js +78 -0
  458. package/src/components/Spinner.js +474 -0
  459. package/src/components/Stats.js +1000 -0
  460. package/src/components/StatusLine.js +286 -0
  461. package/src/components/StatusNotices.js +50 -0
  462. package/src/components/StructuredDiff/Fallback.js +336 -0
  463. package/src/components/StructuredDiff/colorDiff.js +37 -0
  464. package/src/components/StructuredDiff.js +153 -0
  465. package/src/components/StructuredDiffList.js +9 -0
  466. package/src/components/TagTabs.js +101 -0
  467. package/src/components/TaskListV2.js +333 -0
  468. package/src/components/TeammateViewHeader.js +88 -0
  469. package/src/components/TeleportError.js +191 -0
  470. package/src/components/TeleportProgress.js +131 -0
  471. package/src/components/TeleportRepoMismatchDialog.js +98 -0
  472. package/src/components/TeleportResumeWrapper.js +158 -0
  473. package/src/components/TeleportStash.js +82 -0
  474. package/src/components/TextInput.js +108 -0
  475. package/src/components/ThaddeusHint/PluginHintMenu.js +37 -0
  476. package/src/components/ThemePicker.js +331 -0
  477. package/src/components/ThinkingToggle.js +154 -0
  478. package/src/components/TokenWarning.js +171 -0
  479. package/src/components/ToolUseLoader.js +35 -0
  480. package/src/components/TrustDialog/TrustDialog.js +301 -0
  481. package/src/components/TrustDialog/utils.js +199 -0
  482. package/src/components/UndercoverAutoCallout.js +5 -0
  483. package/src/components/ValidationErrorsList.js +147 -0
  484. package/src/components/VimTextInput.js +136 -0
  485. package/src/components/VirtualMessageList.js +893 -0
  486. package/src/components/WorkflowMultiselectDialog.js +118 -0
  487. package/src/components/WorktreeExitDialog.js +220 -0
  488. package/src/components/agents/AgentDetail.js +227 -0
  489. package/src/components/agents/AgentEditor.js +147 -0
  490. package/src/components/agents/AgentNavigationFooter.js +22 -0
  491. package/src/components/agents/AgentsList.js +436 -0
  492. package/src/components/agents/AgentsMenu.js +849 -0
  493. package/src/components/agents/ColorPicker.js +110 -0
  494. package/src/components/agents/ModelSelector.js +63 -0
  495. package/src/components/agents/SnapshotUpdateDialog.js +14 -0
  496. package/src/components/agents/ToolSelector.js +557 -0
  497. package/src/components/agents/agentFileUtils.js +179 -0
  498. package/src/components/agents/generateAgent.js +161 -0
  499. package/src/components/agents/new-agent-creation/CreateAgentWizard.js +89 -0
  500. package/src/components/agents/new-agent-creation/wizard-steps/ColorStep.js +81 -0
  501. package/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.js +387 -0
  502. package/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.js +63 -0
  503. package/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.js +126 -0
  504. package/src/components/agents/new-agent-creation/wizard-steps/GenerateStep.js +118 -0
  505. package/src/components/agents/new-agent-creation/wizard-steps/LocationStep.js +80 -0
  506. package/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.js +108 -0
  507. package/src/components/agents/new-agent-creation/wizard-steps/MethodStep.js +80 -0
  508. package/src/components/agents/new-agent-creation/wizard-steps/ModelStep.js +49 -0
  509. package/src/components/agents/new-agent-creation/wizard-steps/PromptStep.js +131 -0
  510. package/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.js +52 -0
  511. package/src/components/agents/new-agent-creation/wizard-steps/TypeStep.js +100 -0
  512. package/src/components/agents/types.js +4 -0
  513. package/src/components/agents/utils.js +14 -0
  514. package/src/components/agents/validateAgent.js +79 -0
  515. package/src/components/design-system/Byline.js +72 -0
  516. package/src/components/design-system/Dialog.js +117 -0
  517. package/src/components/design-system/Divider.js +110 -0
  518. package/src/components/design-system/FuzzyPicker.js +191 -0
  519. package/src/components/design-system/KeyboardShortcutHint.js +68 -0
  520. package/src/components/design-system/ListItem.js +184 -0
  521. package/src/components/design-system/LoadingState.js +69 -0
  522. package/src/components/design-system/Pane.js +69 -0
  523. package/src/components/design-system/ProgressBar.js +63 -0
  524. package/src/components/design-system/Ratchet.js +71 -0
  525. package/src/components/design-system/StatusIcon.js +70 -0
  526. package/src/components/design-system/Tabs.js +269 -0
  527. package/src/components/design-system/ThemeProvider.js +137 -0
  528. package/src/components/design-system/ThemedBox.js +126 -0
  529. package/src/components/design-system/ThemedText.js +60 -0
  530. package/src/components/design-system/color.js +22 -0
  531. package/src/components/diff/DiffDetailView.js +285 -0
  532. package/src/components/diff/DiffDialog.js +387 -0
  533. package/src/components/diff/DiffFileList.js +292 -0
  534. package/src/components/grove/Grove.js +483 -0
  535. package/src/components/hooks/HooksConfigMenu.js +583 -0
  536. package/src/components/hooks/PromptDialog.js +82 -0
  537. package/src/components/hooks/SelectEventMode.js +118 -0
  538. package/src/components/hooks/SelectHookMode.js +101 -0
  539. package/src/components/hooks/SelectMatcherMode.js +131 -0
  540. package/src/components/hooks/ViewHookMode.js +204 -0
  541. package/src/components/mcp/CapabilitiesSection.js +56 -0
  542. package/src/components/mcp/ElicitationDialog.js +945 -0
  543. package/src/components/mcp/MCPAgentServerMenu.js +95 -0
  544. package/src/components/mcp/MCPListPanel.js +505 -0
  545. package/src/components/mcp/MCPReconnect.js +168 -0
  546. package/src/components/mcp/MCPRemoteServerMenu.js +460 -0
  547. package/src/components/mcp/MCPSettings.js +414 -0
  548. package/src/components/mcp/MCPStdioServerMenu.js +95 -0
  549. package/src/components/mcp/MCPToolDetailView.js +219 -0
  550. package/src/components/mcp/MCPToolListView.js +137 -0
  551. package/src/components/mcp/McpParsingWarnings.js +212 -0
  552. package/src/components/mcp/index.js +8 -0
  553. package/src/components/mcp/utils/reconnectHelpers.js +35 -0
  554. package/src/components/memory/MemoryFileSelector.js +454 -0
  555. package/src/components/memory/MemoryUpdateNotification.js +43 -0
  556. package/src/components/messageActions.js +418 -0
  557. package/src/components/messages/AdvisorMessage.js +152 -0
  558. package/src/components/messages/AssistantRedactedThinkingMessage.js +28 -0
  559. package/src/components/messages/AssistantTextMessage.js +287 -0
  560. package/src/components/messages/AssistantThinkingMessage.js +70 -0
  561. package/src/components/messages/AssistantToolUseMessage.js +324 -0
  562. package/src/components/messages/AttachmentMessage.js +418 -0
  563. package/src/components/messages/CollapsedReadSearchContent.js +363 -0
  564. package/src/components/messages/CompactBoundaryMessage.js +19 -0
  565. package/src/components/messages/GroupedToolUseContent.js +37 -0
  566. package/src/components/messages/HighlightedThinkingText.js +165 -0
  567. package/src/components/messages/HookProgressMessage.js +111 -0
  568. package/src/components/messages/PlanApprovalMessage.js +213 -0
  569. package/src/components/messages/RateLimitMessage.js +149 -0
  570. package/src/components/messages/ShutdownMessage.js +124 -0
  571. package/src/components/messages/SnipBoundaryMessage.js +7 -0
  572. package/src/components/messages/SystemAPIErrorMessage.js +136 -0
  573. package/src/components/messages/SystemTextMessage.js +842 -0
  574. package/src/components/messages/TaskAssignmentMessage.js +72 -0
  575. package/src/components/messages/UserAgentNotificationMessage.js +78 -0
  576. package/src/components/messages/UserBashInputMessage.js +52 -0
  577. package/src/components/messages/UserBashOutputMessage.js +55 -0
  578. package/src/components/messages/UserChannelMessage.js +130 -0
  579. package/src/components/messages/UserCommandMessage.js +107 -0
  580. package/src/components/messages/UserCrossSessionMessage.js +11 -0
  581. package/src/components/messages/UserForkBoilerplateMessage.js +11 -0
  582. package/src/components/messages/UserGitHubWebhookMessage.js +12 -0
  583. package/src/components/messages/UserImageMessage.js +54 -0
  584. package/src/components/messages/UserLocalCommandOutputMessage.js +170 -0
  585. package/src/components/messages/UserMemoryInputMessage.js +73 -0
  586. package/src/components/messages/UserPlanMessage.js +38 -0
  587. package/src/components/messages/UserPromptMessage.js +63 -0
  588. package/src/components/messages/UserResourceUpdateMessage.js +102 -0
  589. package/src/components/messages/UserTeammateMessage.js +156 -0
  590. package/src/components/messages/UserTextMessage.js +270 -0
  591. package/src/components/messages/UserToolResultMessage/RejectedPlanMessage.js +28 -0
  592. package/src/components/messages/UserToolResultMessage/RejectedToolUseMessage.js +17 -0
  593. package/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +17 -0
  594. package/src/components/messages/UserToolResultMessage/UserToolErrorMessage.js +92 -0
  595. package/src/components/messages/UserToolResultMessage/UserToolRejectMessage.js +74 -0
  596. package/src/components/messages/UserToolResultMessage/UserToolResultMessage.js +84 -0
  597. package/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +58 -0
  598. package/src/components/messages/UserToolResultMessage/utils.js +43 -0
  599. package/src/components/messages/nullRenderingAttachments.js +58 -0
  600. package/src/components/messages/teamMemCollapsed.js +142 -0
  601. package/src/components/messages/teamMemSaved.js +16 -0
  602. package/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.js +659 -0
  603. package/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.js +219 -0
  604. package/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.js +227 -0
  605. package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.js +175 -0
  606. package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.js +444 -0
  607. package/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.js +137 -0
  608. package/src/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.js +100 -0
  609. package/src/components/permissions/BashPermissionRequest/BashPermissionRequest.js +404 -0
  610. package/src/components/permissions/BashPermissionRequest/bashToolUseOptions.js +110 -0
  611. package/src/components/permissions/ComputerUseApproval/ComputerUseApproval.js +449 -0
  612. package/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.js +126 -0
  613. package/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.js +653 -0
  614. package/src/components/permissions/FallbackPermissionRequest.js +349 -0
  615. package/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +185 -0
  616. package/src/components/permissions/FilePermissionDialog/FilePermissionDialog.js +108 -0
  617. package/src/components/permissions/FilePermissionDialog/ideDiffConfig.js +13 -0
  618. package/src/components/permissions/FilePermissionDialog/permissionOptions.js +137 -0
  619. package/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.js +131 -0
  620. package/src/components/permissions/FilePermissionDialog/usePermissionHandler.js +86 -0
  621. package/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +164 -0
  622. package/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +79 -0
  623. package/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +113 -0
  624. package/src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.js +7 -0
  625. package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.js +164 -0
  626. package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.js +218 -0
  627. package/src/components/permissions/PermissionDecisionDebugInfo.js +467 -0
  628. package/src/components/permissions/PermissionDialog.js +55 -0
  629. package/src/components/permissions/PermissionExplanation.js +269 -0
  630. package/src/components/permissions/PermissionPrompt.js +316 -0
  631. package/src/components/permissions/PermissionRequest.js +159 -0
  632. package/src/components/permissions/PermissionRequestTitle.js +58 -0
  633. package/src/components/permissions/PermissionRuleExplanation.js +110 -0
  634. package/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.js +178 -0
  635. package/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.js +73 -0
  636. package/src/components/permissions/ReviewArtifactPermissionRequest/ReviewArtifactPermissionRequest.js +7 -0
  637. package/src/components/permissions/SandboxPermissionRequest.js +162 -0
  638. package/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.js +228 -0
  639. package/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.js +385 -0
  640. package/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.js +259 -0
  641. package/src/components/permissions/WorkerBadge.js +44 -0
  642. package/src/components/permissions/WorkerPendingPermission.js +107 -0
  643. package/src/components/permissions/hooks.js +163 -0
  644. package/src/components/permissions/rules/AddPermissionRules.js +171 -0
  645. package/src/components/permissions/rules/AddWorkspaceDirectory.js +335 -0
  646. package/src/components/permissions/rules/PermissionRuleDescription.js +78 -0
  647. package/src/components/permissions/rules/PermissionRuleInput.js +136 -0
  648. package/src/components/permissions/rules/PermissionRuleList.js +1190 -0
  649. package/src/components/permissions/rules/RecentDenialsTab.js +205 -0
  650. package/src/components/permissions/rules/RemoveWorkspaceDirectory.js +103 -0
  651. package/src/components/permissions/rules/WorkspaceTab.js +133 -0
  652. package/src/components/permissions/shellPermissionHelpers.js +112 -0
  653. package/src/components/permissions/useShellPermissionFeedback.js +108 -0
  654. package/src/components/permissions/utils.js +14 -0
  655. package/src/components/sandbox/SandboxConfigTab.js +48 -0
  656. package/src/components/sandbox/SandboxDependenciesTab.js +123 -0
  657. package/src/components/sandbox/SandboxDoctorSection.js +47 -0
  658. package/src/components/sandbox/SandboxOverridesTab.js +193 -0
  659. package/src/components/sandbox/SandboxSettings.js +297 -0
  660. package/src/components/shell/ExpandShellOutputContext.js +33 -0
  661. package/src/components/shell/OutputLine.js +110 -0
  662. package/src/components/shell/ShellProgressMessage.js +144 -0
  663. package/src/components/shell/ShellTimeDisplay.js +72 -0
  664. package/src/components/skills/SkillsMenu.js +239 -0
  665. package/src/components/tasks/AsyncAgentDetailDialog.js +235 -0
  666. package/src/components/tasks/BackgroundTask.js +364 -0
  667. package/src/components/tasks/BackgroundTaskStatus.js +419 -0
  668. package/src/components/tasks/BackgroundTasksDialog.js +494 -0
  669. package/src/components/tasks/DreamDetailDialog.js +251 -0
  670. package/src/components/tasks/InProcessTeammateDetailDialog.js +275 -0
  671. package/src/components/tasks/MonitorMcpDetailDialog.js +7 -0
  672. package/src/components/tasks/RemoteSessionDetailDialog.js +868 -0
  673. package/src/components/tasks/RemoteSessionProgress.js +249 -0
  674. package/src/components/tasks/ShellDetailDialog.js +403 -0
  675. package/src/components/tasks/ShellProgress.js +77 -0
  676. package/src/components/tasks/WorkflowDetailDialog.js +7 -0
  677. package/src/components/tasks/renderToolActivity.js +29 -0
  678. package/src/components/tasks/taskStatusUtils.js +94 -0
  679. package/src/components/teams/TeamStatus.js +77 -0
  680. package/src/components/teams/TeamsDialog.js +673 -0
  681. package/src/components/ui/OrderedList.js +66 -0
  682. package/src/components/ui/OrderedListItem.js +41 -0
  683. package/src/components/ui/TreeSelect.js +300 -0
  684. package/src/components/wizard/WizardDialogLayout.js +48 -0
  685. package/src/components/wizard/WizardNavigationFooter.js +11 -0
  686. package/src/components/wizard/WizardProvider.js +217 -0
  687. package/src/components/wizard/index.js +4 -0
  688. package/src/components/wizard/useWizard.js +9 -0
  689. package/src/constants/apiLimits.js +81 -0
  690. package/src/constants/betas.js +45 -0
  691. package/src/constants/common.js +29 -0
  692. package/src/constants/cyberRiskInstruction.js +23 -0
  693. package/src/constants/errorIds.js +14 -0
  694. package/src/constants/figures.js +38 -0
  695. package/src/constants/files.js +150 -0
  696. package/src/constants/github-app.js +139 -0
  697. package/src/constants/identity.js +112 -0
  698. package/src/constants/keys.js +10 -0
  699. package/src/constants/messages.js +1 -0
  700. package/src/constants/oauth.js +175 -0
  701. package/src/constants/outputStyles.js +162 -0
  702. package/src/constants/product.js +54 -0
  703. package/src/constants/prompts.js +994 -0
  704. package/src/constants/spinnerVerbs.js +98 -0
  705. package/src/constants/system.js +77 -0
  706. package/src/constants/systemPromptSections.js +39 -0
  707. package/src/constants/toolLimits.js +50 -0
  708. package/src/constants/tools.js +103 -0
  709. package/src/constants/turnCompletionVerbs.js +12 -0
  710. package/src/constants/xml.js +73 -0
  711. package/src/context/QueuedMessageContext.js +51 -0
  712. package/src/context/fpsMetrics.js +22 -0
  713. package/src/context/mailbox.js +35 -0
  714. package/src/context/modalContext.js +34 -0
  715. package/src/context/notifications.js +199 -0
  716. package/src/context/overlayContext.js +149 -0
  717. package/src/context/promptOverlayContext.js +118 -0
  718. package/src/context/stats.js +207 -0
  719. package/src/context/voice.js +74 -0
  720. package/src/context.js +146 -0
  721. package/src/coordinator/coordinatorMode.js +345 -0
  722. package/src/coordinator/workerAgent.js +24 -0
  723. package/src/cost-tracker.js +208 -0
  724. package/src/costHook.js +17 -0
  725. package/src/daemon/main.js +19 -0
  726. package/src/dialogLaunchers.js +77 -0
  727. package/src/entrypoints/agentSdkTypes.js +202 -0
  728. package/src/entrypoints/cli.js +226 -0
  729. package/src/entrypoints/init.js +265 -0
  730. package/src/entrypoints/mcp.js +141 -0
  731. package/src/entrypoints/sandboxTypes.js +112 -0
  732. package/src/entrypoints/sdk/controlSchemas.js +452 -0
  733. package/src/entrypoints/sdk/controlTypes.js +1 -0
  734. package/src/entrypoints/sdk/coreSchemas.js +1331 -0
  735. package/src/entrypoints/sdk/coreTypes.generated.js +3 -0
  736. package/src/entrypoints/sdk/coreTypes.js +49 -0
  737. package/src/entrypoints/sdk/runtimeTypes.js +1 -0
  738. package/src/entrypoints/sdk/sdkUtilityTypes.js +1 -0
  739. package/src/entrypoints/sdk/settingsTypes.generated.js +1 -0
  740. package/src/entrypoints/sdk/toolTypes.js +1 -0
  741. package/src/environment-runner/main.js +8 -0
  742. package/src/history.js +386 -0
  743. package/src/hooks/fileSuggestions.js +635 -0
  744. package/src/hooks/notifs/useAntOrgWarningNotification.js +5 -0
  745. package/src/hooks/notifs/useAutoModeUnavailableNotification.js +47 -0
  746. package/src/hooks/notifs/useCanSwitchToExistingSubscription.js +58 -0
  747. package/src/hooks/notifs/useDeprecationWarningNotification.js +43 -0
  748. package/src/hooks/notifs/useFastModeNotification.js +164 -0
  749. package/src/hooks/notifs/useIDEStatusIndicator.js +174 -0
  750. package/src/hooks/notifs/useInstallMessages.js +27 -0
  751. package/src/hooks/notifs/useLspInitializationNotification.js +144 -0
  752. package/src/hooks/notifs/useMcpConnectivityStatus.js +81 -0
  753. package/src/hooks/notifs/useModelMigrationNotifications.js +53 -0
  754. package/src/hooks/notifs/useNpmDeprecationNotification.js +25 -0
  755. package/src/hooks/notifs/usePluginAutoupdateNotification.js +83 -0
  756. package/src/hooks/notifs/usePluginInstallationStatus.js +128 -0
  757. package/src/hooks/notifs/useRateLimitWarningNotification.js +119 -0
  758. package/src/hooks/notifs/useSettingsErrors.js +64 -0
  759. package/src/hooks/notifs/useStartupNotification.js +33 -0
  760. package/src/hooks/notifs/useTeammateShutdownNotification.js +64 -0
  761. package/src/hooks/renderPlaceholder.js +26 -0
  762. package/src/hooks/toolPermission/PermissionContext.js +211 -0
  763. package/src/hooks/toolPermission/handlers/coordinatorHandler.js +44 -0
  764. package/src/hooks/toolPermission/handlers/interactiveHandler.js +397 -0
  765. package/src/hooks/toolPermission/handlers/swarmWorkerHandler.js +108 -0
  766. package/src/hooks/toolPermission/permissionLogging.js +145 -0
  767. package/src/hooks/unifiedSuggestions.js +130 -0
  768. package/src/hooks/useAfterFirstRender.js +12 -0
  769. package/src/hooks/useApiKeyVerification.js +63 -0
  770. package/src/hooks/useArrowKeyHistory.js +203 -0
  771. package/src/hooks/useAssistantHistory.js +193 -0
  772. package/src/hooks/useAwaySummary.js +105 -0
  773. package/src/hooks/useBackgroundTaskNavigation.js +204 -0
  774. package/src/hooks/useBlink.js +28 -0
  775. package/src/hooks/useCanUseTool.js +193 -0
  776. package/src/hooks/useCancelRequest.js +195 -0
  777. package/src/hooks/useChromeExtensionNotification.js +50 -0
  778. package/src/hooks/useClipboardImageHint.js +59 -0
  779. package/src/hooks/useCommandKeybindings.js +87 -0
  780. package/src/hooks/useCommandQueue.js +10 -0
  781. package/src/hooks/useCopyOnSelect.js +88 -0
  782. package/src/hooks/useDeferredHookMessages.js +43 -0
  783. package/src/hooks/useDiffData.js +69 -0
  784. package/src/hooks/useDiffInIDE.js +252 -0
  785. package/src/hooks/useDirectConnect.js +150 -0
  786. package/src/hooks/useDoublePress.js +44 -0
  787. package/src/hooks/useDynamicConfig.js +17 -0
  788. package/src/hooks/useElapsedTime.js +25 -0
  789. package/src/hooks/useExitOnCtrlCD.js +57 -0
  790. package/src/hooks/useExitOnCtrlCDWithKeybindings.js +17 -0
  791. package/src/hooks/useFileHistorySnapshotInit.js +14 -0
  792. package/src/hooks/useGlobalKeybindings.js +213 -0
  793. package/src/hooks/useHistorySearch.js +241 -0
  794. package/src/hooks/useIDEIntegration.js +56 -0
  795. package/src/hooks/useIdeAtMentioned.js +51 -0
  796. package/src/hooks/useIdeConnectionStatus.js +21 -0
  797. package/src/hooks/useIdeLogging.js +29 -0
  798. package/src/hooks/useIdeSelection.js +106 -0
  799. package/src/hooks/useInboxPoller.js +709 -0
  800. package/src/hooks/useInputBuffer.js +73 -0
  801. package/src/hooks/useIssueFlagBanner.js +115 -0
  802. package/src/hooks/useLogMessages.js +98 -0
  803. package/src/hooks/useLspPluginRecommendation.js +176 -0
  804. package/src/hooks/useMailboxBridge.js +15 -0
  805. package/src/hooks/useMainLoopModel.js +25 -0
  806. package/src/hooks/useManagePlugins.js +261 -0
  807. package/src/hooks/useMemoryUsage.js +28 -0
  808. package/src/hooks/useMergedClients.js +11 -0
  809. package/src/hooks/useMergedCommands.js +10 -0
  810. package/src/hooks/useMergedTools.js +32 -0
  811. package/src/hooks/useMinDisplayTime.js +26 -0
  812. package/src/hooks/useNotifyAfterTimeout.js +51 -0
  813. package/src/hooks/useOfficialMarketplaceNotification.js +47 -0
  814. package/src/hooks/usePasteHandler.js +195 -0
  815. package/src/hooks/usePluginRecommendationBase.js +101 -0
  816. package/src/hooks/usePrStatus.js +91 -0
  817. package/src/hooks/usePromptSuggestion.js +128 -0
  818. package/src/hooks/usePromptsFromClaudeInChrome.js +66 -0
  819. package/src/hooks/useQueueProcessor.js +46 -0
  820. package/src/hooks/useRemoteSession.js +431 -0
  821. package/src/hooks/useReplBridge.js +715 -0
  822. package/src/hooks/useSSHSession.js +167 -0
  823. package/src/hooks/useScheduledTasks.js +104 -0
  824. package/src/hooks/useSearchInput.js +302 -0
  825. package/src/hooks/useSessionBackgrounding.js +132 -0
  826. package/src/hooks/useSettings.js +10 -0
  827. package/src/hooks/useSettingsChange.js +13 -0
  828. package/src/hooks/useSkillImprovementSurvey.js +69 -0
  829. package/src/hooks/useSkillsChange.js +51 -0
  830. package/src/hooks/useSwarmInitialization.js +67 -0
  831. package/src/hooks/useSwarmPermissionPoller.js +215 -0
  832. package/src/hooks/useTaskListWatcher.js +157 -0
  833. package/src/hooks/useTasksV2.js +220 -0
  834. package/src/hooks/useTeammateViewAutoExit.js +55 -0
  835. package/src/hooks/useTeleportResume.js +81 -0
  836. package/src/hooks/useTerminalSize.js +9 -0
  837. package/src/hooks/useTextInput.js +397 -0
  838. package/src/hooks/useThaddeusHintRecommendation.js +117 -0
  839. package/src/hooks/useTimeout.js +10 -0
  840. package/src/hooks/useTurnDiffs.js +160 -0
  841. package/src/hooks/useTypeahead.js +1250 -0
  842. package/src/hooks/useUpdateNotification.js +21 -0
  843. package/src/hooks/useVimInput.js +232 -0
  844. package/src/hooks/useVirtualScroll.js +627 -0
  845. package/src/hooks/useVoice.js +952 -0
  846. package/src/hooks/useVoiceEnabled.js +21 -0
  847. package/src/hooks/useVoiceIntegration.js +629 -0
  848. package/src/infrastructure/audit.js +210 -0
  849. package/src/infrastructure/guardrails.js +513 -0
  850. package/src/infrastructure/index.js +11 -0
  851. package/src/ink/Ansi.js +269 -0
  852. package/src/ink/bidi.js +117 -0
  853. package/src/ink/clearTerminal.js +58 -0
  854. package/src/ink/colorize.js +198 -0
  855. package/src/ink/components/AlternateScreen.js +74 -0
  856. package/src/ink/components/App.js +562 -0
  857. package/src/ink/components/AppContext.js +11 -0
  858. package/src/ink/components/Box.js +155 -0
  859. package/src/ink/components/Button.js +166 -0
  860. package/src/ink/components/ClockContext.js +108 -0
  861. package/src/ink/components/CursorDeclarationContext.js +3 -0
  862. package/src/ink/components/ErrorOverview.js +50 -0
  863. package/src/ink/components/Link.js +34 -0
  864. package/src/ink/components/Newline.js +30 -0
  865. package/src/ink/components/NoSelect.js +57 -0
  866. package/src/ink/components/RawAnsi.js +46 -0
  867. package/src/ink/components/ScrollBox.js +171 -0
  868. package/src/ink/components/Spacer.js +20 -0
  869. package/src/ink/components/StdinContext.js +16 -0
  870. package/src/ink/components/TerminalFocusContext.js +45 -0
  871. package/src/ink/components/TerminalSizeContext.js +3 -0
  872. package/src/ink/components/Text.js +195 -0
  873. package/src/ink/constants.js +2 -0
  874. package/src/ink/dom.js +298 -0
  875. package/src/ink/events/click-event.js +36 -0
  876. package/src/ink/events/dispatcher.js +172 -0
  877. package/src/ink/events/emitter.js +31 -0
  878. package/src/ink/events/event-handlers.js +30 -0
  879. package/src/ink/events/event.js +9 -0
  880. package/src/ink/events/focus-event.js +16 -0
  881. package/src/ink/events/input-event.js +161 -0
  882. package/src/ink/events/keyboard-event.js +46 -0
  883. package/src/ink/events/terminal-event.js +78 -0
  884. package/src/ink/events/terminal-focus-event.js +15 -0
  885. package/src/ink/focus.js +158 -0
  886. package/src/ink/frame.js +30 -0
  887. package/src/ink/get-max-width.js +23 -0
  888. package/src/ink/hit-test.js +113 -0
  889. package/src/ink/hooks/use-animation-frame.js +48 -0
  890. package/src/ink/hooks/use-app.js +7 -0
  891. package/src/ink/hooks/use-declared-cursor.js +60 -0
  892. package/src/ink/hooks/use-input.js +70 -0
  893. package/src/ink/hooks/use-interval.js +54 -0
  894. package/src/ink/hooks/use-search-highlight.js +32 -0
  895. package/src/ink/hooks/use-selection.js +60 -0
  896. package/src/ink/hooks/use-stdin.js +7 -0
  897. package/src/ink/hooks/use-tab-status.js +57 -0
  898. package/src/ink/hooks/use-terminal-focus.js +15 -0
  899. package/src/ink/hooks/use-terminal-title.js +29 -0
  900. package/src/ink/hooks/use-terminal-viewport.js +77 -0
  901. package/src/ink/ink.js +1645 -0
  902. package/src/ink/instances.js +7 -0
  903. package/src/ink/layout/engine.js +4 -0
  904. package/src/ink/layout/geometry.js +61 -0
  905. package/src/ink/layout/node.js +62 -0
  906. package/src/ink/layout/yoga.js +237 -0
  907. package/src/ink/line-width-cache.js +19 -0
  908. package/src/ink/log-update.js +583 -0
  909. package/src/ink/measure-element.js +8 -0
  910. package/src/ink/measure-text.js +35 -0
  911. package/src/ink/node-cache.js +30 -0
  912. package/src/ink/optimizer.js +81 -0
  913. package/src/ink/output.js +556 -0
  914. package/src/ink/parse-keypress.js +695 -0
  915. package/src/ink/reconciler.js +384 -0
  916. package/src/ink/render-border.js +134 -0
  917. package/src/ink/render-node-to-output.js +1216 -0
  918. package/src/ink/render-to-screen.js +171 -0
  919. package/src/ink/renderer.js +129 -0
  920. package/src/ink/root.js +80 -0
  921. package/src/ink/screen.js +1132 -0
  922. package/src/ink/searchHighlight.js +78 -0
  923. package/src/ink/selection.js +792 -0
  924. package/src/ink/squash-text-nodes.js +56 -0
  925. package/src/ink/stringWidth.js +200 -0
  926. package/src/ink/styles.js +299 -0
  927. package/src/ink/supports-hyperlinks.js +40 -0
  928. package/src/ink/tabstops.js +39 -0
  929. package/src/ink/terminal-focus-state.js +35 -0
  930. package/src/ink/terminal-querier.js +173 -0
  931. package/src/ink/terminal.js +208 -0
  932. package/src/ink/termio/ansi.js +70 -0
  933. package/src/ink/termio/csi.js +260 -0
  934. package/src/ink/termio/dec.js +53 -0
  935. package/src/ink/termio/esc.js +55 -0
  936. package/src/ink/termio/osc.js +432 -0
  937. package/src/ink/termio/parser.js +356 -0
  938. package/src/ink/termio/sgr.js +292 -0
  939. package/src/ink/termio/tokenize.js +264 -0
  940. package/src/ink/termio/types.js +55 -0
  941. package/src/ink/termio.js +24 -0
  942. package/src/ink/useTerminalNotification.js +57 -0
  943. package/src/ink/warn.js +10 -0
  944. package/src/ink/widest-line.js +14 -0
  945. package/src/ink/wrap-text.js +54 -0
  946. package/src/ink/wrapAnsi.js +6 -0
  947. package/src/ink.js +50 -0
  948. package/src/integrations/credentialStore.js +176 -0
  949. package/src/integrations/index.js +5 -0
  950. package/src/integrations/integrationManager.js +180 -0
  951. package/src/integrations/providers/BaseProvider.js +180 -0
  952. package/src/integrations/providers/GitHubProvider.js +217 -0
  953. package/src/integrations/providers/GmailProvider.js +204 -0
  954. package/src/integrations/providers/GoogleCalendarProvider.js +113 -0
  955. package/src/integrations/providers/HubSpotProvider.js +159 -0
  956. package/src/integrations/providers/JiraProvider.js +216 -0
  957. package/src/integrations/providers/NotionProvider.js +221 -0
  958. package/src/integrations/providers/QuickBooksProvider.js +176 -0
  959. package/src/integrations/providers/SlackProvider.js +174 -0
  960. package/src/integrations/providers/StripeProvider.js +206 -0
  961. package/src/integrations/providers/TwilioProvider.js +239 -0
  962. package/src/integrations/providers/_template.js +112 -0
  963. package/src/integrations/types.js +7 -0
  964. package/src/interactiveHelpers.js +308 -0
  965. package/src/jobs/classifier.js +6 -0
  966. package/src/keybindings/KeybindingContext.js +184 -0
  967. package/src/keybindings/KeybindingProviderSetup.js +259 -0
  968. package/src/keybindings/defaultBindings.js +333 -0
  969. package/src/keybindings/loadUserBindings.js +393 -0
  970. package/src/keybindings/match.js +111 -0
  971. package/src/keybindings/parser.js +184 -0
  972. package/src/keybindings/reservedShortcuts.js +109 -0
  973. package/src/keybindings/resolver.js +182 -0
  974. package/src/keybindings/schema.js +205 -0
  975. package/src/keybindings/shortcutFormat.js +48 -0
  976. package/src/keybindings/template.js +40 -0
  977. package/src/keybindings/useKeybinding.js +161 -0
  978. package/src/keybindings/useShortcutDisplay.js +43 -0
  979. package/src/keybindings/validate.js +395 -0
  980. package/src/main.js +4128 -0
  981. package/src/memdir/findRelevantMemories.js +99 -0
  982. package/src/memdir/memdir.js +406 -0
  983. package/src/memdir/memoryAge.js +52 -0
  984. package/src/memdir/memoryScan.js +65 -0
  985. package/src/memdir/memoryShapeTelemetry.js +8 -0
  986. package/src/memdir/memoryTypes.js +260 -0
  987. package/src/memdir/paths.js +235 -0
  988. package/src/memdir/teamMemPaths.js +261 -0
  989. package/src/memdir/teamMemPrompts.js +82 -0
  990. package/src/migrations/migrateAutoUpdatesToSettings.js +47 -0
  991. package/src/migrations/migrateBypassPermissionsAcceptedToSettings.js +32 -0
  992. package/src/migrations/migrateEnableAllProjectMcpServersToSettings.js +83 -0
  993. package/src/migrations/migrateFennecToOpus.js +39 -0
  994. package/src/migrations/migrateLegacyOpusToCurrent.js +44 -0
  995. package/src/migrations/migrateOpusToOpus1m.js +31 -0
  996. package/src/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.js +23 -0
  997. package/src/migrations/migrateSonnet1mToSonnet45.js +38 -0
  998. package/src/migrations/migrateSonnet45ToSonnet46.js +48 -0
  999. package/src/migrations/resetAutoModeOptInForDefaultOffer.js +47 -0
  1000. package/src/migrations/resetProToOpusDefault.js +46 -0
  1001. package/src/moreright/useMoreRight.js +13 -0
  1002. package/src/native-ts/color-diff/index.js +819 -0
  1003. package/src/native-ts/file-index/index.js +328 -0
  1004. package/src/native-ts/yoga-layout/enums.js +101 -0
  1005. package/src/native-ts/yoga-layout/index.js +2113 -0
  1006. package/src/outputStyles/loadOutputStylesDir.js +71 -0
  1007. package/src/plugins/builtinPlugins.js +132 -0
  1008. package/src/plugins/bundled/index.js +22 -0
  1009. package/src/proactive/index.js +138 -0
  1010. package/src/proactive/useProactive.js +82 -0
  1011. package/src/projectOnboardingState.js +61 -0
  1012. package/src/query/config.js +17 -0
  1013. package/src/query/deps.js +12 -0
  1014. package/src/query/stopHooks.js +332 -0
  1015. package/src/query/tokenBudget.js +49 -0
  1016. package/src/query.js +1264 -0
  1017. package/src/remote/RemoteSessionManager.js +172 -0
  1018. package/src/remote/SessionsWebSocket.js +308 -0
  1019. package/src/remote/remotePermissionBridge.js +70 -0
  1020. package/src/remote/sdkMessageAdapter.js +227 -0
  1021. package/src/replLauncher.js +7 -0
  1022. package/src/schemas/hooks.js +174 -0
  1023. package/src/screens/Doctor.js +580 -0
  1024. package/src/screens/REPL.js +4500 -0
  1025. package/src/screens/ResumeConversation.js +339 -0
  1026. package/src/self-hosted-runner/main.js +8 -0
  1027. package/src/server/backends/dangerousBackend.js +8 -0
  1028. package/src/server/connectHeadless.js +6 -0
  1029. package/src/server/createDirectConnectSession.js +62 -0
  1030. package/src/server/directConnectManager.js +153 -0
  1031. package/src/server/lockfile.js +11 -0
  1032. package/src/server/parseConnectUrl.js +20 -0
  1033. package/src/server/server.js +12 -0
  1034. package/src/server/serverBanner.js +9 -0
  1035. package/src/server/serverLog.js +11 -0
  1036. package/src/server/sessionManager.js +19 -0
  1037. package/src/server/types.js +7 -0
  1038. package/src/services/AgentSummary/agentSummary.js +147 -0
  1039. package/src/services/MagicDocs/magicDocs.js +193 -0
  1040. package/src/services/MagicDocs/prompts.js +110 -0
  1041. package/src/services/PromptSuggestion/promptSuggestion.js +402 -0
  1042. package/src/services/PromptSuggestion/speculation.js +643 -0
  1043. package/src/services/SessionMemory/prompts.js +254 -0
  1044. package/src/services/SessionMemory/sessionMemory.js +358 -0
  1045. package/src/services/SessionMemory/sessionMemoryUtils.js +157 -0
  1046. package/src/services/analytics/config.js +27 -0
  1047. package/src/services/analytics/datadog.js +26 -0
  1048. package/src/services/analytics/firstPartyEventLogger.js +65 -0
  1049. package/src/services/analytics/firstPartyEventLoggingExporter.js +595 -0
  1050. package/src/services/analytics/growthbook.js +103 -0
  1051. package/src/services/analytics/index.js +91 -0
  1052. package/src/services/analytics/metadata.js +696 -0
  1053. package/src/services/analytics/sink.js +19 -0
  1054. package/src/services/analytics/sinkKillswitch.js +19 -0
  1055. package/src/services/api/adminRequests.js +57 -0
  1056. package/src/services/api/bootstrap.js +118 -0
  1057. package/src/services/api/claude.js +2466 -0
  1058. package/src/services/api/client.js +335 -0
  1059. package/src/services/api/dumpPrompts.js +174 -0
  1060. package/src/services/api/emptyUsage.js +20 -0
  1061. package/src/services/api/errorUtils.js +203 -0
  1062. package/src/services/api/errors.js +926 -0
  1063. package/src/services/api/filesApi.js +523 -0
  1064. package/src/services/api/firstTokenDate.js +49 -0
  1065. package/src/services/api/grove.js +44 -0
  1066. package/src/services/api/logging.js +484 -0
  1067. package/src/services/api/metricsOptOut.js +15 -0
  1068. package/src/services/api/overageCreditGrant.js +123 -0
  1069. package/src/services/api/promptCacheBreakDetection.js +510 -0
  1070. package/src/services/api/referral.js +219 -0
  1071. package/src/services/api/sessionIngress.js +358 -0
  1072. package/src/services/api/ultrareviewQuota.js +29 -0
  1073. package/src/services/api/usage.js +31 -0
  1074. package/src/services/api/withRetry.js +587 -0
  1075. package/src/services/api/xai/anthropic-shim.js +885 -0
  1076. package/src/services/api/xai/brightDataSearch.js +161 -0
  1077. package/src/services/api/xai/thaddeus-engine.js +605 -0
  1078. package/src/services/api/xai/xai-client.js +276 -0
  1079. package/src/services/autoDream/autoDream.js +244 -0
  1080. package/src/services/autoDream/config.js +17 -0
  1081. package/src/services/autoDream/consolidationLock.js +122 -0
  1082. package/src/services/autoDream/consolidationPrompt.js +55 -0
  1083. package/src/services/awaySummary.js +61 -0
  1084. package/src/services/claudeAiLimits.js +331 -0
  1085. package/src/services/claudeAiLimitsHook.js +15 -0
  1086. package/src/services/compact/apiMicrocompact.js +97 -0
  1087. package/src/services/compact/autoCompact.js +234 -0
  1088. package/src/services/compact/cachedMCConfig.js +5 -0
  1089. package/src/services/compact/compact.js +1256 -0
  1090. package/src/services/compact/compactWarningHook.js +12 -0
  1091. package/src/services/compact/compactWarningState.js +15 -0
  1092. package/src/services/compact/grouping.js +58 -0
  1093. package/src/services/compact/microCompact.js +414 -0
  1094. package/src/services/compact/postCompactCleanup.js +70 -0
  1095. package/src/services/compact/prompt.js +325 -0
  1096. package/src/services/compact/reactiveCompact.js +20 -0
  1097. package/src/services/compact/sessionMemoryCompact.js +467 -0
  1098. package/src/services/compact/snipCompact.js +23 -0
  1099. package/src/services/compact/snipProjection.js +11 -0
  1100. package/src/services/compact/timeBasedMCConfig.js +11 -0
  1101. package/src/services/contextCollapse/index.js +33 -0
  1102. package/src/services/contextCollapse/operations.js +5 -0
  1103. package/src/services/contextCollapse/persist.js +5 -0
  1104. package/src/services/diagnosticTracking.js +282 -0
  1105. package/src/services/elevenlabsTTS.js +245 -0
  1106. package/src/services/extractMemories/extractMemories.js +442 -0
  1107. package/src/services/extractMemories/prompts.js +129 -0
  1108. package/src/services/internalLogging.js +68 -0
  1109. package/src/services/lsp/LSPClient.js +306 -0
  1110. package/src/services/lsp/LSPDiagnosticRegistry.js +277 -0
  1111. package/src/services/lsp/LSPServerInstance.js +388 -0
  1112. package/src/services/lsp/LSPServerManager.js +305 -0
  1113. package/src/services/lsp/config.js +57 -0
  1114. package/src/services/lsp/manager.js +246 -0
  1115. package/src/services/lsp/passiveFeedback.js +226 -0
  1116. package/src/services/mcp/InProcessTransport.js +54 -0
  1117. package/src/services/mcp/MCPConnectionManager.js +50 -0
  1118. package/src/services/mcp/SdkControlTransport.js +115 -0
  1119. package/src/services/mcp/auth.js +1882 -0
  1120. package/src/services/mcp/channelAllowlist.js +57 -0
  1121. package/src/services/mcp/channelNotification.js +235 -0
  1122. package/src/services/mcp/channelPermissions.js +192 -0
  1123. package/src/services/mcp/claudeai.js +123 -0
  1124. package/src/services/mcp/client.js +2478 -0
  1125. package/src/services/mcp/config.js +1271 -0
  1126. package/src/services/mcp/elicitationHandler.js +192 -0
  1127. package/src/services/mcp/envExpansion.js +30 -0
  1128. package/src/services/mcp/headersHelper.js +93 -0
  1129. package/src/services/mcp/mcpStringUtils.js +85 -0
  1130. package/src/services/mcp/normalization.js +21 -0
  1131. package/src/services/mcp/oauthPort.js +69 -0
  1132. package/src/services/mcp/officialRegistry.js +20 -0
  1133. package/src/services/mcp/types.js +94 -0
  1134. package/src/services/mcp/useManageMCPConnections.js +818 -0
  1135. package/src/services/mcp/utils.js +433 -0
  1136. package/src/services/mcp/vscodeSdkMcp.js +69 -0
  1137. package/src/services/mcp/xaa.js +342 -0
  1138. package/src/services/mcp/xaaIdpLogin.js +377 -0
  1139. package/src/services/mcpServerApproval.js +30 -0
  1140. package/src/services/mockRateLimits.js +666 -0
  1141. package/src/services/notifier.js +114 -0
  1142. package/src/services/oauth/auth-code-listener.js +165 -0
  1143. package/src/services/oauth/client.js +397 -0
  1144. package/src/services/oauth/crypto.js +19 -0
  1145. package/src/services/oauth/getOauthProfile.js +48 -0
  1146. package/src/services/oauth/index.js +133 -0
  1147. package/src/services/plugins/PluginInstallationManager.js +139 -0
  1148. package/src/services/plugins/pluginCliCommands.js +230 -0
  1149. package/src/services/plugins/pluginOperations.js +826 -0
  1150. package/src/services/policyLimits/index.js +547 -0
  1151. package/src/services/policyLimits/types.js +9 -0
  1152. package/src/services/preventSleep.js +143 -0
  1153. package/src/services/rateLimitMessages.js +271 -0
  1154. package/src/services/rateLimitMocking.js +91 -0
  1155. package/src/services/remoteManagedSettings/index.js +534 -0
  1156. package/src/services/remoteManagedSettings/securityCheck.js +60 -0
  1157. package/src/services/remoteManagedSettings/syncCache.js +90 -0
  1158. package/src/services/remoteManagedSettings/syncCacheState.js +89 -0
  1159. package/src/services/remoteManagedSettings/types.js +12 -0
  1160. package/src/services/sessionTranscript/sessionTranscript.js +5 -0
  1161. package/src/services/settingsSync/index.js +478 -0
  1162. package/src/services/settingsSync/types.js +35 -0
  1163. package/src/services/skillSearch/featureCheck.js +8 -0
  1164. package/src/services/skillSearch/localSearch.js +5 -0
  1165. package/src/services/skillSearch/prefetch.js +8 -0
  1166. package/src/services/skillSearch/remoteSkillLoader.js +8 -0
  1167. package/src/services/skillSearch/remoteSkillState.js +11 -0
  1168. package/src/services/skillSearch/signals.js +3 -0
  1169. package/src/services/skillSearch/telemetry.js +8 -0
  1170. package/src/services/teamMemorySync/index.js +976 -0
  1171. package/src/services/teamMemorySync/secretScanner.js +275 -0
  1172. package/src/services/teamMemorySync/teamMemSecretGuard.js +33 -0
  1173. package/src/services/teamMemorySync/types.js +47 -0
  1174. package/src/services/teamMemorySync/watcher.js +326 -0
  1175. package/src/services/thaddeusAuth.js +485 -0
  1176. package/src/services/thaddeusAuthTypes.js +9 -0
  1177. package/src/services/thaddeusLoginFlow.js +236 -0
  1178. package/src/services/tips/tipHistory.js +17 -0
  1179. package/src/services/tips/tipRegistry.js +593 -0
  1180. package/src/services/tips/tipScheduler.js +40 -0
  1181. package/src/services/tokenEstimation.js +365 -0
  1182. package/src/services/toolUseSummary/toolUseSummaryGenerator.js +87 -0
  1183. package/src/services/tools/StreamingToolExecutor.js +413 -0
  1184. package/src/services/tools/toolExecution.js +1309 -0
  1185. package/src/services/tools/toolHooks.js +454 -0
  1186. package/src/services/tools/toolOrchestration.js +110 -0
  1187. package/src/services/vcr.js +291 -0
  1188. package/src/services/voice.js +392 -0
  1189. package/src/services/voiceKeyterms.js +94 -0
  1190. package/src/services/voiceStreamSTT.js +405 -0
  1191. package/src/setup.js +310 -0
  1192. package/src/skills/bundled/batch.js +114 -0
  1193. package/src/skills/bundled/claudeApi.js +145 -0
  1194. package/src/skills/bundled/claudeApiContent.js +71 -0
  1195. package/src/skills/bundled/claudeInChrome.js +27 -0
  1196. package/src/skills/bundled/debug.js +99 -0
  1197. package/src/skills/bundled/dream.js +49 -0
  1198. package/src/skills/bundled/emailSetup.js +196 -0
  1199. package/src/skills/bundled/hunter.js +28 -0
  1200. package/src/skills/bundled/index.js +80 -0
  1201. package/src/skills/bundled/keybindings.js +292 -0
  1202. package/src/skills/bundled/loop.js +81 -0
  1203. package/src/skills/bundled/loremIpsum.js +264 -0
  1204. package/src/skills/bundled/reactor.js +31 -0
  1205. package/src/skills/bundled/remember.js +73 -0
  1206. package/src/skills/bundled/runSkillGenerator.js +12 -0
  1207. package/src/skills/bundled/scheduleRemoteAgents.js +373 -0
  1208. package/src/skills/bundled/simplify.js +66 -0
  1209. package/src/skills/bundled/skillify.js +182 -0
  1210. package/src/skills/bundled/stuck.js +69 -0
  1211. package/src/skills/bundled/updateConfig.js +463 -0
  1212. package/src/skills/bundled/verify.js +23 -0
  1213. package/src/skills/bundled/verifyContent.js +10 -0
  1214. package/src/skills/bundledSkills.js +159 -0
  1215. package/src/skills/loadSkillsDir.js +736 -0
  1216. package/src/skills/mcpSkillBuilders.js +10 -0
  1217. package/src/skills/mcpSkills.js +5 -0
  1218. package/src/state/AppState.js +182 -0
  1219. package/src/state/AppStateStore.js +117 -0
  1220. package/src/state/onChangeAppState.js +132 -0
  1221. package/src/state/selectors.js +51 -0
  1222. package/src/state/store.js +21 -0
  1223. package/src/state/teammateViewHelpers.js +124 -0
  1224. package/src/stubs/ant-chrome-mcp/index.js +4 -0
  1225. package/src/stubs/ant-computer-use-input/index.js +2 -0
  1226. package/src/stubs/ant-computer-use-mcp/index.js +7 -0
  1227. package/src/stubs/ant-computer-use-mcp/sentinelApps.js +2 -0
  1228. package/src/stubs/ant-computer-use-mcp/types.js +3 -0
  1229. package/src/stubs/ant-computer-use-swift/index.js +1 -0
  1230. package/src/stubs/anthropic-sandbox/index.js +34 -0
  1231. package/src/tasks/DreamTask/DreamTask.js +99 -0
  1232. package/src/tasks/InProcessTeammateTask/InProcessTeammateTask.js +116 -0
  1233. package/src/tasks/InProcessTeammateTask/types.js +35 -0
  1234. package/src/tasks/LocalAgentTask/LocalAgentTask.js +507 -0
  1235. package/src/tasks/LocalMainSessionTask.js +338 -0
  1236. package/src/tasks/LocalShellTask/LocalShellTask.js +475 -0
  1237. package/src/tasks/LocalShellTask/guards.js +9 -0
  1238. package/src/tasks/LocalShellTask/killShellTasks.js +59 -0
  1239. package/src/tasks/LocalWorkflowTask/LocalWorkflowTask.js +7 -0
  1240. package/src/tasks/MonitorMcpTask/MonitorMcpTask.js +20 -0
  1241. package/src/tasks/RemoteAgentTask/RemoteAgentTask.js +742 -0
  1242. package/src/tasks/pillLabel.js +69 -0
  1243. package/src/tasks/stopTask.js +67 -0
  1244. package/src/tasks/types.js +18 -0
  1245. package/src/tasks.js +37 -0
  1246. package/src/tools/AIEmployeesTool/AIEmployeesTool.js +674 -0
  1247. package/src/tools/AIEmployeesTool/constants.js +1 -0
  1248. package/src/tools/AIEmployeesTool/prompt.js +56 -0
  1249. package/src/tools/AgentTool/AgentTool.js +1221 -0
  1250. package/src/tools/AgentTool/UI.js +593 -0
  1251. package/src/tools/AgentTool/agentColorManager.js +43 -0
  1252. package/src/tools/AgentTool/agentDisplay.js +72 -0
  1253. package/src/tools/AgentTool/agentMemory.js +125 -0
  1254. package/src/tools/AgentTool/agentMemorySnapshot.js +136 -0
  1255. package/src/tools/AgentTool/agentToolUtils.js +456 -0
  1256. package/src/tools/AgentTool/built-in/exploreAgent.js +76 -0
  1257. package/src/tools/AgentTool/built-in/generalPurposeAgent.js +28 -0
  1258. package/src/tools/AgentTool/built-in/planAgent.js +87 -0
  1259. package/src/tools/AgentTool/built-in/statuslineSetup.js +140 -0
  1260. package/src/tools/AgentTool/built-in/thaddeusGuideAgent.js +174 -0
  1261. package/src/tools/AgentTool/built-in/verificationAgent.js +146 -0
  1262. package/src/tools/AgentTool/builtInAgents.js +56 -0
  1263. package/src/tools/AgentTool/constants.js +11 -0
  1264. package/src/tools/AgentTool/forkSubagent.js +177 -0
  1265. package/src/tools/AgentTool/loadAgentsDir.js +497 -0
  1266. package/src/tools/AgentTool/prompt.js +260 -0
  1267. package/src/tools/AgentTool/resumeAgent.js +182 -0
  1268. package/src/tools/AgentTool/runAgent.js +627 -0
  1269. package/src/tools/AppointmentsTool/AppointmentsTool.js +628 -0
  1270. package/src/tools/AppointmentsTool/constants.js +1 -0
  1271. package/src/tools/AppointmentsTool/prompt.js +15 -0
  1272. package/src/tools/AskUserQuestionTool/AskUserQuestionTool.js +238 -0
  1273. package/src/tools/AskUserQuestionTool/prompt.js +38 -0
  1274. package/src/tools/BashTool/BashTool.js +1009 -0
  1275. package/src/tools/BashTool/BashToolResultMessage.js +169 -0
  1276. package/src/tools/BashTool/UI.js +134 -0
  1277. package/src/tools/BashTool/bashCommandHelpers.js +184 -0
  1278. package/src/tools/BashTool/bashPermissions.js +2023 -0
  1279. package/src/tools/BashTool/bashSecurity.js +2267 -0
  1280. package/src/tools/BashTool/commandSemantics.js +105 -0
  1281. package/src/tools/BashTool/commentLabel.js +14 -0
  1282. package/src/tools/BashTool/destructiveCommandWarning.js +88 -0
  1283. package/src/tools/BashTool/modeValidation.js +86 -0
  1284. package/src/tools/BashTool/pathValidation.js +1079 -0
  1285. package/src/tools/BashTool/prompt.js +333 -0
  1286. package/src/tools/BashTool/readOnlyValidation.js +1794 -0
  1287. package/src/tools/BashTool/sedEditParser.js +282 -0
  1288. package/src/tools/BashTool/sedValidation.js +580 -0
  1289. package/src/tools/BashTool/shouldUseSandbox.js +125 -0
  1290. package/src/tools/BashTool/toolName.js +2 -0
  1291. package/src/tools/BashTool/utils.js +180 -0
  1292. package/src/tools/BriefTool/BriefTool.js +173 -0
  1293. package/src/tools/BriefTool/UI.js +67 -0
  1294. package/src/tools/BriefTool/attachments.js +86 -0
  1295. package/src/tools/BriefTool/prompt.js +19 -0
  1296. package/src/tools/BriefTool/upload.js +136 -0
  1297. package/src/tools/CalendarTool/CalendarTool.js +498 -0
  1298. package/src/tools/CalendarTool/constants.js +1 -0
  1299. package/src/tools/CalendarTool/prompt.js +11 -0
  1300. package/src/tools/ConfigTool/ConfigTool.js +398 -0
  1301. package/src/tools/ConfigTool/UI.js +25 -0
  1302. package/src/tools/ConfigTool/constants.js +1 -0
  1303. package/src/tools/ConfigTool/prompt.js +82 -0
  1304. package/src/tools/ConfigTool/supportedSettings.js +180 -0
  1305. package/src/tools/ContactsTool/ContactsTool.js +648 -0
  1306. package/src/tools/ContactsTool/constants.js +1 -0
  1307. package/src/tools/ContactsTool/prompt.js +15 -0
  1308. package/src/tools/CtxInspectTool/CtxInspectTool.js +44 -0
  1309. package/src/tools/DiscoverSkillsTool/prompt.js +4 -0
  1310. package/src/tools/EmailReadTool/index.js +410 -0
  1311. package/src/tools/EmailSendTool/index.js +178 -0
  1312. package/src/tools/EnterPlanModeTool/EnterPlanModeTool.js +98 -0
  1313. package/src/tools/EnterPlanModeTool/UI.js +14 -0
  1314. package/src/tools/EnterPlanModeTool/constants.js +1 -0
  1315. package/src/tools/EnterPlanModeTool/prompt.js +164 -0
  1316. package/src/tools/EnterWorktreeTool/EnterWorktreeTool.js +104 -0
  1317. package/src/tools/EnterWorktreeTool/UI.js +9 -0
  1318. package/src/tools/EnterWorktreeTool/constants.js +1 -0
  1319. package/src/tools/EnterWorktreeTool/prompt.js +30 -0
  1320. package/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.js +383 -0
  1321. package/src/tools/ExitPlanModeTool/UI.js +32 -0
  1322. package/src/tools/ExitPlanModeTool/constants.js +2 -0
  1323. package/src/tools/ExitPlanModeTool/prompt.js +27 -0
  1324. package/src/tools/ExitWorktreeTool/ExitWorktreeTool.js +257 -0
  1325. package/src/tools/ExitWorktreeTool/UI.js +10 -0
  1326. package/src/tools/ExitWorktreeTool/constants.js +1 -0
  1327. package/src/tools/ExitWorktreeTool/prompt.js +32 -0
  1328. package/src/tools/FileEditTool/FileEditTool.js +480 -0
  1329. package/src/tools/FileEditTool/UI.js +202 -0
  1330. package/src/tools/FileEditTool/constants.js +7 -0
  1331. package/src/tools/FileEditTool/prompt.js +24 -0
  1332. package/src/tools/FileEditTool/types.js +50 -0
  1333. package/src/tools/FileEditTool/utils.js +579 -0
  1334. package/src/tools/FileReadTool/FileReadTool.js +889 -0
  1335. package/src/tools/FileReadTool/UI.js +126 -0
  1336. package/src/tools/FileReadTool/imageProcessor.js +46 -0
  1337. package/src/tools/FileReadTool/limits.js +70 -0
  1338. package/src/tools/FileReadTool/prompt.js +31 -0
  1339. package/src/tools/FileWriteTool/FileWriteTool.js +341 -0
  1340. package/src/tools/FileWriteTool/UI.js +339 -0
  1341. package/src/tools/FileWriteTool/prompt.js +15 -0
  1342. package/src/tools/GlobTool/GlobTool.js +161 -0
  1343. package/src/tools/GlobTool/UI.js +40 -0
  1344. package/src/tools/GlobTool/prompt.js +6 -0
  1345. package/src/tools/GrepTool/GrepTool.js +439 -0
  1346. package/src/tools/GrepTool/UI.js +155 -0
  1347. package/src/tools/GrepTool/prompt.js +16 -0
  1348. package/src/tools/IntegrationsTool/IntegrationsTool.js +217 -0
  1349. package/src/tools/IntegrationsTool/constants.js +1 -0
  1350. package/src/tools/IntegrationsTool/prompt.js +41 -0
  1351. package/src/tools/InteractionsTool/InteractionsTool.js +525 -0
  1352. package/src/tools/InteractionsTool/constants.js +1 -0
  1353. package/src/tools/InteractionsTool/prompt.js +14 -0
  1354. package/src/tools/InvoicesTool/InvoicesTool.js +581 -0
  1355. package/src/tools/InvoicesTool/constants.js +1 -0
  1356. package/src/tools/InvoicesTool/prompt.js +15 -0
  1357. package/src/tools/LSPTool/LSPTool.js +660 -0
  1358. package/src/tools/LSPTool/UI.js +205 -0
  1359. package/src/tools/LSPTool/formatters.js +445 -0
  1360. package/src/tools/LSPTool/prompt.js +20 -0
  1361. package/src/tools/LSPTool/schemas.js +197 -0
  1362. package/src/tools/LSPTool/symbolContext.js +75 -0
  1363. package/src/tools/LeadScorerTool/LeadScorerTool.js +509 -0
  1364. package/src/tools/LeadScorerTool/constants.js +1 -0
  1365. package/src/tools/LeadScorerTool/prompt.js +11 -0
  1366. package/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +100 -0
  1367. package/src/tools/ListMcpResourcesTool/UI.js +17 -0
  1368. package/src/tools/ListMcpResourcesTool/prompt.js +18 -0
  1369. package/src/tools/ListPeersTool/ListPeersTool.js +45 -0
  1370. package/src/tools/MCPTool/MCPTool.js +60 -0
  1371. package/src/tools/MCPTool/UI.js +343 -0
  1372. package/src/tools/MCPTool/classifyForCollapse.js +597 -0
  1373. package/src/tools/MCPTool/prompt.js +3 -0
  1374. package/src/tools/McpAuthTool/McpAuthTool.js +162 -0
  1375. package/src/tools/MonitorTool/MonitorTool.js +55 -0
  1376. package/src/tools/NotebookEditTool/NotebookEditTool.js +421 -0
  1377. package/src/tools/NotebookEditTool/UI.js +41 -0
  1378. package/src/tools/NotebookEditTool/constants.js +2 -0
  1379. package/src/tools/NotebookEditTool/prompt.js +2 -0
  1380. package/src/tools/OverflowTestTool/OverflowTestTool.js +51 -0
  1381. package/src/tools/PhoneBridgeTool/PhoneBridgeTool.js +301 -0
  1382. package/src/tools/PhoneBridgeTool/constants.js +1 -0
  1383. package/src/tools/PhoneBridgeTool/prompt.js +26 -0
  1384. package/src/tools/PowerShellTool/PowerShellTool.js +900 -0
  1385. package/src/tools/PowerShellTool/UI.js +58 -0
  1386. package/src/tools/PowerShellTool/clmTypes.js +207 -0
  1387. package/src/tools/PowerShellTool/commandSemantics.js +115 -0
  1388. package/src/tools/PowerShellTool/commonParameters.js +27 -0
  1389. package/src/tools/PowerShellTool/destructiveCommandWarning.js +92 -0
  1390. package/src/tools/PowerShellTool/gitSafety.js +185 -0
  1391. package/src/tools/PowerShellTool/modeValidation.js +357 -0
  1392. package/src/tools/PowerShellTool/pathValidation.js +1712 -0
  1393. package/src/tools/PowerShellTool/powershellPermissions.js +1351 -0
  1394. package/src/tools/PowerShellTool/powershellSecurity.js +942 -0
  1395. package/src/tools/PowerShellTool/prompt.js +132 -0
  1396. package/src/tools/PowerShellTool/readOnlyValidation.js +1633 -0
  1397. package/src/tools/PowerShellTool/toolName.js +2 -0
  1398. package/src/tools/PushNotificationTool/PushNotificationTool.js +35 -0
  1399. package/src/tools/REPLTool/REPLTool.js +44 -0
  1400. package/src/tools/REPLTool/constants.js +43 -0
  1401. package/src/tools/REPLTool/primitiveTools.js +36 -0
  1402. package/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +112 -0
  1403. package/src/tools/ReadMcpResourceTool/UI.js +24 -0
  1404. package/src/tools/ReadMcpResourceTool/prompt.js +15 -0
  1405. package/src/tools/RemoteTriggerTool/RemoteTriggerTool.js +142 -0
  1406. package/src/tools/RemoteTriggerTool/UI.js +12 -0
  1407. package/src/tools/RemoteTriggerTool/prompt.js +12 -0
  1408. package/src/tools/ReviewArtifactTool/ReviewArtifactTool.js +51 -0
  1409. package/src/tools/ScheduleCronTool/CronCreateTool.js +120 -0
  1410. package/src/tools/ScheduleCronTool/CronDeleteTool.js +74 -0
  1411. package/src/tools/ScheduleCronTool/CronListTool.js +77 -0
  1412. package/src/tools/ScheduleCronTool/UI.js +29 -0
  1413. package/src/tools/ScheduleCronTool/prompt.js +115 -0
  1414. package/src/tools/SendMessageTool/SendMessageTool.js +673 -0
  1415. package/src/tools/SendMessageTool/UI.js +24 -0
  1416. package/src/tools/SendMessageTool/constants.js +1 -0
  1417. package/src/tools/SendMessageTool/prompt.js +47 -0
  1418. package/src/tools/SendUserFileTool/SendUserFileTool.js +35 -0
  1419. package/src/tools/SendUserFileTool/prompt.js +5 -0
  1420. package/src/tools/SkillTool/SkillTool.js +825 -0
  1421. package/src/tools/SkillTool/UI.js +61 -0
  1422. package/src/tools/SkillTool/constants.js +1 -0
  1423. package/src/tools/SkillTool/prompt.js +184 -0
  1424. package/src/tools/SleepTool/SleepTool.js +42 -0
  1425. package/src/tools/SleepTool/prompt.js +14 -0
  1426. package/src/tools/SnipTool/SnipTool.js +47 -0
  1427. package/src/tools/SnipTool/prompt.js +5 -0
  1428. package/src/tools/SubscribePRTool/SubscribePRTool.js +49 -0
  1429. package/src/tools/SuggestBackgroundPRTool/SuggestBackgroundPRTool.js +44 -0
  1430. package/src/tools/SyntheticOutputTool/SyntheticOutputTool.js +138 -0
  1431. package/src/tools/SyntheticOutputTool/SyntheticOutputTool.ts +1 -1
  1432. package/src/tools/TaskCreateTool/TaskCreateTool.js +104 -0
  1433. package/src/tools/TaskCreateTool/constants.js +1 -0
  1434. package/src/tools/TaskCreateTool/prompt.js +52 -0
  1435. package/src/tools/TaskGetTool/TaskGetTool.js +106 -0
  1436. package/src/tools/TaskGetTool/constants.js +1 -0
  1437. package/src/tools/TaskGetTool/prompt.js +23 -0
  1438. package/src/tools/TaskListTool/TaskListTool.js +89 -0
  1439. package/src/tools/TaskListTool/constants.js +1 -0
  1440. package/src/tools/TaskListTool/prompt.js +44 -0
  1441. package/src/tools/TaskOutputTool/TaskOutputTool.js +536 -0
  1442. package/src/tools/TaskOutputTool/constants.js +1 -0
  1443. package/src/tools/TaskStopTool/TaskStopTool.js +110 -0
  1444. package/src/tools/TaskStopTool/UI.js +31 -0
  1445. package/src/tools/TaskStopTool/prompt.js +7 -0
  1446. package/src/tools/TaskUpdateTool/TaskUpdateTool.js +301 -0
  1447. package/src/tools/TaskUpdateTool/constants.js +1 -0
  1448. package/src/tools/TaskUpdateTool/prompt.js +76 -0
  1449. package/src/tools/TeamCreateTool/TeamCreateTool.js +177 -0
  1450. package/src/tools/TeamCreateTool/UI.js +4 -0
  1451. package/src/tools/TeamCreateTool/constants.js +1 -0
  1452. package/src/tools/TeamCreateTool/prompt.js +113 -0
  1453. package/src/tools/TeamDeleteTool/TeamDeleteTool.js +102 -0
  1454. package/src/tools/TeamDeleteTool/UI.js +13 -0
  1455. package/src/tools/TeamDeleteTool/constants.js +1 -0
  1456. package/src/tools/TeamDeleteTool/prompt.js +16 -0
  1457. package/src/tools/TerminalCaptureTool/TerminalCaptureTool.js +47 -0
  1458. package/src/tools/TerminalCaptureTool/prompt.js +11 -0
  1459. package/src/tools/TodoWriteTool/TodoWriteTool.js +99 -0
  1460. package/src/tools/TodoWriteTool/constants.js +1 -0
  1461. package/src/tools/TodoWriteTool/prompt.js +181 -0
  1462. package/src/tools/ToolSearchTool/ToolSearchTool.js +357 -0
  1463. package/src/tools/ToolSearchTool/constants.js +1 -0
  1464. package/src/tools/ToolSearchTool/prompt.js +97 -0
  1465. package/src/tools/TungstenTool/TungstenLiveMonitor.js +7 -0
  1466. package/src/tools/TungstenTool/TungstenTool.js +3 -0
  1467. package/src/tools/VerifyPlanExecutionTool/VerifyPlanExecutionTool.js +45 -0
  1468. package/src/tools/VerifyPlanExecutionTool/constants.js +2 -0
  1469. package/src/tools/WebBrowserTool/WebBrowserPanel.js +5 -0
  1470. package/src/tools/WebBrowserTool/WebBrowserTool.js +58 -0
  1471. package/src/tools/WebFetchTool/UI.js +31 -0
  1472. package/src/tools/WebFetchTool/WebFetchTool.js +246 -0
  1473. package/src/tools/WebFetchTool/preapproved.js +154 -0
  1474. package/src/tools/WebFetchTool/prompt.js +39 -0
  1475. package/src/tools/WebFetchTool/utils.js +368 -0
  1476. package/src/tools/WebSearchTool/UI.js +67 -0
  1477. package/src/tools/WebSearchTool/WebSearchTool.js +396 -0
  1478. package/src/tools/WebSearchTool/prompt.js +32 -0
  1479. package/src/tools/WorkflowTool/WorkflowPermissionRequest.js +7 -0
  1480. package/src/tools/WorkflowTool/WorkflowTool.js +51 -0
  1481. package/src/tools/WorkflowTool/bundled/index.js +5 -0
  1482. package/src/tools/WorkflowTool/constants.js +1 -0
  1483. package/src/tools/WorkflowTool/createWorkflowCommand.js +5 -0
  1484. package/src/tools/shared/gitOperationTracking.js +220 -0
  1485. package/src/tools/shared/spawnMultiAgent.js +805 -0
  1486. package/src/tools/testing/TestingPermissionTool.js +72 -0
  1487. package/src/tools/utils.js +24 -0
  1488. package/src/tools.js +365 -0
  1489. package/src/types/command.js +8 -0
  1490. package/src/types/connectorText.js +3 -0
  1491. package/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.js +673 -0
  1492. package/src/types/generated/events_mono/common/v1/auth.js +49 -0
  1493. package/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.js +147 -0
  1494. package/src/types/generated/google/protobuf/timestamp.js +38 -0
  1495. package/src/types/hooks.js +153 -0
  1496. package/src/types/ids.js +27 -0
  1497. package/src/types/logs.js +11 -0
  1498. package/src/types/permissions.js +25 -0
  1499. package/src/types/plugin.js +72 -0
  1500. package/src/types/textInputTypes.js +20 -0
  1501. package/src/upstreamproxy/relay.js +346 -0
  1502. package/src/upstreamproxy/upstreamproxy.js +234 -0
  1503. package/src/utils/CircularBuffer.js +75 -0
  1504. package/src/utils/Cursor.js +1229 -0
  1505. package/src/utils/QueryGuard.js +115 -0
  1506. package/src/utils/Shell.js +374 -0
  1507. package/src/utils/ShellCommand.js +336 -0
  1508. package/src/utils/abortController.js +74 -0
  1509. package/src/utils/activityManager.js +127 -0
  1510. package/src/utils/advisor.js +77 -0
  1511. package/src/utils/agentContext.js +91 -0
  1512. package/src/utils/agentId.js +83 -0
  1513. package/src/utils/agentSwarmsEnabled.js +37 -0
  1514. package/src/utils/agenticSessionSearch.js +255 -0
  1515. package/src/utils/analyzeContext.js +846 -0
  1516. package/src/utils/ansiToPng.js +259 -0
  1517. package/src/utils/ansiToSvg.js +207 -0
  1518. package/src/utils/api.js +555 -0
  1519. package/src/utils/apiPreconnect.js +62 -0
  1520. package/src/utils/appleTerminalBackup.js +95 -0
  1521. package/src/utils/argumentSubstitution.js +114 -0
  1522. package/src/utils/array.js +12 -0
  1523. package/src/utils/asciicast.js +200 -0
  1524. package/src/utils/attachments.js +2518 -0
  1525. package/src/utils/attribution.js +308 -0
  1526. package/src/utils/auth.js +1598 -0
  1527. package/src/utils/authFileDescriptor.js +152 -0
  1528. package/src/utils/authPortable.js +14 -0
  1529. package/src/utils/autoModeDenials.js +15 -0
  1530. package/src/utils/autoRunIssue.js +113 -0
  1531. package/src/utils/autoUpdater.js +457 -0
  1532. package/src/utils/aws.js +44 -0
  1533. package/src/utils/awsAuthStatusManager.js +66 -0
  1534. package/src/utils/background/remote/preconditions.js +175 -0
  1535. package/src/utils/background/remote/remoteSession.js +53 -0
  1536. package/src/utils/backgroundHousekeeping.js +64 -0
  1537. package/src/utils/bash/ParsedCommand.js +241 -0
  1538. package/src/utils/bash/ShellSnapshot.js +489 -0
  1539. package/src/utils/bash/ast.js +2590 -0
  1540. package/src/utils/bash/bashParser.js +4355 -0
  1541. package/src/utils/bash/bashPipeCommand.js +249 -0
  1542. package/src/utils/bash/commands.js +1131 -0
  1543. package/src/utils/bash/heredoc.js +647 -0
  1544. package/src/utils/bash/parser.js +195 -0
  1545. package/src/utils/bash/prefix.js +154 -0
  1546. package/src/utils/bash/registry.js +23 -0
  1547. package/src/utils/bash/shellCompletion.js +196 -0
  1548. package/src/utils/bash/shellPrefix.js +25 -0
  1549. package/src/utils/bash/shellQuote.js +253 -0
  1550. package/src/utils/bash/shellQuoting.js +106 -0
  1551. package/src/utils/bash/specs/alias.js +11 -0
  1552. package/src/utils/bash/specs/index.js +16 -0
  1553. package/src/utils/bash/specs/nohup.js +10 -0
  1554. package/src/utils/bash/specs/pyright.js +88 -0
  1555. package/src/utils/bash/specs/sleep.js +10 -0
  1556. package/src/utils/bash/specs/srun.js +28 -0
  1557. package/src/utils/bash/specs/time.js +10 -0
  1558. package/src/utils/bash/specs/timeout.js +17 -0
  1559. package/src/utils/bash/treeSitterAnalysis.js +407 -0
  1560. package/src/utils/betas.js +331 -0
  1561. package/src/utils/billing.js +54 -0
  1562. package/src/utils/binaryCheck.js +40 -0
  1563. package/src/utils/browser.js +58 -0
  1564. package/src/utils/bufferedWriter.js +77 -0
  1565. package/src/utils/bundledMode.js +19 -0
  1566. package/src/utils/businessDb.js +390 -0
  1567. package/src/utils/caCerts.js +91 -0
  1568. package/src/utils/caCertsConfig.js +77 -0
  1569. package/src/utils/cachePaths.js +28 -0
  1570. package/src/utils/classifierApprovals.js +66 -0
  1571. package/src/utils/classifierApprovalsHook.js +10 -0
  1572. package/src/utils/claudeDesktop.js +108 -0
  1573. package/src/utils/claudeInChrome/chromeNativeHost.js +416 -0
  1574. package/src/utils/claudeInChrome/common.js +466 -0
  1575. package/src/utils/claudeInChrome/mcpServer.js +237 -0
  1576. package/src/utils/claudeInChrome/prompt.js +79 -0
  1577. package/src/utils/claudeInChrome/setup.js +304 -0
  1578. package/src/utils/claudeInChrome/setupPortable.js +172 -0
  1579. package/src/utils/claudeInChrome/toolRendering.js +235 -0
  1580. package/src/utils/claudemd.js +1052 -0
  1581. package/src/utils/cleanup.js +514 -0
  1582. package/src/utils/cleanupRegistry.js +22 -0
  1583. package/src/utils/cliArgs.js +53 -0
  1584. package/src/utils/cliHighlight.js +45 -0
  1585. package/src/utils/codeIndexing.js +149 -0
  1586. package/src/utils/collapseBackgroundBashNotifications.js +70 -0
  1587. package/src/utils/collapseHookSummaries.js +48 -0
  1588. package/src/utils/collapseReadSearch.js +869 -0
  1589. package/src/utils/collapseTeammateShutdowns.js +44 -0
  1590. package/src/utils/combinedAbortSignal.js +40 -0
  1591. package/src/utils/commandLifecycle.js +7 -0
  1592. package/src/utils/commitAttribution.js +718 -0
  1593. package/src/utils/completionCache.js +138 -0
  1594. package/src/utils/computerUse/appNames.js +170 -0
  1595. package/src/utils/computerUse/cleanup.js +65 -0
  1596. package/src/utils/computerUse/common.js +56 -0
  1597. package/src/utils/computerUse/computerUseLock.js +183 -0
  1598. package/src/utils/computerUse/drainRunLoop.js +71 -0
  1599. package/src/utils/computerUse/escHotkey.js +53 -0
  1600. package/src/utils/computerUse/executor.js +480 -0
  1601. package/src/utils/computerUse/gates.js +55 -0
  1602. package/src/utils/computerUse/hostAdapter.js +62 -0
  1603. package/src/utils/computerUse/inputLoader.js +25 -0
  1604. package/src/utils/computerUse/mcpServer.js +84 -0
  1605. package/src/utils/computerUse/setup.js +42 -0
  1606. package/src/utils/computerUse/swiftLoader.js +18 -0
  1607. package/src/utils/computerUse/toolRendering.js +101 -0
  1608. package/src/utils/computerUse/wrapper.js +317 -0
  1609. package/src/utils/concurrentSessions.js +179 -0
  1610. package/src/utils/config.js +1078 -0
  1611. package/src/utils/configConstants.js +18 -0
  1612. package/src/utils/contentArray.js +45 -0
  1613. package/src/utils/context.js +185 -0
  1614. package/src/utils/contextAnalysis.js +171 -0
  1615. package/src/utils/contextSuggestions.js +158 -0
  1616. package/src/utils/controlMessageCompat.js +31 -0
  1617. package/src/utils/conversationRecovery.js +434 -0
  1618. package/src/utils/cron.js +260 -0
  1619. package/src/utils/cronJitterConfig.js +62 -0
  1620. package/src/utils/cronScheduler.js +388 -0
  1621. package/src/utils/cronTasks.js +328 -0
  1622. package/src/utils/cronTasksLock.js +159 -0
  1623. package/src/utils/crossProjectResume.js +46 -0
  1624. package/src/utils/crypto.js +13 -0
  1625. package/src/utils/cwd.js +29 -0
  1626. package/src/utils/debug.js +220 -0
  1627. package/src/utils/debugFilter.js +125 -0
  1628. package/src/utils/deepLink/banner.js +103 -0
  1629. package/src/utils/deepLink/parseDeepLink.js +138 -0
  1630. package/src/utils/deepLink/protocolHandler.js +119 -0
  1631. package/src/utils/deepLink/registerProtocol.js +291 -0
  1632. package/src/utils/deepLink/terminalLauncher.js +455 -0
  1633. package/src/utils/deepLink/terminalPreference.js +51 -0
  1634. package/src/utils/desktopDeepLink.js +208 -0
  1635. package/src/utils/detectRepository.js +157 -0
  1636. package/src/utils/diagLogs.js +74 -0
  1637. package/src/utils/diff.js +108 -0
  1638. package/src/utils/directMemberMessage.js +34 -0
  1639. package/src/utils/displayTags.js +46 -0
  1640. package/src/utils/doctorContextWarnings.js +179 -0
  1641. package/src/utils/doctorDiagnostic.js +494 -0
  1642. package/src/utils/dxt/helpers.js +64 -0
  1643. package/src/utils/dxt/zip.js +167 -0
  1644. package/src/utils/earlyInput.js +166 -0
  1645. package/src/utils/editor.js +163 -0
  1646. package/src/utils/effort.js +271 -0
  1647. package/src/utils/embeddedTools.js +26 -0
  1648. package/src/utils/employeeChat.js +271 -0
  1649. package/src/utils/employeeDb.js +326 -0
  1650. package/src/utils/env.js +358 -0
  1651. package/src/utils/envDynamic.js +130 -0
  1652. package/src/utils/envUtils.js +161 -0
  1653. package/src/utils/envValidation.js +26 -0
  1654. package/src/utils/errorLogSink.js +196 -0
  1655. package/src/utils/errors.js +207 -0
  1656. package/src/utils/exampleCommands.js +165 -0
  1657. package/src/utils/execFileNoThrow.js +93 -0
  1658. package/src/utils/execFileNoThrowPortable.js +49 -0
  1659. package/src/utils/execSyncWrapper.js +6 -0
  1660. package/src/utils/exportRenderer.js +71 -0
  1661. package/src/utils/extraUsage.js +19 -0
  1662. package/src/utils/fastMode.js +393 -0
  1663. package/src/utils/file.js +467 -0
  1664. package/src/utils/fileHistory.js +851 -0
  1665. package/src/utils/fileOperationAnalytics.js +45 -0
  1666. package/src/utils/filePersistence/filePersistence.js +212 -0
  1667. package/src/utils/filePersistence/outputsScanner.js +104 -0
  1668. package/src/utils/filePersistence/types.js +4 -0
  1669. package/src/utils/fileRead.js +81 -0
  1670. package/src/utils/fileReadCache.js +78 -0
  1671. package/src/utils/fileStateCache.js +99 -0
  1672. package/src/utils/findExecutable.js +13 -0
  1673. package/src/utils/fingerprint.js +58 -0
  1674. package/src/utils/forkedAgent.js +410 -0
  1675. package/src/utils/format.js +238 -0
  1676. package/src/utils/formatBriefTimestamp.js +72 -0
  1677. package/src/utils/fpsTracker.js +34 -0
  1678. package/src/utils/frontmatterParser.js +260 -0
  1679. package/src/utils/fsOperations.js +555 -0
  1680. package/src/utils/fullscreen.js +194 -0
  1681. package/src/utils/generatedFiles.js +122 -0
  1682. package/src/utils/generators.js +67 -0
  1683. package/src/utils/genericProcessUtils.js +155 -0
  1684. package/src/utils/getWorktreePaths.js +56 -0
  1685. package/src/utils/getWorktreePathsPortable.js +23 -0
  1686. package/src/utils/ghPrStatus.js +71 -0
  1687. package/src/utils/git/gitConfigParser.js +226 -0
  1688. package/src/utils/git/gitFilesystem.js +606 -0
  1689. package/src/utils/git/gitignore.js +84 -0
  1690. package/src/utils/git.js +725 -0
  1691. package/src/utils/gitDiff.js +395 -0
  1692. package/src/utils/gitSettings.js +18 -0
  1693. package/src/utils/github/ghAuthStatus.js +23 -0
  1694. package/src/utils/githubRepoPathMapping.js +135 -0
  1695. package/src/utils/glob.js +90 -0
  1696. package/src/utils/gracefulShutdown.js +447 -0
  1697. package/src/utils/groupToolUses.js +126 -0
  1698. package/src/utils/handlePromptSubmit.js +398 -0
  1699. package/src/utils/hash.js +44 -0
  1700. package/src/utils/headlessProfiler.js +147 -0
  1701. package/src/utils/heapDumpService.js +201 -0
  1702. package/src/utils/heatmap.js +151 -0
  1703. package/src/utils/highlightMatch.js +29 -0
  1704. package/src/utils/hooks/AsyncHookRegistry.js +187 -0
  1705. package/src/utils/hooks/apiQueryHookHelper.js +77 -0
  1706. package/src/utils/hooks/execAgentHook.js +257 -0
  1707. package/src/utils/hooks/execHttpHook.js +184 -0
  1708. package/src/utils/hooks/execPromptHook.js +171 -0
  1709. package/src/utils/hooks/fileChangedWatcher.js +161 -0
  1710. package/src/utils/hooks/hookEvents.js +111 -0
  1711. package/src/utils/hooks/hookHelpers.js +60 -0
  1712. package/src/utils/hooks/hooksConfigManager.js +323 -0
  1713. package/src/utils/hooks/hooksConfigSnapshot.js +114 -0
  1714. package/src/utils/hooks/hooksSettings.js +204 -0
  1715. package/src/utils/hooks/postSamplingHooks.js +39 -0
  1716. package/src/utils/hooks/registerFrontmatterHooks.js +47 -0
  1717. package/src/utils/hooks/registerSkillHooks.js +40 -0
  1718. package/src/utils/hooks/sessionHooks.js +252 -0
  1719. package/src/utils/hooks/skillImprovement.js +211 -0
  1720. package/src/utils/hooks/ssrfGuard.js +258 -0
  1721. package/src/utils/hooks.js +3668 -0
  1722. package/src/utils/horizontalScroll.js +108 -0
  1723. package/src/utils/http.js +120 -0
  1724. package/src/utils/hyperlink.js +28 -0
  1725. package/src/utils/iTermBackup.js +48 -0
  1726. package/src/utils/ide.js +1195 -0
  1727. package/src/utils/idePathConversion.js +66 -0
  1728. package/src/utils/idleTimeout.js +44 -0
  1729. package/src/utils/imagePaste.js +343 -0
  1730. package/src/utils/imageResizer.js +664 -0
  1731. package/src/utils/imageStore.js +150 -0
  1732. package/src/utils/imageValidation.js +92 -0
  1733. package/src/utils/immediateCommand.js +12 -0
  1734. package/src/utils/inProcessTeammateHelpers.js +71 -0
  1735. package/src/utils/ink.js +20 -0
  1736. package/src/utils/intl.js +83 -0
  1737. package/src/utils/jetbrains.js +152 -0
  1738. package/src/utils/json.js +231 -0
  1739. package/src/utils/jsonRead.js +14 -0
  1740. package/src/utils/keyboardShortcuts.js +11 -0
  1741. package/src/utils/lazySchema.js +8 -0
  1742. package/src/utils/listSessionsImpl.js +332 -0
  1743. package/src/utils/localInstaller.js +130 -0
  1744. package/src/utils/lockfile.js +30 -0
  1745. package/src/utils/log.js +280 -0
  1746. package/src/utils/logoV2Utils.js +256 -0
  1747. package/src/utils/mailbox.js +50 -0
  1748. package/src/utils/managedEnv.js +160 -0
  1749. package/src/utils/managedEnvConstants.js +185 -0
  1750. package/src/utils/markdown.js +315 -0
  1751. package/src/utils/markdownConfigLoader.js +480 -0
  1752. package/src/utils/mcp/dateTimeParser.js +102 -0
  1753. package/src/utils/mcp/elicitationValidation.js +259 -0
  1754. package/src/utils/mcpInstructionsDelta.js +97 -0
  1755. package/src/utils/mcpOutputStorage.js +159 -0
  1756. package/src/utils/mcpValidation.js +165 -0
  1757. package/src/utils/mcpWebSocketTransport.js +180 -0
  1758. package/src/utils/memoize.js +205 -0
  1759. package/src/utils/memory/types.js +9 -0
  1760. package/src/utils/memory/versions.js +7 -0
  1761. package/src/utils/memoryFileDetection.js +245 -0
  1762. package/src/utils/messagePredicates.js +6 -0
  1763. package/src/utils/messageQueueManager.js +430 -0
  1764. package/src/utils/messages/mappers.js +240 -0
  1765. package/src/utils/messages/systemInit.js +72 -0
  1766. package/src/utils/messages.js +4286 -0
  1767. package/src/utils/model/agent.js +128 -0
  1768. package/src/utils/model/aliases.js +21 -0
  1769. package/src/utils/model/antModels.js +25 -0
  1770. package/src/utils/model/bedrock.js +220 -0
  1771. package/src/utils/model/check1mAccess.js +64 -0
  1772. package/src/utils/model/configs.js +86 -0
  1773. package/src/utils/model/contextWindowUpgradeCheck.js +41 -0
  1774. package/src/utils/model/deprecation.js +72 -0
  1775. package/src/utils/model/model.js +533 -0
  1776. package/src/utils/model/modelAllowlist.js +148 -0
  1777. package/src/utils/model/modelCapabilities.js +105 -0
  1778. package/src/utils/model/modelOptions.js +450 -0
  1779. package/src/utils/model/modelStrings.js +144 -0
  1780. package/src/utils/model/modelSupportOverrides.js +40 -0
  1781. package/src/utils/model/providers.js +35 -0
  1782. package/src/utils/model/validateModel.js +131 -0
  1783. package/src/utils/modelCost.js +160 -0
  1784. package/src/utils/modifiers.js +39 -0
  1785. package/src/utils/mtls.js +132 -0
  1786. package/src/utils/nativeInstaller/download.js +370 -0
  1787. package/src/utils/nativeInstaller/index.js +8 -0
  1788. package/src/utils/nativeInstaller/installer.js +1395 -0
  1789. package/src/utils/nativeInstaller/packageManagers.js +258 -0
  1790. package/src/utils/nativeInstaller/pidLock.js +347 -0
  1791. package/src/utils/notebook.js +176 -0
  1792. package/src/utils/objectGroupBy.js +15 -0
  1793. package/src/utils/pasteStore.js +93 -0
  1794. package/src/utils/path.js +140 -0
  1795. package/src/utils/pdf.js +236 -0
  1796. package/src/utils/pdfUtils.js +61 -0
  1797. package/src/utils/peerAddress.js +20 -0
  1798. package/src/utils/permissions/PermissionMode.js +95 -0
  1799. package/src/utils/permissions/PermissionPromptToolResultSchema.js +85 -0
  1800. package/src/utils/permissions/PermissionResult.js +11 -0
  1801. package/src/utils/permissions/PermissionRule.js +19 -0
  1802. package/src/utils/permissions/PermissionUpdate.js +268 -0
  1803. package/src/utils/permissions/PermissionUpdateSchema.js +61 -0
  1804. package/src/utils/permissions/autoModeState.js +31 -0
  1805. package/src/utils/permissions/bashClassifier.js +30 -0
  1806. package/src/utils/permissions/bypassPermissionsKillswitch.js +115 -0
  1807. package/src/utils/permissions/classifierDecision.js +86 -0
  1808. package/src/utils/permissions/classifierShared.js +28 -0
  1809. package/src/utils/permissions/dangerousPatterns.js +78 -0
  1810. package/src/utils/permissions/denialTracking.js +34 -0
  1811. package/src/utils/permissions/filesystem.js +1411 -0
  1812. package/src/utils/permissions/getNextPermissionMode.js +74 -0
  1813. package/src/utils/permissions/pathValidation.js +351 -0
  1814. package/src/utils/permissions/permissionExplainer.js +188 -0
  1815. package/src/utils/permissions/permissionRuleParser.js +175 -0
  1816. package/src/utils/permissions/permissionSetup.js +1162 -0
  1817. package/src/utils/permissions/permissions.js +1063 -0
  1818. package/src/utils/permissions/permissionsLoader.js +217 -0
  1819. package/src/utils/permissions/shadowedRuleDetection.js +149 -0
  1820. package/src/utils/permissions/shellRuleMatching.js +174 -0
  1821. package/src/utils/permissions/yoloClassifier.js +1193 -0
  1822. package/src/utils/planModeV2.js +75 -0
  1823. package/src/utils/plans.js +334 -0
  1824. package/src/utils/platform.js +122 -0
  1825. package/src/utils/plugins/addDirPluginSettings.js +53 -0
  1826. package/src/utils/plugins/cacheUtils.js +174 -0
  1827. package/src/utils/plugins/dependencyResolver.js +244 -0
  1828. package/src/utils/plugins/fetchTelemetry.js +108 -0
  1829. package/src/utils/plugins/gitAvailability.js +65 -0
  1830. package/src/utils/plugins/headlessPluginInstall.js +136 -0
  1831. package/src/utils/plugins/hintRecommendation.js +136 -0
  1832. package/src/utils/plugins/installCounts.js +221 -0
  1833. package/src/utils/plugins/installedPluginsManager.js +1003 -0
  1834. package/src/utils/plugins/loadPluginAgents.js +219 -0
  1835. package/src/utils/plugins/loadPluginCommands.js +595 -0
  1836. package/src/utils/plugins/loadPluginHooks.js +239 -0
  1837. package/src/utils/plugins/loadPluginOutputStyles.js +112 -0
  1838. package/src/utils/plugins/lspPluginIntegration.js +293 -0
  1839. package/src/utils/plugins/lspRecommendation.js +278 -0
  1840. package/src/utils/plugins/managedPlugins.js +26 -0
  1841. package/src/utils/plugins/marketplaceHelpers.js +470 -0
  1842. package/src/utils/plugins/marketplaceManager.js +1939 -0
  1843. package/src/utils/plugins/mcpPluginIntegration.js +465 -0
  1844. package/src/utils/plugins/mcpbHandler.js +708 -0
  1845. package/src/utils/plugins/officialMarketplace.js +19 -0
  1846. package/src/utils/plugins/officialMarketplaceGcs.js +202 -0
  1847. package/src/utils/plugins/officialMarketplaceStartupCheck.js +344 -0
  1848. package/src/utils/plugins/orphanedPluginFilter.js +96 -0
  1849. package/src/utils/plugins/parseMarketplaceInput.js +143 -0
  1850. package/src/utils/plugins/performStartupChecks.js +66 -0
  1851. package/src/utils/plugins/pluginAutoupdate.js +210 -0
  1852. package/src/utils/plugins/pluginBlocklist.js +93 -0
  1853. package/src/utils/plugins/pluginDirectories.js +170 -0
  1854. package/src/utils/plugins/pluginFlagging.js +173 -0
  1855. package/src/utils/plugins/pluginIdentifier.js +78 -0
  1856. package/src/utils/plugins/pluginInstallationHelpers.js +400 -0
  1857. package/src/utils/plugins/pluginLoader.js +2426 -0
  1858. package/src/utils/plugins/pluginOptionsStorage.js +311 -0
  1859. package/src/utils/plugins/pluginPolicy.js +18 -0
  1860. package/src/utils/plugins/pluginStartupCheck.js +261 -0
  1861. package/src/utils/plugins/pluginVersioning.js +128 -0
  1862. package/src/utils/plugins/reconciler.js +181 -0
  1863. package/src/utils/plugins/refresh.js +162 -0
  1864. package/src/utils/plugins/schemas.js +1283 -0
  1865. package/src/utils/plugins/validatePlugin.js +765 -0
  1866. package/src/utils/plugins/walkPluginMarkdown.js +49 -0
  1867. package/src/utils/plugins/zipCache.js +346 -0
  1868. package/src/utils/plugins/zipCacheAdapters.js +133 -0
  1869. package/src/utils/powershell/dangerousCmdlets.js +174 -0
  1870. package/src/utils/powershell/parser.js +1357 -0
  1871. package/src/utils/powershell/staticPrefix.js +277 -0
  1872. package/src/utils/preflightChecks.js +147 -0
  1873. package/src/utils/privacyLevel.js +49 -0
  1874. package/src/utils/process.js +56 -0
  1875. package/src/utils/processUserInput/processBashCommand.js +118 -0
  1876. package/src/utils/processUserInput/processSlashCommand.js +845 -0
  1877. package/src/utils/processUserInput/processTextPrompt.js +68 -0
  1878. package/src/utils/processUserInput/processUserInput.js +344 -0
  1879. package/src/utils/profilerBase.js +32 -0
  1880. package/src/utils/promptCategory.js +39 -0
  1881. package/src/utils/promptEditor.js +151 -0
  1882. package/src/utils/promptShellExecution.js +117 -0
  1883. package/src/utils/protectedNamespace.js +4 -0
  1884. package/src/utils/proxy.js +345 -0
  1885. package/src/utils/queryContext.js +110 -0
  1886. package/src/utils/queryHelpers.js +436 -0
  1887. package/src/utils/queryProfiler.js +242 -0
  1888. package/src/utils/queueProcessor.js +70 -0
  1889. package/src/utils/readEditContext.js +176 -0
  1890. package/src/utils/readFileInRange.js +278 -0
  1891. package/src/utils/releaseNotes.js +307 -0
  1892. package/src/utils/renderOptions.js +67 -0
  1893. package/src/utils/ripgrep.js +521 -0
  1894. package/src/utils/sandbox/sandbox-adapter.js +750 -0
  1895. package/src/utils/sandbox/sandbox-ui-utils.js +11 -0
  1896. package/src/utils/sanitization.js +72 -0
  1897. package/src/utils/screenshotClipboard.js +89 -0
  1898. package/src/utils/sdkEventQueue.js +49 -0
  1899. package/src/utils/secureStorage/fallbackStorage.js +59 -0
  1900. package/src/utils/secureStorage/index.js +13 -0
  1901. package/src/utils/secureStorage/keychainPrefetch.js +91 -0
  1902. package/src/utils/secureStorage/macOsKeychainHelpers.js +91 -0
  1903. package/src/utils/secureStorage/macOsKeychainStorage.js +192 -0
  1904. package/src/utils/secureStorage/plainTextStorage.js +81 -0
  1905. package/src/utils/semanticBoolean.js +23 -0
  1906. package/src/utils/semanticNumber.js +34 -0
  1907. package/src/utils/semver.js +51 -0
  1908. package/src/utils/sequential.js +43 -0
  1909. package/src/utils/sessionActivity.js +120 -0
  1910. package/src/utils/sessionEnvVars.js +18 -0
  1911. package/src/utils/sessionEnvironment.js +131 -0
  1912. package/src/utils/sessionFileAccessHooks.js +205 -0
  1913. package/src/utils/sessionIngressAuth.js +113 -0
  1914. package/src/utils/sessionRestore.js +357 -0
  1915. package/src/utils/sessionStart.js +165 -0
  1916. package/src/utils/sessionState.js +76 -0
  1917. package/src/utils/sessionStorage.js +4162 -0
  1918. package/src/utils/sessionStoragePortable.js +665 -0
  1919. package/src/utils/sessionTitle.js +120 -0
  1920. package/src/utils/sessionUrl.js +50 -0
  1921. package/src/utils/set.js +50 -0
  1922. package/src/utils/settings/allErrors.js +29 -0
  1923. package/src/utils/settings/applySettingsChange.js +65 -0
  1924. package/src/utils/settings/changeDetector.js +409 -0
  1925. package/src/utils/settings/constants.js +166 -0
  1926. package/src/utils/settings/internalWrites.js +33 -0
  1927. package/src/utils/settings/managedPath.js +29 -0
  1928. package/src/utils/settings/mdm/constants.js +62 -0
  1929. package/src/utils/settings/mdm/rawRead.js +97 -0
  1930. package/src/utils/settings/mdm/settings.js +254 -0
  1931. package/src/utils/settings/permissionValidation.js +224 -0
  1932. package/src/utils/settings/pluginOnlyPolicy.js +53 -0
  1933. package/src/utils/settings/schemaOutput.js +7 -0
  1934. package/src/utils/settings/settings.js +791 -0
  1935. package/src/utils/settings/settingsCache.js +47 -0
  1936. package/src/utils/settings/toolValidationConfig.js +76 -0
  1937. package/src/utils/settings/types.js +846 -0
  1938. package/src/utils/settings/validateEditTool.js +34 -0
  1939. package/src/utils/settings/validation.js +192 -0
  1940. package/src/utils/settings/validationTips.js +111 -0
  1941. package/src/utils/shell/bashProvider.js +202 -0
  1942. package/src/utils/shell/outputLimits.js +7 -0
  1943. package/src/utils/shell/powershellDetection.js +96 -0
  1944. package/src/utils/shell/powershellProvider.js +104 -0
  1945. package/src/utils/shell/prefix.js +246 -0
  1946. package/src/utils/shell/readOnlyCommandValidation.js +1776 -0
  1947. package/src/utils/shell/resolveDefaultShell.js +13 -0
  1948. package/src/utils/shell/shellProvider.js +2 -0
  1949. package/src/utils/shell/shellToolUtils.js +21 -0
  1950. package/src/utils/shell/specPrefix.js +198 -0
  1951. package/src/utils/shellConfig.js +136 -0
  1952. package/src/utils/sideQuery.js +134 -0
  1953. package/src/utils/sideQuestion.js +121 -0
  1954. package/src/utils/signal.js +34 -0
  1955. package/src/utils/sinks.js +15 -0
  1956. package/src/utils/skills/skillChangeDetector.js +264 -0
  1957. package/src/utils/slashCommandParsing.js +46 -0
  1958. package/src/utils/sleep.js +72 -0
  1959. package/src/utils/sliceAnsi.js +74 -0
  1960. package/src/utils/slowOperations.js +216 -0
  1961. package/src/utils/standaloneAgent.js +20 -0
  1962. package/src/utils/startupProfiler.js +149 -0
  1963. package/src/utils/staticRender.js +104 -0
  1964. package/src/utils/stats.js +802 -0
  1965. package/src/utils/statsCache.js +330 -0
  1966. package/src/utils/status.js +359 -0
  1967. package/src/utils/statusNoticeDefinitions.js +123 -0
  1968. package/src/utils/statusNoticeHelpers.js +15 -0
  1969. package/src/utils/stream.js +73 -0
  1970. package/src/utils/streamJsonStdoutGuard.js +107 -0
  1971. package/src/utils/streamlinedTransform.js +162 -0
  1972. package/src/utils/stringUtils.js +202 -0
  1973. package/src/utils/subprocessEnv.js +87 -0
  1974. package/src/utils/suggestions/commandSuggestions.js +458 -0
  1975. package/src/utils/suggestions/directoryCompletion.js +191 -0
  1976. package/src/utils/suggestions/shellHistoryCompletion.js +95 -0
  1977. package/src/utils/suggestions/skillUsageTracking.js +50 -0
  1978. package/src/utils/suggestions/slackChannelSuggestions.js +169 -0
  1979. package/src/utils/swarm/It2SetupPrompt.js +386 -0
  1980. package/src/utils/swarm/backends/ITermBackend.js +276 -0
  1981. package/src/utils/swarm/backends/InProcessBackend.js +237 -0
  1982. package/src/utils/swarm/backends/PaneBackendExecutor.js +250 -0
  1983. package/src/utils/swarm/backends/TmuxBackend.js +574 -0
  1984. package/src/utils/swarm/backends/detection.js +112 -0
  1985. package/src/utils/swarm/backends/it2Setup.js +185 -0
  1986. package/src/utils/swarm/backends/registry.js +369 -0
  1987. package/src/utils/swarm/backends/teammateModeSnapshot.js +68 -0
  1988. package/src/utils/swarm/backends/types.js +9 -0
  1989. package/src/utils/swarm/constants.js +29 -0
  1990. package/src/utils/swarm/inProcessRunner.js +1021 -0
  1991. package/src/utils/swarm/leaderPermissionBridge.js +31 -0
  1992. package/src/utils/swarm/permissionSync.js +667 -0
  1993. package/src/utils/swarm/reconnection.js +82 -0
  1994. package/src/utils/swarm/spawnInProcess.js +218 -0
  1995. package/src/utils/swarm/spawnUtils.js +123 -0
  1996. package/src/utils/swarm/teamHelpers.js +484 -0
  1997. package/src/utils/swarm/teammateInit.js +87 -0
  1998. package/src/utils/swarm/teammateLayoutManager.js +82 -0
  1999. package/src/utils/swarm/teammateModel.js +9 -0
  2000. package/src/utils/swarm/teammatePromptAddendum.js +17 -0
  2001. package/src/utils/systemDirectories.js +51 -0
  2002. package/src/utils/systemPrompt.js +88 -0
  2003. package/src/utils/systemPromptType.js +9 -0
  2004. package/src/utils/systemTheme.js +108 -0
  2005. package/src/utils/taggedId.js +49 -0
  2006. package/src/utils/task/TaskOutput.js +320 -0
  2007. package/src/utils/task/diskOutput.js +387 -0
  2008. package/src/utils/task/framework.js +236 -0
  2009. package/src/utils/task/outputFormatting.js +24 -0
  2010. package/src/utils/task/sdkProgress.js +24 -0
  2011. package/src/utils/taskSummary.js +3 -0
  2012. package/src/utils/tasks.js +672 -0
  2013. package/src/utils/teamDiscovery.js +48 -0
  2014. package/src/utils/teamMemoryOps.js +67 -0
  2015. package/src/utils/teammate.js +237 -0
  2016. package/src/utils/teammateContext.js +56 -0
  2017. package/src/utils/teammateMailbox.js +793 -0
  2018. package/src/utils/telemetry/betaSessionTracing.js +25 -0
  2019. package/src/utils/telemetry/bigqueryExporter.js +17 -0
  2020. package/src/utils/telemetry/events.js +7 -0
  2021. package/src/utils/telemetry/instrumentation.js +16 -0
  2022. package/src/utils/telemetry/logger.js +25 -0
  2023. package/src/utils/telemetry/perfettoTracing.js +882 -0
  2024. package/src/utils/telemetry/pluginTelemetry.js +76 -0
  2025. package/src/utils/telemetry/sessionTracing.js +62 -0
  2026. package/src/utils/telemetry/skillLoadedEvent.js +4 -0
  2027. package/src/utils/telemetryAttributes.js +56 -0
  2028. package/src/utils/teleport/api.js +299 -0
  2029. package/src/utils/teleport/environmentSelection.js +55 -0
  2030. package/src/utils/teleport/environments.js +84 -0
  2031. package/src/utils/teleport/gitBundle.js +192 -0
  2032. package/src/utils/teleport.js +1047 -0
  2033. package/src/utils/tempfile.js +26 -0
  2034. package/src/utils/terminal.js +105 -0
  2035. package/src/utils/terminalPanel.js +155 -0
  2036. package/src/utils/textHighlighting.js +113 -0
  2037. package/src/utils/thaddeusHints.js +142 -0
  2038. package/src/utils/theme.js +525 -0
  2039. package/src/utils/thinking.js +130 -0
  2040. package/src/utils/timeouts.js +35 -0
  2041. package/src/utils/tmuxSocket.js +373 -0
  2042. package/src/utils/todo/types.js +9 -0
  2043. package/src/utils/tokenBudget.js +62 -0
  2044. package/src/utils/tokens.js +223 -0
  2045. package/src/utils/toolErrors.js +101 -0
  2046. package/src/utils/toolPool.js +61 -0
  2047. package/src/utils/toolResultStorage.js +768 -0
  2048. package/src/utils/toolSchemaCache.js +7 -0
  2049. package/src/utils/toolSearch.js +551 -0
  2050. package/src/utils/transcriptSearch.js +200 -0
  2051. package/src/utils/treeify.js +111 -0
  2052. package/src/utils/truncate.js +164 -0
  2053. package/src/utils/udsClient.js +5 -0
  2054. package/src/utils/udsMessaging.js +23 -0
  2055. package/src/utils/ultraplan/ccrSession.js +264 -0
  2056. package/src/utils/ultraplan/keyword.js +122 -0
  2057. package/src/utils/unaryLogging.js +16 -0
  2058. package/src/utils/undercover.js +89 -0
  2059. package/src/utils/user.js +137 -0
  2060. package/src/utils/userAgent.js +9 -0
  2061. package/src/utils/userPromptKeywords.js +21 -0
  2062. package/src/utils/uuid.js +22 -0
  2063. package/src/utils/warningHandler.js +97 -0
  2064. package/src/utils/which.js +75 -0
  2065. package/src/utils/windowsPaths.js +146 -0
  2066. package/src/utils/withResolvers.js +13 -0
  2067. package/src/utils/words.js +793 -0
  2068. package/src/utils/workforceIntent.js +192 -0
  2069. package/src/utils/workloadContext.js +42 -0
  2070. package/src/utils/worktree.js +1142 -0
  2071. package/src/utils/worktreeModeEnabled.js +11 -0
  2072. package/src/utils/xdg.js +52 -0
  2073. package/src/utils/xml.js +15 -0
  2074. package/src/utils/yaml.js +14 -0
  2075. package/src/utils/zodToJsonSchema.js +19 -0
  2076. package/src/vim/motions.js +73 -0
  2077. package/src/vim/operators.js +401 -0
  2078. package/src/vim/textObjects.js +153 -0
  2079. package/src/vim/transitions.js +340 -0
  2080. package/src/vim/types.js +93 -0
  2081. package/src/voice/voiceModeEnabled.js +20 -0
  2082. package/thaddeus-terminal.ts +401 -3
@@ -0,0 +1,2113 @@
1
+ /**
2
+ * Pure-TypeScript port of yoga-layout (Meta's flexbox engine).
3
+ *
4
+ * This matches the `yoga-layout/load` API surface used by src/ink/layout/yoga.ts.
5
+ * The upstream C++ source is ~2500 lines in CalculateLayout.cpp alone; this port
6
+ * is a simplified single-pass flexbox implementation that covers the subset of
7
+ * features Ink actually uses:
8
+ * - flex-direction (row/column + reverse)
9
+ * - flex-grow / flex-shrink / flex-basis
10
+ * - align-items / align-self (stretch, flex-start, center, flex-end)
11
+ * - justify-content (all six values)
12
+ * - margin / padding / border / gap
13
+ * - width / height / min / max (point, percent, auto)
14
+ * - position: relative / absolute
15
+ * - display: flex / none
16
+ * - measure functions (for text nodes)
17
+ *
18
+ * Also implemented for spec parity (not used by Ink):
19
+ * - margin: auto (main + cross axis, overrides justify/align)
20
+ * - multi-pass flex clamping when children hit min/max constraints
21
+ * - flex-grow/shrink against container min/max when size is indefinite
22
+ *
23
+ * Also implemented for spec parity (not used by Ink):
24
+ * - flex-wrap: wrap / wrap-reverse (multi-line flex)
25
+ * - align-content (positions wrapped lines on cross axis)
26
+ *
27
+ * Also implemented for spec parity (not used by Ink):
28
+ * - display: contents (children lifted to grandparent, box removed)
29
+ *
30
+ * Also implemented for spec parity (not used by Ink):
31
+ * - baseline alignment (align-items/align-self: baseline)
32
+ *
33
+ * Not implemented (not used by Ink):
34
+ * - aspect-ratio
35
+ * - box-sizing: content-box
36
+ * - RTL direction (Ink always passes Direction.LTR)
37
+ *
38
+ * Upstream: https://github.com/facebook/yoga
39
+ */
40
+ import { Align, BoxSizing, Dimension, Direction, Display, Edge, Errata, ExperimentalFeature, FlexDirection, Gutter, Justify, MeasureMode, Overflow, PositionType, Unit, Wrap, } from './enums.js';
41
+ export { Align, BoxSizing, Dimension, Direction, Display, Edge, Errata, ExperimentalFeature, FlexDirection, Gutter, Justify, MeasureMode, Overflow, PositionType, Unit, Wrap, };
42
+ const UNDEFINED_VALUE = { unit: Unit.Undefined, value: NaN };
43
+ const AUTO_VALUE = { unit: Unit.Auto, value: NaN };
44
+ function pointValue(v) {
45
+ return { unit: Unit.Point, value: v };
46
+ }
47
+ function percentValue(v) {
48
+ return { unit: Unit.Percent, value: v };
49
+ }
50
+ function resolveValue(v, ownerSize) {
51
+ switch (v.unit) {
52
+ case Unit.Point:
53
+ return v.value;
54
+ case Unit.Percent:
55
+ return isNaN(ownerSize) ? NaN : (v.value * ownerSize) / 100;
56
+ default:
57
+ return NaN;
58
+ }
59
+ }
60
+ function isDefined(n) {
61
+ return !isNaN(n);
62
+ }
63
+ // NaN-safe equality for layout-cache input comparison
64
+ function sameFloat(a, b) {
65
+ return a === b || (a !== a && b !== b);
66
+ }
67
+ function defaultStyle() {
68
+ return {
69
+ direction: Direction.Inherit,
70
+ flexDirection: FlexDirection.Column,
71
+ justifyContent: Justify.FlexStart,
72
+ alignItems: Align.Stretch,
73
+ alignSelf: Align.Auto,
74
+ alignContent: Align.FlexStart,
75
+ flexWrap: Wrap.NoWrap,
76
+ overflow: Overflow.Visible,
77
+ display: Display.Flex,
78
+ positionType: PositionType.Relative,
79
+ flexGrow: 0,
80
+ flexShrink: 0,
81
+ flexBasis: AUTO_VALUE,
82
+ margin: new Array(9).fill(UNDEFINED_VALUE),
83
+ padding: new Array(9).fill(UNDEFINED_VALUE),
84
+ border: new Array(9).fill(UNDEFINED_VALUE),
85
+ position: new Array(9).fill(UNDEFINED_VALUE),
86
+ gap: new Array(3).fill(UNDEFINED_VALUE),
87
+ width: AUTO_VALUE,
88
+ height: AUTO_VALUE,
89
+ minWidth: UNDEFINED_VALUE,
90
+ minHeight: UNDEFINED_VALUE,
91
+ maxWidth: UNDEFINED_VALUE,
92
+ maxHeight: UNDEFINED_VALUE,
93
+ };
94
+ }
95
+ // --
96
+ // Edge resolution — yoga's 9-edge model collapsed to 4 physical edges
97
+ const EDGE_LEFT = 0;
98
+ const EDGE_TOP = 1;
99
+ const EDGE_RIGHT = 2;
100
+ const EDGE_BOTTOM = 3;
101
+ function resolveEdge(edges, physicalEdge, ownerSize,
102
+ // For margin/position we allow auto; for padding/border auto resolves to 0
103
+ allowAuto = false) {
104
+ // Precedence: specific edge > horizontal/vertical > all
105
+ let v = edges[physicalEdge];
106
+ if (v.unit === Unit.Undefined) {
107
+ if (physicalEdge === EDGE_LEFT || physicalEdge === EDGE_RIGHT) {
108
+ v = edges[Edge.Horizontal];
109
+ }
110
+ else {
111
+ v = edges[Edge.Vertical];
112
+ }
113
+ }
114
+ if (v.unit === Unit.Undefined) {
115
+ v = edges[Edge.All];
116
+ }
117
+ // Start/End map to Left/Right for LTR (Ink is always LTR)
118
+ if (v.unit === Unit.Undefined) {
119
+ if (physicalEdge === EDGE_LEFT)
120
+ v = edges[Edge.Start];
121
+ if (physicalEdge === EDGE_RIGHT)
122
+ v = edges[Edge.End];
123
+ }
124
+ if (v.unit === Unit.Undefined)
125
+ return 0;
126
+ if (v.unit === Unit.Auto)
127
+ return allowAuto ? NaN : 0;
128
+ return resolveValue(v, ownerSize);
129
+ }
130
+ function resolveEdgeRaw(edges, physicalEdge) {
131
+ let v = edges[physicalEdge];
132
+ if (v.unit === Unit.Undefined) {
133
+ if (physicalEdge === EDGE_LEFT || physicalEdge === EDGE_RIGHT) {
134
+ v = edges[Edge.Horizontal];
135
+ }
136
+ else {
137
+ v = edges[Edge.Vertical];
138
+ }
139
+ }
140
+ if (v.unit === Unit.Undefined)
141
+ v = edges[Edge.All];
142
+ if (v.unit === Unit.Undefined) {
143
+ if (physicalEdge === EDGE_LEFT)
144
+ v = edges[Edge.Start];
145
+ if (physicalEdge === EDGE_RIGHT)
146
+ v = edges[Edge.End];
147
+ }
148
+ return v;
149
+ }
150
+ function isMarginAuto(edges, physicalEdge) {
151
+ return resolveEdgeRaw(edges, physicalEdge).unit === Unit.Auto;
152
+ }
153
+ // Setter helpers for the _hasAutoMargin / _hasPosition fast-path flags.
154
+ // Unit.Undefined = 0, Unit.Auto = 3.
155
+ function hasAnyAutoEdge(edges) {
156
+ for (let i = 0; i < 9; i++)
157
+ if (edges[i].unit === 3)
158
+ return true;
159
+ return false;
160
+ }
161
+ function hasAnyDefinedEdge(edges) {
162
+ for (let i = 0; i < 9; i++)
163
+ if (edges[i].unit !== 0)
164
+ return true;
165
+ return false;
166
+ }
167
+ // Hot path: resolve all 4 physical edges in one pass, writing into `out`.
168
+ // Equivalent to calling resolveEdge() 4× with allowAuto=false, but hoists the
169
+ // shared fallback lookups (Horizontal/Vertical/All/Start/End) and avoids
170
+ // allocating a fresh 4-array on every layoutNode() call.
171
+ function resolveEdges4Into(edges, ownerSize, out) {
172
+ // Hoist fallbacks once — the 4 per-edge chains share these reads.
173
+ const eH = edges[6]; // Edge.Horizontal
174
+ const eV = edges[7]; // Edge.Vertical
175
+ const eA = edges[8]; // Edge.All
176
+ const eS = edges[4]; // Edge.Start
177
+ const eE = edges[5]; // Edge.End
178
+ const pctDenom = isNaN(ownerSize) ? NaN : ownerSize / 100;
179
+ // Left: edges[0] → Horizontal → All → Start
180
+ let v = edges[0];
181
+ if (v.unit === 0)
182
+ v = eH;
183
+ if (v.unit === 0)
184
+ v = eA;
185
+ if (v.unit === 0)
186
+ v = eS;
187
+ out[0] = v.unit === 1 ? v.value : v.unit === 2 ? v.value * pctDenom : 0;
188
+ // Top: edges[1] → Vertical → All
189
+ v = edges[1];
190
+ if (v.unit === 0)
191
+ v = eV;
192
+ if (v.unit === 0)
193
+ v = eA;
194
+ out[1] = v.unit === 1 ? v.value : v.unit === 2 ? v.value * pctDenom : 0;
195
+ // Right: edges[2] → Horizontal → All → End
196
+ v = edges[2];
197
+ if (v.unit === 0)
198
+ v = eH;
199
+ if (v.unit === 0)
200
+ v = eA;
201
+ if (v.unit === 0)
202
+ v = eE;
203
+ out[2] = v.unit === 1 ? v.value : v.unit === 2 ? v.value * pctDenom : 0;
204
+ // Bottom: edges[3] → Vertical → All
205
+ v = edges[3];
206
+ if (v.unit === 0)
207
+ v = eV;
208
+ if (v.unit === 0)
209
+ v = eA;
210
+ out[3] = v.unit === 1 ? v.value : v.unit === 2 ? v.value * pctDenom : 0;
211
+ }
212
+ // --
213
+ // Axis helpers
214
+ function isRow(dir) {
215
+ return dir === FlexDirection.Row || dir === FlexDirection.RowReverse;
216
+ }
217
+ function isReverse(dir) {
218
+ return dir === FlexDirection.RowReverse || dir === FlexDirection.ColumnReverse;
219
+ }
220
+ function crossAxis(dir) {
221
+ return isRow(dir) ? FlexDirection.Column : FlexDirection.Row;
222
+ }
223
+ function leadingEdge(dir) {
224
+ switch (dir) {
225
+ case FlexDirection.Row:
226
+ return EDGE_LEFT;
227
+ case FlexDirection.RowReverse:
228
+ return EDGE_RIGHT;
229
+ case FlexDirection.Column:
230
+ return EDGE_TOP;
231
+ case FlexDirection.ColumnReverse:
232
+ return EDGE_BOTTOM;
233
+ }
234
+ }
235
+ function trailingEdge(dir) {
236
+ switch (dir) {
237
+ case FlexDirection.Row:
238
+ return EDGE_RIGHT;
239
+ case FlexDirection.RowReverse:
240
+ return EDGE_LEFT;
241
+ case FlexDirection.Column:
242
+ return EDGE_BOTTOM;
243
+ case FlexDirection.ColumnReverse:
244
+ return EDGE_TOP;
245
+ }
246
+ }
247
+ function createConfig() {
248
+ const config = {
249
+ pointScaleFactor: 1,
250
+ errata: Errata.None,
251
+ useWebDefaults: false,
252
+ free() { },
253
+ isExperimentalFeatureEnabled() {
254
+ return false;
255
+ },
256
+ setExperimentalFeatureEnabled() { },
257
+ setPointScaleFactor(f) {
258
+ config.pointScaleFactor = f;
259
+ },
260
+ getErrata() {
261
+ return config.errata;
262
+ },
263
+ setErrata(e) {
264
+ config.errata = e;
265
+ },
266
+ setUseWebDefaults(v) {
267
+ config.useWebDefaults = v;
268
+ },
269
+ };
270
+ return config;
271
+ }
272
+ // --
273
+ // Node implementation
274
+ export class Node {
275
+ style;
276
+ layout;
277
+ parent;
278
+ children;
279
+ measureFunc;
280
+ config;
281
+ isDirty_;
282
+ isReferenceBaseline_;
283
+ // Per-layout scratch (not public API)
284
+ _flexBasis = 0;
285
+ _mainSize = 0;
286
+ _crossSize = 0;
287
+ _lineIndex = 0;
288
+ // Fast-path flags maintained by style setters. Per CPU profile, the
289
+ // positioning loop calls isMarginAuto 6× and resolveEdgeRaw(position) 4×
290
+ // per child per layout pass — ~11k calls for the 1000-node bench, nearly
291
+ // all of which return false/undefined since most nodes have no auto
292
+ // margins and no position insets. These flags let us skip straight to
293
+ // the common case with a single branch.
294
+ _hasAutoMargin = false;
295
+ _hasPosition = false;
296
+ // Same pattern for the 3× resolveEdges4Into calls at the top of every
297
+ // layoutNode(). In the 1000-node bench ~67% of those calls operate on
298
+ // all-undefined edge arrays (most nodes have no border; only cols have
299
+ // padding; only leaf cells have margin) — a single-branch skip beats
300
+ // ~20 property reads + ~15 compares + 4 writes of zeros.
301
+ _hasPadding = false;
302
+ _hasBorder = false;
303
+ _hasMargin = false;
304
+ // -- Dirty-flag layout cache. Mirrors upstream CalculateLayout.cpp's
305
+ // layoutNodeInternal: skip a subtree entirely when it's clean and we're
306
+ // asking the same question we cached the answer to. Two slots since
307
+ // each node typically sees a measure call (performLayout=false, from
308
+ // computeFlexBasis) followed by a layout call (performLayout=true) with
309
+ // different inputs per parent pass — a single slot thrashes. Re-layout
310
+ // bench (dirty one leaf, recompute root) went 2.7x→1.1x with this:
311
+ // clean siblings skip straight through, only the dirty chain recomputes.
312
+ _lW = NaN;
313
+ _lH = NaN;
314
+ _lWM = 0;
315
+ _lHM = 0;
316
+ _lOW = NaN;
317
+ _lOH = NaN;
318
+ _lFW = false;
319
+ _lFH = false;
320
+ // _hasL stores INPUTS early (before compute) but layout.width/height are
321
+ // mutated by the multi-entry cache and by subsequent compute calls with
322
+ // different inputs. Without storing OUTPUTS, a _hasL hit returns whatever
323
+ // layout.width/height happened to be left by the last call — the scrollbox
324
+ // vpH=33→2624 bug. Store + restore outputs like the multi-entry cache does.
325
+ _lOutW = NaN;
326
+ _lOutH = NaN;
327
+ _hasL = false;
328
+ _mW = NaN;
329
+ _mH = NaN;
330
+ _mWM = 0;
331
+ _mHM = 0;
332
+ _mOW = NaN;
333
+ _mOH = NaN;
334
+ _mOutW = NaN;
335
+ _mOutH = NaN;
336
+ _hasM = false;
337
+ // Cached computeFlexBasis result. For clean children, basis only depends
338
+ // on the container's inner dimensions — if those haven't changed, skip the
339
+ // layoutNode(performLayout=false) recursion entirely. This is the hot path
340
+ // for scroll: 500-message content container is dirty, its 499 clean
341
+ // children each get measured ~20× as the dirty chain's measure/layout
342
+ // passes cascade. Basis cache short-circuits at the child boundary.
343
+ _fbBasis = NaN;
344
+ _fbOwnerW = NaN;
345
+ _fbOwnerH = NaN;
346
+ _fbAvailMain = NaN;
347
+ _fbAvailCross = NaN;
348
+ _fbCrossMode = 0;
349
+ // Generation at which _fbBasis was written. Dirty nodes from a PREVIOUS
350
+ // generation have stale cache (subtree changed), but within the SAME
351
+ // generation the cache is fresh — the dirty chain's measure→layout
352
+ // cascade invokes computeFlexBasis ≥2^depth times per calculateLayout on
353
+ // fresh-mounted items, and the subtree doesn't change between calls.
354
+ // Gating on generation instead of isDirty_ lets fresh mounts (virtual
355
+ // scroll) cache-hit after first compute: 105k visits → ~10k.
356
+ _fbGen = -1;
357
+ // Multi-entry layout cache — stores (inputs → computed w,h) so hits with
358
+ // different inputs than _hasL can restore the right dimensions. Upstream
359
+ // yoga uses 16; 4 covers Ink's dirty-chain depth. Packed as flat arrays
360
+ // to avoid per-entry object allocs. Slot i uses indices [i*8, i*8+8) in
361
+ // _cIn (aW,aH,wM,hM,oW,oH,fW,fH) and [i*2, i*2+2) in _cOut (w,h).
362
+ _cIn = null;
363
+ _cOut = null;
364
+ _cGen = -1;
365
+ _cN = 0;
366
+ _cWr = 0;
367
+ constructor(config) {
368
+ this.style = defaultStyle();
369
+ this.layout = {
370
+ left: 0,
371
+ top: 0,
372
+ width: 0,
373
+ height: 0,
374
+ border: [0, 0, 0, 0],
375
+ padding: [0, 0, 0, 0],
376
+ margin: [0, 0, 0, 0],
377
+ };
378
+ this.parent = null;
379
+ this.children = [];
380
+ this.measureFunc = null;
381
+ this.config = config ?? DEFAULT_CONFIG;
382
+ this.isDirty_ = true;
383
+ this.isReferenceBaseline_ = false;
384
+ _yogaLiveNodes++;
385
+ }
386
+ // -- Tree
387
+ insertChild(child, index) {
388
+ child.parent = this;
389
+ this.children.splice(index, 0, child);
390
+ this.markDirty();
391
+ }
392
+ removeChild(child) {
393
+ const idx = this.children.indexOf(child);
394
+ if (idx >= 0) {
395
+ this.children.splice(idx, 1);
396
+ child.parent = null;
397
+ this.markDirty();
398
+ }
399
+ }
400
+ getChild(index) {
401
+ return this.children[index];
402
+ }
403
+ getChildCount() {
404
+ return this.children.length;
405
+ }
406
+ getParent() {
407
+ return this.parent;
408
+ }
409
+ // -- Lifecycle
410
+ free() {
411
+ this.parent = null;
412
+ this.children = [];
413
+ this.measureFunc = null;
414
+ this._cIn = null;
415
+ this._cOut = null;
416
+ _yogaLiveNodes--;
417
+ }
418
+ freeRecursive() {
419
+ for (const c of this.children)
420
+ c.freeRecursive();
421
+ this.free();
422
+ }
423
+ reset() {
424
+ this.style = defaultStyle();
425
+ this.children = [];
426
+ this.parent = null;
427
+ this.measureFunc = null;
428
+ this.isDirty_ = true;
429
+ this._hasAutoMargin = false;
430
+ this._hasPosition = false;
431
+ this._hasPadding = false;
432
+ this._hasBorder = false;
433
+ this._hasMargin = false;
434
+ this._hasL = false;
435
+ this._hasM = false;
436
+ this._cN = 0;
437
+ this._cWr = 0;
438
+ this._fbBasis = NaN;
439
+ }
440
+ // -- Dirty tracking
441
+ markDirty() {
442
+ this.isDirty_ = true;
443
+ if (this.parent && !this.parent.isDirty_)
444
+ this.parent.markDirty();
445
+ }
446
+ isDirty() {
447
+ return this.isDirty_;
448
+ }
449
+ hasNewLayout() {
450
+ return true;
451
+ }
452
+ markLayoutSeen() { }
453
+ // -- Measure function
454
+ setMeasureFunc(fn) {
455
+ this.measureFunc = fn;
456
+ this.markDirty();
457
+ }
458
+ unsetMeasureFunc() {
459
+ this.measureFunc = null;
460
+ this.markDirty();
461
+ }
462
+ // -- Computed layout getters
463
+ getComputedLeft() {
464
+ return this.layout.left;
465
+ }
466
+ getComputedTop() {
467
+ return this.layout.top;
468
+ }
469
+ getComputedWidth() {
470
+ return this.layout.width;
471
+ }
472
+ getComputedHeight() {
473
+ return this.layout.height;
474
+ }
475
+ getComputedRight() {
476
+ const p = this.parent;
477
+ return p ? p.layout.width - this.layout.left - this.layout.width : 0;
478
+ }
479
+ getComputedBottom() {
480
+ const p = this.parent;
481
+ return p ? p.layout.height - this.layout.top - this.layout.height : 0;
482
+ }
483
+ getComputedLayout() {
484
+ return {
485
+ left: this.layout.left,
486
+ top: this.layout.top,
487
+ right: this.getComputedRight(),
488
+ bottom: this.getComputedBottom(),
489
+ width: this.layout.width,
490
+ height: this.layout.height,
491
+ };
492
+ }
493
+ getComputedBorder(edge) {
494
+ return this.layout.border[physicalEdge(edge)];
495
+ }
496
+ getComputedPadding(edge) {
497
+ return this.layout.padding[physicalEdge(edge)];
498
+ }
499
+ getComputedMargin(edge) {
500
+ return this.layout.margin[physicalEdge(edge)];
501
+ }
502
+ // -- Style setters: dimensions
503
+ setWidth(v) {
504
+ this.style.width = parseDimension(v);
505
+ this.markDirty();
506
+ }
507
+ setWidthPercent(v) {
508
+ this.style.width = percentValue(v);
509
+ this.markDirty();
510
+ }
511
+ setWidthAuto() {
512
+ this.style.width = AUTO_VALUE;
513
+ this.markDirty();
514
+ }
515
+ setHeight(v) {
516
+ this.style.height = parseDimension(v);
517
+ this.markDirty();
518
+ }
519
+ setHeightPercent(v) {
520
+ this.style.height = percentValue(v);
521
+ this.markDirty();
522
+ }
523
+ setHeightAuto() {
524
+ this.style.height = AUTO_VALUE;
525
+ this.markDirty();
526
+ }
527
+ setMinWidth(v) {
528
+ this.style.minWidth = parseDimension(v);
529
+ this.markDirty();
530
+ }
531
+ setMinWidthPercent(v) {
532
+ this.style.minWidth = percentValue(v);
533
+ this.markDirty();
534
+ }
535
+ setMinHeight(v) {
536
+ this.style.minHeight = parseDimension(v);
537
+ this.markDirty();
538
+ }
539
+ setMinHeightPercent(v) {
540
+ this.style.minHeight = percentValue(v);
541
+ this.markDirty();
542
+ }
543
+ setMaxWidth(v) {
544
+ this.style.maxWidth = parseDimension(v);
545
+ this.markDirty();
546
+ }
547
+ setMaxWidthPercent(v) {
548
+ this.style.maxWidth = percentValue(v);
549
+ this.markDirty();
550
+ }
551
+ setMaxHeight(v) {
552
+ this.style.maxHeight = parseDimension(v);
553
+ this.markDirty();
554
+ }
555
+ setMaxHeightPercent(v) {
556
+ this.style.maxHeight = percentValue(v);
557
+ this.markDirty();
558
+ }
559
+ // -- Style setters: flex
560
+ setFlexDirection(dir) {
561
+ this.style.flexDirection = dir;
562
+ this.markDirty();
563
+ }
564
+ setFlexGrow(v) {
565
+ this.style.flexGrow = v ?? 0;
566
+ this.markDirty();
567
+ }
568
+ setFlexShrink(v) {
569
+ this.style.flexShrink = v ?? 0;
570
+ this.markDirty();
571
+ }
572
+ setFlex(v) {
573
+ if (v === undefined || isNaN(v)) {
574
+ this.style.flexGrow = 0;
575
+ this.style.flexShrink = 0;
576
+ }
577
+ else if (v > 0) {
578
+ this.style.flexGrow = v;
579
+ this.style.flexShrink = 1;
580
+ this.style.flexBasis = pointValue(0);
581
+ }
582
+ else if (v < 0) {
583
+ this.style.flexGrow = 0;
584
+ this.style.flexShrink = -v;
585
+ }
586
+ else {
587
+ this.style.flexGrow = 0;
588
+ this.style.flexShrink = 0;
589
+ }
590
+ this.markDirty();
591
+ }
592
+ setFlexBasis(v) {
593
+ this.style.flexBasis = parseDimension(v);
594
+ this.markDirty();
595
+ }
596
+ setFlexBasisPercent(v) {
597
+ this.style.flexBasis = percentValue(v);
598
+ this.markDirty();
599
+ }
600
+ setFlexBasisAuto() {
601
+ this.style.flexBasis = AUTO_VALUE;
602
+ this.markDirty();
603
+ }
604
+ setFlexWrap(wrap) {
605
+ this.style.flexWrap = wrap;
606
+ this.markDirty();
607
+ }
608
+ // -- Style setters: alignment
609
+ setAlignItems(a) {
610
+ this.style.alignItems = a;
611
+ this.markDirty();
612
+ }
613
+ setAlignSelf(a) {
614
+ this.style.alignSelf = a;
615
+ this.markDirty();
616
+ }
617
+ setAlignContent(a) {
618
+ this.style.alignContent = a;
619
+ this.markDirty();
620
+ }
621
+ setJustifyContent(j) {
622
+ this.style.justifyContent = j;
623
+ this.markDirty();
624
+ }
625
+ // -- Style setters: display / position / overflow
626
+ setDisplay(d) {
627
+ this.style.display = d;
628
+ this.markDirty();
629
+ }
630
+ getDisplay() {
631
+ return this.style.display;
632
+ }
633
+ setPositionType(t) {
634
+ this.style.positionType = t;
635
+ this.markDirty();
636
+ }
637
+ setPosition(edge, v) {
638
+ this.style.position[edge] = parseDimension(v);
639
+ this._hasPosition = hasAnyDefinedEdge(this.style.position);
640
+ this.markDirty();
641
+ }
642
+ setPositionPercent(edge, v) {
643
+ this.style.position[edge] = percentValue(v);
644
+ this._hasPosition = true;
645
+ this.markDirty();
646
+ }
647
+ setPositionAuto(edge) {
648
+ this.style.position[edge] = AUTO_VALUE;
649
+ this._hasPosition = true;
650
+ this.markDirty();
651
+ }
652
+ setOverflow(o) {
653
+ this.style.overflow = o;
654
+ this.markDirty();
655
+ }
656
+ setDirection(d) {
657
+ this.style.direction = d;
658
+ this.markDirty();
659
+ }
660
+ setBoxSizing(_) {
661
+ // Not implemented — Ink doesn't use content-box
662
+ }
663
+ // -- Style setters: spacing
664
+ setMargin(edge, v) {
665
+ const val = parseDimension(v);
666
+ this.style.margin[edge] = val;
667
+ if (val.unit === Unit.Auto)
668
+ this._hasAutoMargin = true;
669
+ else
670
+ this._hasAutoMargin = hasAnyAutoEdge(this.style.margin);
671
+ this._hasMargin =
672
+ this._hasAutoMargin || hasAnyDefinedEdge(this.style.margin);
673
+ this.markDirty();
674
+ }
675
+ setMarginPercent(edge, v) {
676
+ this.style.margin[edge] = percentValue(v);
677
+ this._hasAutoMargin = hasAnyAutoEdge(this.style.margin);
678
+ this._hasMargin = true;
679
+ this.markDirty();
680
+ }
681
+ setMarginAuto(edge) {
682
+ this.style.margin[edge] = AUTO_VALUE;
683
+ this._hasAutoMargin = true;
684
+ this._hasMargin = true;
685
+ this.markDirty();
686
+ }
687
+ setPadding(edge, v) {
688
+ this.style.padding[edge] = parseDimension(v);
689
+ this._hasPadding = hasAnyDefinedEdge(this.style.padding);
690
+ this.markDirty();
691
+ }
692
+ setPaddingPercent(edge, v) {
693
+ this.style.padding[edge] = percentValue(v);
694
+ this._hasPadding = true;
695
+ this.markDirty();
696
+ }
697
+ setBorder(edge, v) {
698
+ this.style.border[edge] = v === undefined ? UNDEFINED_VALUE : pointValue(v);
699
+ this._hasBorder = hasAnyDefinedEdge(this.style.border);
700
+ this.markDirty();
701
+ }
702
+ setGap(gutter, v) {
703
+ this.style.gap[gutter] = parseDimension(v);
704
+ this.markDirty();
705
+ }
706
+ setGapPercent(gutter, v) {
707
+ this.style.gap[gutter] = percentValue(v);
708
+ this.markDirty();
709
+ }
710
+ // -- Style getters (partial — only what tests need)
711
+ getFlexDirection() {
712
+ return this.style.flexDirection;
713
+ }
714
+ getJustifyContent() {
715
+ return this.style.justifyContent;
716
+ }
717
+ getAlignItems() {
718
+ return this.style.alignItems;
719
+ }
720
+ getAlignSelf() {
721
+ return this.style.alignSelf;
722
+ }
723
+ getAlignContent() {
724
+ return this.style.alignContent;
725
+ }
726
+ getFlexGrow() {
727
+ return this.style.flexGrow;
728
+ }
729
+ getFlexShrink() {
730
+ return this.style.flexShrink;
731
+ }
732
+ getFlexBasis() {
733
+ return this.style.flexBasis;
734
+ }
735
+ getFlexWrap() {
736
+ return this.style.flexWrap;
737
+ }
738
+ getWidth() {
739
+ return this.style.width;
740
+ }
741
+ getHeight() {
742
+ return this.style.height;
743
+ }
744
+ getOverflow() {
745
+ return this.style.overflow;
746
+ }
747
+ getPositionType() {
748
+ return this.style.positionType;
749
+ }
750
+ getDirection() {
751
+ return this.style.direction;
752
+ }
753
+ // -- Unused API stubs (present for API parity)
754
+ copyStyle(_) { }
755
+ setDirtiedFunc(_) { }
756
+ unsetDirtiedFunc() { }
757
+ setIsReferenceBaseline(v) {
758
+ this.isReferenceBaseline_ = v;
759
+ this.markDirty();
760
+ }
761
+ isReferenceBaseline() {
762
+ return this.isReferenceBaseline_;
763
+ }
764
+ setAspectRatio(_) { }
765
+ getAspectRatio() {
766
+ return NaN;
767
+ }
768
+ setAlwaysFormsContainingBlock(_) { }
769
+ // -- Layout entry point
770
+ calculateLayout(ownerWidth, ownerHeight, _direction) {
771
+ _yogaNodesVisited = 0;
772
+ _yogaMeasureCalls = 0;
773
+ _yogaCacheHits = 0;
774
+ _generation++;
775
+ const w = ownerWidth === undefined ? NaN : ownerWidth;
776
+ const h = ownerHeight === undefined ? NaN : ownerHeight;
777
+ layoutNode(this, w, h, isDefined(w) ? MeasureMode.Exactly : MeasureMode.Undefined, isDefined(h) ? MeasureMode.Exactly : MeasureMode.Undefined, w, h, true);
778
+ // Root's own position = margin + position insets (yoga applies position
779
+ // to the root even without a parent container; this matters for rounding
780
+ // since the root's abs top/left seeds the pixel-grid walk).
781
+ const mar = this.layout.margin;
782
+ const posL = resolveValue(resolveEdgeRaw(this.style.position, EDGE_LEFT), isDefined(w) ? w : 0);
783
+ const posT = resolveValue(resolveEdgeRaw(this.style.position, EDGE_TOP), isDefined(w) ? w : 0);
784
+ this.layout.left = mar[EDGE_LEFT] + (isDefined(posL) ? posL : 0);
785
+ this.layout.top = mar[EDGE_TOP] + (isDefined(posT) ? posT : 0);
786
+ roundLayout(this, this.config.pointScaleFactor, 0, 0);
787
+ }
788
+ }
789
+ const DEFAULT_CONFIG = createConfig();
790
+ const CACHE_SLOTS = 4;
791
+ function cacheWrite(node, aW, aH, wM, hM, oW, oH, fW, fH, wasDirty) {
792
+ if (!node._cIn) {
793
+ node._cIn = new Float64Array(CACHE_SLOTS * 8);
794
+ node._cOut = new Float64Array(CACHE_SLOTS * 2);
795
+ }
796
+ // First write after a dirty clears stale entries from before the dirty.
797
+ // _cGen < _generation means entries are from a previous calculateLayout;
798
+ // if wasDirty, the subtree changed since then → old dimensions invalid.
799
+ // Clean nodes' old entries stay — same subtree → same result for same
800
+ // inputs, so cross-generation caching works (the scroll hot path where
801
+ // 499 clean messages cache-hit while one dirty leaf recomputes).
802
+ if (wasDirty && node._cGen !== _generation) {
803
+ node._cN = 0;
804
+ node._cWr = 0;
805
+ }
806
+ // LRU write index wraps; _cN stays at CACHE_SLOTS so the read scan always
807
+ // checks all populated slots (not just those since last wrap).
808
+ const i = node._cWr++ % CACHE_SLOTS;
809
+ if (node._cN < CACHE_SLOTS)
810
+ node._cN = node._cWr;
811
+ const o = i * 8;
812
+ const cIn = node._cIn;
813
+ cIn[o] = aW;
814
+ cIn[o + 1] = aH;
815
+ cIn[o + 2] = wM;
816
+ cIn[o + 3] = hM;
817
+ cIn[o + 4] = oW;
818
+ cIn[o + 5] = oH;
819
+ cIn[o + 6] = fW ? 1 : 0;
820
+ cIn[o + 7] = fH ? 1 : 0;
821
+ node._cOut[i * 2] = node.layout.width;
822
+ node._cOut[i * 2 + 1] = node.layout.height;
823
+ node._cGen = _generation;
824
+ }
825
+ // Store computed layout.width/height into the single-slot cache output fields.
826
+ // _hasL/_hasM inputs are committed at the TOP of layoutNode (before compute);
827
+ // outputs must be committed HERE (after compute) so a cache hit can restore
828
+ // the correct dimensions. Without this, a _hasL hit returns whatever
829
+ // layout.width/height was left by the last call — which may be the intrinsic
830
+ // content height from a heightMode=Undefined measure pass rather than the
831
+ // constrained viewport height from the layout pass. That's the scrollbox
832
+ // vpH=33→2624 bug: scrollTop clamps to 0, viewport goes blank.
833
+ function commitCacheOutputs(node, performLayout) {
834
+ if (performLayout) {
835
+ node._lOutW = node.layout.width;
836
+ node._lOutH = node.layout.height;
837
+ }
838
+ else {
839
+ node._mOutW = node.layout.width;
840
+ node._mOutH = node.layout.height;
841
+ }
842
+ }
843
+ // --
844
+ // Core flexbox algorithm
845
+ // Profiling counters — reset per calculateLayout, read via getYogaCounters.
846
+ // Incremented on each calculateLayout(). Nodes stamp _fbGen/_cGen when
847
+ // their cache is written; a cache entry with gen === _generation was
848
+ // computed THIS pass and is fresh regardless of isDirty_ state.
849
+ let _generation = 0;
850
+ let _yogaNodesVisited = 0;
851
+ let _yogaMeasureCalls = 0;
852
+ let _yogaCacheHits = 0;
853
+ let _yogaLiveNodes = 0;
854
+ export function getYogaCounters() {
855
+ return {
856
+ visited: _yogaNodesVisited,
857
+ measured: _yogaMeasureCalls,
858
+ cacheHits: _yogaCacheHits,
859
+ live: _yogaLiveNodes,
860
+ };
861
+ }
862
+ function layoutNode(node, availableWidth, availableHeight, widthMode, heightMode, ownerWidth, ownerHeight, performLayout,
863
+ // When true, ignore style dimension on this axis — the flex container
864
+ // has already determined the main size (flex-basis + grow/shrink result).
865
+ forceWidth = false, forceHeight = false) {
866
+ _yogaNodesVisited++;
867
+ const style = node.style;
868
+ const layout = node.layout;
869
+ // Dirty-flag skip: clean subtree + matching inputs → layout object already
870
+ // holds the answer. A cached layout result also satisfies a measure request
871
+ // (positions are a superset of dimensions); the reverse does not hold.
872
+ // Same-generation entries are fresh regardless of isDirty_ — they were
873
+ // computed THIS calculateLayout, the subtree hasn't changed since.
874
+ // Previous-generation entries need !isDirty_ (a dirty node's cache from
875
+ // before the dirty is stale).
876
+ // sameGen bypass only for MEASURE calls — a layout-pass cache hit would
877
+ // skip the child-positioning recursion (STEP 5), leaving children at
878
+ // stale positions. Measure calls only need w/h which the cache stores.
879
+ const sameGen = node._cGen === _generation && !performLayout;
880
+ if (!node.isDirty_ || sameGen) {
881
+ if (!node.isDirty_ &&
882
+ node._hasL &&
883
+ node._lWM === widthMode &&
884
+ node._lHM === heightMode &&
885
+ node._lFW === forceWidth &&
886
+ node._lFH === forceHeight &&
887
+ sameFloat(node._lW, availableWidth) &&
888
+ sameFloat(node._lH, availableHeight) &&
889
+ sameFloat(node._lOW, ownerWidth) &&
890
+ sameFloat(node._lOH, ownerHeight)) {
891
+ _yogaCacheHits++;
892
+ layout.width = node._lOutW;
893
+ layout.height = node._lOutH;
894
+ return;
895
+ }
896
+ // Multi-entry cache: scan for matching inputs, restore cached w/h on hit.
897
+ // Covers the scroll case where a dirty ancestor's measure→layout cascade
898
+ // produces N>1 distinct input combos per clean child — the single _hasL
899
+ // slot thrashed, forcing full subtree recursion. With 500-message
900
+ // scrollbox and one dirty leaf, this took dirty-leaf relayout from
901
+ // 76k layoutNode calls (21.7×nodes) to 4k (1.2×nodes), 6.86ms → 550µs.
902
+ // Same-generation check covers fresh-mounted (dirty) nodes during
903
+ // virtual scroll — the dirty chain invokes them ≥2^depth times, first
904
+ // call writes cache, rest hit: 105k visits → ~10k for 1593-node tree.
905
+ if (node._cN > 0 && (sameGen || !node.isDirty_)) {
906
+ const cIn = node._cIn;
907
+ for (let i = 0; i < node._cN; i++) {
908
+ const o = i * 8;
909
+ if (cIn[o + 2] === widthMode &&
910
+ cIn[o + 3] === heightMode &&
911
+ cIn[o + 6] === (forceWidth ? 1 : 0) &&
912
+ cIn[o + 7] === (forceHeight ? 1 : 0) &&
913
+ sameFloat(cIn[o], availableWidth) &&
914
+ sameFloat(cIn[o + 1], availableHeight) &&
915
+ sameFloat(cIn[o + 4], ownerWidth) &&
916
+ sameFloat(cIn[o + 5], ownerHeight)) {
917
+ layout.width = node._cOut[i * 2];
918
+ layout.height = node._cOut[i * 2 + 1];
919
+ _yogaCacheHits++;
920
+ return;
921
+ }
922
+ }
923
+ }
924
+ if (!node.isDirty_ &&
925
+ !performLayout &&
926
+ node._hasM &&
927
+ node._mWM === widthMode &&
928
+ node._mHM === heightMode &&
929
+ sameFloat(node._mW, availableWidth) &&
930
+ sameFloat(node._mH, availableHeight) &&
931
+ sameFloat(node._mOW, ownerWidth) &&
932
+ sameFloat(node._mOH, ownerHeight)) {
933
+ layout.width = node._mOutW;
934
+ layout.height = node._mOutH;
935
+ _yogaCacheHits++;
936
+ return;
937
+ }
938
+ }
939
+ // Commit cache inputs up front so every return path leaves a valid entry.
940
+ // Only clear isDirty_ on the LAYOUT pass — the measure pass (computeFlexBasis
941
+ // → layoutNode(performLayout=false)) runs before the layout pass in the same
942
+ // calculateLayout call. Clearing dirty during measure lets the subsequent
943
+ // layout pass hit the STALE _hasL cache from the previous calculateLayout
944
+ // (before children were inserted), so ScrollBox content height never grows
945
+ // and sticky-scroll never follows new content. A dirty node's _hasL entry is
946
+ // stale by definition — invalidate it so the layout pass recomputes.
947
+ const wasDirty = node.isDirty_;
948
+ if (performLayout) {
949
+ node._lW = availableWidth;
950
+ node._lH = availableHeight;
951
+ node._lWM = widthMode;
952
+ node._lHM = heightMode;
953
+ node._lOW = ownerWidth;
954
+ node._lOH = ownerHeight;
955
+ node._lFW = forceWidth;
956
+ node._lFH = forceHeight;
957
+ node._hasL = true;
958
+ node.isDirty_ = false;
959
+ // Previous approach cleared _cN here to prevent stale pre-dirty entries
960
+ // from hitting (long-continuous blank-screen bug). Now replaced by
961
+ // generation stamping: the cache check requires sameGen || !isDirty_, so
962
+ // previous-generation entries from a dirty node can't hit. Clearing here
963
+ // would wipe fresh same-generation entries from an earlier measure call,
964
+ // forcing recompute on the layout call.
965
+ if (wasDirty)
966
+ node._hasM = false;
967
+ }
968
+ else {
969
+ node._mW = availableWidth;
970
+ node._mH = availableHeight;
971
+ node._mWM = widthMode;
972
+ node._mHM = heightMode;
973
+ node._mOW = ownerWidth;
974
+ node._mOH = ownerHeight;
975
+ node._hasM = true;
976
+ // Don't clear isDirty_. For DIRTY nodes, invalidate _hasL so the upcoming
977
+ // performLayout=true call recomputes with the new child set (otherwise
978
+ // sticky-scroll never follows new content — the bug from 4557bc9f9c).
979
+ // Clean nodes keep _hasL: their layout from the previous generation is
980
+ // still valid, they're only here because an ancestor is dirty and called
981
+ // with different inputs than cached.
982
+ if (wasDirty)
983
+ node._hasL = false;
984
+ }
985
+ // Resolve padding/border/margin against ownerWidth (yoga uses ownerWidth for %)
986
+ // Write directly into the pre-allocated layout arrays — avoids 3 allocs per
987
+ // layoutNode call and 12 resolveEdge calls (was the #1 hotspot per CPU profile).
988
+ // Skip entirely when no edges are set — the 4-write zero is cheaper than
989
+ // the ~20 reads + ~15 compares resolveEdges4Into does to produce zeros.
990
+ const pad = layout.padding;
991
+ const bor = layout.border;
992
+ const mar = layout.margin;
993
+ if (node._hasPadding)
994
+ resolveEdges4Into(style.padding, ownerWidth, pad);
995
+ else
996
+ pad[0] = pad[1] = pad[2] = pad[3] = 0;
997
+ if (node._hasBorder)
998
+ resolveEdges4Into(style.border, ownerWidth, bor);
999
+ else
1000
+ bor[0] = bor[1] = bor[2] = bor[3] = 0;
1001
+ if (node._hasMargin)
1002
+ resolveEdges4Into(style.margin, ownerWidth, mar);
1003
+ else
1004
+ mar[0] = mar[1] = mar[2] = mar[3] = 0;
1005
+ const paddingBorderWidth = pad[0] + pad[2] + bor[0] + bor[2];
1006
+ const paddingBorderHeight = pad[1] + pad[3] + bor[1] + bor[3];
1007
+ // Resolve style dimensions
1008
+ const styleWidth = forceWidth ? NaN : resolveValue(style.width, ownerWidth);
1009
+ const styleHeight = forceHeight
1010
+ ? NaN
1011
+ : resolveValue(style.height, ownerHeight);
1012
+ // If style dimension is defined, it overrides the available size
1013
+ let width = availableWidth;
1014
+ let height = availableHeight;
1015
+ let wMode = widthMode;
1016
+ let hMode = heightMode;
1017
+ if (isDefined(styleWidth)) {
1018
+ width = styleWidth;
1019
+ wMode = MeasureMode.Exactly;
1020
+ }
1021
+ if (isDefined(styleHeight)) {
1022
+ height = styleHeight;
1023
+ hMode = MeasureMode.Exactly;
1024
+ }
1025
+ // Apply min/max constraints to the node's own dimensions
1026
+ width = boundAxis(style, true, width, ownerWidth, ownerHeight);
1027
+ height = boundAxis(style, false, height, ownerWidth, ownerHeight);
1028
+ // Measure-func leaf node
1029
+ if (node.measureFunc && node.children.length === 0) {
1030
+ const innerW = wMode === MeasureMode.Undefined
1031
+ ? NaN
1032
+ : Math.max(0, width - paddingBorderWidth);
1033
+ const innerH = hMode === MeasureMode.Undefined
1034
+ ? NaN
1035
+ : Math.max(0, height - paddingBorderHeight);
1036
+ _yogaMeasureCalls++;
1037
+ const measured = node.measureFunc(innerW, wMode, innerH, hMode);
1038
+ node.layout.width =
1039
+ wMode === MeasureMode.Exactly
1040
+ ? width
1041
+ : boundAxis(style, true, (measured.width ?? 0) + paddingBorderWidth, ownerWidth, ownerHeight);
1042
+ node.layout.height =
1043
+ hMode === MeasureMode.Exactly
1044
+ ? height
1045
+ : boundAxis(style, false, (measured.height ?? 0) + paddingBorderHeight, ownerWidth, ownerHeight);
1046
+ commitCacheOutputs(node, performLayout);
1047
+ // Write cache even for dirty nodes — fresh-mounted items during virtual
1048
+ // scroll are dirty on first layout, but the dirty chain's measure→layout
1049
+ // cascade invokes them ≥2^depth times per calculateLayout. Writing here
1050
+ // lets the 2nd+ calls hit cache (isDirty_ was cleared in the layout pass
1051
+ // above). Measured: 105k visits → 10k for a 1593-node fresh-mount tree.
1052
+ cacheWrite(node, availableWidth, availableHeight, widthMode, heightMode, ownerWidth, ownerHeight, forceWidth, forceHeight, wasDirty);
1053
+ return;
1054
+ }
1055
+ // Leaf node with no children and no measure func
1056
+ if (node.children.length === 0) {
1057
+ node.layout.width =
1058
+ wMode === MeasureMode.Exactly
1059
+ ? width
1060
+ : boundAxis(style, true, paddingBorderWidth, ownerWidth, ownerHeight);
1061
+ node.layout.height =
1062
+ hMode === MeasureMode.Exactly
1063
+ ? height
1064
+ : boundAxis(style, false, paddingBorderHeight, ownerWidth, ownerHeight);
1065
+ commitCacheOutputs(node, performLayout);
1066
+ // Write cache even for dirty nodes — fresh-mounted items during virtual
1067
+ // scroll are dirty on first layout, but the dirty chain's measure→layout
1068
+ // cascade invokes them ≥2^depth times per calculateLayout. Writing here
1069
+ // lets the 2nd+ calls hit cache (isDirty_ was cleared in the layout pass
1070
+ // above). Measured: 105k visits → 10k for a 1593-node fresh-mount tree.
1071
+ cacheWrite(node, availableWidth, availableHeight, widthMode, heightMode, ownerWidth, ownerHeight, forceWidth, forceHeight, wasDirty);
1072
+ return;
1073
+ }
1074
+ // Container with children — run flexbox algorithm
1075
+ const mainAxis = style.flexDirection;
1076
+ const crossAx = crossAxis(mainAxis);
1077
+ const isMainRow = isRow(mainAxis);
1078
+ const mainSize = isMainRow ? width : height;
1079
+ const crossSize = isMainRow ? height : width;
1080
+ const mainMode = isMainRow ? wMode : hMode;
1081
+ const crossMode = isMainRow ? hMode : wMode;
1082
+ const mainPadBorder = isMainRow ? paddingBorderWidth : paddingBorderHeight;
1083
+ const crossPadBorder = isMainRow ? paddingBorderHeight : paddingBorderWidth;
1084
+ const innerMainSize = isDefined(mainSize)
1085
+ ? Math.max(0, mainSize - mainPadBorder)
1086
+ : NaN;
1087
+ const innerCrossSize = isDefined(crossSize)
1088
+ ? Math.max(0, crossSize - crossPadBorder)
1089
+ : NaN;
1090
+ // Resolve gap
1091
+ const gapMain = resolveGap(style, isMainRow ? Gutter.Column : Gutter.Row, innerMainSize);
1092
+ // Partition children into flow vs absolute. display:contents nodes are
1093
+ // transparent — their children are lifted into the grandparent's child list
1094
+ // (recursively), and the contents node itself gets zero layout.
1095
+ const flowChildren = [];
1096
+ const absChildren = [];
1097
+ collectLayoutChildren(node, flowChildren, absChildren);
1098
+ // ownerW/H are the reference sizes for resolving children's percentage
1099
+ // values. Per CSS, a % width resolves against the parent's content-box
1100
+ // width. If this node's width is indefinite, children's % widths are also
1101
+ // indefinite — do NOT fall through to the grandparent's size.
1102
+ const ownerW = isDefined(width) ? width : NaN;
1103
+ const ownerH = isDefined(height) ? height : NaN;
1104
+ const isWrap = style.flexWrap !== Wrap.NoWrap;
1105
+ const gapCross = resolveGap(style, isMainRow ? Gutter.Row : Gutter.Column, innerCrossSize);
1106
+ // STEP 1: Compute flex-basis for each flow child and break into lines.
1107
+ // Single-line (NoWrap) containers always get one line; multi-line containers
1108
+ // break when accumulated basis+margin+gap exceeds innerMainSize.
1109
+ for (const c of flowChildren) {
1110
+ c._flexBasis = computeFlexBasis(c, mainAxis, innerMainSize, innerCrossSize, crossMode, ownerW, ownerH);
1111
+ }
1112
+ const lines = [];
1113
+ if (!isWrap || !isDefined(innerMainSize) || flowChildren.length === 0) {
1114
+ for (const c of flowChildren)
1115
+ c._lineIndex = 0;
1116
+ lines.push(flowChildren);
1117
+ }
1118
+ else {
1119
+ // Line-break decisions use the min/max-clamped basis (flexbox spec §9.3.5:
1120
+ // "hypothetical main size"), not the raw flex-basis.
1121
+ let lineStart = 0;
1122
+ let lineLen = 0;
1123
+ for (let i = 0; i < flowChildren.length; i++) {
1124
+ const c = flowChildren[i];
1125
+ const hypo = boundAxis(c.style, isMainRow, c._flexBasis, ownerW, ownerH);
1126
+ const outer = Math.max(0, hypo) + childMarginForAxis(c, mainAxis, ownerW);
1127
+ const withGap = i > lineStart ? gapMain : 0;
1128
+ if (i > lineStart && lineLen + withGap + outer > innerMainSize) {
1129
+ lines.push(flowChildren.slice(lineStart, i));
1130
+ lineStart = i;
1131
+ lineLen = outer;
1132
+ }
1133
+ else {
1134
+ lineLen += withGap + outer;
1135
+ }
1136
+ c._lineIndex = lines.length;
1137
+ }
1138
+ lines.push(flowChildren.slice(lineStart));
1139
+ }
1140
+ const lineCount = lines.length;
1141
+ const isBaseline = isBaselineLayout(node, flowChildren);
1142
+ // STEP 2+3: For each line, resolve flexible lengths and lay out children to
1143
+ // measure cross sizes. Track per-line consumed main and max cross.
1144
+ const lineConsumedMain = new Array(lineCount);
1145
+ const lineCrossSizes = new Array(lineCount);
1146
+ // Baseline layout tracks max ascent (baseline + leading margin) per line so
1147
+ // baseline-aligned items can be positioned at maxAscent - childBaseline.
1148
+ const lineMaxAscent = isBaseline ? new Array(lineCount).fill(0) : [];
1149
+ let maxLineMain = 0;
1150
+ let totalLinesCross = 0;
1151
+ for (let li = 0; li < lineCount; li++) {
1152
+ const line = lines[li];
1153
+ const lineGap = line.length > 1 ? gapMain * (line.length - 1) : 0;
1154
+ let lineBasis = lineGap;
1155
+ for (const c of line) {
1156
+ lineBasis += c._flexBasis + childMarginForAxis(c, mainAxis, ownerW);
1157
+ }
1158
+ // Resolve flexible lengths against available inner main. For indefinite
1159
+ // containers with min/max, flex against the clamped size.
1160
+ let availMain = innerMainSize;
1161
+ if (!isDefined(availMain)) {
1162
+ const mainOwner = isMainRow ? ownerWidth : ownerHeight;
1163
+ const minM = resolveValue(isMainRow ? style.minWidth : style.minHeight, mainOwner);
1164
+ const maxM = resolveValue(isMainRow ? style.maxWidth : style.maxHeight, mainOwner);
1165
+ if (isDefined(maxM) && lineBasis > maxM - mainPadBorder) {
1166
+ availMain = Math.max(0, maxM - mainPadBorder);
1167
+ }
1168
+ else if (isDefined(minM) && lineBasis < minM - mainPadBorder) {
1169
+ availMain = Math.max(0, minM - mainPadBorder);
1170
+ }
1171
+ }
1172
+ resolveFlexibleLengths(line, availMain, lineBasis, isMainRow, ownerW, ownerH);
1173
+ // Lay out each child in this line to measure cross
1174
+ let lineCross = 0;
1175
+ for (const c of line) {
1176
+ const cStyle = c.style;
1177
+ const childAlign = cStyle.alignSelf === Align.Auto ? style.alignItems : cStyle.alignSelf;
1178
+ const cMarginCross = childMarginForAxis(c, crossAx, ownerW);
1179
+ let childCrossSize = NaN;
1180
+ let childCrossMode = MeasureMode.Undefined;
1181
+ const resolvedCrossStyle = resolveValue(isMainRow ? cStyle.height : cStyle.width, isMainRow ? ownerH : ownerW);
1182
+ const crossLeadE = isMainRow ? EDGE_TOP : EDGE_LEFT;
1183
+ const crossTrailE = isMainRow ? EDGE_BOTTOM : EDGE_RIGHT;
1184
+ const hasCrossAutoMargin = c._hasAutoMargin &&
1185
+ (isMarginAuto(cStyle.margin, crossLeadE) ||
1186
+ isMarginAuto(cStyle.margin, crossTrailE));
1187
+ // Single-line stretch goes directly to the container cross size.
1188
+ // Multi-line wrap measures intrinsic cross (Undefined mode) so
1189
+ // flex-grow grandchildren don't expand to the container — the line
1190
+ // cross size is determined first, then items are re-stretched.
1191
+ if (isDefined(resolvedCrossStyle)) {
1192
+ childCrossSize = resolvedCrossStyle;
1193
+ childCrossMode = MeasureMode.Exactly;
1194
+ }
1195
+ else if (childAlign === Align.Stretch &&
1196
+ !hasCrossAutoMargin &&
1197
+ !isWrap &&
1198
+ isDefined(innerCrossSize) &&
1199
+ crossMode === MeasureMode.Exactly) {
1200
+ childCrossSize = Math.max(0, innerCrossSize - cMarginCross);
1201
+ childCrossMode = MeasureMode.Exactly;
1202
+ }
1203
+ else if (!isWrap && isDefined(innerCrossSize)) {
1204
+ childCrossSize = Math.max(0, innerCrossSize - cMarginCross);
1205
+ childCrossMode = MeasureMode.AtMost;
1206
+ }
1207
+ const cw = isMainRow ? c._mainSize : childCrossSize;
1208
+ const ch = isMainRow ? childCrossSize : c._mainSize;
1209
+ layoutNode(c, cw, ch, isMainRow ? MeasureMode.Exactly : childCrossMode, isMainRow ? childCrossMode : MeasureMode.Exactly, ownerW, ownerH, performLayout, isMainRow, !isMainRow);
1210
+ c._crossSize = isMainRow ? c.layout.height : c.layout.width;
1211
+ lineCross = Math.max(lineCross, c._crossSize + cMarginCross);
1212
+ }
1213
+ // Baseline layout: line cross size must fit maxAscent + maxDescent of
1214
+ // baseline-aligned children (yoga STEP 8). Only applies to row direction.
1215
+ if (isBaseline) {
1216
+ let maxAscent = 0;
1217
+ let maxDescent = 0;
1218
+ for (const c of line) {
1219
+ if (resolveChildAlign(node, c) !== Align.Baseline)
1220
+ continue;
1221
+ const mTop = resolveEdge(c.style.margin, EDGE_TOP, ownerW);
1222
+ const mBot = resolveEdge(c.style.margin, EDGE_BOTTOM, ownerW);
1223
+ const ascent = calculateBaseline(c) + mTop;
1224
+ const descent = c.layout.height + mTop + mBot - ascent;
1225
+ if (ascent > maxAscent)
1226
+ maxAscent = ascent;
1227
+ if (descent > maxDescent)
1228
+ maxDescent = descent;
1229
+ }
1230
+ lineMaxAscent[li] = maxAscent;
1231
+ if (maxAscent + maxDescent > lineCross) {
1232
+ lineCross = maxAscent + maxDescent;
1233
+ }
1234
+ }
1235
+ // layoutNode(c) at line ~1117 above already resolved c.layout.margin[] via
1236
+ // resolveEdges4Into with the same ownerW — read directly instead of
1237
+ // re-resolving through childMarginForAxis → 2× resolveEdge.
1238
+ const mainLead = leadingEdge(mainAxis);
1239
+ const mainTrail = trailingEdge(mainAxis);
1240
+ let consumed = lineGap;
1241
+ for (const c of line) {
1242
+ const cm = c.layout.margin;
1243
+ consumed += c._mainSize + cm[mainLead] + cm[mainTrail];
1244
+ }
1245
+ lineConsumedMain[li] = consumed;
1246
+ lineCrossSizes[li] = lineCross;
1247
+ maxLineMain = Math.max(maxLineMain, consumed);
1248
+ totalLinesCross += lineCross;
1249
+ }
1250
+ const totalCrossGap = lineCount > 1 ? gapCross * (lineCount - 1) : 0;
1251
+ totalLinesCross += totalCrossGap;
1252
+ // STEP 4: Determine container dimensions. Per yoga's STEP 9, for both
1253
+ // AtMost (FitContent) and Undefined (MaxContent) the node sizes to its
1254
+ // content — AtMost is NOT a hard clamp, items may overflow the available
1255
+ // space (CSS "fit-content" behavior). Only Scroll overflow clamps to the
1256
+ // available size. Wrap containers that broke into multiple lines under
1257
+ // AtMost fill the available main size since they wrapped at that boundary.
1258
+ const isScroll = style.overflow === Overflow.Scroll;
1259
+ const contentMain = maxLineMain + mainPadBorder;
1260
+ const finalMainSize = mainMode === MeasureMode.Exactly
1261
+ ? mainSize
1262
+ : mainMode === MeasureMode.AtMost && isScroll
1263
+ ? Math.max(Math.min(mainSize, contentMain), mainPadBorder)
1264
+ : isWrap && lineCount > 1 && mainMode === MeasureMode.AtMost
1265
+ ? mainSize
1266
+ : contentMain;
1267
+ const contentCross = totalLinesCross + crossPadBorder;
1268
+ const finalCrossSize = crossMode === MeasureMode.Exactly
1269
+ ? crossSize
1270
+ : crossMode === MeasureMode.AtMost && isScroll
1271
+ ? Math.max(Math.min(crossSize, contentCross), crossPadBorder)
1272
+ : contentCross;
1273
+ node.layout.width = boundAxis(style, true, isMainRow ? finalMainSize : finalCrossSize, ownerWidth, ownerHeight);
1274
+ node.layout.height = boundAxis(style, false, isMainRow ? finalCrossSize : finalMainSize, ownerWidth, ownerHeight);
1275
+ commitCacheOutputs(node, performLayout);
1276
+ // Write cache even for dirty nodes — fresh-mounted items during virtual scroll
1277
+ cacheWrite(node, availableWidth, availableHeight, widthMode, heightMode, ownerWidth, ownerHeight, forceWidth, forceHeight, wasDirty);
1278
+ if (!performLayout)
1279
+ return;
1280
+ // STEP 5: Position lines (align-content) and children (justify-content +
1281
+ // align-items + auto margins).
1282
+ const actualInnerMain = (isMainRow ? node.layout.width : node.layout.height) - mainPadBorder;
1283
+ const actualInnerCross = (isMainRow ? node.layout.height : node.layout.width) - crossPadBorder;
1284
+ const mainLeadEdgePhys = leadingEdge(mainAxis);
1285
+ const mainTrailEdgePhys = trailingEdge(mainAxis);
1286
+ const crossLeadEdgePhys = isMainRow ? EDGE_TOP : EDGE_LEFT;
1287
+ const crossTrailEdgePhys = isMainRow ? EDGE_BOTTOM : EDGE_RIGHT;
1288
+ const reversed = isReverse(mainAxis);
1289
+ const mainContainerSize = isMainRow ? node.layout.width : node.layout.height;
1290
+ const crossLead = pad[crossLeadEdgePhys] + bor[crossLeadEdgePhys];
1291
+ // Align-content: distribute free cross space among lines. Single-line
1292
+ // containers use the full cross size for the one line (align-items handles
1293
+ // positioning within it).
1294
+ let lineCrossOffset = crossLead;
1295
+ let betweenLines = gapCross;
1296
+ const freeCross = actualInnerCross - totalLinesCross;
1297
+ if (lineCount === 1 && !isWrap && !isBaseline) {
1298
+ lineCrossSizes[0] = actualInnerCross;
1299
+ }
1300
+ else {
1301
+ const remCross = Math.max(0, freeCross);
1302
+ switch (style.alignContent) {
1303
+ case Align.FlexStart:
1304
+ break;
1305
+ case Align.Center:
1306
+ lineCrossOffset += freeCross / 2;
1307
+ break;
1308
+ case Align.FlexEnd:
1309
+ lineCrossOffset += freeCross;
1310
+ break;
1311
+ case Align.Stretch:
1312
+ if (lineCount > 0 && remCross > 0) {
1313
+ const add = remCross / lineCount;
1314
+ for (let i = 0; i < lineCount; i++)
1315
+ lineCrossSizes[i] += add;
1316
+ }
1317
+ break;
1318
+ case Align.SpaceBetween:
1319
+ if (lineCount > 1)
1320
+ betweenLines += remCross / (lineCount - 1);
1321
+ break;
1322
+ case Align.SpaceAround:
1323
+ if (lineCount > 0) {
1324
+ betweenLines += remCross / lineCount;
1325
+ lineCrossOffset += remCross / lineCount / 2;
1326
+ }
1327
+ break;
1328
+ case Align.SpaceEvenly:
1329
+ if (lineCount > 0) {
1330
+ betweenLines += remCross / (lineCount + 1);
1331
+ lineCrossOffset += remCross / (lineCount + 1);
1332
+ }
1333
+ break;
1334
+ default:
1335
+ break;
1336
+ }
1337
+ }
1338
+ // For wrap-reverse, lines stack from the trailing cross edge. Walk lines in
1339
+ // order but flip the cross position within the container.
1340
+ const wrapReverse = style.flexWrap === Wrap.WrapReverse;
1341
+ const crossContainerSize = isMainRow ? node.layout.height : node.layout.width;
1342
+ let lineCrossPos = lineCrossOffset;
1343
+ for (let li = 0; li < lineCount; li++) {
1344
+ const line = lines[li];
1345
+ const lineCross = lineCrossSizes[li];
1346
+ const consumedMain = lineConsumedMain[li];
1347
+ const n = line.length;
1348
+ // Re-stretch children whose cross is auto and align is stretch, now that
1349
+ // the line cross size is known. Needed for multi-line wrap (line cross
1350
+ // wasn't known during initial measure) AND single-line when the container
1351
+ // cross was not Exactly (initial stretch at ~line 1250 was skipped because
1352
+ // innerCrossSize wasn't defined — the container sized to max child cross).
1353
+ if (isWrap || crossMode !== MeasureMode.Exactly) {
1354
+ for (const c of line) {
1355
+ const cStyle = c.style;
1356
+ const childAlign = cStyle.alignSelf === Align.Auto ? style.alignItems : cStyle.alignSelf;
1357
+ const crossStyleDef = isDefined(resolveValue(isMainRow ? cStyle.height : cStyle.width, isMainRow ? ownerH : ownerW));
1358
+ const hasCrossAutoMargin = c._hasAutoMargin &&
1359
+ (isMarginAuto(cStyle.margin, crossLeadEdgePhys) ||
1360
+ isMarginAuto(cStyle.margin, crossTrailEdgePhys));
1361
+ if (childAlign === Align.Stretch &&
1362
+ !crossStyleDef &&
1363
+ !hasCrossAutoMargin) {
1364
+ const cMarginCross = childMarginForAxis(c, crossAx, ownerW);
1365
+ const target = Math.max(0, lineCross - cMarginCross);
1366
+ if (c._crossSize !== target) {
1367
+ const cw = isMainRow ? c._mainSize : target;
1368
+ const ch = isMainRow ? target : c._mainSize;
1369
+ layoutNode(c, cw, ch, MeasureMode.Exactly, MeasureMode.Exactly, ownerW, ownerH, performLayout, isMainRow, !isMainRow);
1370
+ c._crossSize = target;
1371
+ }
1372
+ }
1373
+ }
1374
+ }
1375
+ // Justify-content + auto margins for this line
1376
+ let mainOffset = pad[mainLeadEdgePhys] + bor[mainLeadEdgePhys];
1377
+ let betweenMain = gapMain;
1378
+ let numAutoMarginsMain = 0;
1379
+ for (const c of line) {
1380
+ if (!c._hasAutoMargin)
1381
+ continue;
1382
+ if (isMarginAuto(c.style.margin, mainLeadEdgePhys))
1383
+ numAutoMarginsMain++;
1384
+ if (isMarginAuto(c.style.margin, mainTrailEdgePhys))
1385
+ numAutoMarginsMain++;
1386
+ }
1387
+ const freeMain = actualInnerMain - consumedMain;
1388
+ const remainingMain = Math.max(0, freeMain);
1389
+ const autoMarginMainSize = numAutoMarginsMain > 0 && remainingMain > 0
1390
+ ? remainingMain / numAutoMarginsMain
1391
+ : 0;
1392
+ if (numAutoMarginsMain === 0) {
1393
+ switch (style.justifyContent) {
1394
+ case Justify.FlexStart:
1395
+ break;
1396
+ case Justify.Center:
1397
+ mainOffset += freeMain / 2;
1398
+ break;
1399
+ case Justify.FlexEnd:
1400
+ mainOffset += freeMain;
1401
+ break;
1402
+ case Justify.SpaceBetween:
1403
+ if (n > 1)
1404
+ betweenMain += remainingMain / (n - 1);
1405
+ break;
1406
+ case Justify.SpaceAround:
1407
+ if (n > 0) {
1408
+ betweenMain += remainingMain / n;
1409
+ mainOffset += remainingMain / n / 2;
1410
+ }
1411
+ break;
1412
+ case Justify.SpaceEvenly:
1413
+ if (n > 0) {
1414
+ betweenMain += remainingMain / (n + 1);
1415
+ mainOffset += remainingMain / (n + 1);
1416
+ }
1417
+ break;
1418
+ }
1419
+ }
1420
+ const effectiveLineCrossPos = wrapReverse
1421
+ ? crossContainerSize - lineCrossPos - lineCross
1422
+ : lineCrossPos;
1423
+ let pos = mainOffset;
1424
+ for (const c of line) {
1425
+ const cMargin = c.style.margin;
1426
+ // c.layout.margin[] was populated by resolveEdges4Into inside the
1427
+ // layoutNode(c) call above (same ownerW). Read resolved values directly
1428
+ // instead of re-running the edge fallback chain 4× via resolveEdge.
1429
+ // Auto margins resolve to 0 in layout.margin, so autoMarginMainSize
1430
+ // substitution still uses the isMarginAuto check against style.
1431
+ const cLayoutMargin = c.layout.margin;
1432
+ let autoMainLead = false;
1433
+ let autoMainTrail = false;
1434
+ let autoCrossLead = false;
1435
+ let autoCrossTrail = false;
1436
+ let mMainLead;
1437
+ let mMainTrail;
1438
+ let mCrossLead;
1439
+ let mCrossTrail;
1440
+ if (c._hasAutoMargin) {
1441
+ autoMainLead = isMarginAuto(cMargin, mainLeadEdgePhys);
1442
+ autoMainTrail = isMarginAuto(cMargin, mainTrailEdgePhys);
1443
+ autoCrossLead = isMarginAuto(cMargin, crossLeadEdgePhys);
1444
+ autoCrossTrail = isMarginAuto(cMargin, crossTrailEdgePhys);
1445
+ mMainLead = autoMainLead
1446
+ ? autoMarginMainSize
1447
+ : cLayoutMargin[mainLeadEdgePhys];
1448
+ mMainTrail = autoMainTrail
1449
+ ? autoMarginMainSize
1450
+ : cLayoutMargin[mainTrailEdgePhys];
1451
+ mCrossLead = autoCrossLead ? 0 : cLayoutMargin[crossLeadEdgePhys];
1452
+ mCrossTrail = autoCrossTrail ? 0 : cLayoutMargin[crossTrailEdgePhys];
1453
+ }
1454
+ else {
1455
+ // Fast path: no auto margins — read resolved values directly.
1456
+ mMainLead = cLayoutMargin[mainLeadEdgePhys];
1457
+ mMainTrail = cLayoutMargin[mainTrailEdgePhys];
1458
+ mCrossLead = cLayoutMargin[crossLeadEdgePhys];
1459
+ mCrossTrail = cLayoutMargin[crossTrailEdgePhys];
1460
+ }
1461
+ const mainPos = reversed
1462
+ ? mainContainerSize - (pos + mMainLead) - c._mainSize
1463
+ : pos + mMainLead;
1464
+ const childAlign = c.style.alignSelf === Align.Auto ? style.alignItems : c.style.alignSelf;
1465
+ let crossPos = effectiveLineCrossPos + mCrossLead;
1466
+ const crossFree = lineCross - c._crossSize - mCrossLead - mCrossTrail;
1467
+ if (autoCrossLead && autoCrossTrail) {
1468
+ crossPos += Math.max(0, crossFree) / 2;
1469
+ }
1470
+ else if (autoCrossLead) {
1471
+ crossPos += Math.max(0, crossFree);
1472
+ }
1473
+ else if (autoCrossTrail) {
1474
+ // stays at leading
1475
+ }
1476
+ else {
1477
+ switch (childAlign) {
1478
+ case Align.FlexStart:
1479
+ case Align.Stretch:
1480
+ if (wrapReverse)
1481
+ crossPos += crossFree;
1482
+ break;
1483
+ case Align.Center:
1484
+ crossPos += crossFree / 2;
1485
+ break;
1486
+ case Align.FlexEnd:
1487
+ if (!wrapReverse)
1488
+ crossPos += crossFree;
1489
+ break;
1490
+ case Align.Baseline:
1491
+ // Row direction only (isBaselineLayout checked this). Position so
1492
+ // the child's baseline aligns with the line's max ascent. Per
1493
+ // yoga: top = currentLead + maxAscent - childBaseline + leadingPosition.
1494
+ if (isBaseline) {
1495
+ crossPos =
1496
+ effectiveLineCrossPos +
1497
+ lineMaxAscent[li] -
1498
+ calculateBaseline(c);
1499
+ }
1500
+ break;
1501
+ default:
1502
+ break;
1503
+ }
1504
+ }
1505
+ // Relative position offsets. Fast path: no position insets set →
1506
+ // skip 4× resolveEdgeRaw + 4× resolveValue + 4× isDefined.
1507
+ let relX = 0;
1508
+ let relY = 0;
1509
+ if (c._hasPosition) {
1510
+ const relLeft = resolveValue(resolveEdgeRaw(c.style.position, EDGE_LEFT), ownerW);
1511
+ const relRight = resolveValue(resolveEdgeRaw(c.style.position, EDGE_RIGHT), ownerW);
1512
+ const relTop = resolveValue(resolveEdgeRaw(c.style.position, EDGE_TOP), ownerW);
1513
+ const relBottom = resolveValue(resolveEdgeRaw(c.style.position, EDGE_BOTTOM), ownerW);
1514
+ relX = isDefined(relLeft)
1515
+ ? relLeft
1516
+ : isDefined(relRight)
1517
+ ? -relRight
1518
+ : 0;
1519
+ relY = isDefined(relTop)
1520
+ ? relTop
1521
+ : isDefined(relBottom)
1522
+ ? -relBottom
1523
+ : 0;
1524
+ }
1525
+ if (isMainRow) {
1526
+ c.layout.left = mainPos + relX;
1527
+ c.layout.top = crossPos + relY;
1528
+ }
1529
+ else {
1530
+ c.layout.left = crossPos + relX;
1531
+ c.layout.top = mainPos + relY;
1532
+ }
1533
+ pos += c._mainSize + mMainLead + mMainTrail + betweenMain;
1534
+ }
1535
+ lineCrossPos += lineCross + betweenLines;
1536
+ }
1537
+ // STEP 6: Absolute-positioned children
1538
+ for (const c of absChildren) {
1539
+ layoutAbsoluteChild(node, c, node.layout.width, node.layout.height, pad, bor);
1540
+ }
1541
+ }
1542
+ function layoutAbsoluteChild(parent, child, parentWidth, parentHeight, pad, bor) {
1543
+ const cs = child.style;
1544
+ const posLeft = resolveEdgeRaw(cs.position, EDGE_LEFT);
1545
+ const posRight = resolveEdgeRaw(cs.position, EDGE_RIGHT);
1546
+ const posTop = resolveEdgeRaw(cs.position, EDGE_TOP);
1547
+ const posBottom = resolveEdgeRaw(cs.position, EDGE_BOTTOM);
1548
+ const rLeft = resolveValue(posLeft, parentWidth);
1549
+ const rRight = resolveValue(posRight, parentWidth);
1550
+ const rTop = resolveValue(posTop, parentHeight);
1551
+ const rBottom = resolveValue(posBottom, parentHeight);
1552
+ // Absolute children's percentage dimensions resolve against the containing
1553
+ // block's padding-box (parent size minus border), per CSS §10.1.
1554
+ const paddingBoxW = parentWidth - bor[0] - bor[2];
1555
+ const paddingBoxH = parentHeight - bor[1] - bor[3];
1556
+ let cw = resolveValue(cs.width, paddingBoxW);
1557
+ let ch = resolveValue(cs.height, paddingBoxH);
1558
+ // If both left+right defined and width not, derive width
1559
+ if (!isDefined(cw) && isDefined(rLeft) && isDefined(rRight)) {
1560
+ cw = paddingBoxW - rLeft - rRight;
1561
+ }
1562
+ if (!isDefined(ch) && isDefined(rTop) && isDefined(rBottom)) {
1563
+ ch = paddingBoxH - rTop - rBottom;
1564
+ }
1565
+ layoutNode(child, cw, ch, isDefined(cw) ? MeasureMode.Exactly : MeasureMode.Undefined, isDefined(ch) ? MeasureMode.Exactly : MeasureMode.Undefined, paddingBoxW, paddingBoxH, true);
1566
+ // Margin of absolute child (applied in addition to insets)
1567
+ const mL = resolveEdge(cs.margin, EDGE_LEFT, parentWidth);
1568
+ const mT = resolveEdge(cs.margin, EDGE_TOP, parentWidth);
1569
+ const mR = resolveEdge(cs.margin, EDGE_RIGHT, parentWidth);
1570
+ const mB = resolveEdge(cs.margin, EDGE_BOTTOM, parentWidth);
1571
+ const mainAxis = parent.style.flexDirection;
1572
+ const reversed = isReverse(mainAxis);
1573
+ const mainRow = isRow(mainAxis);
1574
+ const wrapReverse = parent.style.flexWrap === Wrap.WrapReverse;
1575
+ // alignSelf overrides alignItems for absolute children (same as flow items)
1576
+ const alignment = cs.alignSelf === Align.Auto ? parent.style.alignItems : cs.alignSelf;
1577
+ // Position
1578
+ let left;
1579
+ if (isDefined(rLeft)) {
1580
+ left = bor[0] + rLeft + mL;
1581
+ }
1582
+ else if (isDefined(rRight)) {
1583
+ left = parentWidth - bor[2] - rRight - child.layout.width - mR;
1584
+ }
1585
+ else if (mainRow) {
1586
+ // Main axis — justify-content, flipped for reversed
1587
+ const lead = pad[0] + bor[0];
1588
+ const trail = parentWidth - pad[2] - bor[2];
1589
+ left = reversed
1590
+ ? trail - child.layout.width - mR
1591
+ : justifyAbsolute(parent.style.justifyContent, lead, trail, child.layout.width) + mL;
1592
+ }
1593
+ else {
1594
+ left =
1595
+ alignAbsolute(alignment, pad[0] + bor[0], parentWidth - pad[2] - bor[2], child.layout.width, wrapReverse) + mL;
1596
+ }
1597
+ let top;
1598
+ if (isDefined(rTop)) {
1599
+ top = bor[1] + rTop + mT;
1600
+ }
1601
+ else if (isDefined(rBottom)) {
1602
+ top = parentHeight - bor[3] - rBottom - child.layout.height - mB;
1603
+ }
1604
+ else if (mainRow) {
1605
+ top =
1606
+ alignAbsolute(alignment, pad[1] + bor[1], parentHeight - pad[3] - bor[3], child.layout.height, wrapReverse) + mT;
1607
+ }
1608
+ else {
1609
+ const lead = pad[1] + bor[1];
1610
+ const trail = parentHeight - pad[3] - bor[3];
1611
+ top = reversed
1612
+ ? trail - child.layout.height - mB
1613
+ : justifyAbsolute(parent.style.justifyContent, lead, trail, child.layout.height) + mT;
1614
+ }
1615
+ child.layout.left = left;
1616
+ child.layout.top = top;
1617
+ }
1618
+ function justifyAbsolute(justify, leadEdge, trailEdge, childSize) {
1619
+ switch (justify) {
1620
+ case Justify.Center:
1621
+ return leadEdge + (trailEdge - leadEdge - childSize) / 2;
1622
+ case Justify.FlexEnd:
1623
+ return trailEdge - childSize;
1624
+ default:
1625
+ return leadEdge;
1626
+ }
1627
+ }
1628
+ function alignAbsolute(align, leadEdge, trailEdge, childSize, wrapReverse) {
1629
+ // Wrap-reverse flips the cross axis: flex-start/stretch go to trailing,
1630
+ // flex-end goes to leading (yoga's absoluteLayoutChild flips the align value
1631
+ // when the containing block has wrap-reverse).
1632
+ switch (align) {
1633
+ case Align.Center:
1634
+ return leadEdge + (trailEdge - leadEdge - childSize) / 2;
1635
+ case Align.FlexEnd:
1636
+ return wrapReverse ? leadEdge : trailEdge - childSize;
1637
+ default:
1638
+ return wrapReverse ? trailEdge - childSize : leadEdge;
1639
+ }
1640
+ }
1641
+ function computeFlexBasis(child, mainAxis, availableMain, availableCross, crossMode, ownerWidth, ownerHeight) {
1642
+ // Same-generation cache hit: basis was computed THIS calculateLayout, so
1643
+ // it's fresh regardless of isDirty_. Covers both clean children (scrolling
1644
+ // past unchanged messages) AND fresh-mounted dirty children (virtual
1645
+ // scroll mounts new items — the dirty chain's measure→layout cascade
1646
+ // invokes this ≥2^depth times, but the child's subtree doesn't change
1647
+ // between calls within one calculateLayout). For clean children with
1648
+ // cache from a PREVIOUS generation, also hit if inputs match — isDirty_
1649
+ // gates since a dirty child's previous-gen cache is stale.
1650
+ const sameGen = child._fbGen === _generation;
1651
+ if ((sameGen || !child.isDirty_) &&
1652
+ child._fbCrossMode === crossMode &&
1653
+ sameFloat(child._fbOwnerW, ownerWidth) &&
1654
+ sameFloat(child._fbOwnerH, ownerHeight) &&
1655
+ sameFloat(child._fbAvailMain, availableMain) &&
1656
+ sameFloat(child._fbAvailCross, availableCross)) {
1657
+ return child._fbBasis;
1658
+ }
1659
+ const cs = child.style;
1660
+ const isMainRow = isRow(mainAxis);
1661
+ // Explicit flex-basis
1662
+ const basis = resolveValue(cs.flexBasis, availableMain);
1663
+ if (isDefined(basis)) {
1664
+ const b = Math.max(0, basis);
1665
+ child._fbBasis = b;
1666
+ child._fbOwnerW = ownerWidth;
1667
+ child._fbOwnerH = ownerHeight;
1668
+ child._fbAvailMain = availableMain;
1669
+ child._fbAvailCross = availableCross;
1670
+ child._fbCrossMode = crossMode;
1671
+ child._fbGen = _generation;
1672
+ return b;
1673
+ }
1674
+ // Style dimension on main axis
1675
+ const mainStyleDim = isMainRow ? cs.width : cs.height;
1676
+ const mainOwner = isMainRow ? ownerWidth : ownerHeight;
1677
+ const resolved = resolveValue(mainStyleDim, mainOwner);
1678
+ if (isDefined(resolved)) {
1679
+ const b = Math.max(0, resolved);
1680
+ child._fbBasis = b;
1681
+ child._fbOwnerW = ownerWidth;
1682
+ child._fbOwnerH = ownerHeight;
1683
+ child._fbAvailMain = availableMain;
1684
+ child._fbAvailCross = availableCross;
1685
+ child._fbCrossMode = crossMode;
1686
+ child._fbGen = _generation;
1687
+ return b;
1688
+ }
1689
+ // Need to measure the child to get its natural size
1690
+ const crossStyleDim = isMainRow ? cs.height : cs.width;
1691
+ const crossOwner = isMainRow ? ownerHeight : ownerWidth;
1692
+ let crossConstraint = resolveValue(crossStyleDim, crossOwner);
1693
+ let crossConstraintMode = isDefined(crossConstraint)
1694
+ ? MeasureMode.Exactly
1695
+ : MeasureMode.Undefined;
1696
+ if (!isDefined(crossConstraint) && isDefined(availableCross)) {
1697
+ crossConstraint = availableCross;
1698
+ crossConstraintMode =
1699
+ crossMode === MeasureMode.Exactly && isStretchAlign(child)
1700
+ ? MeasureMode.Exactly
1701
+ : MeasureMode.AtMost;
1702
+ }
1703
+ // Upstream yoga (YGNodeComputeFlexBasisForChild) passes the available inner
1704
+ // width with mode AtMost when the subtree will call a measure-func — so text
1705
+ // nodes don't report unconstrained intrinsic width as flex-basis, which
1706
+ // would force siblings to shrink and the text to wrap at the wrong width.
1707
+ // Passing Undefined here made Ink's <Text> inside <Box flexGrow={1}> get
1708
+ // width = intrinsic instead of available, dropping chars at wrap boundaries.
1709
+ //
1710
+ // Two constraints on when this applies:
1711
+ // - Width only. Height is never constrained during basis measurement —
1712
+ // column containers must measure children at natural height so
1713
+ // scrollable content can overflow (constraining height clips ScrollBox).
1714
+ // - Subtree has a measure-func. Pure layout subtrees (no measure-func)
1715
+ // with flex-grow children would grow into the AtMost constraint,
1716
+ // inflating the basis (breaks YGMinMaxDimensionTest flex_grow_in_at_most
1717
+ // where a flexGrow:1 child should stay at basis 0, not grow to 100).
1718
+ let mainConstraint = NaN;
1719
+ let mainConstraintMode = MeasureMode.Undefined;
1720
+ if (isMainRow && isDefined(availableMain) && hasMeasureFuncInSubtree(child)) {
1721
+ mainConstraint = availableMain;
1722
+ mainConstraintMode = MeasureMode.AtMost;
1723
+ }
1724
+ const mw = isMainRow ? mainConstraint : crossConstraint;
1725
+ const mh = isMainRow ? crossConstraint : mainConstraint;
1726
+ const mwMode = isMainRow ? mainConstraintMode : crossConstraintMode;
1727
+ const mhMode = isMainRow ? crossConstraintMode : mainConstraintMode;
1728
+ layoutNode(child, mw, mh, mwMode, mhMode, ownerWidth, ownerHeight, false);
1729
+ const b = isMainRow ? child.layout.width : child.layout.height;
1730
+ child._fbBasis = b;
1731
+ child._fbOwnerW = ownerWidth;
1732
+ child._fbOwnerH = ownerHeight;
1733
+ child._fbAvailMain = availableMain;
1734
+ child._fbAvailCross = availableCross;
1735
+ child._fbCrossMode = crossMode;
1736
+ child._fbGen = _generation;
1737
+ return b;
1738
+ }
1739
+ function hasMeasureFuncInSubtree(node) {
1740
+ if (node.measureFunc)
1741
+ return true;
1742
+ for (const c of node.children) {
1743
+ if (hasMeasureFuncInSubtree(c))
1744
+ return true;
1745
+ }
1746
+ return false;
1747
+ }
1748
+ function resolveFlexibleLengths(children, availableInnerMain, totalFlexBasis, isMainRow, ownerW, ownerH) {
1749
+ // Multi-pass flex distribution per CSS flexbox spec §9.7 "Resolving Flexible
1750
+ // Lengths": distribute free space, detect min/max violations, freeze all
1751
+ // violators, redistribute among unfrozen children. Repeat until stable.
1752
+ const n = children.length;
1753
+ const frozen = new Array(n).fill(false);
1754
+ const initialFree = isDefined(availableInnerMain)
1755
+ ? availableInnerMain - totalFlexBasis
1756
+ : 0;
1757
+ // Freeze inflexible items at their clamped basis
1758
+ for (let i = 0; i < n; i++) {
1759
+ const c = children[i];
1760
+ const clamped = boundAxis(c.style, isMainRow, c._flexBasis, ownerW, ownerH);
1761
+ const inflexible = !isDefined(availableInnerMain) ||
1762
+ (initialFree >= 0 ? c.style.flexGrow === 0 : c.style.flexShrink === 0);
1763
+ if (inflexible) {
1764
+ c._mainSize = Math.max(0, clamped);
1765
+ frozen[i] = true;
1766
+ }
1767
+ else {
1768
+ c._mainSize = c._flexBasis;
1769
+ }
1770
+ }
1771
+ // Iteratively distribute until no violations. Free space is recomputed each
1772
+ // pass: initial free space minus the delta frozen children consumed beyond
1773
+ // (or below) their basis.
1774
+ const unclamped = new Array(n);
1775
+ for (let iter = 0; iter <= n; iter++) {
1776
+ let frozenDelta = 0;
1777
+ let totalGrow = 0;
1778
+ let totalShrinkScaled = 0;
1779
+ let unfrozenCount = 0;
1780
+ for (let i = 0; i < n; i++) {
1781
+ const c = children[i];
1782
+ if (frozen[i]) {
1783
+ frozenDelta += c._mainSize - c._flexBasis;
1784
+ }
1785
+ else {
1786
+ totalGrow += c.style.flexGrow;
1787
+ totalShrinkScaled += c.style.flexShrink * c._flexBasis;
1788
+ unfrozenCount++;
1789
+ }
1790
+ }
1791
+ if (unfrozenCount === 0)
1792
+ break;
1793
+ let remaining = initialFree - frozenDelta;
1794
+ // Spec §9.7 step 4c: if sum of flex factors < 1, only distribute
1795
+ // initialFree × sum, not the full remaining space (partial flex).
1796
+ if (remaining > 0 && totalGrow > 0 && totalGrow < 1) {
1797
+ const scaled = initialFree * totalGrow;
1798
+ if (scaled < remaining)
1799
+ remaining = scaled;
1800
+ }
1801
+ else if (remaining < 0 && totalShrinkScaled > 0) {
1802
+ let totalShrink = 0;
1803
+ for (let i = 0; i < n; i++) {
1804
+ if (!frozen[i])
1805
+ totalShrink += children[i].style.flexShrink;
1806
+ }
1807
+ if (totalShrink < 1) {
1808
+ const scaled = initialFree * totalShrink;
1809
+ if (scaled > remaining)
1810
+ remaining = scaled;
1811
+ }
1812
+ }
1813
+ // Compute targets + violations for all unfrozen children
1814
+ let totalViolation = 0;
1815
+ for (let i = 0; i < n; i++) {
1816
+ if (frozen[i])
1817
+ continue;
1818
+ const c = children[i];
1819
+ let t = c._flexBasis;
1820
+ if (remaining > 0 && totalGrow > 0) {
1821
+ t += (remaining * c.style.flexGrow) / totalGrow;
1822
+ }
1823
+ else if (remaining < 0 && totalShrinkScaled > 0) {
1824
+ t +=
1825
+ (remaining * (c.style.flexShrink * c._flexBasis)) / totalShrinkScaled;
1826
+ }
1827
+ unclamped[i] = t;
1828
+ const clamped = Math.max(0, boundAxis(c.style, isMainRow, t, ownerW, ownerH));
1829
+ c._mainSize = clamped;
1830
+ totalViolation += clamped - t;
1831
+ }
1832
+ // Freeze per spec §9.7 step 5: if totalViolation is zero freeze all; if
1833
+ // positive freeze min-violators; if negative freeze max-violators.
1834
+ if (totalViolation === 0)
1835
+ break;
1836
+ let anyFrozen = false;
1837
+ for (let i = 0; i < n; i++) {
1838
+ if (frozen[i])
1839
+ continue;
1840
+ const v = children[i]._mainSize - unclamped[i];
1841
+ if ((totalViolation > 0 && v > 0) || (totalViolation < 0 && v < 0)) {
1842
+ frozen[i] = true;
1843
+ anyFrozen = true;
1844
+ }
1845
+ }
1846
+ if (!anyFrozen)
1847
+ break;
1848
+ }
1849
+ }
1850
+ function isStretchAlign(child) {
1851
+ const p = child.parent;
1852
+ if (!p)
1853
+ return false;
1854
+ const align = child.style.alignSelf === Align.Auto
1855
+ ? p.style.alignItems
1856
+ : child.style.alignSelf;
1857
+ return align === Align.Stretch;
1858
+ }
1859
+ function resolveChildAlign(parent, child) {
1860
+ return child.style.alignSelf === Align.Auto
1861
+ ? parent.style.alignItems
1862
+ : child.style.alignSelf;
1863
+ }
1864
+ // Baseline of a node per CSS Flexbox §8.5 / yoga's YGBaseline. Leaf nodes
1865
+ // (no children) use their own height. Containers recurse into the first
1866
+ // baseline-aligned child on the first line (or the first flow child if none
1867
+ // are baseline-aligned), returning that child's baseline + its top offset.
1868
+ function calculateBaseline(node) {
1869
+ let baselineChild = null;
1870
+ for (const c of node.children) {
1871
+ if (c._lineIndex > 0)
1872
+ break;
1873
+ if (c.style.positionType === PositionType.Absolute)
1874
+ continue;
1875
+ if (c.style.display === Display.None)
1876
+ continue;
1877
+ if (resolveChildAlign(node, c) === Align.Baseline ||
1878
+ c.isReferenceBaseline_) {
1879
+ baselineChild = c;
1880
+ break;
1881
+ }
1882
+ if (baselineChild === null)
1883
+ baselineChild = c;
1884
+ }
1885
+ if (baselineChild === null)
1886
+ return node.layout.height;
1887
+ return calculateBaseline(baselineChild) + baselineChild.layout.top;
1888
+ }
1889
+ // A container uses baseline layout only for row direction, when either
1890
+ // align-items is baseline or any flow child has align-self: baseline.
1891
+ function isBaselineLayout(node, flowChildren) {
1892
+ if (!isRow(node.style.flexDirection))
1893
+ return false;
1894
+ if (node.style.alignItems === Align.Baseline)
1895
+ return true;
1896
+ for (const c of flowChildren) {
1897
+ if (c.style.alignSelf === Align.Baseline)
1898
+ return true;
1899
+ }
1900
+ return false;
1901
+ }
1902
+ function childMarginForAxis(child, axis, ownerWidth) {
1903
+ if (!child._hasMargin)
1904
+ return 0;
1905
+ const lead = resolveEdge(child.style.margin, leadingEdge(axis), ownerWidth);
1906
+ const trail = resolveEdge(child.style.margin, trailingEdge(axis), ownerWidth);
1907
+ return lead + trail;
1908
+ }
1909
+ function resolveGap(style, gutter, ownerSize) {
1910
+ let v = style.gap[gutter];
1911
+ if (v.unit === Unit.Undefined)
1912
+ v = style.gap[Gutter.All];
1913
+ const r = resolveValue(v, ownerSize);
1914
+ return isDefined(r) ? Math.max(0, r) : 0;
1915
+ }
1916
+ function boundAxis(style, isWidth, value, ownerWidth, ownerHeight) {
1917
+ const minV = isWidth ? style.minWidth : style.minHeight;
1918
+ const maxV = isWidth ? style.maxWidth : style.maxHeight;
1919
+ const minU = minV.unit;
1920
+ const maxU = maxV.unit;
1921
+ // Fast path: no min/max constraints set. Per CPU profile this is the
1922
+ // overwhelmingly common case (~32k calls/layout on the 1000-node bench,
1923
+ // nearly all with undefined min/max) — skipping 2× resolveValue + 2× isNaN
1924
+ // that always no-op. Unit.Undefined = 0.
1925
+ if (minU === 0 && maxU === 0)
1926
+ return value;
1927
+ const owner = isWidth ? ownerWidth : ownerHeight;
1928
+ let v = value;
1929
+ // Inlined resolveValue: Unit.Point=1, Unit.Percent=2. `m === m` is !isNaN.
1930
+ if (maxU === 1) {
1931
+ if (v > maxV.value)
1932
+ v = maxV.value;
1933
+ }
1934
+ else if (maxU === 2) {
1935
+ const m = (maxV.value * owner) / 100;
1936
+ if (m === m && v > m)
1937
+ v = m;
1938
+ }
1939
+ if (minU === 1) {
1940
+ if (v < minV.value)
1941
+ v = minV.value;
1942
+ }
1943
+ else if (minU === 2) {
1944
+ const m = (minV.value * owner) / 100;
1945
+ if (m === m && v < m)
1946
+ v = m;
1947
+ }
1948
+ return v;
1949
+ }
1950
+ function zeroLayoutRecursive(node) {
1951
+ for (const c of node.children) {
1952
+ c.layout.left = 0;
1953
+ c.layout.top = 0;
1954
+ c.layout.width = 0;
1955
+ c.layout.height = 0;
1956
+ // Invalidate layout cache — without this, unhide → calculateLayout finds
1957
+ // the child clean (!isDirty_) with _hasL intact, hits the cache at line
1958
+ // ~1086, restores stale _lOutW/_lOutH, and returns early — skipping the
1959
+ // child-positioning recursion. Grandchildren stay at (0,0,0,0) from the
1960
+ // zeroing above and render invisible. isDirty_=true also gates _cN and
1961
+ // _fbBasis via their (sameGen || !isDirty_) checks — _cGen/_fbGen freeze
1962
+ // during hide so sameGen is false on unhide.
1963
+ c.isDirty_ = true;
1964
+ c._hasL = false;
1965
+ c._hasM = false;
1966
+ zeroLayoutRecursive(c);
1967
+ }
1968
+ }
1969
+ function collectLayoutChildren(node, flow, abs) {
1970
+ // Partition a node's children into flow and absolute lists, flattening
1971
+ // display:contents subtrees so their children are laid out as direct
1972
+ // children of this node (per CSS display:contents spec — the box is removed
1973
+ // from the layout tree but its children remain, lifted to the grandparent).
1974
+ for (const c of node.children) {
1975
+ const disp = c.style.display;
1976
+ if (disp === Display.None) {
1977
+ c.layout.left = 0;
1978
+ c.layout.top = 0;
1979
+ c.layout.width = 0;
1980
+ c.layout.height = 0;
1981
+ zeroLayoutRecursive(c);
1982
+ }
1983
+ else if (disp === Display.Contents) {
1984
+ c.layout.left = 0;
1985
+ c.layout.top = 0;
1986
+ c.layout.width = 0;
1987
+ c.layout.height = 0;
1988
+ // Recurse — nested display:contents lifts all the way up. The contents
1989
+ // node's own margin/padding/position/dimensions are ignored.
1990
+ collectLayoutChildren(c, flow, abs);
1991
+ }
1992
+ else if (c.style.positionType === PositionType.Absolute) {
1993
+ abs.push(c);
1994
+ }
1995
+ else {
1996
+ flow.push(c);
1997
+ }
1998
+ }
1999
+ }
2000
+ function roundLayout(node, scale, absLeft, absTop) {
2001
+ if (scale === 0)
2002
+ return;
2003
+ const l = node.layout;
2004
+ const nodeLeft = l.left;
2005
+ const nodeTop = l.top;
2006
+ const nodeWidth = l.width;
2007
+ const nodeHeight = l.height;
2008
+ const absNodeLeft = absLeft + nodeLeft;
2009
+ const absNodeTop = absTop + nodeTop;
2010
+ // Upstream YGRoundValueToPixelGrid: text nodes (has measureFunc) floor their
2011
+ // positions so wrapped text never starts past its allocated column. Width
2012
+ // uses ceil-if-fractional to avoid clipping the last glyph. Non-text nodes
2013
+ // use standard round. Matches yoga's PixelGrid.cpp — without this, justify
2014
+ // center/space-evenly positions are off-by-one vs WASM and flex-shrink
2015
+ // overflow places siblings at the wrong column.
2016
+ const isText = node.measureFunc !== null;
2017
+ l.left = roundValue(nodeLeft, scale, false, isText);
2018
+ l.top = roundValue(nodeTop, scale, false, isText);
2019
+ // Width/height rounded via absolute edges to avoid cumulative drift
2020
+ const absRight = absNodeLeft + nodeWidth;
2021
+ const absBottom = absNodeTop + nodeHeight;
2022
+ const hasFracW = !isWholeNumber(nodeWidth * scale);
2023
+ const hasFracH = !isWholeNumber(nodeHeight * scale);
2024
+ l.width =
2025
+ roundValue(absRight, scale, isText && hasFracW, isText && !hasFracW) -
2026
+ roundValue(absNodeLeft, scale, false, isText);
2027
+ l.height =
2028
+ roundValue(absBottom, scale, isText && hasFracH, isText && !hasFracH) -
2029
+ roundValue(absNodeTop, scale, false, isText);
2030
+ for (const c of node.children) {
2031
+ roundLayout(c, scale, absNodeLeft, absNodeTop);
2032
+ }
2033
+ }
2034
+ function isWholeNumber(v) {
2035
+ const frac = v - Math.floor(v);
2036
+ return frac < 0.0001 || frac > 0.9999;
2037
+ }
2038
+ function roundValue(v, scale, forceCeil, forceFloor) {
2039
+ let scaled = v * scale;
2040
+ let frac = scaled - Math.floor(scaled);
2041
+ if (frac < 0)
2042
+ frac += 1;
2043
+ // Float-epsilon tolerance matches upstream YGDoubleEqual (1e-4)
2044
+ if (frac < 0.0001) {
2045
+ scaled = Math.floor(scaled);
2046
+ }
2047
+ else if (frac > 0.9999) {
2048
+ scaled = Math.ceil(scaled);
2049
+ }
2050
+ else if (forceCeil) {
2051
+ scaled = Math.ceil(scaled);
2052
+ }
2053
+ else if (forceFloor) {
2054
+ scaled = Math.floor(scaled);
2055
+ }
2056
+ else {
2057
+ // Round half-up (>= 0.5 goes up), per upstream
2058
+ scaled = Math.floor(scaled) + (frac >= 0.4999 ? 1 : 0);
2059
+ }
2060
+ return scaled / scale;
2061
+ }
2062
+ // --
2063
+ // Helpers
2064
+ function parseDimension(v) {
2065
+ if (v === undefined)
2066
+ return UNDEFINED_VALUE;
2067
+ if (v === 'auto')
2068
+ return AUTO_VALUE;
2069
+ if (typeof v === 'number') {
2070
+ // WASM yoga's YGFloatIsUndefined treats NaN and ±Infinity as undefined.
2071
+ // Ink passes height={Infinity} (e.g. LogSelector maxHeight default) and
2072
+ // expects it to mean "unconstrained" — storing it as a literal point value
2073
+ // makes the node height Infinity and breaks all downstream layout.
2074
+ return Number.isFinite(v) ? pointValue(v) : UNDEFINED_VALUE;
2075
+ }
2076
+ if (typeof v === 'string' && v.endsWith('%')) {
2077
+ return percentValue(parseFloat(v));
2078
+ }
2079
+ const n = parseFloat(v);
2080
+ return isNaN(n) ? UNDEFINED_VALUE : pointValue(n);
2081
+ }
2082
+ function physicalEdge(edge) {
2083
+ switch (edge) {
2084
+ case Edge.Left:
2085
+ case Edge.Start:
2086
+ return EDGE_LEFT;
2087
+ case Edge.Top:
2088
+ return EDGE_TOP;
2089
+ case Edge.Right:
2090
+ case Edge.End:
2091
+ return EDGE_RIGHT;
2092
+ case Edge.Bottom:
2093
+ return EDGE_BOTTOM;
2094
+ default:
2095
+ return EDGE_LEFT;
2096
+ }
2097
+ }
2098
+ const YOGA_INSTANCE = {
2099
+ Config: {
2100
+ create: createConfig,
2101
+ destroy() { },
2102
+ },
2103
+ Node: {
2104
+ create: (config) => new Node(config),
2105
+ createDefault: () => new Node(),
2106
+ createWithConfig: (config) => new Node(config),
2107
+ destroy() { },
2108
+ },
2109
+ };
2110
+ export function loadYoga() {
2111
+ return Promise.resolve(YOGA_INSTANCE);
2112
+ }
2113
+ export default YOGA_INSTANCE;