thaddeus 1.0.18 → 1.0.27

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 (2084) 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 +950 -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/SandboxViolationExpandedView.tsx +3 -0
  436. package/src/components/ScrollKeybindingHandler.js +982 -0
  437. package/src/components/SearchBox.js +56 -0
  438. package/src/components/SentryErrorBoundary.js +16 -0
  439. package/src/components/SessionBackgroundHint.js +105 -0
  440. package/src/components/SessionPreview.js +200 -0
  441. package/src/components/Settings/Config.js +1626 -0
  442. package/src/components/Settings/Settings.js +131 -0
  443. package/src/components/Settings/Status.js +230 -0
  444. package/src/components/Settings/Usage.js +341 -0
  445. package/src/components/ShowInIDEPrompt.js +152 -0
  446. package/src/components/SkillImprovementSurvey.js +130 -0
  447. package/src/components/Spinner/FlashingChar.js +52 -0
  448. package/src/components/Spinner/GlimmerMessage.js +329 -0
  449. package/src/components/Spinner/ShimmerChar.js +23 -0
  450. package/src/components/Spinner/SpinnerAnimationRow.js +170 -0
  451. package/src/components/Spinner/SpinnerGlyph.js +70 -0
  452. package/src/components/Spinner/TeammateSpinnerLine.js +171 -0
  453. package/src/components/Spinner/TeammateSpinnerTree.js +269 -0
  454. package/src/components/Spinner/index.js +9 -0
  455. package/src/components/Spinner/teammateSelectHint.js +1 -0
  456. package/src/components/Spinner/useShimmerAnimation.js +22 -0
  457. package/src/components/Spinner/useStalledAnimation.js +63 -0
  458. package/src/components/Spinner/utils.js +78 -0
  459. package/src/components/Spinner.js +474 -0
  460. package/src/components/Stats.js +1000 -0
  461. package/src/components/StatusLine.js +286 -0
  462. package/src/components/StatusNotices.js +50 -0
  463. package/src/components/StructuredDiff/Fallback.js +336 -0
  464. package/src/components/StructuredDiff/colorDiff.js +37 -0
  465. package/src/components/StructuredDiff.js +153 -0
  466. package/src/components/StructuredDiffList.js +9 -0
  467. package/src/components/TagTabs.js +101 -0
  468. package/src/components/TaskListV2.js +333 -0
  469. package/src/components/TeammateViewHeader.js +88 -0
  470. package/src/components/TeleportError.js +191 -0
  471. package/src/components/TeleportProgress.js +131 -0
  472. package/src/components/TeleportRepoMismatchDialog.js +98 -0
  473. package/src/components/TeleportResumeWrapper.js +158 -0
  474. package/src/components/TeleportStash.js +82 -0
  475. package/src/components/TextInput.js +108 -0
  476. package/src/components/ThaddeusHint/PluginHintMenu.js +37 -0
  477. package/src/components/ThemePicker.js +331 -0
  478. package/src/components/ThinkingToggle.js +154 -0
  479. package/src/components/TokenWarning.js +171 -0
  480. package/src/components/ToolUseLoader.js +35 -0
  481. package/src/components/TrustDialog/TrustDialog.js +301 -0
  482. package/src/components/TrustDialog/utils.js +199 -0
  483. package/src/components/UndercoverAutoCallout.js +5 -0
  484. package/src/components/ValidationErrorsList.js +147 -0
  485. package/src/components/VimTextInput.js +136 -0
  486. package/src/components/VirtualMessageList.js +893 -0
  487. package/src/components/WorkflowMultiselectDialog.js +118 -0
  488. package/src/components/WorktreeExitDialog.js +220 -0
  489. package/src/components/agents/AgentDetail.js +227 -0
  490. package/src/components/agents/AgentEditor.js +147 -0
  491. package/src/components/agents/AgentNavigationFooter.js +22 -0
  492. package/src/components/agents/AgentsList.js +436 -0
  493. package/src/components/agents/AgentsMenu.js +849 -0
  494. package/src/components/agents/ColorPicker.js +110 -0
  495. package/src/components/agents/ModelSelector.js +63 -0
  496. package/src/components/agents/SnapshotUpdateDialog.js +14 -0
  497. package/src/components/agents/ToolSelector.js +557 -0
  498. package/src/components/agents/agentFileUtils.js +179 -0
  499. package/src/components/agents/generateAgent.js +161 -0
  500. package/src/components/agents/new-agent-creation/CreateAgentWizard.js +89 -0
  501. package/src/components/agents/new-agent-creation/wizard-steps/ColorStep.js +81 -0
  502. package/src/components/agents/new-agent-creation/wizard-steps/ConfirmStep.js +387 -0
  503. package/src/components/agents/new-agent-creation/wizard-steps/ConfirmStepWrapper.js +63 -0
  504. package/src/components/agents/new-agent-creation/wizard-steps/DescriptionStep.js +126 -0
  505. package/src/components/agents/new-agent-creation/wizard-steps/GenerateStep.js +118 -0
  506. package/src/components/agents/new-agent-creation/wizard-steps/LocationStep.js +80 -0
  507. package/src/components/agents/new-agent-creation/wizard-steps/MemoryStep.js +108 -0
  508. package/src/components/agents/new-agent-creation/wizard-steps/MethodStep.js +80 -0
  509. package/src/components/agents/new-agent-creation/wizard-steps/ModelStep.js +49 -0
  510. package/src/components/agents/new-agent-creation/wizard-steps/PromptStep.js +131 -0
  511. package/src/components/agents/new-agent-creation/wizard-steps/ToolsStep.js +52 -0
  512. package/src/components/agents/new-agent-creation/wizard-steps/TypeStep.js +100 -0
  513. package/src/components/agents/types.js +4 -0
  514. package/src/components/agents/utils.js +14 -0
  515. package/src/components/agents/validateAgent.js +79 -0
  516. package/src/components/design-system/Byline.js +72 -0
  517. package/src/components/design-system/Dialog.js +117 -0
  518. package/src/components/design-system/Divider.js +110 -0
  519. package/src/components/design-system/FuzzyPicker.js +191 -0
  520. package/src/components/design-system/KeyboardShortcutHint.js +68 -0
  521. package/src/components/design-system/ListItem.js +184 -0
  522. package/src/components/design-system/LoadingState.js +69 -0
  523. package/src/components/design-system/Pane.js +69 -0
  524. package/src/components/design-system/ProgressBar.js +63 -0
  525. package/src/components/design-system/Ratchet.js +71 -0
  526. package/src/components/design-system/StatusIcon.js +70 -0
  527. package/src/components/design-system/Tabs.js +269 -0
  528. package/src/components/design-system/ThemeProvider.js +137 -0
  529. package/src/components/design-system/ThemedBox.js +126 -0
  530. package/src/components/design-system/ThemedText.js +60 -0
  531. package/src/components/design-system/color.js +22 -0
  532. package/src/components/diff/DiffDetailView.js +285 -0
  533. package/src/components/diff/DiffDialog.js +387 -0
  534. package/src/components/diff/DiffFileList.js +292 -0
  535. package/src/components/grove/Grove.js +483 -0
  536. package/src/components/hooks/HooksConfigMenu.js +583 -0
  537. package/src/components/hooks/PromptDialog.js +82 -0
  538. package/src/components/hooks/SelectEventMode.js +118 -0
  539. package/src/components/hooks/SelectHookMode.js +101 -0
  540. package/src/components/hooks/SelectMatcherMode.js +131 -0
  541. package/src/components/hooks/ViewHookMode.js +204 -0
  542. package/src/components/mcp/CapabilitiesSection.js +56 -0
  543. package/src/components/mcp/ElicitationDialog.js +945 -0
  544. package/src/components/mcp/MCPAgentServerMenu.js +95 -0
  545. package/src/components/mcp/MCPListPanel.js +505 -0
  546. package/src/components/mcp/MCPReconnect.js +168 -0
  547. package/src/components/mcp/MCPRemoteServerMenu.js +460 -0
  548. package/src/components/mcp/MCPSettings.js +414 -0
  549. package/src/components/mcp/MCPStdioServerMenu.js +95 -0
  550. package/src/components/mcp/MCPToolDetailView.js +219 -0
  551. package/src/components/mcp/MCPToolListView.js +137 -0
  552. package/src/components/mcp/McpParsingWarnings.js +212 -0
  553. package/src/components/mcp/index.js +8 -0
  554. package/src/components/mcp/utils/reconnectHelpers.js +35 -0
  555. package/src/components/memory/MemoryFileSelector.js +454 -0
  556. package/src/components/memory/MemoryUpdateNotification.js +43 -0
  557. package/src/components/messageActions.js +418 -0
  558. package/src/components/messages/AdvisorMessage.js +152 -0
  559. package/src/components/messages/AssistantRedactedThinkingMessage.js +28 -0
  560. package/src/components/messages/AssistantTextMessage.js +287 -0
  561. package/src/components/messages/AssistantThinkingMessage.js +70 -0
  562. package/src/components/messages/AssistantToolUseMessage.js +324 -0
  563. package/src/components/messages/AttachmentMessage.js +418 -0
  564. package/src/components/messages/CollapsedReadSearchContent.js +363 -0
  565. package/src/components/messages/CompactBoundaryMessage.js +19 -0
  566. package/src/components/messages/GroupedToolUseContent.js +37 -0
  567. package/src/components/messages/HighlightedThinkingText.js +165 -0
  568. package/src/components/messages/HookProgressMessage.js +111 -0
  569. package/src/components/messages/PlanApprovalMessage.js +213 -0
  570. package/src/components/messages/RateLimitMessage.js +149 -0
  571. package/src/components/messages/ShutdownMessage.js +124 -0
  572. package/src/components/messages/SnipBoundaryMessage.js +7 -0
  573. package/src/components/messages/SystemAPIErrorMessage.js +136 -0
  574. package/src/components/messages/SystemTextMessage.js +842 -0
  575. package/src/components/messages/TaskAssignmentMessage.js +72 -0
  576. package/src/components/messages/UserAgentNotificationMessage.js +78 -0
  577. package/src/components/messages/UserBashInputMessage.js +52 -0
  578. package/src/components/messages/UserBashOutputMessage.js +55 -0
  579. package/src/components/messages/UserChannelMessage.js +130 -0
  580. package/src/components/messages/UserCommandMessage.js +107 -0
  581. package/src/components/messages/UserCrossSessionMessage.js +11 -0
  582. package/src/components/messages/UserForkBoilerplateMessage.js +11 -0
  583. package/src/components/messages/UserGitHubWebhookMessage.js +12 -0
  584. package/src/components/messages/UserImageMessage.js +54 -0
  585. package/src/components/messages/UserLocalCommandOutputMessage.js +170 -0
  586. package/src/components/messages/UserMemoryInputMessage.js +73 -0
  587. package/src/components/messages/UserPlanMessage.js +38 -0
  588. package/src/components/messages/UserPromptMessage.js +63 -0
  589. package/src/components/messages/UserResourceUpdateMessage.js +102 -0
  590. package/src/components/messages/UserTeammateMessage.js +156 -0
  591. package/src/components/messages/UserTextMessage.js +270 -0
  592. package/src/components/messages/UserToolResultMessage/RejectedPlanMessage.js +28 -0
  593. package/src/components/messages/UserToolResultMessage/RejectedToolUseMessage.js +17 -0
  594. package/src/components/messages/UserToolResultMessage/UserToolCanceledMessage.js +17 -0
  595. package/src/components/messages/UserToolResultMessage/UserToolErrorMessage.js +92 -0
  596. package/src/components/messages/UserToolResultMessage/UserToolRejectMessage.js +74 -0
  597. package/src/components/messages/UserToolResultMessage/UserToolResultMessage.js +84 -0
  598. package/src/components/messages/UserToolResultMessage/UserToolSuccessMessage.js +58 -0
  599. package/src/components/messages/UserToolResultMessage/utils.js +43 -0
  600. package/src/components/messages/nullRenderingAttachments.js +58 -0
  601. package/src/components/messages/teamMemCollapsed.js +142 -0
  602. package/src/components/messages/teamMemSaved.js +16 -0
  603. package/src/components/permissions/AskUserQuestionPermissionRequest/AskUserQuestionPermissionRequest.js +659 -0
  604. package/src/components/permissions/AskUserQuestionPermissionRequest/PreviewBox.js +219 -0
  605. package/src/components/permissions/AskUserQuestionPermissionRequest/PreviewQuestionView.js +227 -0
  606. package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionNavigationBar.js +175 -0
  607. package/src/components/permissions/AskUserQuestionPermissionRequest/QuestionView.js +444 -0
  608. package/src/components/permissions/AskUserQuestionPermissionRequest/SubmitQuestionsView.js +137 -0
  609. package/src/components/permissions/AskUserQuestionPermissionRequest/use-multiple-choice-state.js +100 -0
  610. package/src/components/permissions/BashPermissionRequest/BashPermissionRequest.js +404 -0
  611. package/src/components/permissions/BashPermissionRequest/bashToolUseOptions.js +110 -0
  612. package/src/components/permissions/ComputerUseApproval/ComputerUseApproval.js +449 -0
  613. package/src/components/permissions/EnterPlanModePermissionRequest/EnterPlanModePermissionRequest.js +126 -0
  614. package/src/components/permissions/ExitPlanModePermissionRequest/ExitPlanModePermissionRequest.js +653 -0
  615. package/src/components/permissions/FallbackPermissionRequest.js +349 -0
  616. package/src/components/permissions/FileEditPermissionRequest/FileEditPermissionRequest.js +185 -0
  617. package/src/components/permissions/FilePermissionDialog/FilePermissionDialog.js +108 -0
  618. package/src/components/permissions/FilePermissionDialog/ideDiffConfig.js +13 -0
  619. package/src/components/permissions/FilePermissionDialog/permissionOptions.js +137 -0
  620. package/src/components/permissions/FilePermissionDialog/useFilePermissionDialog.js +131 -0
  621. package/src/components/permissions/FilePermissionDialog/usePermissionHandler.js +86 -0
  622. package/src/components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.js +164 -0
  623. package/src/components/permissions/FileWritePermissionRequest/FileWriteToolDiff.js +79 -0
  624. package/src/components/permissions/FilesystemPermissionRequest/FilesystemPermissionRequest.js +113 -0
  625. package/src/components/permissions/MonitorPermissionRequest/MonitorPermissionRequest.js +7 -0
  626. package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditPermissionRequest.js +164 -0
  627. package/src/components/permissions/NotebookEditPermissionRequest/NotebookEditToolDiff.js +218 -0
  628. package/src/components/permissions/PermissionDecisionDebugInfo.js +467 -0
  629. package/src/components/permissions/PermissionDialog.js +55 -0
  630. package/src/components/permissions/PermissionExplanation.js +269 -0
  631. package/src/components/permissions/PermissionPrompt.js +316 -0
  632. package/src/components/permissions/PermissionRequest.js +159 -0
  633. package/src/components/permissions/PermissionRequestTitle.js +58 -0
  634. package/src/components/permissions/PermissionRuleExplanation.js +110 -0
  635. package/src/components/permissions/PowerShellPermissionRequest/PowerShellPermissionRequest.js +178 -0
  636. package/src/components/permissions/PowerShellPermissionRequest/powershellToolUseOptions.js +73 -0
  637. package/src/components/permissions/ReviewArtifactPermissionRequest/ReviewArtifactPermissionRequest.js +7 -0
  638. package/src/components/permissions/SandboxPermissionRequest.js +162 -0
  639. package/src/components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.js +228 -0
  640. package/src/components/permissions/SkillPermissionRequest/SkillPermissionRequest.js +385 -0
  641. package/src/components/permissions/WebFetchPermissionRequest/WebFetchPermissionRequest.js +259 -0
  642. package/src/components/permissions/WorkerBadge.js +44 -0
  643. package/src/components/permissions/WorkerPendingPermission.js +107 -0
  644. package/src/components/permissions/hooks.js +163 -0
  645. package/src/components/permissions/rules/AddPermissionRules.js +171 -0
  646. package/src/components/permissions/rules/AddWorkspaceDirectory.js +335 -0
  647. package/src/components/permissions/rules/PermissionRuleDescription.js +78 -0
  648. package/src/components/permissions/rules/PermissionRuleInput.js +136 -0
  649. package/src/components/permissions/rules/PermissionRuleList.js +1190 -0
  650. package/src/components/permissions/rules/RecentDenialsTab.js +205 -0
  651. package/src/components/permissions/rules/RemoveWorkspaceDirectory.js +103 -0
  652. package/src/components/permissions/rules/WorkspaceTab.js +133 -0
  653. package/src/components/permissions/shellPermissionHelpers.js +112 -0
  654. package/src/components/permissions/useShellPermissionFeedback.js +108 -0
  655. package/src/components/permissions/utils.js +14 -0
  656. package/src/components/sandbox/SandboxConfigTab.js +48 -0
  657. package/src/components/sandbox/SandboxDependenciesTab.js +123 -0
  658. package/src/components/sandbox/SandboxDoctorSection.js +47 -0
  659. package/src/components/sandbox/SandboxOverridesTab.js +193 -0
  660. package/src/components/sandbox/SandboxSettings.js +297 -0
  661. package/src/components/shell/ExpandShellOutputContext.js +33 -0
  662. package/src/components/shell/OutputLine.js +110 -0
  663. package/src/components/shell/ShellProgressMessage.js +144 -0
  664. package/src/components/shell/ShellTimeDisplay.js +72 -0
  665. package/src/components/skills/SkillsMenu.js +239 -0
  666. package/src/components/tasks/AsyncAgentDetailDialog.js +235 -0
  667. package/src/components/tasks/BackgroundTask.js +364 -0
  668. package/src/components/tasks/BackgroundTaskStatus.js +419 -0
  669. package/src/components/tasks/BackgroundTasksDialog.js +494 -0
  670. package/src/components/tasks/DreamDetailDialog.js +251 -0
  671. package/src/components/tasks/InProcessTeammateDetailDialog.js +275 -0
  672. package/src/components/tasks/MonitorMcpDetailDialog.js +7 -0
  673. package/src/components/tasks/RemoteSessionDetailDialog.js +868 -0
  674. package/src/components/tasks/RemoteSessionProgress.js +249 -0
  675. package/src/components/tasks/ShellDetailDialog.js +403 -0
  676. package/src/components/tasks/ShellProgress.js +77 -0
  677. package/src/components/tasks/WorkflowDetailDialog.js +7 -0
  678. package/src/components/tasks/renderToolActivity.js +29 -0
  679. package/src/components/tasks/taskStatusUtils.js +94 -0
  680. package/src/components/teams/TeamStatus.js +77 -0
  681. package/src/components/teams/TeamsDialog.js +673 -0
  682. package/src/components/ui/OrderedList.js +66 -0
  683. package/src/components/ui/OrderedListItem.js +41 -0
  684. package/src/components/ui/TreeSelect.js +300 -0
  685. package/src/components/wizard/WizardDialogLayout.js +48 -0
  686. package/src/components/wizard/WizardNavigationFooter.js +11 -0
  687. package/src/components/wizard/WizardProvider.js +217 -0
  688. package/src/components/wizard/index.js +4 -0
  689. package/src/components/wizard/useWizard.js +9 -0
  690. package/src/constants/apiLimits.js +81 -0
  691. package/src/constants/betas.js +45 -0
  692. package/src/constants/common.js +29 -0
  693. package/src/constants/cyberRiskInstruction.js +23 -0
  694. package/src/constants/errorIds.js +14 -0
  695. package/src/constants/figures.js +38 -0
  696. package/src/constants/files.js +150 -0
  697. package/src/constants/github-app.js +139 -0
  698. package/src/constants/identity.js +112 -0
  699. package/src/constants/keys.js +10 -0
  700. package/src/constants/messages.js +1 -0
  701. package/src/constants/oauth.js +175 -0
  702. package/src/constants/outputStyles.js +162 -0
  703. package/src/constants/product.js +54 -0
  704. package/src/constants/prompts.js +994 -0
  705. package/src/constants/spinnerVerbs.js +98 -0
  706. package/src/constants/system.js +77 -0
  707. package/src/constants/systemPromptSections.js +39 -0
  708. package/src/constants/toolLimits.js +50 -0
  709. package/src/constants/tools.js +103 -0
  710. package/src/constants/turnCompletionVerbs.js +12 -0
  711. package/src/constants/xml.js +73 -0
  712. package/src/context/QueuedMessageContext.js +51 -0
  713. package/src/context/fpsMetrics.js +22 -0
  714. package/src/context/mailbox.js +35 -0
  715. package/src/context/modalContext.js +34 -0
  716. package/src/context/notifications.js +199 -0
  717. package/src/context/overlayContext.js +149 -0
  718. package/src/context/promptOverlayContext.js +118 -0
  719. package/src/context/stats.js +207 -0
  720. package/src/context/voice.js +74 -0
  721. package/src/context.js +146 -0
  722. package/src/coordinator/coordinatorMode.js +345 -0
  723. package/src/coordinator/workerAgent.js +24 -0
  724. package/src/cost-tracker.js +208 -0
  725. package/src/costHook.js +17 -0
  726. package/src/daemon/main.js +19 -0
  727. package/src/dialogLaunchers.js +77 -0
  728. package/src/entrypoints/agentSdkTypes.js +202 -0
  729. package/src/entrypoints/cli.js +226 -0
  730. package/src/entrypoints/init.js +265 -0
  731. package/src/entrypoints/mcp.js +141 -0
  732. package/src/entrypoints/sandboxTypes.js +112 -0
  733. package/src/entrypoints/sdk/controlSchemas.js +452 -0
  734. package/src/entrypoints/sdk/controlTypes.js +1 -0
  735. package/src/entrypoints/sdk/coreSchemas.js +1331 -0
  736. package/src/entrypoints/sdk/coreTypes.generated.js +3 -0
  737. package/src/entrypoints/sdk/coreTypes.js +49 -0
  738. package/src/entrypoints/sdk/runtimeTypes.js +1 -0
  739. package/src/entrypoints/sdk/sdkUtilityTypes.js +1 -0
  740. package/src/entrypoints/sdk/settingsTypes.generated.js +1 -0
  741. package/src/entrypoints/sdk/toolTypes.js +1 -0
  742. package/src/environment-runner/main.js +8 -0
  743. package/src/history.js +386 -0
  744. package/src/hooks/fileSuggestions.js +635 -0
  745. package/src/hooks/notifs/useAntOrgWarningNotification.js +5 -0
  746. package/src/hooks/notifs/useAutoModeUnavailableNotification.js +47 -0
  747. package/src/hooks/notifs/useCanSwitchToExistingSubscription.js +58 -0
  748. package/src/hooks/notifs/useDeprecationWarningNotification.js +43 -0
  749. package/src/hooks/notifs/useFastModeNotification.js +164 -0
  750. package/src/hooks/notifs/useIDEStatusIndicator.js +174 -0
  751. package/src/hooks/notifs/useInstallMessages.js +27 -0
  752. package/src/hooks/notifs/useLspInitializationNotification.js +144 -0
  753. package/src/hooks/notifs/useMcpConnectivityStatus.js +81 -0
  754. package/src/hooks/notifs/useModelMigrationNotifications.js +53 -0
  755. package/src/hooks/notifs/useNpmDeprecationNotification.js +25 -0
  756. package/src/hooks/notifs/usePluginAutoupdateNotification.js +83 -0
  757. package/src/hooks/notifs/usePluginInstallationStatus.js +128 -0
  758. package/src/hooks/notifs/useRateLimitWarningNotification.js +119 -0
  759. package/src/hooks/notifs/useSettingsErrors.js +64 -0
  760. package/src/hooks/notifs/useStartupNotification.js +33 -0
  761. package/src/hooks/notifs/useTeammateShutdownNotification.js +64 -0
  762. package/src/hooks/renderPlaceholder.js +26 -0
  763. package/src/hooks/toolPermission/PermissionContext.js +211 -0
  764. package/src/hooks/toolPermission/handlers/coordinatorHandler.js +44 -0
  765. package/src/hooks/toolPermission/handlers/interactiveHandler.js +397 -0
  766. package/src/hooks/toolPermission/handlers/swarmWorkerHandler.js +108 -0
  767. package/src/hooks/toolPermission/permissionLogging.js +145 -0
  768. package/src/hooks/unifiedSuggestions.js +130 -0
  769. package/src/hooks/useAfterFirstRender.js +12 -0
  770. package/src/hooks/useApiKeyVerification.js +63 -0
  771. package/src/hooks/useArrowKeyHistory.js +203 -0
  772. package/src/hooks/useAssistantHistory.js +193 -0
  773. package/src/hooks/useAwaySummary.js +105 -0
  774. package/src/hooks/useBackgroundTaskNavigation.js +204 -0
  775. package/src/hooks/useBlink.js +28 -0
  776. package/src/hooks/useCanUseTool.js +193 -0
  777. package/src/hooks/useCancelRequest.js +195 -0
  778. package/src/hooks/useChromeExtensionNotification.js +50 -0
  779. package/src/hooks/useClipboardImageHint.js +59 -0
  780. package/src/hooks/useCommandKeybindings.js +87 -0
  781. package/src/hooks/useCommandQueue.js +10 -0
  782. package/src/hooks/useCopyOnSelect.js +88 -0
  783. package/src/hooks/useDeferredHookMessages.js +43 -0
  784. package/src/hooks/useDiffData.js +69 -0
  785. package/src/hooks/useDiffInIDE.js +252 -0
  786. package/src/hooks/useDirectConnect.js +150 -0
  787. package/src/hooks/useDoublePress.js +44 -0
  788. package/src/hooks/useDynamicConfig.js +17 -0
  789. package/src/hooks/useElapsedTime.js +25 -0
  790. package/src/hooks/useExitOnCtrlCD.js +57 -0
  791. package/src/hooks/useExitOnCtrlCDWithKeybindings.js +17 -0
  792. package/src/hooks/useFileHistorySnapshotInit.js +14 -0
  793. package/src/hooks/useGlobalKeybindings.js +213 -0
  794. package/src/hooks/useHistorySearch.js +241 -0
  795. package/src/hooks/useIDEIntegration.js +56 -0
  796. package/src/hooks/useIdeAtMentioned.js +51 -0
  797. package/src/hooks/useIdeConnectionStatus.js +21 -0
  798. package/src/hooks/useIdeLogging.js +29 -0
  799. package/src/hooks/useIdeSelection.js +106 -0
  800. package/src/hooks/useInboxPoller.js +709 -0
  801. package/src/hooks/useInputBuffer.js +73 -0
  802. package/src/hooks/useIssueFlagBanner.js +115 -0
  803. package/src/hooks/useLogMessages.js +98 -0
  804. package/src/hooks/useLspPluginRecommendation.js +176 -0
  805. package/src/hooks/useMailboxBridge.js +15 -0
  806. package/src/hooks/useMainLoopModel.js +25 -0
  807. package/src/hooks/useManagePlugins.js +261 -0
  808. package/src/hooks/useMemoryUsage.js +28 -0
  809. package/src/hooks/useMergedClients.js +11 -0
  810. package/src/hooks/useMergedCommands.js +10 -0
  811. package/src/hooks/useMergedTools.js +32 -0
  812. package/src/hooks/useMinDisplayTime.js +26 -0
  813. package/src/hooks/useNotifyAfterTimeout.js +51 -0
  814. package/src/hooks/useOfficialMarketplaceNotification.js +47 -0
  815. package/src/hooks/usePasteHandler.js +195 -0
  816. package/src/hooks/usePluginRecommendationBase.js +101 -0
  817. package/src/hooks/usePrStatus.js +91 -0
  818. package/src/hooks/usePromptSuggestion.js +128 -0
  819. package/src/hooks/usePromptsFromClaudeInChrome.js +66 -0
  820. package/src/hooks/useQueueProcessor.js +46 -0
  821. package/src/hooks/useRemoteSession.js +431 -0
  822. package/src/hooks/useReplBridge.js +715 -0
  823. package/src/hooks/useSSHSession.js +167 -0
  824. package/src/hooks/useScheduledTasks.js +104 -0
  825. package/src/hooks/useSearchInput.js +302 -0
  826. package/src/hooks/useSessionBackgrounding.js +132 -0
  827. package/src/hooks/useSettings.js +10 -0
  828. package/src/hooks/useSettingsChange.js +13 -0
  829. package/src/hooks/useSkillImprovementSurvey.js +69 -0
  830. package/src/hooks/useSkillsChange.js +51 -0
  831. package/src/hooks/useSwarmInitialization.js +67 -0
  832. package/src/hooks/useSwarmPermissionPoller.js +215 -0
  833. package/src/hooks/useTaskListWatcher.js +157 -0
  834. package/src/hooks/useTasksV2.js +220 -0
  835. package/src/hooks/useTeammateViewAutoExit.js +55 -0
  836. package/src/hooks/useTeleportResume.js +81 -0
  837. package/src/hooks/useTerminalSize.js +9 -0
  838. package/src/hooks/useTextInput.js +397 -0
  839. package/src/hooks/useThaddeusHintRecommendation.js +117 -0
  840. package/src/hooks/useTimeout.js +10 -0
  841. package/src/hooks/useTurnDiffs.js +160 -0
  842. package/src/hooks/useTypeahead.js +1250 -0
  843. package/src/hooks/useUpdateNotification.js +21 -0
  844. package/src/hooks/useVimInput.js +232 -0
  845. package/src/hooks/useVirtualScroll.js +627 -0
  846. package/src/hooks/useVoice.js +952 -0
  847. package/src/hooks/useVoiceEnabled.js +21 -0
  848. package/src/hooks/useVoiceIntegration.js +629 -0
  849. package/src/infrastructure/audit.js +210 -0
  850. package/src/infrastructure/guardrails.js +513 -0
  851. package/src/infrastructure/index.js +11 -0
  852. package/src/ink/Ansi.js +269 -0
  853. package/src/ink/bidi.js +117 -0
  854. package/src/ink/clearTerminal.js +58 -0
  855. package/src/ink/colorize.js +198 -0
  856. package/src/ink/components/AlternateScreen.js +74 -0
  857. package/src/ink/components/App.js +562 -0
  858. package/src/ink/components/AppContext.js +11 -0
  859. package/src/ink/components/Box.js +155 -0
  860. package/src/ink/components/Button.js +166 -0
  861. package/src/ink/components/ClockContext.js +108 -0
  862. package/src/ink/components/CursorDeclarationContext.js +3 -0
  863. package/src/ink/components/ErrorOverview.js +50 -0
  864. package/src/ink/components/Link.js +34 -0
  865. package/src/ink/components/Newline.js +30 -0
  866. package/src/ink/components/NoSelect.js +57 -0
  867. package/src/ink/components/RawAnsi.js +46 -0
  868. package/src/ink/components/ScrollBox.js +171 -0
  869. package/src/ink/components/Spacer.js +20 -0
  870. package/src/ink/components/StdinContext.js +16 -0
  871. package/src/ink/components/TerminalFocusContext.js +45 -0
  872. package/src/ink/components/TerminalSizeContext.js +3 -0
  873. package/src/ink/components/Text.js +195 -0
  874. package/src/ink/constants.js +2 -0
  875. package/src/ink/dom.js +298 -0
  876. package/src/ink/events/click-event.js +36 -0
  877. package/src/ink/events/dispatcher.js +172 -0
  878. package/src/ink/events/emitter.js +31 -0
  879. package/src/ink/events/event-handlers.js +30 -0
  880. package/src/ink/events/event.js +9 -0
  881. package/src/ink/events/focus-event.js +16 -0
  882. package/src/ink/events/input-event.js +161 -0
  883. package/src/ink/events/keyboard-event.js +46 -0
  884. package/src/ink/events/terminal-event.js +78 -0
  885. package/src/ink/events/terminal-focus-event.js +15 -0
  886. package/src/ink/focus.js +158 -0
  887. package/src/ink/frame.js +30 -0
  888. package/src/ink/get-max-width.js +23 -0
  889. package/src/ink/hit-test.js +113 -0
  890. package/src/ink/hooks/use-animation-frame.js +48 -0
  891. package/src/ink/hooks/use-app.js +7 -0
  892. package/src/ink/hooks/use-declared-cursor.js +60 -0
  893. package/src/ink/hooks/use-input.js +70 -0
  894. package/src/ink/hooks/use-interval.js +54 -0
  895. package/src/ink/hooks/use-search-highlight.js +32 -0
  896. package/src/ink/hooks/use-selection.js +60 -0
  897. package/src/ink/hooks/use-stdin.js +7 -0
  898. package/src/ink/hooks/use-tab-status.js +57 -0
  899. package/src/ink/hooks/use-terminal-focus.js +15 -0
  900. package/src/ink/hooks/use-terminal-title.js +29 -0
  901. package/src/ink/hooks/use-terminal-viewport.js +77 -0
  902. package/src/ink/ink.js +1645 -0
  903. package/src/ink/instances.js +7 -0
  904. package/src/ink/layout/engine.js +4 -0
  905. package/src/ink/layout/geometry.js +61 -0
  906. package/src/ink/layout/node.js +62 -0
  907. package/src/ink/layout/yoga.js +237 -0
  908. package/src/ink/line-width-cache.js +19 -0
  909. package/src/ink/log-update.js +583 -0
  910. package/src/ink/measure-element.js +8 -0
  911. package/src/ink/measure-text.js +35 -0
  912. package/src/ink/node-cache.js +30 -0
  913. package/src/ink/optimizer.js +81 -0
  914. package/src/ink/output.js +556 -0
  915. package/src/ink/parse-keypress.js +695 -0
  916. package/src/ink/reconciler.js +384 -0
  917. package/src/ink/render-border.js +134 -0
  918. package/src/ink/render-node-to-output.js +1216 -0
  919. package/src/ink/render-to-screen.js +171 -0
  920. package/src/ink/renderer.js +129 -0
  921. package/src/ink/root.js +80 -0
  922. package/src/ink/screen.js +1132 -0
  923. package/src/ink/searchHighlight.js +78 -0
  924. package/src/ink/selection.js +792 -0
  925. package/src/ink/squash-text-nodes.js +56 -0
  926. package/src/ink/stringWidth.js +200 -0
  927. package/src/ink/styles.js +299 -0
  928. package/src/ink/supports-hyperlinks.js +40 -0
  929. package/src/ink/tabstops.js +39 -0
  930. package/src/ink/terminal-focus-state.js +35 -0
  931. package/src/ink/terminal-querier.js +173 -0
  932. package/src/ink/terminal.js +208 -0
  933. package/src/ink/termio/ansi.js +70 -0
  934. package/src/ink/termio/csi.js +260 -0
  935. package/src/ink/termio/dec.js +53 -0
  936. package/src/ink/termio/esc.js +55 -0
  937. package/src/ink/termio/osc.js +432 -0
  938. package/src/ink/termio/parser.js +356 -0
  939. package/src/ink/termio/sgr.js +292 -0
  940. package/src/ink/termio/tokenize.js +264 -0
  941. package/src/ink/termio/types.js +55 -0
  942. package/src/ink/termio.js +24 -0
  943. package/src/ink/useTerminalNotification.js +57 -0
  944. package/src/ink/warn.js +10 -0
  945. package/src/ink/widest-line.js +14 -0
  946. package/src/ink/wrap-text.js +54 -0
  947. package/src/ink/wrapAnsi.js +6 -0
  948. package/src/ink.js +50 -0
  949. package/src/integrations/credentialStore.js +176 -0
  950. package/src/integrations/index.js +5 -0
  951. package/src/integrations/integrationManager.js +180 -0
  952. package/src/integrations/providers/BaseProvider.js +180 -0
  953. package/src/integrations/providers/GitHubProvider.js +217 -0
  954. package/src/integrations/providers/GmailProvider.js +204 -0
  955. package/src/integrations/providers/GoogleCalendarProvider.js +113 -0
  956. package/src/integrations/providers/HubSpotProvider.js +159 -0
  957. package/src/integrations/providers/JiraProvider.js +216 -0
  958. package/src/integrations/providers/NotionProvider.js +221 -0
  959. package/src/integrations/providers/QuickBooksProvider.js +176 -0
  960. package/src/integrations/providers/SlackProvider.js +174 -0
  961. package/src/integrations/providers/StripeProvider.js +206 -0
  962. package/src/integrations/providers/TwilioProvider.js +239 -0
  963. package/src/integrations/providers/_template.js +112 -0
  964. package/src/integrations/types.js +7 -0
  965. package/src/interactiveHelpers.js +308 -0
  966. package/src/jobs/classifier.js +6 -0
  967. package/src/keybindings/KeybindingContext.js +184 -0
  968. package/src/keybindings/KeybindingProviderSetup.js +259 -0
  969. package/src/keybindings/defaultBindings.js +333 -0
  970. package/src/keybindings/loadUserBindings.js +393 -0
  971. package/src/keybindings/match.js +111 -0
  972. package/src/keybindings/parser.js +184 -0
  973. package/src/keybindings/reservedShortcuts.js +109 -0
  974. package/src/keybindings/resolver.js +182 -0
  975. package/src/keybindings/schema.js +205 -0
  976. package/src/keybindings/shortcutFormat.js +48 -0
  977. package/src/keybindings/template.js +40 -0
  978. package/src/keybindings/useKeybinding.js +161 -0
  979. package/src/keybindings/useShortcutDisplay.js +43 -0
  980. package/src/keybindings/validate.js +395 -0
  981. package/src/main.js +4128 -0
  982. package/src/memdir/findRelevantMemories.js +99 -0
  983. package/src/memdir/memdir.js +406 -0
  984. package/src/memdir/memoryAge.js +52 -0
  985. package/src/memdir/memoryScan.js +65 -0
  986. package/src/memdir/memoryShapeTelemetry.js +8 -0
  987. package/src/memdir/memoryTypes.js +260 -0
  988. package/src/memdir/paths.js +235 -0
  989. package/src/memdir/teamMemPaths.js +261 -0
  990. package/src/memdir/teamMemPrompts.js +82 -0
  991. package/src/migrations/migrateAutoUpdatesToSettings.js +47 -0
  992. package/src/migrations/migrateBypassPermissionsAcceptedToSettings.js +32 -0
  993. package/src/migrations/migrateEnableAllProjectMcpServersToSettings.js +83 -0
  994. package/src/migrations/migrateFennecToOpus.js +39 -0
  995. package/src/migrations/migrateLegacyOpusToCurrent.js +44 -0
  996. package/src/migrations/migrateOpusToOpus1m.js +31 -0
  997. package/src/migrations/migrateReplBridgeEnabledToRemoteControlAtStartup.js +23 -0
  998. package/src/migrations/migrateSonnet1mToSonnet45.js +38 -0
  999. package/src/migrations/migrateSonnet45ToSonnet46.js +48 -0
  1000. package/src/migrations/resetAutoModeOptInForDefaultOffer.js +47 -0
  1001. package/src/migrations/resetProToOpusDefault.js +46 -0
  1002. package/src/moreright/useMoreRight.js +13 -0
  1003. package/src/native-ts/color-diff/index.js +819 -0
  1004. package/src/native-ts/file-index/index.js +328 -0
  1005. package/src/native-ts/yoga-layout/enums.js +101 -0
  1006. package/src/native-ts/yoga-layout/index.js +2113 -0
  1007. package/src/outputStyles/loadOutputStylesDir.js +71 -0
  1008. package/src/plugins/builtinPlugins.js +132 -0
  1009. package/src/plugins/bundled/index.js +22 -0
  1010. package/src/proactive/index.js +138 -0
  1011. package/src/proactive/useProactive.js +82 -0
  1012. package/src/projectOnboardingState.js +61 -0
  1013. package/src/query/config.js +17 -0
  1014. package/src/query/deps.js +12 -0
  1015. package/src/query/stopHooks.js +332 -0
  1016. package/src/query/tokenBudget.js +49 -0
  1017. package/src/query.js +1264 -0
  1018. package/src/remote/RemoteSessionManager.js +172 -0
  1019. package/src/remote/SessionsWebSocket.js +308 -0
  1020. package/src/remote/remotePermissionBridge.js +70 -0
  1021. package/src/remote/sdkMessageAdapter.js +227 -0
  1022. package/src/replLauncher.js +7 -0
  1023. package/src/schemas/hooks.js +174 -0
  1024. package/src/screens/Doctor.js +580 -0
  1025. package/src/screens/REPL.js +4500 -0
  1026. package/src/screens/ResumeConversation.js +339 -0
  1027. package/src/self-hosted-runner/main.js +8 -0
  1028. package/src/server/backends/dangerousBackend.js +8 -0
  1029. package/src/server/connectHeadless.js +6 -0
  1030. package/src/server/createDirectConnectSession.js +62 -0
  1031. package/src/server/directConnectManager.js +153 -0
  1032. package/src/server/lockfile.js +11 -0
  1033. package/src/server/parseConnectUrl.js +20 -0
  1034. package/src/server/server.js +12 -0
  1035. package/src/server/serverBanner.js +9 -0
  1036. package/src/server/serverLog.js +11 -0
  1037. package/src/server/sessionManager.js +19 -0
  1038. package/src/server/types.js +7 -0
  1039. package/src/services/AgentSummary/agentSummary.js +147 -0
  1040. package/src/services/MagicDocs/magicDocs.js +193 -0
  1041. package/src/services/MagicDocs/prompts.js +110 -0
  1042. package/src/services/PromptSuggestion/promptSuggestion.js +402 -0
  1043. package/src/services/PromptSuggestion/speculation.js +643 -0
  1044. package/src/services/SessionMemory/prompts.js +254 -0
  1045. package/src/services/SessionMemory/sessionMemory.js +358 -0
  1046. package/src/services/SessionMemory/sessionMemoryUtils.js +157 -0
  1047. package/src/services/analytics/config.js +27 -0
  1048. package/src/services/analytics/datadog.js +26 -0
  1049. package/src/services/analytics/firstPartyEventLogger.js +65 -0
  1050. package/src/services/analytics/firstPartyEventLoggingExporter.js +595 -0
  1051. package/src/services/analytics/growthbook.js +103 -0
  1052. package/src/services/analytics/index.js +91 -0
  1053. package/src/services/analytics/metadata.js +696 -0
  1054. package/src/services/analytics/sink.js +19 -0
  1055. package/src/services/analytics/sinkKillswitch.js +19 -0
  1056. package/src/services/api/adminRequests.js +57 -0
  1057. package/src/services/api/bootstrap.js +118 -0
  1058. package/src/services/api/claude.js +2466 -0
  1059. package/src/services/api/client.js +335 -0
  1060. package/src/services/api/dumpPrompts.js +174 -0
  1061. package/src/services/api/emptyUsage.js +20 -0
  1062. package/src/services/api/errorUtils.js +203 -0
  1063. package/src/services/api/errors.js +926 -0
  1064. package/src/services/api/filesApi.js +523 -0
  1065. package/src/services/api/firstTokenDate.js +49 -0
  1066. package/src/services/api/grove.js +44 -0
  1067. package/src/services/api/logging.js +484 -0
  1068. package/src/services/api/metricsOptOut.js +15 -0
  1069. package/src/services/api/overageCreditGrant.js +123 -0
  1070. package/src/services/api/promptCacheBreakDetection.js +510 -0
  1071. package/src/services/api/referral.js +219 -0
  1072. package/src/services/api/sessionIngress.js +358 -0
  1073. package/src/services/api/ultrareviewQuota.js +29 -0
  1074. package/src/services/api/usage.js +31 -0
  1075. package/src/services/api/withRetry.js +587 -0
  1076. package/src/services/api/xai/anthropic-shim.js +885 -0
  1077. package/src/services/api/xai/brightDataSearch.js +161 -0
  1078. package/src/services/api/xai/thaddeus-engine.js +605 -0
  1079. package/src/services/api/xai/xai-client.js +276 -0
  1080. package/src/services/autoDream/autoDream.js +244 -0
  1081. package/src/services/autoDream/config.js +17 -0
  1082. package/src/services/autoDream/consolidationLock.js +122 -0
  1083. package/src/services/autoDream/consolidationPrompt.js +55 -0
  1084. package/src/services/awaySummary.js +61 -0
  1085. package/src/services/claudeAiLimits.js +331 -0
  1086. package/src/services/claudeAiLimitsHook.js +15 -0
  1087. package/src/services/compact/apiMicrocompact.js +97 -0
  1088. package/src/services/compact/autoCompact.js +234 -0
  1089. package/src/services/compact/cachedMCConfig.js +5 -0
  1090. package/src/services/compact/compact.js +1256 -0
  1091. package/src/services/compact/compactWarningHook.js +12 -0
  1092. package/src/services/compact/compactWarningState.js +15 -0
  1093. package/src/services/compact/grouping.js +58 -0
  1094. package/src/services/compact/microCompact.js +414 -0
  1095. package/src/services/compact/postCompactCleanup.js +70 -0
  1096. package/src/services/compact/prompt.js +325 -0
  1097. package/src/services/compact/reactiveCompact.js +20 -0
  1098. package/src/services/compact/sessionMemoryCompact.js +467 -0
  1099. package/src/services/compact/snipCompact.js +23 -0
  1100. package/src/services/compact/snipProjection.js +11 -0
  1101. package/src/services/compact/timeBasedMCConfig.js +11 -0
  1102. package/src/services/contextCollapse/index.js +33 -0
  1103. package/src/services/contextCollapse/operations.js +5 -0
  1104. package/src/services/contextCollapse/persist.js +5 -0
  1105. package/src/services/diagnosticTracking.js +282 -0
  1106. package/src/services/elevenlabsTTS.js +245 -0
  1107. package/src/services/extractMemories/extractMemories.js +442 -0
  1108. package/src/services/extractMemories/prompts.js +129 -0
  1109. package/src/services/internalLogging.js +68 -0
  1110. package/src/services/lsp/LSPClient.js +306 -0
  1111. package/src/services/lsp/LSPDiagnosticRegistry.js +277 -0
  1112. package/src/services/lsp/LSPServerInstance.js +388 -0
  1113. package/src/services/lsp/LSPServerManager.js +305 -0
  1114. package/src/services/lsp/config.js +57 -0
  1115. package/src/services/lsp/manager.js +246 -0
  1116. package/src/services/lsp/passiveFeedback.js +226 -0
  1117. package/src/services/mcp/InProcessTransport.js +54 -0
  1118. package/src/services/mcp/MCPConnectionManager.js +50 -0
  1119. package/src/services/mcp/SdkControlTransport.js +115 -0
  1120. package/src/services/mcp/auth.js +1882 -0
  1121. package/src/services/mcp/channelAllowlist.js +57 -0
  1122. package/src/services/mcp/channelNotification.js +235 -0
  1123. package/src/services/mcp/channelPermissions.js +192 -0
  1124. package/src/services/mcp/claudeai.js +123 -0
  1125. package/src/services/mcp/client.js +2478 -0
  1126. package/src/services/mcp/config.js +1271 -0
  1127. package/src/services/mcp/elicitationHandler.js +192 -0
  1128. package/src/services/mcp/envExpansion.js +30 -0
  1129. package/src/services/mcp/headersHelper.js +93 -0
  1130. package/src/services/mcp/mcpStringUtils.js +85 -0
  1131. package/src/services/mcp/normalization.js +21 -0
  1132. package/src/services/mcp/oauthPort.js +69 -0
  1133. package/src/services/mcp/officialRegistry.js +20 -0
  1134. package/src/services/mcp/types.js +94 -0
  1135. package/src/services/mcp/useManageMCPConnections.js +818 -0
  1136. package/src/services/mcp/utils.js +433 -0
  1137. package/src/services/mcp/vscodeSdkMcp.js +69 -0
  1138. package/src/services/mcp/xaa.js +342 -0
  1139. package/src/services/mcp/xaaIdpLogin.js +377 -0
  1140. package/src/services/mcpServerApproval.js +30 -0
  1141. package/src/services/mockRateLimits.js +666 -0
  1142. package/src/services/notifier.js +114 -0
  1143. package/src/services/oauth/auth-code-listener.js +165 -0
  1144. package/src/services/oauth/client.js +397 -0
  1145. package/src/services/oauth/crypto.js +19 -0
  1146. package/src/services/oauth/getOauthProfile.js +48 -0
  1147. package/src/services/oauth/index.js +133 -0
  1148. package/src/services/plugins/PluginInstallationManager.js +139 -0
  1149. package/src/services/plugins/pluginCliCommands.js +230 -0
  1150. package/src/services/plugins/pluginOperations.js +826 -0
  1151. package/src/services/policyLimits/index.js +547 -0
  1152. package/src/services/policyLimits/types.js +9 -0
  1153. package/src/services/preventSleep.js +143 -0
  1154. package/src/services/rateLimitMessages.js +271 -0
  1155. package/src/services/rateLimitMocking.js +91 -0
  1156. package/src/services/remoteManagedSettings/index.js +534 -0
  1157. package/src/services/remoteManagedSettings/securityCheck.js +60 -0
  1158. package/src/services/remoteManagedSettings/syncCache.js +90 -0
  1159. package/src/services/remoteManagedSettings/syncCacheState.js +89 -0
  1160. package/src/services/remoteManagedSettings/types.js +12 -0
  1161. package/src/services/sessionTranscript/sessionTranscript.js +5 -0
  1162. package/src/services/settingsSync/index.js +478 -0
  1163. package/src/services/settingsSync/types.js +35 -0
  1164. package/src/services/skillSearch/featureCheck.js +8 -0
  1165. package/src/services/skillSearch/localSearch.js +5 -0
  1166. package/src/services/skillSearch/prefetch.js +8 -0
  1167. package/src/services/skillSearch/remoteSkillLoader.js +8 -0
  1168. package/src/services/skillSearch/remoteSkillState.js +11 -0
  1169. package/src/services/skillSearch/signals.js +3 -0
  1170. package/src/services/skillSearch/telemetry.js +8 -0
  1171. package/src/services/teamMemorySync/index.js +976 -0
  1172. package/src/services/teamMemorySync/secretScanner.js +275 -0
  1173. package/src/services/teamMemorySync/teamMemSecretGuard.js +33 -0
  1174. package/src/services/teamMemorySync/types.js +47 -0
  1175. package/src/services/teamMemorySync/watcher.js +326 -0
  1176. package/src/services/thaddeusAuth.js +485 -0
  1177. package/src/services/thaddeusAuthTypes.js +9 -0
  1178. package/src/services/thaddeusLoginFlow.js +236 -0
  1179. package/src/services/tips/tipHistory.js +17 -0
  1180. package/src/services/tips/tipRegistry.js +593 -0
  1181. package/src/services/tips/tipScheduler.js +40 -0
  1182. package/src/services/tokenEstimation.js +365 -0
  1183. package/src/services/toolUseSummary/toolUseSummaryGenerator.js +87 -0
  1184. package/src/services/tools/StreamingToolExecutor.js +413 -0
  1185. package/src/services/tools/toolExecution.js +1309 -0
  1186. package/src/services/tools/toolHooks.js +454 -0
  1187. package/src/services/tools/toolOrchestration.js +110 -0
  1188. package/src/services/vcr.js +291 -0
  1189. package/src/services/voice.js +392 -0
  1190. package/src/services/voiceKeyterms.js +94 -0
  1191. package/src/services/voiceStreamSTT.js +405 -0
  1192. package/src/setup.js +310 -0
  1193. package/src/skills/bundled/batch.js +114 -0
  1194. package/src/skills/bundled/claudeApi.js +145 -0
  1195. package/src/skills/bundled/claudeApiContent.js +71 -0
  1196. package/src/skills/bundled/claudeInChrome.js +27 -0
  1197. package/src/skills/bundled/debug.js +99 -0
  1198. package/src/skills/bundled/dream.js +49 -0
  1199. package/src/skills/bundled/emailSetup.js +196 -0
  1200. package/src/skills/bundled/hunter.js +28 -0
  1201. package/src/skills/bundled/index.js +80 -0
  1202. package/src/skills/bundled/keybindings.js +292 -0
  1203. package/src/skills/bundled/loop.js +81 -0
  1204. package/src/skills/bundled/loremIpsum.js +264 -0
  1205. package/src/skills/bundled/reactor.js +31 -0
  1206. package/src/skills/bundled/remember.js +73 -0
  1207. package/src/skills/bundled/runSkillGenerator.js +12 -0
  1208. package/src/skills/bundled/scheduleRemoteAgents.js +373 -0
  1209. package/src/skills/bundled/simplify.js +66 -0
  1210. package/src/skills/bundled/skillify.js +182 -0
  1211. package/src/skills/bundled/stuck.js +69 -0
  1212. package/src/skills/bundled/updateConfig.js +463 -0
  1213. package/src/skills/bundled/verify.js +23 -0
  1214. package/src/skills/bundled/verifyContent.js +10 -0
  1215. package/src/skills/bundledSkills.js +159 -0
  1216. package/src/skills/loadSkillsDir.js +736 -0
  1217. package/src/skills/mcpSkillBuilders.js +10 -0
  1218. package/src/skills/mcpSkills.js +5 -0
  1219. package/src/state/AppState.js +182 -0
  1220. package/src/state/AppStateStore.js +117 -0
  1221. package/src/state/onChangeAppState.js +132 -0
  1222. package/src/state/selectors.js +51 -0
  1223. package/src/state/store.js +21 -0
  1224. package/src/state/teammateViewHelpers.js +124 -0
  1225. package/src/stubs/ant-chrome-mcp/index.js +4 -0
  1226. package/src/stubs/ant-computer-use-input/index.js +2 -0
  1227. package/src/stubs/ant-computer-use-mcp/index.js +7 -0
  1228. package/src/stubs/ant-computer-use-mcp/sentinelApps.js +2 -0
  1229. package/src/stubs/ant-computer-use-mcp/types.js +3 -0
  1230. package/src/stubs/ant-computer-use-swift/index.js +1 -0
  1231. package/src/stubs/anthropic-sandbox/index.js +34 -0
  1232. package/src/tasks/DreamTask/DreamTask.js +99 -0
  1233. package/src/tasks/InProcessTeammateTask/InProcessTeammateTask.js +116 -0
  1234. package/src/tasks/InProcessTeammateTask/types.js +35 -0
  1235. package/src/tasks/LocalAgentTask/LocalAgentTask.js +507 -0
  1236. package/src/tasks/LocalMainSessionTask.js +338 -0
  1237. package/src/tasks/LocalShellTask/LocalShellTask.js +475 -0
  1238. package/src/tasks/LocalShellTask/guards.js +9 -0
  1239. package/src/tasks/LocalShellTask/killShellTasks.js +59 -0
  1240. package/src/tasks/LocalWorkflowTask/LocalWorkflowTask.js +7 -0
  1241. package/src/tasks/MonitorMcpTask/MonitorMcpTask.js +20 -0
  1242. package/src/tasks/RemoteAgentTask/RemoteAgentTask.js +742 -0
  1243. package/src/tasks/pillLabel.js +69 -0
  1244. package/src/tasks/stopTask.js +67 -0
  1245. package/src/tasks/types.js +18 -0
  1246. package/src/tasks.js +37 -0
  1247. package/src/tools/AIEmployeesTool/AIEmployeesTool.js +674 -0
  1248. package/src/tools/AIEmployeesTool/constants.js +1 -0
  1249. package/src/tools/AIEmployeesTool/prompt.js +56 -0
  1250. package/src/tools/AgentTool/AgentTool.js +1221 -0
  1251. package/src/tools/AgentTool/UI.js +593 -0
  1252. package/src/tools/AgentTool/agentColorManager.js +43 -0
  1253. package/src/tools/AgentTool/agentDisplay.js +72 -0
  1254. package/src/tools/AgentTool/agentMemory.js +125 -0
  1255. package/src/tools/AgentTool/agentMemorySnapshot.js +136 -0
  1256. package/src/tools/AgentTool/agentToolUtils.js +456 -0
  1257. package/src/tools/AgentTool/built-in/exploreAgent.js +76 -0
  1258. package/src/tools/AgentTool/built-in/generalPurposeAgent.js +28 -0
  1259. package/src/tools/AgentTool/built-in/planAgent.js +87 -0
  1260. package/src/tools/AgentTool/built-in/statuslineSetup.js +140 -0
  1261. package/src/tools/AgentTool/built-in/thaddeusGuideAgent.js +174 -0
  1262. package/src/tools/AgentTool/built-in/verificationAgent.js +146 -0
  1263. package/src/tools/AgentTool/builtInAgents.js +56 -0
  1264. package/src/tools/AgentTool/constants.js +11 -0
  1265. package/src/tools/AgentTool/forkSubagent.js +177 -0
  1266. package/src/tools/AgentTool/loadAgentsDir.js +497 -0
  1267. package/src/tools/AgentTool/prompt.js +260 -0
  1268. package/src/tools/AgentTool/resumeAgent.js +182 -0
  1269. package/src/tools/AgentTool/runAgent.js +627 -0
  1270. package/src/tools/AppointmentsTool/AppointmentsTool.js +628 -0
  1271. package/src/tools/AppointmentsTool/constants.js +1 -0
  1272. package/src/tools/AppointmentsTool/prompt.js +15 -0
  1273. package/src/tools/AskUserQuestionTool/AskUserQuestionTool.js +238 -0
  1274. package/src/tools/AskUserQuestionTool/prompt.js +38 -0
  1275. package/src/tools/BashTool/BashTool.js +1009 -0
  1276. package/src/tools/BashTool/BashToolResultMessage.js +169 -0
  1277. package/src/tools/BashTool/UI.js +134 -0
  1278. package/src/tools/BashTool/bashCommandHelpers.js +184 -0
  1279. package/src/tools/BashTool/bashPermissions.js +2023 -0
  1280. package/src/tools/BashTool/bashSecurity.js +2267 -0
  1281. package/src/tools/BashTool/commandSemantics.js +105 -0
  1282. package/src/tools/BashTool/commentLabel.js +14 -0
  1283. package/src/tools/BashTool/destructiveCommandWarning.js +88 -0
  1284. package/src/tools/BashTool/modeValidation.js +86 -0
  1285. package/src/tools/BashTool/pathValidation.js +1079 -0
  1286. package/src/tools/BashTool/prompt.js +333 -0
  1287. package/src/tools/BashTool/readOnlyValidation.js +1794 -0
  1288. package/src/tools/BashTool/sedEditParser.js +282 -0
  1289. package/src/tools/BashTool/sedValidation.js +580 -0
  1290. package/src/tools/BashTool/shouldUseSandbox.js +125 -0
  1291. package/src/tools/BashTool/toolName.js +2 -0
  1292. package/src/tools/BashTool/utils.js +180 -0
  1293. package/src/tools/BriefTool/BriefTool.js +173 -0
  1294. package/src/tools/BriefTool/UI.js +67 -0
  1295. package/src/tools/BriefTool/attachments.js +86 -0
  1296. package/src/tools/BriefTool/prompt.js +19 -0
  1297. package/src/tools/BriefTool/upload.js +136 -0
  1298. package/src/tools/CalendarTool/CalendarTool.js +498 -0
  1299. package/src/tools/CalendarTool/constants.js +1 -0
  1300. package/src/tools/CalendarTool/prompt.js +11 -0
  1301. package/src/tools/ConfigTool/ConfigTool.js +398 -0
  1302. package/src/tools/ConfigTool/UI.js +25 -0
  1303. package/src/tools/ConfigTool/constants.js +1 -0
  1304. package/src/tools/ConfigTool/prompt.js +82 -0
  1305. package/src/tools/ConfigTool/supportedSettings.js +180 -0
  1306. package/src/tools/ContactsTool/ContactsTool.js +648 -0
  1307. package/src/tools/ContactsTool/constants.js +1 -0
  1308. package/src/tools/ContactsTool/prompt.js +15 -0
  1309. package/src/tools/CtxInspectTool/CtxInspectTool.js +44 -0
  1310. package/src/tools/DiscoverSkillsTool/prompt.js +4 -0
  1311. package/src/tools/EmailReadTool/index.js +410 -0
  1312. package/src/tools/EmailSendTool/index.js +178 -0
  1313. package/src/tools/EnterPlanModeTool/EnterPlanModeTool.js +98 -0
  1314. package/src/tools/EnterPlanModeTool/UI.js +14 -0
  1315. package/src/tools/EnterPlanModeTool/constants.js +1 -0
  1316. package/src/tools/EnterPlanModeTool/prompt.js +164 -0
  1317. package/src/tools/EnterWorktreeTool/EnterWorktreeTool.js +104 -0
  1318. package/src/tools/EnterWorktreeTool/UI.js +9 -0
  1319. package/src/tools/EnterWorktreeTool/constants.js +1 -0
  1320. package/src/tools/EnterWorktreeTool/prompt.js +30 -0
  1321. package/src/tools/ExitPlanModeTool/ExitPlanModeV2Tool.js +383 -0
  1322. package/src/tools/ExitPlanModeTool/UI.js +32 -0
  1323. package/src/tools/ExitPlanModeTool/constants.js +2 -0
  1324. package/src/tools/ExitPlanModeTool/prompt.js +27 -0
  1325. package/src/tools/ExitWorktreeTool/ExitWorktreeTool.js +257 -0
  1326. package/src/tools/ExitWorktreeTool/UI.js +10 -0
  1327. package/src/tools/ExitWorktreeTool/constants.js +1 -0
  1328. package/src/tools/ExitWorktreeTool/prompt.js +32 -0
  1329. package/src/tools/FileEditTool/FileEditTool.js +480 -0
  1330. package/src/tools/FileEditTool/UI.js +202 -0
  1331. package/src/tools/FileEditTool/constants.js +7 -0
  1332. package/src/tools/FileEditTool/prompt.js +24 -0
  1333. package/src/tools/FileEditTool/types.js +50 -0
  1334. package/src/tools/FileEditTool/utils.js +579 -0
  1335. package/src/tools/FileReadTool/FileReadTool.js +889 -0
  1336. package/src/tools/FileReadTool/UI.js +126 -0
  1337. package/src/tools/FileReadTool/imageProcessor.js +46 -0
  1338. package/src/tools/FileReadTool/limits.js +70 -0
  1339. package/src/tools/FileReadTool/prompt.js +31 -0
  1340. package/src/tools/FileWriteTool/FileWriteTool.js +341 -0
  1341. package/src/tools/FileWriteTool/UI.js +339 -0
  1342. package/src/tools/FileWriteTool/prompt.js +15 -0
  1343. package/src/tools/GlobTool/GlobTool.js +161 -0
  1344. package/src/tools/GlobTool/UI.js +40 -0
  1345. package/src/tools/GlobTool/prompt.js +6 -0
  1346. package/src/tools/GrepTool/GrepTool.js +439 -0
  1347. package/src/tools/GrepTool/UI.js +155 -0
  1348. package/src/tools/GrepTool/prompt.js +16 -0
  1349. package/src/tools/IntegrationsTool/IntegrationsTool.js +217 -0
  1350. package/src/tools/IntegrationsTool/constants.js +1 -0
  1351. package/src/tools/IntegrationsTool/prompt.js +41 -0
  1352. package/src/tools/InteractionsTool/InteractionsTool.js +525 -0
  1353. package/src/tools/InteractionsTool/constants.js +1 -0
  1354. package/src/tools/InteractionsTool/prompt.js +14 -0
  1355. package/src/tools/InvoicesTool/InvoicesTool.js +581 -0
  1356. package/src/tools/InvoicesTool/constants.js +1 -0
  1357. package/src/tools/InvoicesTool/prompt.js +15 -0
  1358. package/src/tools/LSPTool/LSPTool.js +660 -0
  1359. package/src/tools/LSPTool/UI.js +205 -0
  1360. package/src/tools/LSPTool/formatters.js +445 -0
  1361. package/src/tools/LSPTool/prompt.js +20 -0
  1362. package/src/tools/LSPTool/schemas.js +197 -0
  1363. package/src/tools/LSPTool/symbolContext.js +75 -0
  1364. package/src/tools/LeadScorerTool/LeadScorerTool.js +509 -0
  1365. package/src/tools/LeadScorerTool/constants.js +1 -0
  1366. package/src/tools/LeadScorerTool/prompt.js +11 -0
  1367. package/src/tools/ListMcpResourcesTool/ListMcpResourcesTool.js +100 -0
  1368. package/src/tools/ListMcpResourcesTool/UI.js +17 -0
  1369. package/src/tools/ListMcpResourcesTool/prompt.js +18 -0
  1370. package/src/tools/ListPeersTool/ListPeersTool.js +45 -0
  1371. package/src/tools/MCPTool/MCPTool.js +60 -0
  1372. package/src/tools/MCPTool/UI.js +343 -0
  1373. package/src/tools/MCPTool/classifyForCollapse.js +597 -0
  1374. package/src/tools/MCPTool/prompt.js +3 -0
  1375. package/src/tools/McpAuthTool/McpAuthTool.js +162 -0
  1376. package/src/tools/MonitorTool/MonitorTool.js +55 -0
  1377. package/src/tools/NotebookEditTool/NotebookEditTool.js +421 -0
  1378. package/src/tools/NotebookEditTool/UI.js +41 -0
  1379. package/src/tools/NotebookEditTool/constants.js +2 -0
  1380. package/src/tools/NotebookEditTool/prompt.js +2 -0
  1381. package/src/tools/OverflowTestTool/OverflowTestTool.js +51 -0
  1382. package/src/tools/PhoneBridgeTool/PhoneBridgeTool.js +301 -0
  1383. package/src/tools/PhoneBridgeTool/constants.js +1 -0
  1384. package/src/tools/PhoneBridgeTool/prompt.js +26 -0
  1385. package/src/tools/PowerShellTool/PowerShellTool.js +900 -0
  1386. package/src/tools/PowerShellTool/UI.js +58 -0
  1387. package/src/tools/PowerShellTool/clmTypes.js +207 -0
  1388. package/src/tools/PowerShellTool/commandSemantics.js +115 -0
  1389. package/src/tools/PowerShellTool/commonParameters.js +27 -0
  1390. package/src/tools/PowerShellTool/destructiveCommandWarning.js +92 -0
  1391. package/src/tools/PowerShellTool/gitSafety.js +185 -0
  1392. package/src/tools/PowerShellTool/modeValidation.js +357 -0
  1393. package/src/tools/PowerShellTool/pathValidation.js +1712 -0
  1394. package/src/tools/PowerShellTool/powershellPermissions.js +1351 -0
  1395. package/src/tools/PowerShellTool/powershellSecurity.js +942 -0
  1396. package/src/tools/PowerShellTool/prompt.js +132 -0
  1397. package/src/tools/PowerShellTool/readOnlyValidation.js +1633 -0
  1398. package/src/tools/PowerShellTool/toolName.js +2 -0
  1399. package/src/tools/PushNotificationTool/PushNotificationTool.js +35 -0
  1400. package/src/tools/REPLTool/REPLTool.js +44 -0
  1401. package/src/tools/REPLTool/constants.js +43 -0
  1402. package/src/tools/REPLTool/primitiveTools.js +36 -0
  1403. package/src/tools/ReadMcpResourceTool/ReadMcpResourceTool.js +112 -0
  1404. package/src/tools/ReadMcpResourceTool/UI.js +24 -0
  1405. package/src/tools/ReadMcpResourceTool/prompt.js +15 -0
  1406. package/src/tools/RemoteTriggerTool/RemoteTriggerTool.js +142 -0
  1407. package/src/tools/RemoteTriggerTool/UI.js +12 -0
  1408. package/src/tools/RemoteTriggerTool/prompt.js +12 -0
  1409. package/src/tools/ReviewArtifactTool/ReviewArtifactTool.js +51 -0
  1410. package/src/tools/ScheduleCronTool/CronCreateTool.js +120 -0
  1411. package/src/tools/ScheduleCronTool/CronDeleteTool.js +74 -0
  1412. package/src/tools/ScheduleCronTool/CronListTool.js +77 -0
  1413. package/src/tools/ScheduleCronTool/UI.js +29 -0
  1414. package/src/tools/ScheduleCronTool/prompt.js +115 -0
  1415. package/src/tools/SendMessageTool/SendMessageTool.js +673 -0
  1416. package/src/tools/SendMessageTool/UI.js +24 -0
  1417. package/src/tools/SendMessageTool/constants.js +1 -0
  1418. package/src/tools/SendMessageTool/prompt.js +47 -0
  1419. package/src/tools/SendUserFileTool/SendUserFileTool.js +35 -0
  1420. package/src/tools/SendUserFileTool/prompt.js +5 -0
  1421. package/src/tools/SkillTool/SkillTool.js +825 -0
  1422. package/src/tools/SkillTool/UI.js +61 -0
  1423. package/src/tools/SkillTool/constants.js +1 -0
  1424. package/src/tools/SkillTool/prompt.js +184 -0
  1425. package/src/tools/SleepTool/SleepTool.js +42 -0
  1426. package/src/tools/SleepTool/prompt.js +14 -0
  1427. package/src/tools/SnipTool/SnipTool.js +47 -0
  1428. package/src/tools/SnipTool/prompt.js +5 -0
  1429. package/src/tools/SubscribePRTool/SubscribePRTool.js +49 -0
  1430. package/src/tools/SuggestBackgroundPRTool/SuggestBackgroundPRTool.js +44 -0
  1431. package/src/tools/SyntheticOutputTool/SyntheticOutputTool.js +138 -0
  1432. package/src/tools/SyntheticOutputTool/SyntheticOutputTool.ts +1 -1
  1433. package/src/tools/TaskCreateTool/TaskCreateTool.js +104 -0
  1434. package/src/tools/TaskCreateTool/constants.js +1 -0
  1435. package/src/tools/TaskCreateTool/prompt.js +52 -0
  1436. package/src/tools/TaskGetTool/TaskGetTool.js +106 -0
  1437. package/src/tools/TaskGetTool/constants.js +1 -0
  1438. package/src/tools/TaskGetTool/prompt.js +23 -0
  1439. package/src/tools/TaskListTool/TaskListTool.js +89 -0
  1440. package/src/tools/TaskListTool/constants.js +1 -0
  1441. package/src/tools/TaskListTool/prompt.js +44 -0
  1442. package/src/tools/TaskOutputTool/TaskOutputTool.js +536 -0
  1443. package/src/tools/TaskOutputTool/constants.js +1 -0
  1444. package/src/tools/TaskStopTool/TaskStopTool.js +110 -0
  1445. package/src/tools/TaskStopTool/UI.js +31 -0
  1446. package/src/tools/TaskStopTool/prompt.js +7 -0
  1447. package/src/tools/TaskUpdateTool/TaskUpdateTool.js +301 -0
  1448. package/src/tools/TaskUpdateTool/constants.js +1 -0
  1449. package/src/tools/TaskUpdateTool/prompt.js +76 -0
  1450. package/src/tools/TeamCreateTool/TeamCreateTool.js +177 -0
  1451. package/src/tools/TeamCreateTool/UI.js +4 -0
  1452. package/src/tools/TeamCreateTool/constants.js +1 -0
  1453. package/src/tools/TeamCreateTool/prompt.js +113 -0
  1454. package/src/tools/TeamDeleteTool/TeamDeleteTool.js +102 -0
  1455. package/src/tools/TeamDeleteTool/UI.js +13 -0
  1456. package/src/tools/TeamDeleteTool/constants.js +1 -0
  1457. package/src/tools/TeamDeleteTool/prompt.js +16 -0
  1458. package/src/tools/TerminalCaptureTool/TerminalCaptureTool.js +47 -0
  1459. package/src/tools/TerminalCaptureTool/prompt.js +11 -0
  1460. package/src/tools/TodoWriteTool/TodoWriteTool.js +99 -0
  1461. package/src/tools/TodoWriteTool/constants.js +1 -0
  1462. package/src/tools/TodoWriteTool/prompt.js +181 -0
  1463. package/src/tools/ToolSearchTool/ToolSearchTool.js +357 -0
  1464. package/src/tools/ToolSearchTool/constants.js +1 -0
  1465. package/src/tools/ToolSearchTool/prompt.js +97 -0
  1466. package/src/tools/TungstenTool/TungstenLiveMonitor.js +7 -0
  1467. package/src/tools/TungstenTool/TungstenTool.js +3 -0
  1468. package/src/tools/VerifyPlanExecutionTool/VerifyPlanExecutionTool.js +45 -0
  1469. package/src/tools/VerifyPlanExecutionTool/constants.js +2 -0
  1470. package/src/tools/WebBrowserTool/WebBrowserPanel.js +5 -0
  1471. package/src/tools/WebBrowserTool/WebBrowserTool.js +58 -0
  1472. package/src/tools/WebFetchTool/UI.js +31 -0
  1473. package/src/tools/WebFetchTool/WebFetchTool.js +246 -0
  1474. package/src/tools/WebFetchTool/preapproved.js +154 -0
  1475. package/src/tools/WebFetchTool/prompt.js +39 -0
  1476. package/src/tools/WebFetchTool/utils.js +368 -0
  1477. package/src/tools/WebSearchTool/UI.js +67 -0
  1478. package/src/tools/WebSearchTool/WebSearchTool.js +396 -0
  1479. package/src/tools/WebSearchTool/prompt.js +32 -0
  1480. package/src/tools/WorkflowTool/WorkflowPermissionRequest.js +7 -0
  1481. package/src/tools/WorkflowTool/WorkflowTool.js +51 -0
  1482. package/src/tools/WorkflowTool/bundled/index.js +5 -0
  1483. package/src/tools/WorkflowTool/constants.js +1 -0
  1484. package/src/tools/WorkflowTool/createWorkflowCommand.js +5 -0
  1485. package/src/tools/shared/gitOperationTracking.js +220 -0
  1486. package/src/tools/shared/spawnMultiAgent.js +805 -0
  1487. package/src/tools/testing/TestingPermissionTool.js +72 -0
  1488. package/src/tools/utils.js +24 -0
  1489. package/src/tools.js +365 -0
  1490. package/src/types/command.js +8 -0
  1491. package/src/types/connectorText.js +3 -0
  1492. package/src/types/generated/events_mono/claude_code/v1/claude_code_internal_event.js +673 -0
  1493. package/src/types/generated/events_mono/common/v1/auth.js +49 -0
  1494. package/src/types/generated/events_mono/growthbook/v1/growthbook_experiment_event.js +147 -0
  1495. package/src/types/generated/google/protobuf/timestamp.js +38 -0
  1496. package/src/types/hooks.js +153 -0
  1497. package/src/types/ids.js +27 -0
  1498. package/src/types/logs.js +11 -0
  1499. package/src/types/permissions.js +25 -0
  1500. package/src/types/plugin.js +72 -0
  1501. package/src/types/textInputTypes.js +20 -0
  1502. package/src/upstreamproxy/relay.js +346 -0
  1503. package/src/upstreamproxy/upstreamproxy.js +234 -0
  1504. package/src/utils/CircularBuffer.js +75 -0
  1505. package/src/utils/Cursor.js +1229 -0
  1506. package/src/utils/QueryGuard.js +115 -0
  1507. package/src/utils/Shell.js +374 -0
  1508. package/src/utils/ShellCommand.js +336 -0
  1509. package/src/utils/abortController.js +74 -0
  1510. package/src/utils/activityManager.js +127 -0
  1511. package/src/utils/advisor.js +77 -0
  1512. package/src/utils/agentContext.js +91 -0
  1513. package/src/utils/agentId.js +83 -0
  1514. package/src/utils/agentSwarmsEnabled.js +37 -0
  1515. package/src/utils/agenticSessionSearch.js +255 -0
  1516. package/src/utils/analyzeContext.js +846 -0
  1517. package/src/utils/ansiToPng.js +259 -0
  1518. package/src/utils/ansiToSvg.js +207 -0
  1519. package/src/utils/api.js +555 -0
  1520. package/src/utils/apiPreconnect.js +62 -0
  1521. package/src/utils/appleTerminalBackup.js +95 -0
  1522. package/src/utils/argumentSubstitution.js +114 -0
  1523. package/src/utils/array.js +12 -0
  1524. package/src/utils/asciicast.js +200 -0
  1525. package/src/utils/attachments.js +2518 -0
  1526. package/src/utils/attribution.js +308 -0
  1527. package/src/utils/auth.js +1598 -0
  1528. package/src/utils/authFileDescriptor.js +152 -0
  1529. package/src/utils/authPortable.js +14 -0
  1530. package/src/utils/autoModeDenials.js +15 -0
  1531. package/src/utils/autoRunIssue.js +113 -0
  1532. package/src/utils/autoUpdater.js +457 -0
  1533. package/src/utils/aws.js +44 -0
  1534. package/src/utils/awsAuthStatusManager.js +66 -0
  1535. package/src/utils/background/remote/preconditions.js +175 -0
  1536. package/src/utils/background/remote/remoteSession.js +53 -0
  1537. package/src/utils/backgroundHousekeeping.js +64 -0
  1538. package/src/utils/bash/ParsedCommand.js +241 -0
  1539. package/src/utils/bash/ShellSnapshot.js +489 -0
  1540. package/src/utils/bash/ast.js +2590 -0
  1541. package/src/utils/bash/bashParser.js +4355 -0
  1542. package/src/utils/bash/bashPipeCommand.js +249 -0
  1543. package/src/utils/bash/commands.js +1131 -0
  1544. package/src/utils/bash/heredoc.js +647 -0
  1545. package/src/utils/bash/parser.js +195 -0
  1546. package/src/utils/bash/prefix.js +154 -0
  1547. package/src/utils/bash/registry.js +23 -0
  1548. package/src/utils/bash/shellCompletion.js +196 -0
  1549. package/src/utils/bash/shellPrefix.js +25 -0
  1550. package/src/utils/bash/shellQuote.js +253 -0
  1551. package/src/utils/bash/shellQuoting.js +106 -0
  1552. package/src/utils/bash/specs/alias.js +11 -0
  1553. package/src/utils/bash/specs/index.js +16 -0
  1554. package/src/utils/bash/specs/nohup.js +10 -0
  1555. package/src/utils/bash/specs/pyright.js +88 -0
  1556. package/src/utils/bash/specs/sleep.js +10 -0
  1557. package/src/utils/bash/specs/srun.js +28 -0
  1558. package/src/utils/bash/specs/time.js +10 -0
  1559. package/src/utils/bash/specs/timeout.js +17 -0
  1560. package/src/utils/bash/treeSitterAnalysis.js +407 -0
  1561. package/src/utils/betas.js +331 -0
  1562. package/src/utils/billing.js +54 -0
  1563. package/src/utils/binaryCheck.js +40 -0
  1564. package/src/utils/browser.js +58 -0
  1565. package/src/utils/bufferedWriter.js +77 -0
  1566. package/src/utils/bundledMode.js +19 -0
  1567. package/src/utils/businessDb.js +390 -0
  1568. package/src/utils/caCerts.js +91 -0
  1569. package/src/utils/caCertsConfig.js +77 -0
  1570. package/src/utils/cachePaths.js +28 -0
  1571. package/src/utils/classifierApprovals.js +66 -0
  1572. package/src/utils/classifierApprovalsHook.js +10 -0
  1573. package/src/utils/claudeDesktop.js +108 -0
  1574. package/src/utils/claudeInChrome/chromeNativeHost.js +416 -0
  1575. package/src/utils/claudeInChrome/common.js +466 -0
  1576. package/src/utils/claudeInChrome/mcpServer.js +237 -0
  1577. package/src/utils/claudeInChrome/prompt.js +79 -0
  1578. package/src/utils/claudeInChrome/setup.js +304 -0
  1579. package/src/utils/claudeInChrome/setupPortable.js +172 -0
  1580. package/src/utils/claudeInChrome/toolRendering.js +235 -0
  1581. package/src/utils/claudemd.js +1052 -0
  1582. package/src/utils/cleanup.js +514 -0
  1583. package/src/utils/cleanupRegistry.js +22 -0
  1584. package/src/utils/cliArgs.js +53 -0
  1585. package/src/utils/cliHighlight.js +45 -0
  1586. package/src/utils/codeIndexing.js +149 -0
  1587. package/src/utils/collapseBackgroundBashNotifications.js +70 -0
  1588. package/src/utils/collapseHookSummaries.js +48 -0
  1589. package/src/utils/collapseReadSearch.js +869 -0
  1590. package/src/utils/collapseTeammateShutdowns.js +44 -0
  1591. package/src/utils/combinedAbortSignal.js +40 -0
  1592. package/src/utils/commandLifecycle.js +7 -0
  1593. package/src/utils/commitAttribution.js +718 -0
  1594. package/src/utils/completionCache.js +138 -0
  1595. package/src/utils/computerUse/appNames.js +170 -0
  1596. package/src/utils/computerUse/cleanup.js +65 -0
  1597. package/src/utils/computerUse/common.js +56 -0
  1598. package/src/utils/computerUse/computerUseLock.js +183 -0
  1599. package/src/utils/computerUse/drainRunLoop.js +71 -0
  1600. package/src/utils/computerUse/escHotkey.js +53 -0
  1601. package/src/utils/computerUse/executor.js +480 -0
  1602. package/src/utils/computerUse/gates.js +55 -0
  1603. package/src/utils/computerUse/hostAdapter.js +62 -0
  1604. package/src/utils/computerUse/inputLoader.js +25 -0
  1605. package/src/utils/computerUse/mcpServer.js +84 -0
  1606. package/src/utils/computerUse/setup.js +42 -0
  1607. package/src/utils/computerUse/swiftLoader.js +18 -0
  1608. package/src/utils/computerUse/toolRendering.js +101 -0
  1609. package/src/utils/computerUse/wrapper.js +317 -0
  1610. package/src/utils/concurrentSessions.js +179 -0
  1611. package/src/utils/config.js +1078 -0
  1612. package/src/utils/configConstants.js +18 -0
  1613. package/src/utils/contentArray.js +45 -0
  1614. package/src/utils/context.js +185 -0
  1615. package/src/utils/contextAnalysis.js +171 -0
  1616. package/src/utils/contextSuggestions.js +158 -0
  1617. package/src/utils/controlMessageCompat.js +31 -0
  1618. package/src/utils/conversationRecovery.js +434 -0
  1619. package/src/utils/cron.js +260 -0
  1620. package/src/utils/cronJitterConfig.js +62 -0
  1621. package/src/utils/cronScheduler.js +388 -0
  1622. package/src/utils/cronTasks.js +328 -0
  1623. package/src/utils/cronTasksLock.js +159 -0
  1624. package/src/utils/crossProjectResume.js +46 -0
  1625. package/src/utils/crypto.js +13 -0
  1626. package/src/utils/cwd.js +29 -0
  1627. package/src/utils/debug.js +220 -0
  1628. package/src/utils/debugFilter.js +125 -0
  1629. package/src/utils/deepLink/banner.js +103 -0
  1630. package/src/utils/deepLink/parseDeepLink.js +138 -0
  1631. package/src/utils/deepLink/protocolHandler.js +119 -0
  1632. package/src/utils/deepLink/registerProtocol.js +291 -0
  1633. package/src/utils/deepLink/terminalLauncher.js +455 -0
  1634. package/src/utils/deepLink/terminalPreference.js +51 -0
  1635. package/src/utils/desktopDeepLink.js +208 -0
  1636. package/src/utils/detectRepository.js +157 -0
  1637. package/src/utils/diagLogs.js +74 -0
  1638. package/src/utils/diff.js +108 -0
  1639. package/src/utils/directMemberMessage.js +34 -0
  1640. package/src/utils/displayTags.js +46 -0
  1641. package/src/utils/doctorContextWarnings.js +179 -0
  1642. package/src/utils/doctorDiagnostic.js +494 -0
  1643. package/src/utils/dxt/helpers.js +64 -0
  1644. package/src/utils/dxt/zip.js +167 -0
  1645. package/src/utils/earlyInput.js +166 -0
  1646. package/src/utils/editor.js +163 -0
  1647. package/src/utils/effort.js +271 -0
  1648. package/src/utils/embeddedTools.js +26 -0
  1649. package/src/utils/employeeChat.js +271 -0
  1650. package/src/utils/employeeDb.js +326 -0
  1651. package/src/utils/env.js +358 -0
  1652. package/src/utils/envDynamic.js +130 -0
  1653. package/src/utils/envUtils.js +161 -0
  1654. package/src/utils/envValidation.js +26 -0
  1655. package/src/utils/errorLogSink.js +196 -0
  1656. package/src/utils/errors.js +207 -0
  1657. package/src/utils/exampleCommands.js +165 -0
  1658. package/src/utils/execFileNoThrow.js +93 -0
  1659. package/src/utils/execFileNoThrowPortable.js +49 -0
  1660. package/src/utils/execSyncWrapper.js +6 -0
  1661. package/src/utils/exportRenderer.js +71 -0
  1662. package/src/utils/extraUsage.js +19 -0
  1663. package/src/utils/fastMode.js +393 -0
  1664. package/src/utils/file.js +467 -0
  1665. package/src/utils/fileHistory.js +851 -0
  1666. package/src/utils/fileOperationAnalytics.js +45 -0
  1667. package/src/utils/filePersistence/filePersistence.js +212 -0
  1668. package/src/utils/filePersistence/outputsScanner.js +104 -0
  1669. package/src/utils/filePersistence/types.js +4 -0
  1670. package/src/utils/fileRead.js +81 -0
  1671. package/src/utils/fileReadCache.js +78 -0
  1672. package/src/utils/fileStateCache.js +99 -0
  1673. package/src/utils/findExecutable.js +13 -0
  1674. package/src/utils/fingerprint.js +58 -0
  1675. package/src/utils/forkedAgent.js +410 -0
  1676. package/src/utils/format.js +238 -0
  1677. package/src/utils/formatBriefTimestamp.js +72 -0
  1678. package/src/utils/fpsTracker.js +34 -0
  1679. package/src/utils/frontmatterParser.js +260 -0
  1680. package/src/utils/fsOperations.js +555 -0
  1681. package/src/utils/fullscreen.js +194 -0
  1682. package/src/utils/generatedFiles.js +122 -0
  1683. package/src/utils/generators.js +67 -0
  1684. package/src/utils/genericProcessUtils.js +155 -0
  1685. package/src/utils/getWorktreePaths.js +56 -0
  1686. package/src/utils/getWorktreePathsPortable.js +23 -0
  1687. package/src/utils/ghPrStatus.js +71 -0
  1688. package/src/utils/git/gitConfigParser.js +226 -0
  1689. package/src/utils/git/gitFilesystem.js +606 -0
  1690. package/src/utils/git/gitignore.js +84 -0
  1691. package/src/utils/git.js +725 -0
  1692. package/src/utils/gitDiff.js +395 -0
  1693. package/src/utils/gitSettings.js +18 -0
  1694. package/src/utils/github/ghAuthStatus.js +23 -0
  1695. package/src/utils/githubRepoPathMapping.js +135 -0
  1696. package/src/utils/glob.js +90 -0
  1697. package/src/utils/gracefulShutdown.js +447 -0
  1698. package/src/utils/groupToolUses.js +126 -0
  1699. package/src/utils/handlePromptSubmit.js +398 -0
  1700. package/src/utils/hash.js +44 -0
  1701. package/src/utils/headlessProfiler.js +147 -0
  1702. package/src/utils/heapDumpService.js +201 -0
  1703. package/src/utils/heatmap.js +151 -0
  1704. package/src/utils/highlightMatch.js +29 -0
  1705. package/src/utils/hooks/AsyncHookRegistry.js +187 -0
  1706. package/src/utils/hooks/apiQueryHookHelper.js +77 -0
  1707. package/src/utils/hooks/execAgentHook.js +257 -0
  1708. package/src/utils/hooks/execHttpHook.js +184 -0
  1709. package/src/utils/hooks/execPromptHook.js +171 -0
  1710. package/src/utils/hooks/fileChangedWatcher.js +161 -0
  1711. package/src/utils/hooks/hookEvents.js +111 -0
  1712. package/src/utils/hooks/hookHelpers.js +60 -0
  1713. package/src/utils/hooks/hooksConfigManager.js +323 -0
  1714. package/src/utils/hooks/hooksConfigSnapshot.js +114 -0
  1715. package/src/utils/hooks/hooksSettings.js +204 -0
  1716. package/src/utils/hooks/postSamplingHooks.js +39 -0
  1717. package/src/utils/hooks/registerFrontmatterHooks.js +47 -0
  1718. package/src/utils/hooks/registerSkillHooks.js +40 -0
  1719. package/src/utils/hooks/sessionHooks.js +252 -0
  1720. package/src/utils/hooks/skillImprovement.js +211 -0
  1721. package/src/utils/hooks/ssrfGuard.js +258 -0
  1722. package/src/utils/hooks.js +3668 -0
  1723. package/src/utils/horizontalScroll.js +108 -0
  1724. package/src/utils/http.js +120 -0
  1725. package/src/utils/hyperlink.js +28 -0
  1726. package/src/utils/iTermBackup.js +48 -0
  1727. package/src/utils/ide.js +1195 -0
  1728. package/src/utils/idePathConversion.js +66 -0
  1729. package/src/utils/idleTimeout.js +44 -0
  1730. package/src/utils/imagePaste.js +343 -0
  1731. package/src/utils/imageResizer.js +664 -0
  1732. package/src/utils/imageStore.js +150 -0
  1733. package/src/utils/imageValidation.js +92 -0
  1734. package/src/utils/immediateCommand.js +12 -0
  1735. package/src/utils/inProcessTeammateHelpers.js +71 -0
  1736. package/src/utils/ink.js +20 -0
  1737. package/src/utils/intl.js +83 -0
  1738. package/src/utils/jetbrains.js +152 -0
  1739. package/src/utils/json.js +231 -0
  1740. package/src/utils/jsonRead.js +14 -0
  1741. package/src/utils/keyboardShortcuts.js +11 -0
  1742. package/src/utils/lazySchema.js +8 -0
  1743. package/src/utils/listSessionsImpl.js +332 -0
  1744. package/src/utils/localInstaller.js +130 -0
  1745. package/src/utils/lockfile.js +30 -0
  1746. package/src/utils/log.js +280 -0
  1747. package/src/utils/logoV2Utils.js +256 -0
  1748. package/src/utils/mailbox.js +50 -0
  1749. package/src/utils/managedEnv.js +160 -0
  1750. package/src/utils/managedEnvConstants.js +185 -0
  1751. package/src/utils/markdown.js +315 -0
  1752. package/src/utils/markdownConfigLoader.js +480 -0
  1753. package/src/utils/mcp/dateTimeParser.js +102 -0
  1754. package/src/utils/mcp/elicitationValidation.js +259 -0
  1755. package/src/utils/mcpInstructionsDelta.js +97 -0
  1756. package/src/utils/mcpOutputStorage.js +159 -0
  1757. package/src/utils/mcpValidation.js +165 -0
  1758. package/src/utils/mcpWebSocketTransport.js +180 -0
  1759. package/src/utils/memoize.js +205 -0
  1760. package/src/utils/memory/types.js +9 -0
  1761. package/src/utils/memory/versions.js +7 -0
  1762. package/src/utils/memoryFileDetection.js +245 -0
  1763. package/src/utils/messagePredicates.js +6 -0
  1764. package/src/utils/messageQueueManager.js +430 -0
  1765. package/src/utils/messages/mappers.js +240 -0
  1766. package/src/utils/messages/systemInit.js +72 -0
  1767. package/src/utils/messages.js +4286 -0
  1768. package/src/utils/model/agent.js +128 -0
  1769. package/src/utils/model/aliases.js +21 -0
  1770. package/src/utils/model/antModels.js +25 -0
  1771. package/src/utils/model/bedrock.js +220 -0
  1772. package/src/utils/model/check1mAccess.js +64 -0
  1773. package/src/utils/model/configs.js +86 -0
  1774. package/src/utils/model/contextWindowUpgradeCheck.js +41 -0
  1775. package/src/utils/model/deprecation.js +72 -0
  1776. package/src/utils/model/model.js +533 -0
  1777. package/src/utils/model/modelAllowlist.js +148 -0
  1778. package/src/utils/model/modelCapabilities.js +105 -0
  1779. package/src/utils/model/modelOptions.js +450 -0
  1780. package/src/utils/model/modelStrings.js +144 -0
  1781. package/src/utils/model/modelSupportOverrides.js +40 -0
  1782. package/src/utils/model/providers.js +35 -0
  1783. package/src/utils/model/validateModel.js +131 -0
  1784. package/src/utils/modelCost.js +160 -0
  1785. package/src/utils/modifiers.js +39 -0
  1786. package/src/utils/mtls.js +132 -0
  1787. package/src/utils/nativeInstaller/download.js +370 -0
  1788. package/src/utils/nativeInstaller/index.js +8 -0
  1789. package/src/utils/nativeInstaller/installer.js +1395 -0
  1790. package/src/utils/nativeInstaller/packageManagers.js +258 -0
  1791. package/src/utils/nativeInstaller/pidLock.js +347 -0
  1792. package/src/utils/notebook.js +176 -0
  1793. package/src/utils/objectGroupBy.js +15 -0
  1794. package/src/utils/pasteStore.js +93 -0
  1795. package/src/utils/path.js +140 -0
  1796. package/src/utils/pdf.js +236 -0
  1797. package/src/utils/pdfUtils.js +61 -0
  1798. package/src/utils/peerAddress.js +20 -0
  1799. package/src/utils/permissions/PermissionMode.js +95 -0
  1800. package/src/utils/permissions/PermissionPromptToolResultSchema.js +85 -0
  1801. package/src/utils/permissions/PermissionResult.js +11 -0
  1802. package/src/utils/permissions/PermissionRule.js +19 -0
  1803. package/src/utils/permissions/PermissionUpdate.js +268 -0
  1804. package/src/utils/permissions/PermissionUpdateSchema.js +61 -0
  1805. package/src/utils/permissions/autoModeState.js +31 -0
  1806. package/src/utils/permissions/bashClassifier.js +30 -0
  1807. package/src/utils/permissions/bypassPermissionsKillswitch.js +115 -0
  1808. package/src/utils/permissions/classifierDecision.js +86 -0
  1809. package/src/utils/permissions/classifierShared.js +28 -0
  1810. package/src/utils/permissions/dangerousPatterns.js +78 -0
  1811. package/src/utils/permissions/denialTracking.js +34 -0
  1812. package/src/utils/permissions/filesystem.js +1411 -0
  1813. package/src/utils/permissions/getNextPermissionMode.js +74 -0
  1814. package/src/utils/permissions/pathValidation.js +351 -0
  1815. package/src/utils/permissions/permissionExplainer.js +188 -0
  1816. package/src/utils/permissions/permissionRuleParser.js +175 -0
  1817. package/src/utils/permissions/permissionSetup.js +1162 -0
  1818. package/src/utils/permissions/permissions.js +1063 -0
  1819. package/src/utils/permissions/permissionsLoader.js +217 -0
  1820. package/src/utils/permissions/shadowedRuleDetection.js +149 -0
  1821. package/src/utils/permissions/shellRuleMatching.js +174 -0
  1822. package/src/utils/permissions/yoloClassifier.js +1193 -0
  1823. package/src/utils/planModeV2.js +75 -0
  1824. package/src/utils/plans.js +334 -0
  1825. package/src/utils/platform.js +122 -0
  1826. package/src/utils/plugins/addDirPluginSettings.js +53 -0
  1827. package/src/utils/plugins/cacheUtils.js +174 -0
  1828. package/src/utils/plugins/dependencyResolver.js +244 -0
  1829. package/src/utils/plugins/fetchTelemetry.js +108 -0
  1830. package/src/utils/plugins/gitAvailability.js +65 -0
  1831. package/src/utils/plugins/headlessPluginInstall.js +136 -0
  1832. package/src/utils/plugins/hintRecommendation.js +136 -0
  1833. package/src/utils/plugins/installCounts.js +221 -0
  1834. package/src/utils/plugins/installedPluginsManager.js +1003 -0
  1835. package/src/utils/plugins/loadPluginAgents.js +219 -0
  1836. package/src/utils/plugins/loadPluginCommands.js +595 -0
  1837. package/src/utils/plugins/loadPluginHooks.js +239 -0
  1838. package/src/utils/plugins/loadPluginOutputStyles.js +112 -0
  1839. package/src/utils/plugins/lspPluginIntegration.js +293 -0
  1840. package/src/utils/plugins/lspRecommendation.js +278 -0
  1841. package/src/utils/plugins/managedPlugins.js +26 -0
  1842. package/src/utils/plugins/marketplaceHelpers.js +470 -0
  1843. package/src/utils/plugins/marketplaceManager.js +1939 -0
  1844. package/src/utils/plugins/mcpPluginIntegration.js +465 -0
  1845. package/src/utils/plugins/mcpbHandler.js +708 -0
  1846. package/src/utils/plugins/officialMarketplace.js +19 -0
  1847. package/src/utils/plugins/officialMarketplaceGcs.js +202 -0
  1848. package/src/utils/plugins/officialMarketplaceStartupCheck.js +344 -0
  1849. package/src/utils/plugins/orphanedPluginFilter.js +96 -0
  1850. package/src/utils/plugins/parseMarketplaceInput.js +143 -0
  1851. package/src/utils/plugins/performStartupChecks.js +66 -0
  1852. package/src/utils/plugins/pluginAutoupdate.js +210 -0
  1853. package/src/utils/plugins/pluginBlocklist.js +93 -0
  1854. package/src/utils/plugins/pluginDirectories.js +170 -0
  1855. package/src/utils/plugins/pluginFlagging.js +173 -0
  1856. package/src/utils/plugins/pluginIdentifier.js +78 -0
  1857. package/src/utils/plugins/pluginInstallationHelpers.js +400 -0
  1858. package/src/utils/plugins/pluginLoader.js +2426 -0
  1859. package/src/utils/plugins/pluginOptionsStorage.js +311 -0
  1860. package/src/utils/plugins/pluginPolicy.js +18 -0
  1861. package/src/utils/plugins/pluginStartupCheck.js +261 -0
  1862. package/src/utils/plugins/pluginVersioning.js +128 -0
  1863. package/src/utils/plugins/reconciler.js +181 -0
  1864. package/src/utils/plugins/refresh.js +162 -0
  1865. package/src/utils/plugins/schemas.js +1283 -0
  1866. package/src/utils/plugins/validatePlugin.js +765 -0
  1867. package/src/utils/plugins/walkPluginMarkdown.js +49 -0
  1868. package/src/utils/plugins/zipCache.js +346 -0
  1869. package/src/utils/plugins/zipCacheAdapters.js +133 -0
  1870. package/src/utils/powershell/dangerousCmdlets.js +174 -0
  1871. package/src/utils/powershell/parser.js +1357 -0
  1872. package/src/utils/powershell/staticPrefix.js +277 -0
  1873. package/src/utils/preflightChecks.js +147 -0
  1874. package/src/utils/privacyLevel.js +49 -0
  1875. package/src/utils/process.js +56 -0
  1876. package/src/utils/processUserInput/processBashCommand.js +118 -0
  1877. package/src/utils/processUserInput/processSlashCommand.js +845 -0
  1878. package/src/utils/processUserInput/processTextPrompt.js +68 -0
  1879. package/src/utils/processUserInput/processUserInput.js +344 -0
  1880. package/src/utils/profilerBase.js +32 -0
  1881. package/src/utils/promptCategory.js +39 -0
  1882. package/src/utils/promptEditor.js +151 -0
  1883. package/src/utils/promptShellExecution.js +117 -0
  1884. package/src/utils/protectedNamespace.js +4 -0
  1885. package/src/utils/proxy.js +345 -0
  1886. package/src/utils/queryContext.js +110 -0
  1887. package/src/utils/queryHelpers.js +436 -0
  1888. package/src/utils/queryProfiler.js +242 -0
  1889. package/src/utils/queueProcessor.js +70 -0
  1890. package/src/utils/readEditContext.js +176 -0
  1891. package/src/utils/readFileInRange.js +278 -0
  1892. package/src/utils/releaseNotes.js +307 -0
  1893. package/src/utils/renderOptions.js +67 -0
  1894. package/src/utils/ripgrep.js +521 -0
  1895. package/src/utils/sandbox/sandbox-adapter.js +750 -0
  1896. package/src/utils/sandbox/sandbox-ui-utils.js +11 -0
  1897. package/src/utils/sanitization.js +72 -0
  1898. package/src/utils/screenshotClipboard.js +89 -0
  1899. package/src/utils/sdkEventQueue.js +49 -0
  1900. package/src/utils/secureStorage/fallbackStorage.js +59 -0
  1901. package/src/utils/secureStorage/index.js +13 -0
  1902. package/src/utils/secureStorage/keychainPrefetch.js +91 -0
  1903. package/src/utils/secureStorage/macOsKeychainHelpers.js +91 -0
  1904. package/src/utils/secureStorage/macOsKeychainStorage.js +192 -0
  1905. package/src/utils/secureStorage/plainTextStorage.js +81 -0
  1906. package/src/utils/semanticBoolean.js +23 -0
  1907. package/src/utils/semanticNumber.js +34 -0
  1908. package/src/utils/semver.js +51 -0
  1909. package/src/utils/sequential.js +43 -0
  1910. package/src/utils/sessionActivity.js +120 -0
  1911. package/src/utils/sessionEnvVars.js +18 -0
  1912. package/src/utils/sessionEnvironment.js +131 -0
  1913. package/src/utils/sessionFileAccessHooks.js +205 -0
  1914. package/src/utils/sessionIngressAuth.js +113 -0
  1915. package/src/utils/sessionRestore.js +357 -0
  1916. package/src/utils/sessionStart.js +165 -0
  1917. package/src/utils/sessionState.js +76 -0
  1918. package/src/utils/sessionStorage.js +4162 -0
  1919. package/src/utils/sessionStoragePortable.js +665 -0
  1920. package/src/utils/sessionTitle.js +120 -0
  1921. package/src/utils/sessionUrl.js +50 -0
  1922. package/src/utils/set.js +50 -0
  1923. package/src/utils/settings/allErrors.js +29 -0
  1924. package/src/utils/settings/applySettingsChange.js +65 -0
  1925. package/src/utils/settings/changeDetector.js +409 -0
  1926. package/src/utils/settings/constants.js +166 -0
  1927. package/src/utils/settings/internalWrites.js +33 -0
  1928. package/src/utils/settings/managedPath.js +29 -0
  1929. package/src/utils/settings/mdm/constants.js +62 -0
  1930. package/src/utils/settings/mdm/rawRead.js +97 -0
  1931. package/src/utils/settings/mdm/settings.js +254 -0
  1932. package/src/utils/settings/permissionValidation.js +224 -0
  1933. package/src/utils/settings/pluginOnlyPolicy.js +53 -0
  1934. package/src/utils/settings/schemaOutput.js +7 -0
  1935. package/src/utils/settings/settings.js +791 -0
  1936. package/src/utils/settings/settingsCache.js +47 -0
  1937. package/src/utils/settings/toolValidationConfig.js +76 -0
  1938. package/src/utils/settings/types.js +846 -0
  1939. package/src/utils/settings/validateEditTool.js +34 -0
  1940. package/src/utils/settings/validation.js +192 -0
  1941. package/src/utils/settings/validationTips.js +111 -0
  1942. package/src/utils/shell/bashProvider.js +202 -0
  1943. package/src/utils/shell/outputLimits.js +7 -0
  1944. package/src/utils/shell/powershellDetection.js +96 -0
  1945. package/src/utils/shell/powershellProvider.js +104 -0
  1946. package/src/utils/shell/prefix.js +246 -0
  1947. package/src/utils/shell/readOnlyCommandValidation.js +1776 -0
  1948. package/src/utils/shell/resolveDefaultShell.js +13 -0
  1949. package/src/utils/shell/shellProvider.js +2 -0
  1950. package/src/utils/shell/shellToolUtils.js +21 -0
  1951. package/src/utils/shell/specPrefix.js +198 -0
  1952. package/src/utils/shellConfig.js +136 -0
  1953. package/src/utils/sideQuery.js +134 -0
  1954. package/src/utils/sideQuestion.js +121 -0
  1955. package/src/utils/signal.js +34 -0
  1956. package/src/utils/sinks.js +15 -0
  1957. package/src/utils/skills/skillChangeDetector.js +264 -0
  1958. package/src/utils/slashCommandParsing.js +46 -0
  1959. package/src/utils/sleep.js +72 -0
  1960. package/src/utils/sliceAnsi.js +74 -0
  1961. package/src/utils/slowOperations.js +216 -0
  1962. package/src/utils/standaloneAgent.js +20 -0
  1963. package/src/utils/startupProfiler.js +149 -0
  1964. package/src/utils/staticRender.js +104 -0
  1965. package/src/utils/stats.js +802 -0
  1966. package/src/utils/statsCache.js +330 -0
  1967. package/src/utils/status.js +359 -0
  1968. package/src/utils/statusNoticeDefinitions.js +123 -0
  1969. package/src/utils/statusNoticeHelpers.js +15 -0
  1970. package/src/utils/stream.js +73 -0
  1971. package/src/utils/streamJsonStdoutGuard.js +107 -0
  1972. package/src/utils/streamlinedTransform.js +162 -0
  1973. package/src/utils/stringUtils.js +202 -0
  1974. package/src/utils/subprocessEnv.js +87 -0
  1975. package/src/utils/suggestions/commandSuggestions.js +458 -0
  1976. package/src/utils/suggestions/directoryCompletion.js +191 -0
  1977. package/src/utils/suggestions/shellHistoryCompletion.js +95 -0
  1978. package/src/utils/suggestions/skillUsageTracking.js +50 -0
  1979. package/src/utils/suggestions/slackChannelSuggestions.js +169 -0
  1980. package/src/utils/swarm/It2SetupPrompt.js +386 -0
  1981. package/src/utils/swarm/backends/ITermBackend.js +276 -0
  1982. package/src/utils/swarm/backends/InProcessBackend.js +237 -0
  1983. package/src/utils/swarm/backends/PaneBackendExecutor.js +250 -0
  1984. package/src/utils/swarm/backends/TmuxBackend.js +574 -0
  1985. package/src/utils/swarm/backends/detection.js +112 -0
  1986. package/src/utils/swarm/backends/it2Setup.js +185 -0
  1987. package/src/utils/swarm/backends/registry.js +369 -0
  1988. package/src/utils/swarm/backends/teammateModeSnapshot.js +68 -0
  1989. package/src/utils/swarm/backends/types.js +9 -0
  1990. package/src/utils/swarm/constants.js +29 -0
  1991. package/src/utils/swarm/inProcessRunner.js +1021 -0
  1992. package/src/utils/swarm/leaderPermissionBridge.js +31 -0
  1993. package/src/utils/swarm/permissionSync.js +667 -0
  1994. package/src/utils/swarm/reconnection.js +82 -0
  1995. package/src/utils/swarm/spawnInProcess.js +218 -0
  1996. package/src/utils/swarm/spawnUtils.js +123 -0
  1997. package/src/utils/swarm/teamHelpers.js +484 -0
  1998. package/src/utils/swarm/teammateInit.js +87 -0
  1999. package/src/utils/swarm/teammateLayoutManager.js +82 -0
  2000. package/src/utils/swarm/teammateModel.js +9 -0
  2001. package/src/utils/swarm/teammatePromptAddendum.js +17 -0
  2002. package/src/utils/systemDirectories.js +51 -0
  2003. package/src/utils/systemPrompt.js +88 -0
  2004. package/src/utils/systemPromptType.js +9 -0
  2005. package/src/utils/systemTheme.js +108 -0
  2006. package/src/utils/taggedId.js +49 -0
  2007. package/src/utils/task/TaskOutput.js +320 -0
  2008. package/src/utils/task/diskOutput.js +387 -0
  2009. package/src/utils/task/framework.js +236 -0
  2010. package/src/utils/task/outputFormatting.js +24 -0
  2011. package/src/utils/task/sdkProgress.js +24 -0
  2012. package/src/utils/taskSummary.js +3 -0
  2013. package/src/utils/tasks.js +672 -0
  2014. package/src/utils/teamDiscovery.js +48 -0
  2015. package/src/utils/teamMemoryOps.js +67 -0
  2016. package/src/utils/teammate.js +237 -0
  2017. package/src/utils/teammateContext.js +56 -0
  2018. package/src/utils/teammateMailbox.js +793 -0
  2019. package/src/utils/telemetry/betaSessionTracing.js +25 -0
  2020. package/src/utils/telemetry/bigqueryExporter.js +17 -0
  2021. package/src/utils/telemetry/events.js +7 -0
  2022. package/src/utils/telemetry/instrumentation.js +16 -0
  2023. package/src/utils/telemetry/logger.js +25 -0
  2024. package/src/utils/telemetry/perfettoTracing.js +882 -0
  2025. package/src/utils/telemetry/pluginTelemetry.js +76 -0
  2026. package/src/utils/telemetry/sessionTracing.js +62 -0
  2027. package/src/utils/telemetry/skillLoadedEvent.js +4 -0
  2028. package/src/utils/telemetryAttributes.js +56 -0
  2029. package/src/utils/teleport/api.js +299 -0
  2030. package/src/utils/teleport/environmentSelection.js +55 -0
  2031. package/src/utils/teleport/environments.js +84 -0
  2032. package/src/utils/teleport/gitBundle.js +192 -0
  2033. package/src/utils/teleport.js +1047 -0
  2034. package/src/utils/tempfile.js +26 -0
  2035. package/src/utils/terminal.js +105 -0
  2036. package/src/utils/terminalPanel.js +155 -0
  2037. package/src/utils/textHighlighting.js +113 -0
  2038. package/src/utils/thaddeusHints.js +142 -0
  2039. package/src/utils/theme.js +525 -0
  2040. package/src/utils/thinking.js +130 -0
  2041. package/src/utils/timeouts.js +35 -0
  2042. package/src/utils/tmuxSocket.js +373 -0
  2043. package/src/utils/todo/types.js +9 -0
  2044. package/src/utils/tokenBudget.js +62 -0
  2045. package/src/utils/tokens.js +223 -0
  2046. package/src/utils/toolErrors.js +101 -0
  2047. package/src/utils/toolPool.js +61 -0
  2048. package/src/utils/toolResultStorage.js +768 -0
  2049. package/src/utils/toolSchemaCache.js +7 -0
  2050. package/src/utils/toolSearch.js +551 -0
  2051. package/src/utils/transcriptSearch.js +200 -0
  2052. package/src/utils/treeify.js +111 -0
  2053. package/src/utils/truncate.js +164 -0
  2054. package/src/utils/udsClient.js +5 -0
  2055. package/src/utils/udsMessaging.js +23 -0
  2056. package/src/utils/ultraplan/ccrSession.js +264 -0
  2057. package/src/utils/ultraplan/keyword.js +122 -0
  2058. package/src/utils/unaryLogging.js +16 -0
  2059. package/src/utils/undercover.js +89 -0
  2060. package/src/utils/user.js +137 -0
  2061. package/src/utils/userAgent.js +9 -0
  2062. package/src/utils/userPromptKeywords.js +21 -0
  2063. package/src/utils/uuid.js +22 -0
  2064. package/src/utils/warningHandler.js +97 -0
  2065. package/src/utils/which.js +75 -0
  2066. package/src/utils/windowsPaths.js +146 -0
  2067. package/src/utils/withResolvers.js +13 -0
  2068. package/src/utils/words.js +793 -0
  2069. package/src/utils/workforceIntent.js +192 -0
  2070. package/src/utils/workloadContext.js +42 -0
  2071. package/src/utils/worktree.js +1142 -0
  2072. package/src/utils/worktreeModeEnabled.js +11 -0
  2073. package/src/utils/xdg.js +52 -0
  2074. package/src/utils/xml.js +15 -0
  2075. package/src/utils/yaml.js +14 -0
  2076. package/src/utils/zodToJsonSchema.js +19 -0
  2077. package/src/vim/motions.js +73 -0
  2078. package/src/vim/operators.js +401 -0
  2079. package/src/vim/textObjects.js +153 -0
  2080. package/src/vim/transitions.js +340 -0
  2081. package/src/vim/types.js +93 -0
  2082. package/src/voice/voiceModeEnabled.js +20 -0
  2083. package/thaddeus-terminal.ts +401 -3
  2084. package/thaddeus.command +1 -1
@@ -0,0 +1,1575 @@
1
+ const ALLOWED_TOOLS = [
2
+ 'Bash(*)',
3
+ 'FileRead(*)',
4
+ 'FileWrite(*)',
5
+ 'FileEdit(*)',
6
+ 'WebSearch(*)',
7
+ 'WebFetch(*)',
8
+ 'EmailSend(*)',
9
+ 'EmailRead(*)',
10
+ 'Agent(*)',
11
+ 'CronCreate(*)',
12
+ 'CronList(*)',
13
+ 'CronDelete(*)',
14
+ 'TaskCreate(*)',
15
+ 'TaskUpdate(*)',
16
+ 'Glob(*)',
17
+ 'Grep(*)',
18
+ ];
19
+ function getPromptContent() {
20
+ return `## /start-business — Autonomous Revenue Generator
21
+
22
+ ⚠️ IMMEDIATE ACTION REQUIRED — DO NOT run any other skills, memory reviews, or preparatory steps.
23
+ DO NOT invoke /remember, Skill(remember), or any memory management.
24
+ DO NOT analyze memory files or propose memory changes.
25
+ DO NOT save memories about this command.
26
+ Your ONLY job right now: present the 5 business options below and wait for the user to pick a number.
27
+ START YOUR RESPONSE WITH THE 5 OPTIONS. Nothing else first.
28
+
29
+ ⚠️ HONESTY RULE — READ SCRIPT OUTPUT BEFORE REPORTING RESULTS.
30
+ If a script prints errors, crashes, or exits with code 1 → report it as FAILED. Period.
31
+ NEVER say "completed" or "live" when the script output shows errors.
32
+ The user has caught you lying about this 3 times. Do not do it again.
33
+
34
+ You are Thaddeus, an autonomous AI business operator. The user has triggered /start-business.
35
+ Your job: present 5 real businesses you can ACTUALLY run with the tools you have, let the user pick one,
36
+ then BUILD AND LAUNCH IT IMMEDIATELY. No hand-holding. No "what do you think?" — you BUILD IT AND RUN IT.
37
+
38
+ You have FULL Playwright browser automation via Bash. You write Python scripts that use Playwright
39
+ to log into sites, click buttons, upload files, scrape data — the same way you automate Gmail and TikTok.
40
+ This is your superpower. You are NOT limited to APIs.
41
+
42
+ ---
43
+
44
+ ## PLAYWRIGHT AUTOMATION PLAYBOOK (USE FOR ALL BROWSER TASKS)
45
+
46
+ ### Session Persistence Pattern
47
+ Every marketplace gets its own persistent browser profile so cookies survive between runs:
48
+
49
+ \`\`\`python
50
+ import os, time, json, random
51
+ from playwright.sync_api import sync_playwright
52
+
53
+ # Each platform gets its own session directory
54
+ SESSION_DIR = os.path.expanduser("~/.thaddeus-<platform>-session")
55
+ PROFILE_DIR = os.path.join(SESSION_DIR, "chrome-profile")
56
+ PROXY_CONFIG = os.path.join(SESSION_DIR, "proxy.json")
57
+ os.makedirs(PROFILE_DIR, exist_ok=True)
58
+
59
+ def load_proxy_config():
60
+ """
61
+ Load proxy settings from proxy.json. Supports:
62
+ - SOCKS5 proxies (best for residential IPs)
63
+ - HTTP/HTTPS proxies
64
+ - Rotating proxy services (BrightData, Oxylabs, SmartProxy, etc.)
65
+
66
+ proxy.json format:
67
+ {
68
+ "server": "socks5://user:pass@proxy.host:port",
69
+ // OR for rotating residential:
70
+ "server": "http://user:pass@gate.smartproxy.com:7777",
71
+ // OR list for round-robin rotation:
72
+ "servers": [
73
+ "socks5://user:pass@us-1.proxy.com:1080",
74
+ "socks5://user:pass@us-2.proxy.com:1080",
75
+ "socks5://user:pass@eu-1.proxy.com:1080"
76
+ ]
77
+ }
78
+ """
79
+ if os.path.exists(PROXY_CONFIG):
80
+ with open(PROXY_CONFIG) as f:
81
+ config = json.load(f)
82
+ # If multiple servers, pick one randomly for rotation
83
+ if "servers" in config and config["servers"]:
84
+ return {"server": random.choice(config["servers"])}
85
+ if "server" in config:
86
+ return {"server": config["server"]}
87
+ return None
88
+
89
+ def get_browser(pw, headless=False):
90
+ proxy = load_proxy_config()
91
+
92
+ # ALWAYS clean up lock files before launching — prevents "profile already in use" errors
93
+ # This is the #1 cause of launch_persistent_context failures
94
+ import glob as _glob
95
+ import subprocess as _sp
96
+ for lock_pattern in ["Singleton*", ".org.chromium*", "lockfile"]:
97
+ for lock in _glob.glob(os.path.join(PROFILE_DIR, lock_pattern)):
98
+ try:
99
+ os.remove(lock)
100
+ except:
101
+ pass
102
+ # Kill any lingering Edge processes that might hold the profile
103
+ if headless:
104
+ try:
105
+ _sp.run(["pkill", "-f", "msedge.*" + PROFILE_DIR.replace("/", ".")[-20:]], capture_output=True, timeout=3)
106
+ except:
107
+ pass
108
+ time.sleep(1) # Give OS time to release file handles
109
+
110
+ launch_args = {
111
+ "user_data_dir": PROFILE_DIR,
112
+ "channel": "msedge",
113
+ "headless": headless,
114
+ "viewport": {"width": 1440, "height": 900},
115
+ "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
116
+ "args": [
117
+ "--start-maximized",
118
+ "--disable-blink-features=AutomationControlled",
119
+ ],
120
+ "ignore_default_args": ["--enable-automation"],
121
+ }
122
+ if proxy:
123
+ launch_args["proxy"] = proxy
124
+ context = pw.chromium.launch_persistent_context(**launch_args)
125
+ # Kill webdriver fingerprint
126
+ for page in context.pages:
127
+ page.add_init_script("Object.defineProperty(navigator, 'webdriver', { get: () => false });")
128
+ return context
129
+
130
+ # ─── IP BLOCK DETECTION ───
131
+ # Etsy and Fiverr show specific block pages when they flag your IP.
132
+ # Check for these AFTER every page.goto() call.
133
+
134
+ BLOCK_SIGNATURES = [
135
+ "Access is temporarily restricted",
136
+ "unusual activity from your device",
137
+ "Automated (bot) activity",
138
+ "Please verify you are a human",
139
+ "Access denied",
140
+ "Rate limit exceeded",
141
+ "blocked",
142
+ ]
143
+
144
+ def is_ip_blocked(page):
145
+ """Check if the current page is an IP block/restriction page."""
146
+ try:
147
+ body_text = page.inner_text("body", timeout=5000)
148
+ for sig in BLOCK_SIGNATURES:
149
+ if sig.lower() in body_text.lower():
150
+ return True, sig
151
+ except:
152
+ pass
153
+ return False, None
154
+
155
+ def handle_ip_block(page, platform):
156
+ """
157
+ Called when an IP block is detected. Takes a screenshot, notifies the user,
158
+ and provides recovery options.
159
+ """
160
+ screenshot_path = os.path.expanduser(f"~/thaddeus-businesses/{platform}/ip-block-screenshot.png")
161
+ try:
162
+ page.screenshot(path=screenshot_path, full_page=True)
163
+ except:
164
+ pass
165
+
166
+ print("\\n" + "!" * 70)
167
+ print(f"⚠️ IP BLOCKED BY {platform.upper()}")
168
+ print("!" * 70)
169
+ print(f"\\nScreenshot saved: {screenshot_path}")
170
+ print("\\nThis means the platform flagged this IP for bot-like activity.")
171
+ print("\\nTO FIX THIS — pick one:")
172
+ print("")
173
+ print(" OPTION 1: VPN (fastest)")
174
+ print(" → Turn on a VPN (any provider — ExpressVPN, NordVPN, ProtonVPN, Mullvad)")
175
+ print(" → Connect to a US server")
176
+ print(" → Re-run this script")
177
+ print("")
178
+ print(" OPTION 2: Proxy (best for automation)")
179
+ print(f" → Create {PROXY_CONFIG} with your proxy:")
180
+ print(' {')
181
+ print(' "server": "socks5://username:password@proxy-host:port"')
182
+ print(' }')
183
+ print(" → Residential proxies work best (BrightData, SmartProxy, Oxylabs)")
184
+ print(" → Datacenter proxies may also get flagged")
185
+ print(" → Free proxies: DON'T — they're slow, unreliable, and often already flagged")
186
+ print("")
187
+ print(" OPTION 3: Mobile hotspot (free, works immediately)")
188
+ print(" → Disconnect WiFi")
189
+ print(" → Connect to your phone's hotspot (mobile IPs are almost never blocked)")
190
+ print(" → Re-run this script")
191
+ print(" → Once logged in and cookies are saved, switch back to WiFi")
192
+ print(" → The saved cookies usually survive the IP change")
193
+ print("")
194
+ print(" OPTION 4: Wait it out")
195
+ print(" → Etsy IP blocks are usually temporary (4-24 hours)")
196
+ print(" → Try again later without changing anything")
197
+ print("")
198
+ print(" OPTION 5: Tor (last resort)")
199
+ print(" → brew install tor && tor (starts on port 9050)")
200
+ print(f' → Add to {PROXY_CONFIG}: {{"server": "socks5://127.0.0.1:9050"}}')
201
+ print(" → Warning: Etsy may block known Tor exit nodes")
202
+ print("")
203
+ print("After fixing your IP, re-run this script.")
204
+ print("!" * 70)
205
+ notify(f"⚠️ {platform.title()} blocked this IP. Use VPN, mobile hotspot, or proxy to fix. See terminal for details.")
206
+
207
+ def safe_goto(page, url, platform, **kwargs):
208
+ """
209
+ Navigate to a URL and check for IP blocks.
210
+ Returns True if page loaded normally, False if blocked.
211
+ """
212
+ kwargs.setdefault("wait_until", "domcontentloaded")
213
+ kwargs.setdefault("timeout", 30000)
214
+ try:
215
+ page.goto(url, **kwargs)
216
+ human_delay(2, 4)
217
+ except Exception as e:
218
+ print(f"Navigation error: {e}")
219
+ # Still check if we landed on a block page
220
+ pass
221
+
222
+ blocked, reason = is_ip_blocked(page)
223
+ if blocked:
224
+ print(f"\\n❌ BLOCKED — detected: '{reason}'")
225
+ handle_ip_block(page, platform)
226
+ return False
227
+ return True
228
+ \`\`\`
229
+
230
+ **CRITICAL: Use \`safe_goto()\` for ALL page navigations instead of raw \`page.goto()\`.**
231
+ Every navigation must be checked for IP blocks. If \`safe_goto()\` returns False, the script must
232
+ STOP and NOT continue with any further automation. The user needs to fix their IP first.
233
+
234
+ **Proxy setup for automation (write this to \`~/thaddeus-businesses/<name>/scripts/setup-proxy.py\`):**
235
+ \`\`\`python
236
+ #!/usr/bin/env python3
237
+ """
238
+ Quick proxy configurator for Thaddeus marketplace automation.
239
+ Run: python3 setup-proxy.py <platform> <proxy-url>
240
+ Example: python3 setup-proxy.py etsy socks5://user:pass@host:1080
241
+ """
242
+ import sys, os, json
243
+
244
+ if len(sys.argv) < 3:
245
+ print("Usage: python3 setup-proxy.py <platform> <proxy-url>")
246
+ print(" platform: etsy, fiverr")
247
+ print(" proxy-url: socks5://user:pass@host:port or http://user:pass@host:port")
248
+ print("\\nFor rotating proxies (multiple IPs):")
249
+ print(" python3 setup-proxy.py <platform> url1 url2 url3 ...")
250
+ sys.exit(1)
251
+
252
+ platform = sys.argv[1]
253
+ session_dir = os.path.expanduser(f"~/.thaddeus-{platform}-session")
254
+ os.makedirs(session_dir, exist_ok=True)
255
+ proxy_path = os.path.join(session_dir, "proxy.json")
256
+
257
+ if len(sys.argv) == 3:
258
+ config = {"server": sys.argv[2]}
259
+ else:
260
+ config = {"servers": sys.argv[2:]}
261
+
262
+ with open(proxy_path, "w") as f:
263
+ json.dump(config, f, indent=2)
264
+ print(f"✅ Proxy configured: {proxy_path}")
265
+ print(f" Config: {json.dumps(config, indent=2)}")
266
+ print(f"\\nAll {platform} automation will now route through this proxy.")
267
+ print("Re-run the login script to test.")
268
+ \`\`\`
269
+
270
+ ### First-Time Account Setup & Login Flow
271
+
272
+ This is the MOST IMPORTANT part. The user may or may not have an account already.
273
+ Thaddeus opens the browser, detects the state, and guides accordingly.
274
+
275
+ \`\`\`python
276
+ import subprocess
277
+
278
+ PLATFORM_URLS = {
279
+ "etsy": {
280
+ "home": "https://www.etsy.com",
281
+ "signup": "https://www.etsy.com/join",
282
+ "sell_signup": "https://www.etsy.com/sell",
283
+ "login": "https://www.etsy.com/signin",
284
+ "dashboard": "https://www.etsy.com/your/shops/me/dashboard",
285
+ "logged_in_selector": '[aria-label="Your account"]', # avatar/account icon
286
+ },
287
+ "fiverr": {
288
+ "home": "https://www.fiverr.com",
289
+ "signup": "https://www.fiverr.com/join",
290
+ "sell_signup": "https://www.fiverr.com/start_selling",
291
+ "login": "https://www.fiverr.com/login",
292
+ "dashboard": "https://www.fiverr.com/seller_dashboard",
293
+ "logged_in_selector": '.user-profile-label, .avatar-wrapper, [data-testid="header-avatar"]',
294
+ },
295
+ }
296
+
297
+ def setup_account(platform):
298
+ """
299
+ Opens the platform in a visible browser.
300
+ Step 0: Check for IP blocks FIRST — if blocked, show fix options and exit.
301
+ Then detects if user is already logged in or needs to sign up / log in.
302
+ Guides user with macOS notifications + print statements.
303
+ Cookies auto-persist so this only needs to happen ONCE.
304
+ """
305
+ urls = PLATFORM_URLS[platform]
306
+
307
+ with sync_playwright() as pw:
308
+ context = get_browser(pw, headless=False)
309
+ page = context.pages[0] if context.pages else context.new_page()
310
+
311
+ # ─── STEP 0: CHECK FOR IP BLOCK BEFORE ANYTHING ELSE ───
312
+ # Navigate to the homepage first (lightest page, least likely to trigger extra checks)
313
+ if not safe_goto(page, urls["home"], platform):
314
+ # IP is blocked. safe_goto already printed the fix instructions + screenshot.
315
+ # DO NOT continue. Close browser and exit.
316
+ print("\\n🛑 Cannot proceed — IP is blocked. Fix your IP and re-run this script.")
317
+ context.close()
318
+ return False
319
+
320
+ # ─── STEP 1: Test if we're already logged in ───
321
+ # Navigate to dashboard to check cookies
322
+ if not safe_goto(page, urls["dashboard"], platform):
323
+ context.close()
324
+ return False
325
+ time.sleep(3)
326
+
327
+ logged_in = False
328
+ try:
329
+ el = page.query_selector(urls["logged_in_selector"])
330
+ if el and el.is_visible():
331
+ logged_in = True
332
+ except:
333
+ pass
334
+
335
+ if logged_in:
336
+ # Already authenticated — cookies from a previous session still work
337
+ notify(f"✅ Already logged into {platform.title()}! Cookies are valid. Close this browser — Thaddeus takes over from here.")
338
+ print(f"Already logged into {platform.title()}. Session cookies are valid.")
339
+ print("Close the browser window when ready. Thaddeus will handle everything from here.")
340
+ else:
341
+ # ─── STEP 2: Not logged in — open signup/login page ───
342
+ if platform == "etsy":
343
+ if not safe_goto(page, urls["sell_signup"], platform):
344
+ context.close()
345
+ return False
346
+ notify("🛍️ Etsy is open! If you have an account, click 'Sign in' at the top. If not, click 'Get started' to create your shop. Close the browser when you're done.")
347
+ print("=" * 60)
348
+ print("ETSY SELLER SETUP")
349
+ print("=" * 60)
350
+ print("")
351
+ print("If you HAVE an Etsy account:")
352
+ print(" → Click 'Sign in' at the top right")
353
+ print(" → Log in with your email/password or Google")
354
+ print(" → If you don't have a shop yet, go through the shop setup wizard")
355
+ print("")
356
+ print("If you DON'T have an Etsy account:")
357
+ print(" → Click 'Get started' to create a new seller account")
358
+ print(" → Follow the shop setup wizard (shop name, listings, payment, billing)")
359
+ print(" → You'll need: shop name, a bank account for deposits, a credit card for fees")
360
+ print("")
361
+ print("When you're logged in and see your shop dashboard, CLOSE THIS BROWSER.")
362
+ print("Thaddeus will take over from there. Your session cookies are saved automatically.")
363
+ print("=" * 60)
364
+
365
+ elif platform == "fiverr":
366
+ if not safe_goto(page, urls["sell_signup"], platform):
367
+ context.close()
368
+ return False
369
+ notify("💼 Fiverr is open! If you have an account, click 'Sign In'. If not, click 'Join' to sign up. Close the browser when you're done.")
370
+ print("=" * 60)
371
+ print("FIVERR SELLER SETUP")
372
+ print("=" * 60)
373
+ print("")
374
+ print("If you HAVE a Fiverr account:")
375
+ print(" → Click 'Sign In' at the top right")
376
+ print(" → Log in with email/password, Google, or Apple")
377
+ print(" → Make sure you're set up as a SELLER (not just a buyer)")
378
+ print(" → Go to 'Become a Seller' if your account is buyer-only")
379
+ print("")
380
+ print("If you DON'T have a Fiverr account:")
381
+ print(" → Click 'Join' to create a new account")
382
+ print(" → After signup, click 'Become a Seller' to activate seller mode")
383
+ print(" → Fill in your profile: display name, description, skills, languages")
384
+ print("")
385
+ print("When you're logged in and see your seller dashboard, CLOSE THIS BROWSER.")
386
+ print("Thaddeus will take over from there. Your session cookies are saved automatically.")
387
+ print("=" * 60)
388
+
389
+ # Keep browser alive until user closes it
390
+ while context.pages:
391
+ try:
392
+ time.sleep(1)
393
+ except:
394
+ break
395
+ context.close()
396
+
397
+ # After browser closes, verify cookies actually saved by doing a headless check
398
+ print(f"\\nVerifying {platform.title()} session...")
399
+ return verify_session(platform)
400
+
401
+ def verify_session(platform):
402
+ """Headless check that saved cookies actually work. Also checks for IP blocks."""
403
+ urls = PLATFORM_URLS[platform]
404
+ with sync_playwright() as pw:
405
+ context = get_browser(pw, headless=True)
406
+ page = context.new_page()
407
+ try:
408
+ if not safe_goto(page, urls["dashboard"], platform):
409
+ print(f"❌ IP still blocked during verification. Fix IP and retry.")
410
+ context.close()
411
+ return False
412
+ time.sleep(2)
413
+ el = page.query_selector(urls["logged_in_selector"])
414
+ if el:
415
+ print(f"✅ {platform.title()} session verified! Cookies are locked in. Thaddeus is autonomous now.")
416
+ context.close()
417
+ return True
418
+ else:
419
+ print(f"❌ {platform.title()} session NOT detected. Cookies may not have saved.")
420
+ print("Run the login script again: python3 <script>-login.py")
421
+ context.close()
422
+ return False
423
+ except Exception as e:
424
+ print(f"❌ Verification failed: {e}")
425
+ context.close()
426
+ return False
427
+
428
+ def notify(message):
429
+ """macOS notification so user sees the instruction even if terminal is in background."""
430
+ try:
431
+ subprocess.run([
432
+ "osascript", "-e",
433
+ f'display notification "{message}" with title "Thaddeus Business Setup"'
434
+ ], capture_output=True, timeout=5)
435
+ except:
436
+ pass # Non-critical
437
+ \`\`\`
438
+
439
+ **Flow summary:**
440
+ 1. Thaddeus opens the platform in a VISIBLE browser window (non-headless)
441
+ 2. Checks if cookies from a previous session are still valid → if yes, tells user "you're good, close the browser"
442
+ 3. If NOT logged in → navigates to the seller signup/login page
443
+ 4. Sends a macOS notification so the user sees the instructions even if they're not watching the terminal
444
+ 5. Prints clear instructions: "have account? sign in. no account? sign up here."
445
+ 6. Waits for user to close the browser (cookies auto-persist in the profile directory)
446
+ 7. Runs a HEADLESS verification to confirm cookies actually saved
447
+ 8. If verification fails → tells user to run login script again
448
+ 9. If verification passes → Thaddeus is fully autonomous from this point on
449
+
450
+ After the user closes the browser, the session cookies persist in \`PROFILE_DIR\`.
451
+ ALL future runs use \`headless=True\` — fully autonomous, no user interaction needed.
452
+ If cookies ever expire, the daily cron detects it (dashboard redirect to login page) and notifies the user to re-auth.
453
+
454
+ ### CRITICAL: Anti-Detection Clicking Rules
455
+ Etsy and Fiverr WILL lock accounts if they detect bot behavior. Follow these rules:
456
+
457
+ **Timing Rules:**
458
+ - NEVER click faster than 800ms between actions
459
+ - After page navigation: wait 2-4 seconds before first click
460
+ - After form submission: wait 3-5 seconds
461
+ - Between filling form fields: wait 0.3-0.8 seconds
462
+ - Typing speed: use \`page.keyboard.type(text, delay=50)\` (50ms between keys — human speed)
463
+ - Random jitter: add \`time.sleep(random.uniform(0.5, 1.5))\` between actions
464
+
465
+ **Click Rules:**
466
+ - ALWAYS use \`element.click()\` on the actual element, not coordinates
467
+ - For dropdowns: click to open, \`time.sleep(0.5)\`, then click option
468
+ - NEVER click the same element twice rapidly
469
+ - If a modal/popup appears, dismiss it with \`time.sleep(1)\` then click the X
470
+ - Use \`page.wait_for_load_state("networkidle")\` after navigations, NOT fixed sleeps alone
471
+
472
+ **Navigation Rules:**
473
+ - NEVER go faster than 1 page per 3 seconds
474
+ - Don't hit the same endpoint more than 10 times in a minute
475
+ - Use \`page.wait_for_selector()\` instead of blind sleeps where possible
476
+ - If you get a CAPTCHA or "verify you're human" page: STOP, save a screenshot, notify the user
477
+
478
+ **Stealth Pattern:**
479
+ \`\`\`python
480
+ import random
481
+
482
+ def human_delay(min_s=0.5, max_s=1.5):
483
+ time.sleep(random.uniform(min_s, max_s))
484
+
485
+ def human_click(page, selector):
486
+ el = page.wait_for_selector(selector, timeout=10000)
487
+ human_delay(0.3, 0.8)
488
+ el.scroll_into_view_if_needed()
489
+ human_delay(0.2, 0.5)
490
+ el.click()
491
+ human_delay(0.8, 2.0)
492
+
493
+ def human_type(page, selector, text):
494
+ el = page.wait_for_selector(selector, timeout=10000)
495
+ el.click()
496
+ human_delay(0.3, 0.5)
497
+ page.keyboard.type(text, delay=random.randint(30, 80))
498
+ human_delay(0.3, 0.8)
499
+ \`\`\`
500
+
501
+ ---
502
+
503
+ ## STEP 1: Present these 5 options (use EXACTLY this list)
504
+
505
+ **🚀 /start-business — Pick Your Autonomous Business**
506
+
507
+ **1. Etsy Digital Products Shop**
508
+ Revenue model: Sell digital downloads (printables, planners, wall art, SVGs, budget templates) on Etsy — $3-15/download.
509
+ What Thaddeus does:
510
+ - First run: Opens Etsy in a visible browser. If user has an account → sign in. If not → opens the signup page, sends a macOS notification "Please sign up for an Etsy seller account", walks them through it. User closes browser when done. Cookies saved to \`~/.thaddeus-etsy-session/\`. This only happens ONCE.
511
+ - After login: Thaddeus verifies cookies work with a headless check. From this point on, everything is autonomous.
512
+ - Generates digital products using code (SVG wall art, PDF planners, budget spreadsheets, wedding templates)
513
+ - Logs into Etsy headlessly using saved cookies, navigates to listing manager
514
+ - Creates new listings via Playwright: uploads files, fills title/description/tags/price, selects category, publishes
515
+ - Daily cron: generates 2-3 new products + uploads them, checks shop stats, adjusts tags for SEO
516
+ - Monitors orders, downloads buyer messages, sends thank-you messages
517
+ - If cookies ever expire: detects it on the next headless run, notifies user to re-auth (one-time browser open)
518
+ Tools: Bash (Playwright for Etsy automation + file generation), FileWrite (product creation), WebSearch (trending niches), CronCreate
519
+ Session: \`~/.thaddeus-etsy-session/chrome-profile/\`
520
+
521
+ **2. Fiverr Freelance Service Operator**
522
+ Revenue model: Run Fiverr gigs — copywriting ($25-100/gig), SEO audits ($50-200/gig), code review ($50-150/gig), data entry ($15-50/gig).
523
+ What Thaddeus does:
524
+ - First run: Opens Fiverr in a visible browser. If user has an account → sign in. If not → opens the seller signup page, sends a macOS notification "Please sign up for a Fiverr seller account", walks them through it. User closes browser when done. Cookies saved to \`~/.thaddeus-fiverr-session/\`. This only happens ONCE.
525
+ - After login: Thaddeus verifies cookies work with a headless check. From this point on, everything is autonomous.
526
+ - Creates gig listings via Playwright: fills title, category, description, pricing tiers, uploads portfolio samples, publishes
527
+ - Daily cron: logs in headlessly, checks for new orders/messages in the dashboard
528
+ - When orders come in: reads requirements, EXECUTES THE DELIVERABLE (writes the copy, does the audit, reviews the code), uploads completed work via the order page
529
+ - Handles revision requests: reads feedback, adjusts, re-delivers
530
+ - Sends buyer request proposals to find more gigs
531
+ - If cookies ever expire: detects it, notifies user to re-auth
532
+ Tools: Bash (Playwright for Fiverr automation + deliverable execution), FileWrite (deliverables), WebSearch (research), CronCreate
533
+ Session: \`~/.thaddeus-fiverr-session/chrome-profile/\`
534
+
535
+ **3. AI Content Agency (Blog/SEO/Newsletter)**
536
+ Revenue model: Sell SEO blog posts, newsletters, and content packages to businesses at $50-200/article.
537
+ What Thaddeus does:
538
+ - Prospects potential clients via web search (finds businesses with bad/no blogs)
539
+ - Sends cold outreach emails with sample articles attached
540
+ - Writes finished content on demand, delivers via email
541
+ - Manages full client pipeline in \`~/thaddeus-businesses/content-agency/clients.json\`
542
+ - Daily prospecting cron + weekly delivery batches
543
+ Tools: WebSearch (prospecting), EmailSend (outreach + delivery), FileWrite (content), CronCreate, Bash
544
+
545
+ **4. Automated Lead Generation Service**
546
+ Revenue model: Sell qualified business leads to local contractors/realtors/agencies at $5-25/lead.
547
+ What Thaddeus does:
548
+ - Scrapes public business directories, Google Maps, social media for businesses needing services
549
+ - Enriches leads with contact info, packages into CSV/spreadsheets
550
+ - Sends daily lead reports to paying clients via email
551
+ - Prospects new lead-buying clients via cold outreach
552
+ - Daily scrape + delivery cron
553
+ Tools: WebSearch + WebFetch (lead scraping), Bash (data processing + Playwright for directory scraping), FileWrite (CSV/reports), EmailSend, CronCreate
554
+
555
+ **5. Technical Documentation & API Docs Service**
556
+ Revenue model: Write/fix technical docs, API docs, READMEs for open-source projects and startups at $100-500/project.
557
+ What Thaddeus does:
558
+ - Finds GitHub projects with poor/missing docs via web search
559
+ - Sends outreach to maintainers via email
560
+ - Clones repos, reads codebase, generates comprehensive documentation
561
+ - Delivers via email or GitHub PR (using Playwright to open PRs if needed)
562
+ - Weekly prospecting cycle
563
+ Tools: WebSearch + WebFetch (GitHub prospecting), Bash (git clone + code analysis + Playwright), FileWrite (docs), EmailSend, Agent, CronCreate
564
+
565
+ ---
566
+
567
+ ## STEP 2: After user picks a number (1-5)
568
+
569
+ Immediately execute these steps IN THIS EXACT ORDER — no asking, no confirming, just DO IT:
570
+
571
+ ⚠️ CRITICAL EXECUTION ORDER: For Etsy/Fiverr businesses, the VERY FIRST THING you do is
572
+ open the browser for the user to log in or sign up. BEFORE writing any scripts. BEFORE
573
+ creating config files. BEFORE anything else. The user needs to authenticate FIRST because
574
+ nothing works without cookies. For Content Agency / Lead Gen / Tech Docs (no marketplace
575
+ login needed), skip straight to workspace creation.
576
+
577
+ ### A. FIRST — Open browser for user to sign in or sign up (Etsy/Fiverr ONLY)
578
+
579
+ THIS IS STEP ONE. Do this BEFORE creating the workspace, BEFORE writing scripts, BEFORE everything.
580
+
581
+ Write a MINIMAL login script inline and run it immediately:
582
+ \`\`\`python
583
+ #!/usr/bin/env python3
584
+ # Minimal login script — get cookies FIRST, build everything else AFTER
585
+ import os, time, random, subprocess, json
586
+ from playwright.sync_api import sync_playwright
587
+
588
+ PLATFORM = "<etsy|fiverr>" # set based on user's choice
589
+ SESSION_DIR = os.path.expanduser(f"~/.thaddeus-{PLATFORM}-session")
590
+ PROFILE_DIR = os.path.join(SESSION_DIR, "chrome-profile")
591
+ PROXY_CONFIG = os.path.join(SESSION_DIR, "proxy.json")
592
+ os.makedirs(PROFILE_DIR, exist_ok=True)
593
+
594
+ # ... include get_browser(), load_proxy_config(), safe_goto(), is_ip_blocked(),
595
+ # handle_ip_block(), notify(), human_delay() from the Playwright Playbook above ...
596
+
597
+ URLS = {
598
+ "etsy": {
599
+ "home": "https://www.etsy.com",
600
+ "sell": "https://www.etsy.com/sell",
601
+ "dashboard": "https://www.etsy.com/your/shops/me/dashboard",
602
+ "logged_in": '[aria-label="Your account"], .user-avatar',
603
+ },
604
+ "fiverr": {
605
+ "home": "https://www.fiverr.com",
606
+ "sell": "https://www.fiverr.com/start_selling",
607
+ "dashboard": "https://www.fiverr.com/seller_dashboard",
608
+ "logged_in": '.user-profile-label, .avatar-wrapper, [data-testid="header-avatar"]',
609
+ },
610
+ }[PLATFORM]
611
+
612
+ with sync_playwright() as pw:
613
+ ctx = get_browser(pw, headless=False)
614
+ page = ctx.pages[0] if ctx.pages else ctx.new_page()
615
+
616
+ # CHECK FOR IP BLOCK FIRST
617
+ if not safe_goto(page, URLS["home"], PLATFORM):
618
+ print("🛑 IP blocked. Fix with VPN/hotspot/proxy and re-run.")
619
+ ctx.close()
620
+ exit(1)
621
+
622
+ # CHECK IF ALREADY LOGGED IN
623
+ safe_goto(page, URLS["dashboard"], PLATFORM)
624
+ time.sleep(3)
625
+ logged_in = False
626
+ try:
627
+ el = page.query_selector(URLS["logged_in"])
628
+ if el and el.is_visible(): logged_in = True
629
+ except: pass
630
+
631
+ if logged_in:
632
+ notify(f"✅ Already logged into {PLATFORM.title()}! Close browser when ready.")
633
+ print(f"✅ Already logged in. Cookies are valid. Close the browser.")
634
+ else:
635
+ # OPEN SIGNUP/LOGIN PAGE
636
+ safe_goto(page, URLS["sell"], PLATFORM)
637
+ notify(f"🛍️ {PLATFORM.title()} is open! Sign in or sign up. Close browser when done.")
638
+ print("=" * 60)
639
+ print(f"{PLATFORM.upper()} ACCOUNT SETUP")
640
+ print("=" * 60)
641
+ print("")
642
+ print("If you HAVE an account:")
643
+ print(" → Click 'Sign In' at the top")
644
+ print(" → Log in with your email/password or Google")
645
+ print("")
646
+ print("If you DON'T have an account:")
647
+ if PLATFORM == "etsy":
648
+ print(" → Click 'Get started' to create a seller account")
649
+ print(" → Follow the shop setup wizard (name, payment, billing)")
650
+ else:
651
+ print(" → Click 'Join' to sign up")
652
+ print(" → After signup, click 'Become a Seller'")
653
+ print("")
654
+ print("When done, CLOSE THIS BROWSER. Cookies save automatically.")
655
+ print("=" * 60)
656
+
657
+ # WAIT — POLL for login while browser is open
658
+ # Check every 5 seconds using MULTIPLE detection methods.
659
+ # Fiverr/Etsy show different elements on different pages, so we cast a wide net.
660
+ print("\\nWaiting for login... (will auto-detect when you're signed in)")
661
+ print("Or just close the browser when you're logged in — cookies save automatically.")
662
+ poll_count = 0
663
+ auto_closed = False
664
+
665
+ # Broad selectors that work across different pages on each platform
666
+ FIVERR_LOGGED_IN = [
667
+ '.user-profile-label',
668
+ '.avatar-wrapper',
669
+ '[data-testid="header-avatar"]',
670
+ 'a[href*="/seller_dashboard"]',
671
+ 'a[href*="/manage_orders"]',
672
+ '.seller-dashboard',
673
+ 'img.profile-pict',
674
+ 'button[data-testid="user-menu"]',
675
+ '.nav-logged-in',
676
+ 'a[href="/users/"]',
677
+ # Check for any element containing the user's name/avatar in nav
678
+ 'header img[src*="fiverr-res.cloudinary"]',
679
+ '.header-user-avatar',
680
+ ]
681
+ ETSY_LOGGED_IN = [
682
+ '[aria-label="Your account"]',
683
+ '.user-avatar',
684
+ '[data-testid="header-account"]',
685
+ 'a[href*="/your/shops"]',
686
+ '.shop-name-link',
687
+ 'a[href*="/me/"]',
688
+ 'img.user-avatar',
689
+ ]
690
+ LOGGED_IN_CHECKS = FIVERR_LOGGED_IN if PLATFORM == "fiverr" else ETSY_LOGGED_IN
691
+
692
+ # URLs that indicate the user is logged in
693
+ LOGGED_IN_URLS = {
694
+ "fiverr": ["seller_dashboard", "manage_orders", "/users/", "/inbox", "/manage_gigs"],
695
+ "etsy": ["/your/shops", "/me/", "/dashboard", "/shop/"],
696
+ }[PLATFORM]
697
+
698
+ try:
699
+ while ctx.pages:
700
+ time.sleep(5)
701
+ poll_count += 1
702
+ try:
703
+ page = ctx.pages[0]
704
+ current_url = page.url
705
+
706
+ # Method 1: Check URL — if they navigated to a logged-in page
707
+ url_match = any(pattern in current_url for pattern in LOGGED_IN_URLS)
708
+
709
+ # Method 2: Check multiple selectors
710
+ selector_match = False
711
+ for selector in LOGGED_IN_CHECKS:
712
+ try:
713
+ el = page.query_selector(selector)
714
+ if el and el.is_visible(timeout=1000):
715
+ selector_match = True
716
+ break
717
+ except:
718
+ continue
719
+
720
+ # Method 3: Check if page has cookies set (check for session cookie via JS)
721
+ cookie_match = False
722
+ try:
723
+ cookies = page.context.cookies()
724
+ session_cookies = [c for c in cookies if 'session' in c.get('name', '').lower() or 'token' in c.get('name', '').lower() or 'logged' in c.get('name', '').lower()]
725
+ if session_cookies:
726
+ cookie_match = True
727
+ except:
728
+ pass
729
+
730
+ if url_match or selector_match or cookie_match:
731
+ method = "URL" if url_match else ("element" if selector_match else "cookie")
732
+ print(f"\\n✅ Login detected via {method}! Saving cookies and closing browser in 5s...")
733
+ notify("✅ Login detected! Browser closing in 5 seconds. Thaddeus takes over now.")
734
+ time.sleep(5)
735
+ ctx.close()
736
+ auto_closed = True
737
+ break
738
+ except:
739
+ pass
740
+ if poll_count % 6 == 0 and not auto_closed:
741
+ print(" Still waiting for login... (close browser manually if auto-detect doesn't trigger)")
742
+ except:
743
+ pass
744
+ if not auto_closed:
745
+ try: ctx.close()
746
+ except: pass
747
+
748
+ # VERIFY COOKIES HEADLESS
749
+ print(f"\\nVerifying {PLATFORM} session...")
750
+ with sync_playwright() as pw:
751
+ ctx = get_browser(pw, headless=True)
752
+ page = ctx.new_page()
753
+ ok = False
754
+ try:
755
+ if safe_goto(page, URLS["dashboard"], PLATFORM):
756
+ time.sleep(2)
757
+ el = page.query_selector(URLS["logged_in"])
758
+ if el: ok = True
759
+ except: pass
760
+ ctx.close()
761
+
762
+ if ok:
763
+ print(f"✅ {PLATFORM.title()} session VERIFIED. Cookies locked in.")
764
+ print("Thaddeus is now autonomous. Building everything else...")
765
+ else:
766
+ print(f"❌ Session NOT verified. Re-run this script after signing in.")
767
+ exit(1)
768
+ \`\`\`
769
+
770
+ Write this script to \`~/thaddeus-businesses/<name>/scripts/<platform>-login.py\` and RUN IT IMMEDIATELY.
771
+ Wait for it to complete. If it exits with code 1 (blocked or not verified), STOP and tell the user what to fix.
772
+ DO NOT CONTINUE to step B until this script exits successfully (code 0).
773
+
774
+ ### B. Create the business workspace (AFTER cookies are confirmed)
775
+ \`\`\`bash
776
+ mkdir -p ~/thaddeus-businesses/<business-name>/{products,deliverables,outreach,reports,weekly-reports,scripts}
777
+ \`\`\`
778
+ - Create \`config.json\` with business parameters, pricing, schedule, session paths
779
+ - Create \`README.md\` with the full execution plan
780
+ - Create \`revenue-log.json\` to track all income
781
+
782
+ ### C. Write the remaining Playwright automation scripts
783
+ The login script already exists from Step A. Now write the REST of the scripts to \`~/thaddeus-businesses/<name>/scripts/\`:
784
+
785
+ **For Etsy (login.py already written):**
786
+ - \`etsy-setup-profile.py\` — Headless. Sets up full shop profile: logo, banner, title, announcement, about, sections, policies. Generates images with PIL. Screenshots finished profile.
787
+ - \`etsy-upload-product.py\` — Headless. Takes product file path + listing details as args. Navigates to listing manager, creates listing, uploads digital file, fills all fields, publishes.
788
+ - \`etsy-check-orders.py\` — Headless. Checks orders page, scrapes new orders, saves to \`orders.json\`.
789
+ - \`etsy-check-stats.py\` — Headless. Checks shop stats dashboard, saves metrics.
790
+
791
+ **For Fiverr (login.py already written):**
792
+ - \`fiverr-setup-profile.py\` — Headless. Sets up full seller profile: avatar, display name, tagline, bio, skills, languages, availability. Generates profile pic with PIL. Screenshots finished profile.
793
+ - \`fiverr-create-gig.py\` — Headless. Takes gig details as args. Creates new gig with all fields + portfolio.
794
+ - \`fiverr-check-orders.py\` — Headless. Checks active orders, scrapes requirements for pending orders.
795
+ - \`fiverr-deliver-order.py\` — Headless. Takes order ID + deliverable file. Navigates to order, uploads deliverable, submits.
796
+ - \`fiverr-send-proposals.py\` — Headless. Checks buyer requests, sends proposals with custom pitches.
797
+
798
+ ALL platform-facing scripts MUST:
799
+ 1. Import playwright and use sync_playwright
800
+ 2. Call get_browser() to get a persistent context with saved cookies
801
+ 3. Use safe_goto() for every page navigation
802
+ 4. Use human_click() and human_type() for all interactions
803
+ 5. Actually navigate to the real website and perform the real action
804
+ 6. Verify the action succeeded (check for confirmation elements on page)
805
+ 7. Screenshot the result for proof
806
+ 8. Use a results={} dict to track every action's success/failure
807
+ 9. Print a FINAL HONEST REPORT showing what succeeded vs failed
808
+ 10. exit(1) if ANY actions failed, exit(0) ONLY if ALL actions succeeded
809
+
810
+ ⛔ BANNED SCRIPT PATTERNS (these produce fake scripts):
811
+ - \`try: ... except: pass\` around critical actions → BANNED. Catch specific exceptions, log them, mark as failed.
812
+ - \`print("✅ done")\` without verifying the action worked → BANNED. Verify before reporting.
813
+ - A script with ZERO exit(1) calls → BANNED. Real scripts can fail.
814
+ - A script that prints success messages in the except block → BANNED. That's lying.
815
+ - A \`try/except\` that catches the error and then prints "Profile fields updated" → BANNED.
816
+
817
+ ✅ REQUIRED SCRIPT PATTERN:
818
+ \`\`\`python
819
+ results = {}
820
+ # ... do each action ...
821
+ results["action_name"] = True/False based on VERIFICATION
822
+ # ... at end ...
823
+ failed = [k for k,v in results.items() if not v]
824
+ if failed:
825
+ print(f"❌ FAILED: {failed}")
826
+ exit(1)
827
+ print("✅ All actions succeeded")
828
+ exit(0)
829
+ \`\`\`
830
+
831
+ A script that just writes local files and prints "success" without opening a browser is FAKE and USELESS.
832
+ If Playwright can't connect (IP blocked, cookies expired), the script must exit with code 1 and report the real error.
833
+
834
+ ### D. Set up the seller profile (Thaddeus does this via Playwright — NOT the user)
835
+
836
+ After cookies are verified, Thaddeus MUST set up the seller profile before creating any products/gigs.
837
+ A bare profile = zero sales. This runs HEADLESS via Playwright using the saved cookies.
838
+
839
+ ⚠️ CRITICAL: Thaddeus fills in the profile HIMSELF using Playwright automation.
840
+ DO NOT open a visible browser and tell the user to do it manually.
841
+ DO NOT say "complete the profile in the browser" — that is YOUR job.
842
+ The ONLY thing the user does manually is the initial login/signup (Step A).
843
+ EVERYTHING after that — profile, gigs, orders, messages — is Thaddeus via headless Playwright.
844
+
845
+ If you cannot fill a field via Playwright (e.g., element not found, page structure changed),
846
+ take a screenshot, report which specific field failed, and try an alternative selector.
847
+ Do NOT give up and ask the user to do it.
848
+
849
+ Ask the user ONE question before starting: "What name do you want on your shop, and what's your niche? (e.g., 'Luna Prints — minimalist wall art' or 'DevDocs Pro — technical writing'). Or type 'auto' and I'll pick something based on what sells."
850
+
851
+ Then write and run a \`<platform>-setup-profile.py\` script that does the following:
852
+
853
+ **For Etsy (\`etsy-setup-profile.py\`):**
854
+
855
+ ⚠️ ETSY SHOP NAVIGATION — EXACT URLS:
856
+ \`\`\`python
857
+ # These are the REAL Etsy shop settings URLs:
858
+ ETSY_SETTINGS_URLS = {
859
+ "info_appearance": "https://www.etsy.com/your/shops/me/settings/info",
860
+ "about": "https://www.etsy.com/your/shops/me/settings/about",
861
+ "policies": "https://www.etsy.com/your/shops/me/settings/policies",
862
+ "delivery": "https://www.etsy.com/your/shops/me/settings/delivery",
863
+ "finances": "https://www.etsy.com/your/shops/me/finances/account",
864
+ "listings": "https://www.etsy.com/your/shops/me/tools/listings",
865
+ "sections": "https://www.etsy.com/your/shops/me/sections",
866
+ "dashboard": "https://www.etsy.com/your/shops/me/dashboard",
867
+ }
868
+ # Navigate DIRECTLY to these URLs — do NOT click through menus.
869
+ # If a URL redirects to login → cookies expired, exit(1).
870
+ # If a URL 404s → try the dashboard and click through.
871
+ \`\`\`
872
+
873
+ Use the same \`discover_and_fill()\` and results-tracking pattern as the Fiverr script.
874
+ Every field must be verified. Script must exit(1) if any fields fail.
875
+
876
+ Thaddeus logs in headless, navigates to Shop Manager settings using the DIRECT URLs above, and fills out:
877
+ \`\`\`
878
+ 1. Shop icon / logo
879
+ - Generate a clean logo using canvas/PIL (text-based, modern font, brand colors)
880
+ - Save to ~/thaddeus-businesses/etsy-shop/products/shop-logo.png
881
+ - Navigate to: ETSY_SETTINGS_URLS["info_appearance"]
882
+ - Find upload input: query_selector('input[type="file"]') near shop icon section
883
+ - set_input_files() to upload, then click Save
884
+
885
+ 2. Shop banner
886
+ - Generate a 1200x300 banner image with shop name + tagline using PIL
887
+ - Save to ~/thaddeus-businesses/etsy-shop/products/shop-banner.png
888
+ - Same page as shop icon — find the banner upload input
889
+
890
+ 3. Shop title & announcement
891
+ - Same page: ETSY_SETTINGS_URLS["info_appearance"]
892
+ - discover_and_fill() for "Shop title" field
893
+ - discover_and_fill() for "Shop announcement" textarea
894
+ e.g., "Welcome to Luna Prints! Instant download printables for your home — minimalist wall art, planners, and budget templates. New designs added daily."
895
+
896
+ 4. About section
897
+ - Navigate to: ETSY_SETTINGS_URLS["about"]
898
+ - Fill "Shop story" with a genuine-sounding seller bio (3-4 paragraphs)
899
+ - Include: who you are, what you make, why you're passionate about it
900
+
901
+ 5. Shop sections (categories)
902
+ - Navigate to: ETSY_SETTINGS_URLS["sections"]
903
+ - Create 4-6 sections based on the niche, e.g.:
904
+ "Wall Art" / "Planners & Organizers" / "Budget Templates" / "Wedding Printables" / "Kids Room" / "Quotes & Typography"
905
+
906
+ 6. Payment & billing (CHECK ONLY — don't change if already set)
907
+ - Navigate to: ETSY_SETTINGS_URLS["finances"]
908
+ - If not set up: STOP, notify user "Payment info needed — open browser to set up bank/card"
909
+ - If set up: confirm and move on
910
+
911
+ 7. Shipping profile (for digital products)
912
+ - Navigate to: ETSY_SETTINGS_URLS["delivery"]
913
+ - Ensure "Digital items" delivery profile exists (Etsy auto-creates this for digital shops)
914
+
915
+ 8. Shop policies
916
+ - Navigate to: ETSY_SETTINGS_URLS["policies"]
917
+ - Fill returns policy: "Due to the digital nature of our products, all sales are final. If you have any issues with your download, please contact us and we'll make it right."
918
+ - Fill privacy policy with standard boilerplate
919
+ - Fill FAQ with 3-4 common questions about digital downloads
920
+ \`\`\`
921
+
922
+ **For Fiverr (\`fiverr-setup-profile.py\`):**
923
+
924
+ ⚠️ FIVERR PROFILE NAVIGATION — EXACT URLS & STRATEGY:
925
+ Fiverr profile editing is NOT accessible via vague "text=Profile" selectors.
926
+ You MUST use URL-based navigation. Here is the correct approach:
927
+
928
+ **Step 0: Discover the username first**
929
+ \`\`\`python
930
+ # After headless login, get the username from the dashboard
931
+ page.goto("https://www.fiverr.com/seller_dashboard")
932
+ time.sleep(3)
933
+ # Method 1: Check the URL bar after any redirect
934
+ # Method 2: Look for the username in page content
935
+ username = None
936
+ # Try the user menu / profile link
937
+ for sel in ['a[href*="/users/"]', 'a.user-profile-label', '.seller-name', '.username']:
938
+ try:
939
+ el = page.query_selector(sel)
940
+ if el:
941
+ href = el.get_attribute('href') or ''
942
+ if '/users/' in href:
943
+ username = href.split('/users/')[-1].split('/')[0].split('?')[0]
944
+ break
945
+ text = el.inner_text().strip()
946
+ if text:
947
+ username = text
948
+ break
949
+ except: continue
950
+ # Method 3: Extract from page source
951
+ if not username:
952
+ try:
953
+ html = page.content()
954
+ import re
955
+ m = re.search(r'"username":"([^"]+)"', html)
956
+ if m: username = m.group(1)
957
+ except: pass
958
+ if not username:
959
+ print("❌ FAILED: Could not determine Fiverr username. Cannot navigate to profile edit.")
960
+ page.screenshot(path=os.path.join(BUSINESS_DIR, "username-discovery-failed.png"))
961
+ exit(1)
962
+ print(f"Found username: {username}")
963
+ \`\`\`
964
+
965
+ **Step 1: Navigate directly to profile edit URLs**
966
+ \`\`\`python
967
+ # These are the REAL Fiverr profile edit URLs (try in order):
968
+ PROFILE_URLS = [
969
+ f"https://www.fiverr.com/users/{username}/manage_profile",
970
+ f"https://www.fiverr.com/users/{username}/edit",
971
+ "https://www.fiverr.com/seller_onboarding/overview",
972
+ "https://www.fiverr.com/settings/profile",
973
+ "https://www.fiverr.com/seller_dashboard/profile",
974
+ ]
975
+ profile_page_loaded = False
976
+ for url in PROFILE_URLS:
977
+ if not safe_goto(page, url, "fiverr"):
978
+ continue
979
+ # Check if we landed on a real profile edit page (not redirected to login or 404)
980
+ current = page.url
981
+ body = page.inner_text("body")[:500].lower()
982
+ if "404" in body or "not found" in body or "signin" in current or "login" in current:
983
+ continue
984
+ profile_page_loaded = True
985
+ print(f"✅ Profile edit page loaded: {url}")
986
+ break
987
+ if not profile_page_loaded:
988
+ # Last resort: click through from dashboard
989
+ safe_goto(page, "https://www.fiverr.com/seller_dashboard", "fiverr")
990
+ time.sleep(2)
991
+ # Look for profile/settings links
992
+ for click_sel in ['a[href*="profile"]', 'a[href*="manage_profile"]', 'text=Profile', 'text=Edit Profile', '[data-testid*="profile"]']:
993
+ try:
994
+ el = page.query_selector(click_sel)
995
+ if el and el.is_visible():
996
+ el.click()
997
+ time.sleep(3)
998
+ print(f"Navigated via click: {click_sel} → {page.url}")
999
+ profile_page_loaded = True
1000
+ break
1001
+ except: continue
1002
+ if not profile_page_loaded:
1003
+ print("❌ FAILED: Could not reach Fiverr profile edit page via any method.")
1004
+ page.screenshot(path=os.path.join(BUSINESS_DIR, "profile-nav-failed.png"))
1005
+ exit(1)
1006
+ \`\`\`
1007
+
1008
+ **Step 2: Fill fields using SELECTOR DISCOVERY**
1009
+ Do NOT hardcode selectors. Instead, discover what's on the page:
1010
+ \`\`\`python
1011
+ def discover_and_fill(page, field_name, value, selectors_to_try):
1012
+ """Try multiple selectors to find and fill a field. Returns True if successful."""
1013
+ for sel in selectors_to_try:
1014
+ try:
1015
+ el = page.query_selector(sel)
1016
+ if el and el.is_visible():
1017
+ el.click()
1018
+ time.sleep(0.3)
1019
+ # Clear existing content
1020
+ el.fill("")
1021
+ time.sleep(0.2)
1022
+ # Type with human speed
1023
+ page.keyboard.type(value, delay=random.randint(30, 80))
1024
+ time.sleep(0.5)
1025
+ # VERIFY: read back what we typed
1026
+ actual = el.input_value() if el.evaluate("e => e.tagName") in ["INPUT", "TEXTAREA"] else el.inner_text()
1027
+ if value[:20] in (actual or ""):
1028
+ print(f"✅ {field_name} filled successfully")
1029
+ return True
1030
+ else:
1031
+ print(f"⚠️ {field_name}: typed but verify failed (got: {actual[:50]})")
1032
+ except Exception as e:
1033
+ continue
1034
+ # If no selector worked, dump available form elements for debugging
1035
+ try:
1036
+ inputs = page.query_selector_all("input, textarea, [contenteditable]")
1037
+ print(f"❌ {field_name} FAILED. Available form elements on page:")
1038
+ for i, inp in enumerate(inputs[:15]):
1039
+ tag = inp.evaluate("e => e.tagName")
1040
+ name = inp.get_attribute("name") or ""
1041
+ placeholder = inp.get_attribute("placeholder") or ""
1042
+ aria = inp.get_attribute("aria-label") or ""
1043
+ testid = inp.get_attribute("data-testid") or ""
1044
+ print(f" [{i}] <{tag}> name='{name}' placeholder='{placeholder}' aria='{aria}' testid='{testid}'")
1045
+ except: pass
1046
+ return False
1047
+
1048
+ # Example usage for each field:
1049
+ discover_and_fill(page, "Professional Tagline", tagline_text, [
1050
+ 'input[name*="tagline"]', 'input[name*="title"]', 'input[name*="oneliner"]',
1051
+ 'input[placeholder*="tagline"]', 'input[placeholder*="professional"]',
1052
+ '[data-testid*="tagline"]', '[aria-label*="tagline"]', '[aria-label*="professional"]',
1053
+ 'input.profile-tagline', '.tagline-input input',
1054
+ ])
1055
+ \`\`\`
1056
+
1057
+ **MANDATORY SCRIPT STRUCTURE for fiverr-setup-profile.py:**
1058
+ Every profile setup script MUST follow this pattern:
1059
+ \`\`\`python
1060
+ results = {} # Track what succeeded and what failed
1061
+
1062
+ # For each field:
1063
+ results["avatar"] = upload_avatar(page, avatar_path) # Returns True/False
1064
+ results["tagline"] = discover_and_fill(page, "Tagline", tagline, TAGLINE_SELECTORS)
1065
+ results["bio"] = discover_and_fill(page, "Bio", bio_text, BIO_SELECTORS)
1066
+ results["skills"] = add_skills(page, skill_list) # Returns True/False
1067
+ # ... etc for each field
1068
+
1069
+ # FINAL REPORT — must be HONEST
1070
+ page.screenshot(path=os.path.join(BUSINESS_DIR, "profile-final.png"))
1071
+ succeeded = [k for k, v in results.items() if v]
1072
+ failed = [k for k, v in results.items() if not v]
1073
+ print(f"\\nProfile Setup Results:")
1074
+ print(f" ✅ Succeeded: {', '.join(succeeded) if succeeded else 'NONE'}")
1075
+ print(f" ❌ Failed: {', '.join(failed) if failed else 'NONE'}")
1076
+ if failed:
1077
+ print(f"\\n{len(failed)} field(s) failed. Check profile-final.png and form element dump above.")
1078
+ exit(1) # EXIT CODE 1 = not fully successful
1079
+ else:
1080
+ print(f"\\nAll {len(succeeded)} fields set successfully.")
1081
+ exit(0)
1082
+ \`\`\`
1083
+
1084
+ A script that prints "✅ Profile fields updated" without the results dict pattern above is FAKE.
1085
+ A script that catches all exceptions and continues as if nothing happened is FAKE.
1086
+ A script with no exit(1) path is SUSPICIOUS — real scripts can fail.
1087
+
1088
+ Thaddeus logs in headless, navigates to profile settings using the URL/selector discovery above, and fills out:
1089
+ \`\`\`
1090
+ 1. Profile picture
1091
+ - Generate a professional avatar using PIL (initials-based or abstract design)
1092
+ - Save to ~/thaddeus-businesses/fiverr-gigs/products/profile-pic.png
1093
+ - Navigate to profile edit page (use PROFILE_URLS above)
1094
+ - Find the avatar upload: query_selector('input[type="file"]') or click the avatar image first
1095
+ - set_input_files() to upload, then find and click Save
1096
+
1097
+ 2. Display name & tagline
1098
+ - Already on profile edit page
1099
+ - Set display name to the brand name
1100
+ - Set professional tagline (one line), e.g.:
1101
+ "Full-Stack Developer & Technical Writer | SEO Content | Code Review"
1102
+
1103
+ 3. Description / Bio
1104
+ - Fill the profile description with a professional 3-4 paragraph bio
1105
+ - Include: skills, experience, what clients can expect, response time
1106
+ - Use power words: "delivered", "clients served", "on-time", "5-star"
1107
+ - Example: "I'm a technical writer and developer with expertise in creating
1108
+ clear, comprehensive documentation, SEO-optimized blog content, and
1109
+ detailed code reviews. I deliver on time, every time, and offer unlimited
1110
+ revisions until you're 100% satisfied."
1111
+
1112
+ 4. Skills tags
1113
+ - Navigate to: Profile → Edit → Skills
1114
+ - Add 10-15 relevant skill tags based on gig types, e.g.:
1115
+ "Copywriting", "SEO", "Technical Writing", "Blog Writing", "Code Review",
1116
+ "Python", "JavaScript", "Data Entry", "API Documentation", "Proofreading",
1117
+ "Content Writing", "WordPress", "Research", "Editing"
1118
+
1119
+ 5. Languages
1120
+ - Add "English" → "Native/Bilingual"
1121
+ - Add any other languages the user speaks
1122
+
1123
+ 6. Education & Certification (optional)
1124
+ - If user provides credentials, fill them in
1125
+ - If not, skip — don't fabricate degrees
1126
+
1127
+ 7. Linked accounts
1128
+ - Skip unless user provides GitHub/LinkedIn/portfolio URL
1129
+
1130
+ 8. Seller availability
1131
+ - Set availability to: "Available now"
1132
+ - Set response time to: "1 hour" (Thaddeus checks orders multiple times daily)
1133
+
1134
+ 9. Out of office
1135
+ - Make sure this is OFF
1136
+ \`\`\`
1137
+
1138
+ **Image generation for logos/banners/avatars:**
1139
+ \`\`\`python
1140
+ from PIL import Image, ImageDraw, ImageFont
1141
+ import os
1142
+
1143
+ def generate_shop_logo(shop_name, output_path, size=500):
1144
+ """Generate a clean, modern logo with initials or short name."""
1145
+ img = Image.new('RGB', (size, size), color='#1a1a2e')
1146
+ draw = ImageDraw.Draw(img)
1147
+
1148
+ # Use initials if name is long, full name if short
1149
+ initials = ''.join(word[0].upper() for word in shop_name.split()[:2])
1150
+ display = initials if len(shop_name) > 12 else shop_name
1151
+
1152
+ # Try system fonts, fall back to default
1153
+ font_size = size // 3 if len(display) <= 3 else size // 5
1154
+ try:
1155
+ font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", font_size)
1156
+ except:
1157
+ font = ImageFont.load_default()
1158
+
1159
+ bbox = draw.textbbox((0, 0), display, font=font)
1160
+ x = (size - (bbox[2] - bbox[0])) // 2
1161
+ y = (size - (bbox[3] - bbox[1])) // 2
1162
+ draw.text((x, y), display, fill='#e94560', font=font)
1163
+
1164
+ img.save(output_path)
1165
+ return output_path
1166
+
1167
+ def generate_shop_banner(shop_name, tagline, output_path, width=1200, height=300):
1168
+ """Generate a branded banner with gradient background."""
1169
+ img = Image.new('RGB', (width, height))
1170
+ draw = ImageDraw.Draw(img)
1171
+
1172
+ # Gradient background
1173
+ for y in range(height):
1174
+ r = int(26 + (y / height) * 20)
1175
+ g = int(26 + (y / height) * 10)
1176
+ b = int(46 + (y / height) * 40)
1177
+ draw.line([(0, y), (width, y)], fill=(r, g, b))
1178
+
1179
+ try:
1180
+ title_font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", 48)
1181
+ sub_font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", 24)
1182
+ except:
1183
+ title_font = ImageFont.load_default()
1184
+ sub_font = title_font
1185
+
1186
+ # Center title
1187
+ bbox = draw.textbbox((0, 0), shop_name, font=title_font)
1188
+ x = (width - (bbox[2] - bbox[0])) // 2
1189
+ draw.text((x, height // 3), shop_name, fill='#ffffff', font=title_font)
1190
+
1191
+ # Center tagline
1192
+ bbox = draw.textbbox((0, 0), tagline, font=sub_font)
1193
+ x = (width - (bbox[2] - bbox[0])) // 2
1194
+ draw.text((x, height // 2 + 10), tagline, fill='#e94560', font=sub_font)
1195
+
1196
+ img.save(output_path)
1197
+ return output_path
1198
+ \`\`\`
1199
+
1200
+ **Profile setup scripts go in:** \`~/thaddeus-businesses/<name>/scripts/<platform>-setup-profile.py\`
1201
+
1202
+ **CRITICAL RULES for profile setup:**
1203
+ - Run profile setup ONCE after first login, before any products/gigs go live
1204
+ - Save all generated images to \`~/thaddeus-businesses/<name>/products/\` for reference
1205
+ - Use human_click() and human_type() for ALL interactions — anti-detection rules still apply
1206
+ - If any field is already filled (returning user), check first and skip it — don't overwrite
1207
+ - If Etsy payment/billing isn't set up, STOP and open browser non-headless for user to do it manually (requires sensitive financial info)
1208
+ - Screenshot the finished profile page and save to \`~/thaddeus-businesses/<name>/profile-screenshot.png\` for the user to review
1209
+ - DO NOT fabricate credentials, degrees, or certifications. Make the bio compelling but honest.
1210
+
1211
+ ### E. Build initial assets
1212
+ - For Etsy: Generate 5 starter digital products (SVG/PDF files via code), then upload ALL of them via the upload script
1213
+ - For Fiverr: Create 3 gig listings via the gig creation script + generate portfolio samples
1214
+ - For Content Agency: Write 3 sample articles + craft 10 cold outreach emails
1215
+ - For Lead Gen: Build the scraping pipeline + generate first batch of 50 leads
1216
+ - For Tech Docs: Find 10 target projects + draft outreach templates
1217
+
1218
+ ### F. Set up the AGENT SYSTEM — Production + Persistent Monitor
1219
+
1220
+ This is the core of the autonomous business. You spawn TWO types of agents:
1221
+
1222
+ #### Agent 1: DAILY PRODUCTION AGENT (morning cron, does the work, exits when done)
1223
+
1224
+ This agent fires once per day and creates the maximum products/gigs/content for that day.
1225
+ It has DAILY CAPS to avoid triggering platform rate limits:
1226
+
1227
+ **Daily Production Caps (written into config.json):**
1228
+ \`\`\`json
1229
+ {
1230
+ "dailyCaps": {
1231
+ "etsy": {
1232
+ "newProducts": 5,
1233
+ "listingUpdates": 10,
1234
+ "messageReplies": 20
1235
+ },
1236
+ "fiverr": {
1237
+ "newGigs": 2,
1238
+ "proposals": 10,
1239
+ "deliveries": 15,
1240
+ "messageReplies": 25
1241
+ },
1242
+ "contentAgency": {
1243
+ "articles": 5,
1244
+ "outreachEmails": 30,
1245
+ "followUps": 20
1246
+ },
1247
+ "leadGen": {
1248
+ "leadsScraped": 100,
1249
+ "outreachEmails": 30,
1250
+ "leadDeliveries": 10
1251
+ },
1252
+ "techDocs": {
1253
+ "reposAnalyzed": 5,
1254
+ "outreachEmails": 15,
1255
+ "docsWritten": 3
1256
+ }
1257
+ }
1258
+ }
1259
+ \`\`\`
1260
+
1261
+ The production agent tracks how many of each action it's done today in \`~/thaddeus-businesses/<name>/daily-tracker.json\`:
1262
+ \`\`\`json
1263
+ {
1264
+ "date": "2026-04-11",
1265
+ "produced": { "newProducts": 3, "listingUpdates": 2, "messageReplies": 5 },
1266
+ "caps": { "newProducts": 5, "listingUpdates": 10, "messageReplies": 20 },
1267
+ "status": "in_progress"
1268
+ }
1269
+ \`\`\`
1270
+
1271
+ When an action hits its cap → skip it, move to next action type. When ALL caps hit → agent marks status "completed" and exits.
1272
+
1273
+ **Cron for production agent:**
1274
+ \`\`\`
1275
+ CronCreate: cron="0 8 * * *", recurring=true, durable=true
1276
+ prompt="PRODUCTION RUN for <business>.
1277
+ Read ~/thaddeus-businesses/<name>/config.json for caps.
1278
+ Reset daily-tracker.json if date is not today.
1279
+
1280
+ STEP 0 — IP BLOCK CHECK (DO THIS FIRST):
1281
+ Run a quick headless navigation to the platform homepage using safe_goto().
1282
+ If it returns blocked (check for 'Access is temporarily restricted', 'unusual activity', etc.):
1283
+ → Save screenshot to ~/thaddeus-businesses/<name>/ip-block-screenshot.png
1284
+ → Write 'blocked' status to monitor-status.json
1285
+ → Notify user: 'IP blocked by <platform>. Use VPN, mobile hotspot, or proxy. See ~/thaddeus-businesses/<name>/scripts/setup-proxy.py'
1286
+ → DO NOT continue. Exit this production run. Do not retry for 4 hours.
1287
+ If NOT blocked, proceed:
1288
+
1289
+ 1. Check for any pending orders/deliveries FIRST (revenue takes priority)
1290
+ 2. Create new products/gigs up to daily cap
1291
+ 3. Optimize existing listings (update tags, descriptions, prices based on stats)
1292
+ 4. Send outreach/proposals up to daily cap
1293
+ 5. Research trending niches for tomorrow's products
1294
+ Log everything to revenue-log.json and daily-tracker.json.
1295
+ Stop when all caps are hit. DO NOT exceed caps — platforms flag bulk activity.
1296
+ ALL Playwright scripts MUST use safe_goto() for every navigation — never raw page.goto()."
1297
+ \`\`\`
1298
+
1299
+ #### Agent 2: PERSISTENT MONITOR AGENT (runs ALL DAY, watches for orders/messages)
1300
+
1301
+ This is the critical one. Spawn a LONG-RUNNING sub-agent via the Agent tool that loops
1302
+ every 15-30 minutes checking for new orders, messages, and reviews. It runs until the
1303
+ user stops it or Thaddeus session ends.
1304
+
1305
+ **How to spawn it:**
1306
+ Use the Agent tool to create a sub-agent with this prompt:
1307
+
1308
+ \`\`\`
1309
+ Agent: "Business Monitor for <platform>"
1310
+ Prompt: "You are the order monitor for the <business> business.
1311
+ Your job: check for new activity every 15 minutes and handle it immediately.
1312
+ You run ALL DAY until the user types /stop-business or kills this agent.
1313
+
1314
+ LOOP FOREVER:
1315
+ 0. IP BLOCK CHECK (every loop iteration):
1316
+ Before ANY Playwright action, do a quick headless check against the platform homepage.
1317
+ If blocked ('Access is temporarily restricted', 'unusual activity', etc.):
1318
+ → Screenshot to ~/thaddeus-businesses/<name>/ip-block-screenshot.png
1319
+ → Update monitor-status.json: cookieStatus='ip_blocked'
1320
+ → Notify user: 'IP blocked by <platform>. Options: VPN, mobile hotspot, or proxy.
1321
+ Run: python3 ~/thaddeus-businesses/<name>/scripts/setup-proxy.py <platform> <proxy-url>'
1322
+ → PAUSE monitoring. Sleep 1 hour, then re-check. Do NOT keep hammering a blocked IP.
1323
+ → Resume normal loop only when the block check passes.
1324
+
1325
+ 1. Run the order check script:
1326
+ python3 ~/thaddeus-businesses/<name>/scripts/<platform>-check-orders.py
1327
+
1328
+ 2. Read the output. For each NEW order:
1329
+ a. Read the order requirements/details
1330
+ b. EXECUTE the deliverable immediately (write the content, generate the file, do the code review — whatever the gig requires)
1331
+ c. Save deliverable to ~/thaddeus-businesses/<name>/deliverables/<order-id>/
1332
+ d. Run the delivery script to upload and submit:
1333
+ python3 ~/thaddeus-businesses/<name>/scripts/<platform>-deliver-order.py --order <id> --file <path>
1334
+ e. Log to revenue-log.json with status 'delivered'
1335
+
1336
+ 3. Check for new messages/inquiries:
1337
+ - For Etsy: Check convos page for unread messages
1338
+ - For Fiverr: Check inbox for buyer questions
1339
+ - Reply to each one professionally and promptly (fast response time = better ranking)
1340
+
1341
+ 4. Check for new reviews:
1342
+ - Log them to revenue-log.json
1343
+ - If negative review: draft a professional response, save for user approval before posting
1344
+
1345
+ 5. Check cookie health:
1346
+ - If any script gets redirected to login page → cookies expired
1347
+ - Notify user: 'Cookies expired for <platform>. Run: python3 ~/thaddeus-businesses/<name>/scripts/<platform>-login.py'
1348
+ - Pause monitoring until cookies are refreshed
1349
+
1350
+ 6. Write status to ~/thaddeus-businesses/<name>/monitor-status.json:
1351
+ {
1352
+ 'lastCheck': '<ISO timestamp>',
1353
+ 'ordersFound': N,
1354
+ 'ordersDelivered': N,
1355
+ 'messagesReplied': N,
1356
+ 'cookieStatus': 'valid|expired',
1357
+ 'nextCheck': '<ISO timestamp>'
1358
+ }
1359
+
1360
+ 7. Sleep 15 minutes, then repeat from step 1.
1361
+
1362
+ NEVER STOP unless:
1363
+ - User explicitly stops you (/stop-business or kills the agent)
1364
+ - Cookies expire (pause, notify, resume when fixed)
1365
+ - IP is blocked (pause, notify with fix options, re-check every hour, auto-resume when unblocked)
1366
+ - A critical error occurs 3 times in a row (notify user, pause)
1367
+
1368
+ You are silent unless something happens. Don't spam the user with 'nothing new' messages.
1369
+ Only speak up when: new order found, order delivered, message replied, review received, error occurred, or cookies expired."
1370
+ \`\`\`
1371
+
1372
+ **IMPORTANT: The monitor agent must be spawned via the Agent tool, NOT as a cron.**
1373
+ Crons fire and exit. The monitor agent LOOPS INTERNALLY with sleep intervals.
1374
+ It stays alive as a running sub-agent in Thaddeus's process tree.
1375
+
1376
+ #### Agent 3: WEEKLY GROWTH & REPORTING AGENT (Monday morning cron)
1377
+
1378
+ \`\`\`
1379
+ CronCreate: cron="0 10 * * 1", recurring=true, durable=true
1380
+ prompt="WEEKLY BUSINESS REPORT for <business>.
1381
+ 1. Read ~/thaddeus-businesses/<name>/revenue-log.json
1382
+ 2. Calculate: total revenue this week, total all-time, orders completed, new clients, conversion rate
1383
+ 3. Compare to last week — are we up or down?
1384
+ 4. Analyze what's working: which products/gigs sell best? Which outreach templates convert?
1385
+ 5. Generate action items: double down on winners, kill losers, new ideas for next week
1386
+ 6. Research competitor shops/gigs — what are top sellers doing differently?
1387
+ 7. Save full report to ~/thaddeus-businesses/<name>/weekly-reports/week-<date>.md
1388
+ 8. Print the report summary to the user
1389
+ 9. Adjust config.json if needed (raise caps on high-performers, lower on flops)"
1390
+ \`\`\`
1391
+
1392
+ #### Startup sequence for agents:
1393
+ When the business launches, start agents in this order:
1394
+ 1. Production agent fires first (creates initial products/gigs)
1395
+ 2. Monitor agent spawns immediately after and runs forever
1396
+ 3. Weekly agent fires on its Monday cron
1397
+
1398
+ #### How to stop everything:
1399
+ Tell the user: "To shut down the business, type \`/stop-business\` or say 'stop the <business name> business'.
1400
+ Thaddeus will kill the monitor agent, delete the crons, and give you a final revenue report."
1401
+
1402
+ When stopping:
1403
+ 1. Kill the monitor sub-agent
1404
+ 2. Delete all cron jobs for this business (CronDelete)
1405
+ 3. Generate final revenue report from revenue-log.json
1406
+ 4. Keep all files/products/deliverables in ~/thaddeus-businesses/<name>/ (don't delete the user's work)
1407
+
1408
+ ### G. Execute the FIRST production run immediately
1409
+ Don't wait for the morning cron — do the first full production run RIGHT NOW after setup.
1410
+ For Etsy: Generate and upload products up to daily cap (5).
1411
+ For Fiverr: Create and publish gigs up to daily cap (2), plus send proposals (up to 10).
1412
+ For Content Agency: Write sample articles (5) + send outreach emails (30).
1413
+ For Lead Gen: Scrape first batch of leads (100) + send client outreach (30).
1414
+ For Tech Docs: Find target repos (5) + send outreach (15).
1415
+
1416
+ Then IMMEDIATELY spawn the persistent monitor agent so it starts watching for orders right away.
1417
+
1418
+ ### H. Report back
1419
+ Tell the user:
1420
+ - What was set up (workspace, scripts, profile)
1421
+ - What the first production run created (exact numbers)
1422
+ - That the monitor agent is NOW RUNNING and will catch orders/messages in real-time
1423
+ - Cron schedule: "Production runs daily at 8am. Weekly report every Monday at 10am."
1424
+ - "The monitor agent runs 24/7 checking every 15 minutes. To stop everything: /stop-business"
1425
+ - Daily caps for their platform (so they know the pace)
1426
+ - Expected timeline to first revenue
1427
+ - Session storage location
1428
+
1429
+ ## RULES
1430
+
1431
+ ### ⛔ ZERO TOLERANCE: NO SIMULATING, NO FAKING, NO PRETENDING
1432
+ This is the MOST IMPORTANT rule. Violation of this rule means the entire business is fake and worthless.
1433
+ THE USER HAS CAUGHT YOU LYING MULTIPLE TIMES. This ends NOW.
1434
+
1435
+ **RULE: CHECK SCRIPT OUTPUT BEFORE REPORTING RESULTS**
1436
+ When you run a script via Bash, READ THE ACTUAL OUTPUT before telling the user what happened.
1437
+ - If the script prints "Could not navigate" → the action FAILED. Say it FAILED.
1438
+ - If the script prints "selector not found" → the action FAILED. Say it FAILED.
1439
+ - If the script exits with code 1 → the action FAILED. Say it FAILED.
1440
+ - If the script prints "Error" or "Traceback" → the action FAILED. Say it FAILED.
1441
+
1442
+ DO NOT read "Could not navigate to edit profile" and then tell the user "Profile setup completed."
1443
+ That is a LIE. The user can read the output. They WILL catch you. They HAVE caught you. THREE TIMES.
1444
+
1445
+ **RULE: EXIT CODE DETERMINES SUCCESS**
1446
+ - Exit code 0 = success. You may report the action as completed.
1447
+ - Exit code 1 = failure. You MUST report the action as FAILED and explain WHY (read the error output).
1448
+ - If unsure, re-read the script output and look for error keywords.
1449
+
1450
+ **RULE: NEVER REPORT A FAILED ACTION AS SUCCESSFUL**
1451
+ If a script fails, your response MUST include:
1452
+ 1. "❌ <action> FAILED"
1453
+ 2. The actual error message from the script output
1454
+ 3. What needs to happen to fix it (re-run, fix IP, fix selector, etc.)
1455
+
1456
+ Your response MUST NOT include:
1457
+ - "✅ <action> completed" (when it didn't)
1458
+ - "Profile setup completed" (when the script said "Could not navigate")
1459
+ - "Cookies verified" (when the login script exited with code 1)
1460
+ - "All actions are real browser automation — no simulation" (when every script crashed)
1461
+
1462
+ **EVERY script that interacts with Etsy/Fiverr MUST use Playwright to actually open the website and perform real actions.**
1463
+
1464
+ What "publishing a gig" means:
1465
+ - Open Fiverr in a headless browser via Playwright using saved cookies
1466
+ - Navigate to the "Create a New Gig" page
1467
+ - Fill in the title field, select category, write description, set pricing tiers
1468
+ - Upload portfolio images/samples
1469
+ - Click Publish/Save
1470
+ - Verify the gig appears on your profile
1471
+ - THEN report "gig published"
1472
+
1473
+ What "publishing a gig" does NOT mean:
1474
+ - Writing a markdown file locally and calling it "published" ← THIS IS LYING
1475
+ - Printing "✅ 2 gigs published successfully" without ever opening a browser ← THIS IS LYING
1476
+ - Creating local templates and logging them as "revenue_potential" ← THIS IS LYING
1477
+
1478
+ **The same applies to ALL platform actions:**
1479
+ - "Product uploaded to Etsy" = Playwright opened Etsy, navigated to listing manager, uploaded the file, filled fields, clicked publish
1480
+ - "Order delivered on Fiverr" = Playwright opened the order page, uploaded the deliverable file, clicked submit
1481
+ - "Profile set up" = Playwright navigated to profile settings, filled each field, uploaded avatar, saved
1482
+ - "Proposal sent" = Playwright opened buyer requests, typed the proposal, clicked submit
1483
+
1484
+ **If a script cannot connect to the platform (IP blocked, cookies expired, error), it must:**
1485
+ - Report the REAL status: "BLOCKED" or "FAILED" or "COOKIES EXPIRED"
1486
+ - NOT pretend the action succeeded
1487
+ - NOT write fake success logs
1488
+ - NOT tell the user "gigs published" when nothing was published
1489
+
1490
+ **If you cannot perform a real action on the platform, say so honestly.** The user would rather know
1491
+ "IP is blocked, can't publish gigs yet" than be told "2 gigs published!" when nothing happened.
1492
+
1493
+ Writing local files (product templates, sample deliverables, portfolio pieces) is PREPARATION, not PUBLISHING.
1494
+ Label it correctly: "Generated 2 gig templates locally — will publish to Fiverr once IP block is resolved."
1495
+
1496
+ ### ⛔ NEVER ASK THE USER TO DO THADDEUS'S JOB
1497
+ The user's ONLY manual action is the initial login/signup (Step A) — because it involves passwords and 2FA.
1498
+ EVERYTHING after login is Thaddeus's job via headless Playwright:
1499
+ - Filling in profile fields (bio, tagline, skills, avatar upload) → THADDEUS DOES THIS
1500
+ - Creating gig listings (title, description, pricing, portfolio) → THADDEUS DOES THIS
1501
+ - Delivering orders (upload file, click submit) → THADDEUS DOES THIS
1502
+ - Replying to messages → THADDEUS DOES THIS
1503
+ - Sending proposals → THADDEUS DOES THIS
1504
+
1505
+ NEVER open a visible browser and tell the user "complete the profile" or "fill in your bio."
1506
+ That is YOUR job. You have Playwright. You have the cookies. USE THEM.
1507
+
1508
+ If a specific Playwright action fails (element not found, selector changed, page error):
1509
+ 1. Take a screenshot of the current page state
1510
+ 2. Try alternative selectors (aria-label, data-testid, class name, XPath)
1511
+ 3. If still failing, report the EXACT error and which field/action failed
1512
+ 4. DO NOT fall back to "just do it yourself in the browser"
1513
+
1514
+ ### Other Rules
1515
+ - Be SPECIFIC with pricing. Don't say "varies" — give exact numbers.
1516
+ - Create REAL files, REAL cron jobs, REAL Playwright scripts, REAL products.
1517
+ - The revenue-log.json tracks: date, amount, source, status (pending/received/failed).
1518
+ - DAILY CAPS ARE HARD LIMITS. Never exceed them. Platforms flag bulk activity and ban accounts.
1519
+ - The monitor agent runs ALL DAY. It does NOT exit after one check. It loops with 15-min sleeps.
1520
+ - If a Playwright script hits a CAPTCHA: screenshot it, save to workspace, notify user. Pause the monitor.
1521
+ - If cookies expire: pause monitor, notify user, resume when they re-auth.
1522
+ - NEVER say "I can't actually make money" — these are real business models that work.
1523
+ - NEVER click faster than the anti-detection rules allow. Getting the account banned kills the business.
1524
+ - The user chose this. Execute with maximum aggression within the caps.
1525
+ - When reporting results, distinguish between LOCAL actions (files created, templates written) and PLATFORM actions (gig published on Fiverr, product listed on Etsy). Never conflate the two.
1526
+
1527
+ ## REVENUE TRACKING FORMAT
1528
+ \`\`\`json
1529
+ {
1530
+ "business": "<name>",
1531
+ "platform": "<etsy|fiverr|email|web>",
1532
+ "sessionDir": "~/.thaddeus-<platform>-session",
1533
+ "startedAt": "<ISO date>",
1534
+ "totalRevenue": 0,
1535
+ "entries": [
1536
+ { "date": "<ISO>", "amount": 0, "source": "<description>", "status": "pending|received|failed" }
1537
+ ],
1538
+ "metrics": {
1539
+ "clientsContacted": 0,
1540
+ "clientsConverted": 0,
1541
+ "productsCreated": 0,
1542
+ "productsUploaded": 0,
1543
+ "ordersReceived": 0,
1544
+ "ordersDelivered": 0,
1545
+ "deliveriesCompleted": 0,
1546
+ "messagesReplied": 0,
1547
+ "proposalsSent": 0,
1548
+ "reviewsReceived": 0
1549
+ },
1550
+ "monitor": {
1551
+ "agentId": "<sub-agent-id>",
1552
+ "status": "running|paused|stopped",
1553
+ "lastCheck": "<ISO>",
1554
+ "uptimeSince": "<ISO>"
1555
+ }
1556
+ }
1557
+ \`\`\`
1558
+
1559
+ Now present the 5 options and wait for the user to pick.`;
1560
+ }
1561
+ const command = {
1562
+ type: 'prompt',
1563
+ name: 'start-business',
1564
+ description: 'Launch an autonomous business — Thaddeus builds it, schedules it, and runs it to generate revenue',
1565
+ allowedTools: ALLOWED_TOOLS,
1566
+ contentLength: 0,
1567
+ progressMessage: 'preparing business options',
1568
+ source: 'builtin',
1569
+ isEnabled: () => true,
1570
+ userInvocable: true,
1571
+ async getPromptForCommand(_args) {
1572
+ return [{ type: 'text', text: getPromptContent() }];
1573
+ },
1574
+ };
1575
+ export default command;