@within-7/minto 0.3.10 → 0.4.1

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 (306) hide show
  1. package/dist/Tool.js.map +2 -2
  2. package/dist/commands/agents/AgentsCommand.js +2 -2
  3. package/dist/commands/agents/AgentsCommand.js.map +2 -2
  4. package/dist/commands/ctx_viz.js +1 -1
  5. package/dist/commands/effort.js +87 -0
  6. package/dist/commands/effort.js.map +7 -0
  7. package/dist/commands/export.js +19 -9
  8. package/dist/commands/export.js.map +2 -2
  9. package/dist/commands/ide.js +18 -0
  10. package/dist/commands/ide.js.map +7 -0
  11. package/dist/commands/mcp-interactive.js +14 -8
  12. package/dist/commands/mcp-interactive.js.map +2 -2
  13. package/dist/commands/memory.js +168 -0
  14. package/dist/commands/memory.js.map +7 -0
  15. package/dist/commands/model.js +45 -2
  16. package/dist/commands/model.js.map +2 -2
  17. package/dist/commands/outputStyle.js +64 -0
  18. package/dist/commands/outputStyle.js.map +7 -0
  19. package/dist/commands/plugin/utils.js +33 -1
  20. package/dist/commands/plugin/utils.js.map +2 -2
  21. package/dist/commands/plugin.js +10 -1
  22. package/dist/commands/plugin.js.map +2 -2
  23. package/dist/commands/refreshCommands.js +2 -0
  24. package/dist/commands/refreshCommands.js.map +2 -2
  25. package/dist/commands/review.js +51 -0
  26. package/dist/commands/review.js.map +7 -0
  27. package/dist/commands/terminalSetup.js +6 -0
  28. package/dist/commands/terminalSetup.js.map +2 -2
  29. package/dist/commands/undo.js +8 -0
  30. package/dist/commands/undo.js.map +2 -2
  31. package/dist/commands/vim.js +22 -0
  32. package/dist/commands/vim.js.map +7 -0
  33. package/dist/commands.js +12 -0
  34. package/dist/commands.js.map +2 -2
  35. package/dist/components/HighlightedCode.js +1 -0
  36. package/dist/components/HighlightedCode.js.map +2 -2
  37. package/dist/components/ModelSelector/ModelSelector.js +250 -143
  38. package/dist/components/ModelSelector/ModelSelector.js.map +2 -2
  39. package/dist/components/PromptInput.js +21 -6
  40. package/dist/components/PromptInput.js.map +2 -2
  41. package/dist/components/PulseLabel.js +44 -0
  42. package/dist/components/PulseLabel.js.map +7 -0
  43. package/dist/components/RequestStatusIndicator.js +1 -1
  44. package/dist/components/RequestStatusIndicator.js.map +1 -1
  45. package/dist/components/Spinner.js +12 -42
  46. package/dist/components/Spinner.js.map +3 -3
  47. package/dist/components/StartupStatus.js +57 -0
  48. package/dist/components/StartupStatus.js.map +7 -0
  49. package/dist/components/SubagentBlock.js +43 -6
  50. package/dist/components/SubagentBlock.js.map +2 -2
  51. package/dist/components/TabbedListView/TabBar.js +13 -8
  52. package/dist/components/TabbedListView/TabBar.js.map +2 -2
  53. package/dist/components/TabbedListView/TabbedListView.js +1 -1
  54. package/dist/components/TabbedListView/TabbedListView.js.map +2 -2
  55. package/dist/components/TodoPanel.js +1 -1
  56. package/dist/components/TodoPanel.js.map +1 -1
  57. package/dist/components/ToolUseLoader.js +5 -0
  58. package/dist/components/ToolUseLoader.js.map +2 -2
  59. package/dist/components/TrustDialog.js +0 -2
  60. package/dist/components/TrustDialog.js.map +2 -2
  61. package/dist/components/messages/TaskInModuleView.js +1 -1
  62. package/dist/components/messages/TaskInModuleView.js.map +2 -2
  63. package/dist/components/messages/TaskToolMessage.js +1 -1
  64. package/dist/components/messages/TaskToolMessage.js.map +2 -2
  65. package/dist/components/messages/UserPromptMessage.js +6 -1
  66. package/dist/components/messages/UserPromptMessage.js.map +2 -2
  67. package/dist/constants/modelCapabilities.js +103 -18
  68. package/dist/constants/modelCapabilities.js.map +2 -2
  69. package/dist/constants/product.js +2 -0
  70. package/dist/constants/product.js.map +2 -2
  71. package/dist/constants/prompts/agentPrompt.js +30 -0
  72. package/dist/constants/prompts/agentPrompt.js.map +7 -0
  73. package/dist/constants/prompts/codeConventions.js +27 -0
  74. package/dist/constants/prompts/codeConventions.js.map +7 -0
  75. package/dist/constants/prompts/doingTasks.js +15 -0
  76. package/dist/constants/prompts/doingTasks.js.map +7 -0
  77. package/dist/constants/prompts/envInfo.js +17 -0
  78. package/dist/constants/prompts/envInfo.js.map +7 -0
  79. package/dist/constants/prompts/executingWithCare.js +17 -0
  80. package/dist/constants/prompts/executingWithCare.js.map +7 -0
  81. package/dist/constants/prompts/identity.js +10 -0
  82. package/dist/constants/prompts/identity.js.map +7 -0
  83. package/dist/constants/prompts/index.js +78 -0
  84. package/dist/constants/prompts/index.js.map +7 -0
  85. package/dist/constants/prompts/taskManagement.js +60 -0
  86. package/dist/constants/prompts/taskManagement.js.map +7 -0
  87. package/dist/constants/prompts/toneAndStyle.js +62 -0
  88. package/dist/constants/prompts/toneAndStyle.js.map +7 -0
  89. package/dist/constants/prompts/toolUsagePolicy.js +38 -0
  90. package/dist/constants/prompts/toolUsagePolicy.js.map +7 -0
  91. package/dist/constants/prompts.js +5 -176
  92. package/dist/constants/prompts.js.map +2 -2
  93. package/dist/constants/providerRegistry.js +235 -0
  94. package/dist/constants/providerRegistry.js.map +7 -0
  95. package/dist/constants/providers.js +35 -0
  96. package/dist/constants/providers.js.map +7 -0
  97. package/dist/context/PermissionContext.js +0 -1
  98. package/dist/context/PermissionContext.js.map +2 -2
  99. package/dist/context.js +87 -31
  100. package/dist/context.js.map +2 -2
  101. package/dist/core/backupHook.js +2 -2
  102. package/dist/core/backupHook.js.map +2 -2
  103. package/dist/core/config/defaults.js +4 -1
  104. package/dist/core/config/defaults.js.map +2 -2
  105. package/dist/core/config/schema.js +7 -1
  106. package/dist/core/config/schema.js.map +2 -2
  107. package/dist/core/costTracker.js +18 -0
  108. package/dist/core/costTracker.js.map +2 -2
  109. package/dist/core/index.js +0 -1
  110. package/dist/core/index.js.map +2 -2
  111. package/dist/core/tokenStatsManager.js +22 -4
  112. package/dist/core/tokenStatsManager.js.map +2 -2
  113. package/dist/entrypoints/cli.js +65 -84
  114. package/dist/entrypoints/cli.js.map +2 -2
  115. package/dist/hooks/useAgentTokenStats.js +1 -1
  116. package/dist/hooks/useAgentTokenStats.js.map +2 -2
  117. package/dist/hooks/useAgentTranscripts.js +2 -1
  118. package/dist/hooks/useAgentTranscripts.js.map +2 -2
  119. package/dist/hooks/useBackgroundShells.js +29 -0
  120. package/dist/hooks/useBackgroundShells.js.map +7 -0
  121. package/dist/hooks/useCanUseTool.js +1 -1
  122. package/dist/hooks/useCanUseTool.js.map +2 -2
  123. package/dist/hooks/useDeferredLoading.js +64 -0
  124. package/dist/hooks/useDeferredLoading.js.map +7 -0
  125. package/dist/hooks/useHookStatus.js +1 -1
  126. package/dist/hooks/useHookStatus.js.map +2 -2
  127. package/dist/hooks/useSessionTracking.js +55 -0
  128. package/dist/hooks/useSessionTracking.js.map +7 -0
  129. package/dist/hooks/useTerminalSize.js +21 -0
  130. package/dist/hooks/useTerminalSize.js.map +2 -2
  131. package/dist/hooks/useTextInput.js +1 -0
  132. package/dist/hooks/useTextInput.js.map +2 -2
  133. package/dist/hooks/useUnifiedCompletion.js +3 -2
  134. package/dist/hooks/useUnifiedCompletion.js.map +2 -2
  135. package/dist/i18n/locales/en.js +8 -9
  136. package/dist/i18n/locales/en.js.map +2 -2
  137. package/dist/i18n/locales/zh-CN.js +8 -9
  138. package/dist/i18n/locales/zh-CN.js.map +2 -2
  139. package/dist/i18n/types.js.map +1 -1
  140. package/dist/messages.js +41 -17
  141. package/dist/messages.js.map +2 -2
  142. package/dist/permissions.js +94 -1
  143. package/dist/permissions.js.map +2 -2
  144. package/dist/query.js +27 -19
  145. package/dist/query.js.map +2 -2
  146. package/dist/screens/REPL.js +83 -74
  147. package/dist/screens/REPL.js.map +2 -2
  148. package/dist/services/adapters/responsesAPI.js +6 -0
  149. package/dist/services/adapters/responsesAPI.js.map +2 -2
  150. package/dist/services/agentTeams/index.js +35 -0
  151. package/dist/services/agentTeams/index.js.map +7 -0
  152. package/dist/services/agentTeams/mailbox.js +114 -0
  153. package/dist/services/agentTeams/mailbox.js.map +7 -0
  154. package/dist/services/agentTeams/teamManager.js +149 -0
  155. package/dist/services/agentTeams/teamManager.js.map +7 -0
  156. package/dist/services/agentTeams/teamTaskStore.js +114 -0
  157. package/dist/services/agentTeams/teamTaskStore.js.map +7 -0
  158. package/dist/services/agentTeams/teammateSpawner.js +80 -0
  159. package/dist/services/agentTeams/teammateSpawner.js.map +7 -0
  160. package/dist/services/checkpointManager.js +16 -3
  161. package/dist/services/checkpointManager.js.map +2 -2
  162. package/dist/services/claude.js +19 -1728
  163. package/dist/services/claude.js.map +3 -3
  164. package/dist/services/gpt5ConnectionTest.js +4 -2
  165. package/dist/services/gpt5ConnectionTest.js.map +2 -2
  166. package/dist/services/hookExecutor.js +411 -127
  167. package/dist/services/hookExecutor.js.map +2 -2
  168. package/dist/services/llm/anthropicProvider.js +807 -0
  169. package/dist/services/llm/anthropicProvider.js.map +7 -0
  170. package/dist/services/llm/dispatch.js +218 -0
  171. package/dist/services/llm/dispatch.js.map +7 -0
  172. package/dist/services/llm/index.js +44 -0
  173. package/dist/services/llm/index.js.map +7 -0
  174. package/dist/services/llm/mintoContext.js +69 -0
  175. package/dist/services/llm/mintoContext.js.map +7 -0
  176. package/dist/services/llm/openaiProvider.js +622 -0
  177. package/dist/services/llm/openaiProvider.js.map +7 -0
  178. package/dist/services/llm/types.js +157 -0
  179. package/dist/services/llm/types.js.map +7 -0
  180. package/dist/services/mcpClient.js +183 -33
  181. package/dist/services/mcpClient.js.map +2 -2
  182. package/dist/services/notifier.js +14 -0
  183. package/dist/services/notifier.js.map +2 -2
  184. package/dist/services/oauth.js +4 -2
  185. package/dist/services/oauth.js.map +2 -2
  186. package/dist/services/openai.js +66 -56
  187. package/dist/services/openai.js.map +3 -3
  188. package/dist/services/outputStyles.js +102 -21
  189. package/dist/services/outputStyles.js.map +2 -2
  190. package/dist/services/plugins/skillMarketplace.js +4 -1
  191. package/dist/services/plugins/skillMarketplace.js.map +2 -2
  192. package/dist/services/sentry.js +1 -1
  193. package/dist/services/sentry.js.map +2 -2
  194. package/dist/services/sessionMemory.js +16 -3
  195. package/dist/services/sessionMemory.js.map +2 -2
  196. package/dist/services/systemReminder.js +350 -3
  197. package/dist/services/systemReminder.js.map +2 -2
  198. package/dist/services/taskStore.js +19 -0
  199. package/dist/services/taskStore.js.map +2 -2
  200. package/dist/tools/ArchitectTool/ArchitectTool.js.map +1 -1
  201. package/dist/tools/AskUserQuestionTool/AskUserQuestionTool.js.map +1 -1
  202. package/dist/tools/BashOutputTool/BashOutputTool.js.map +1 -1
  203. package/dist/tools/BashTool/BashTool.js +28 -0
  204. package/dist/tools/BashTool/BashTool.js.map +2 -2
  205. package/dist/tools/FileEditTool/FileEditTool.js +1 -1
  206. package/dist/tools/FileEditTool/FileEditTool.js.map +2 -2
  207. package/dist/tools/FileReadTool/FileReadTool.js +14 -0
  208. package/dist/tools/FileReadTool/FileReadTool.js.map +2 -2
  209. package/dist/tools/FileWriteTool/FileWriteTool.js +3 -1
  210. package/dist/tools/FileWriteTool/FileWriteTool.js.map +2 -2
  211. package/dist/tools/GlobTool/GlobTool.js.map +1 -1
  212. package/dist/tools/GrepTool/GrepTool.js.map +1 -1
  213. package/dist/tools/KillShellTool/KillShellTool.js.map +1 -1
  214. package/dist/tools/ListMcpResourcesTool/ListMcpResourcesTool.js.map +2 -2
  215. package/dist/tools/LspTool/LspTool.js +11 -2
  216. package/dist/tools/LspTool/LspTool.js.map +2 -2
  217. package/dist/tools/MCPTool/MCPTool.js.map +1 -1
  218. package/dist/tools/MemoryReadTool/MemoryReadTool.js +2 -1
  219. package/dist/tools/MemoryReadTool/MemoryReadTool.js.map +2 -2
  220. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js +2 -1
  221. package/dist/tools/MemoryWriteTool/MemoryWriteTool.js.map +2 -2
  222. package/dist/tools/MultiEditTool/MultiEditTool.js.map +1 -1
  223. package/dist/tools/NotebookEditTool/NotebookEditTool.js.map +1 -1
  224. package/dist/tools/NotebookReadTool/NotebookReadTool.js.map +1 -1
  225. package/dist/tools/PlanModeTool/EnterPlanModeTool.js +8 -2
  226. package/dist/tools/PlanModeTool/EnterPlanModeTool.js.map +2 -2
  227. package/dist/tools/PlanModeTool/ExitPlanModeTool.js +2 -0
  228. package/dist/tools/PlanModeTool/ExitPlanModeTool.js.map +2 -2
  229. package/dist/tools/ReadMcpResourceTool/ReadMcpResourceTool.js.map +1 -1
  230. package/dist/tools/SlashCommandTool/SlashCommandTool.js +174 -18
  231. package/dist/tools/SlashCommandTool/SlashCommandTool.js.map +3 -3
  232. package/dist/tools/TaskCreateTool/TaskCreateTool.js.map +1 -1
  233. package/dist/tools/TaskGetTool/TaskGetTool.js.map +1 -1
  234. package/dist/tools/TaskListTool/TaskListTool.js.map +1 -1
  235. package/dist/tools/TaskOutputTool/TaskOutputTool.js.map +1 -1
  236. package/dist/tools/TaskStopTool/TaskStopTool.js.map +1 -1
  237. package/dist/tools/TaskTool/TaskTool.js +75 -5
  238. package/dist/tools/TaskTool/TaskTool.js.map +2 -2
  239. package/dist/tools/TaskTool/prompt.js +12 -6
  240. package/dist/tools/TaskTool/prompt.js.map +2 -2
  241. package/dist/tools/TaskUpdateTool/TaskUpdateTool.js.map +1 -1
  242. package/dist/tools/ThinkTool/ThinkTool.js.map +1 -1
  243. package/dist/tools/TodoWriteTool/TodoWriteTool.js.map +1 -1
  244. package/dist/tools/URLFetcherTool/URLFetcherTool.js.map +1 -1
  245. package/dist/tools/WebSearchTool/WebSearchTool.js.map +1 -1
  246. package/dist/tools/WebSearchTool/searchProviders.js +2 -1
  247. package/dist/tools/WebSearchTool/searchProviders.js.map +2 -2
  248. package/dist/tools/lsTool/lsTool.js.map +2 -2
  249. package/dist/tools/lsTool/prompt.js.map +1 -1
  250. package/dist/tools.js +14 -3
  251. package/dist/tools.js.map +2 -2
  252. package/dist/types/PermissionMode.js +21 -1
  253. package/dist/types/PermissionMode.js.map +2 -2
  254. package/dist/types/agentTeams.js +1 -0
  255. package/dist/types/agentTeams.js.map +7 -0
  256. package/dist/types/hooks.js +8 -2
  257. package/dist/types/hooks.js.map +2 -2
  258. package/dist/types/plugin.js +1 -1
  259. package/dist/types/plugin.js.map +2 -2
  260. package/dist/utils/agentLoader.js +25 -3
  261. package/dist/utils/agentLoader.js.map +2 -2
  262. package/dist/utils/animationManager.js +1 -1
  263. package/dist/utils/animationManager.js.map +2 -2
  264. package/dist/utils/ask.js +1 -1
  265. package/dist/utils/async.js +5 -1
  266. package/dist/utils/async.js.map +2 -2
  267. package/dist/utils/autoCompactCore.js +60 -0
  268. package/dist/utils/autoCompactCore.js.map +2 -2
  269. package/dist/utils/config.js +26 -128
  270. package/dist/utils/config.js.map +2 -2
  271. package/dist/utils/configSchema.js +227 -0
  272. package/dist/utils/configSchema.js.map +7 -0
  273. package/dist/utils/debugLogger.js.map +2 -2
  274. package/dist/utils/env.js +4 -3
  275. package/dist/utils/env.js.map +2 -2
  276. package/dist/utils/envConfig.js +34 -0
  277. package/dist/utils/envConfig.js.map +3 -3
  278. package/dist/utils/gpt5.js +146 -0
  279. package/dist/utils/gpt5.js.map +7 -0
  280. package/dist/utils/hookManager.js +374 -140
  281. package/dist/utils/hookManager.js.map +2 -2
  282. package/dist/utils/markdown.js +47 -0
  283. package/dist/utils/markdown.js.map +2 -2
  284. package/dist/utils/memoizeWithTTL.js +25 -0
  285. package/dist/utils/memoizeWithTTL.js.map +7 -0
  286. package/dist/utils/model.js +34 -9
  287. package/dist/utils/model.js.map +2 -2
  288. package/dist/utils/pluginInstaller.js +34 -5
  289. package/dist/utils/pluginInstaller.js.map +2 -2
  290. package/dist/utils/pluginLoader.js +201 -32
  291. package/dist/utils/pluginLoader.js.map +2 -2
  292. package/dist/utils/safeFetch.js +45 -0
  293. package/dist/utils/safeFetch.js.map +7 -0
  294. package/dist/utils/skillLoader.js +59 -6
  295. package/dist/utils/skillLoader.js.map +2 -2
  296. package/dist/utils/streamingState.js +52 -0
  297. package/dist/utils/streamingState.js.map +7 -0
  298. package/dist/utils/style.js +6 -3
  299. package/dist/utils/style.js.map +2 -2
  300. package/dist/utils/teamConfig.js +9 -3
  301. package/dist/utils/teamConfig.js.map +2 -2
  302. package/dist/utils/toolRiskClassification.js +0 -6
  303. package/dist/utils/toolRiskClassification.js.map +2 -2
  304. package/dist/version.js +2 -2
  305. package/dist/version.js.map +1 -1
  306. package/package.json +7 -6
@@ -15,7 +15,7 @@ import {
15
15
  PermissionRequest
16
16
  } from "../components/permissions/PermissionRequest.js";
17
17
  import PromptInput from "../components/PromptInput.js";
18
- import { getSystemPrompt } from "../constants/prompts.js";
18
+ import { getSystemPrompt } from "../constants/prompts/index.js";
19
19
  import { getContext } from "../context.js";
20
20
  import { getTotalCost, useCostSummary } from "../cost-tracker.js";
21
21
  import { useLogStartupTime } from "../hooks/useLogStartupTime.js";
@@ -26,7 +26,6 @@ import { useLogMessages, serializeMessageForLog } from "../hooks/useLogMessages.
26
26
  import { overwriteLog } from "../utils/log.js";
27
27
  import { PermissionProvider } from "../context/PermissionContext.js";
28
28
  import { useFullscreenExitCallback } from "../hooks/useTerminalSize.js";
29
- import { ModeIndicator } from "../components/ModeIndicator.js";
30
29
  import { TodoPanel } from "../components/TodoPanel.js";
31
30
  import { TurnCompletionIndicator } from "../components/TurnCompletionIndicator.js";
32
31
  import { getTodos, initTodoSession } from "../utils/todoStorage.js";
@@ -44,7 +43,16 @@ import {
44
43
  saveGlobalConfig,
45
44
  getVerboseLabel
46
45
  } from "../utils/config.js";
47
- import { getNextAvailableLogForkNumber } from "../utils/log.js";
46
+ import { loadMessagesFromLog } from "../utils/conversationRecovery.js";
47
+ import { useBackgroundShells } from "../hooks/useBackgroundShells.js";
48
+ import { useDeferredLoading } from "../hooks/useDeferredLoading.js";
49
+ import { useSessionTracking } from "../hooks/useSessionTracking.js";
50
+ import { emitReminderEvent } from "../services/systemReminder.js";
51
+ import {
52
+ getNextAvailableLogForkNumber,
53
+ loadLogList,
54
+ CACHE_PATHS
55
+ } from "../utils/log.js";
48
56
  import {
49
57
  getErroredToolUseMessages,
50
58
  getInProgressToolUseIDs,
@@ -66,11 +74,6 @@ import { BinaryFeedback } from "../components/binary-feedback/BinaryFeedback.js"
66
74
  import { getMaxThinkingTokens } from "../utils/thinking.js";
67
75
  import { getOriginalCwd } from "../utils/state.js";
68
76
  import { handleHashCommand } from "../commands/terminalSetup.js";
69
- import { debug as debugLogger } from "../utils/debugLogger.js";
70
- import {
71
- initializeHookManager
72
- } from "../utils/hookManager.js";
73
- import { loadAllPlugins } from "../utils/pluginLoader.js";
74
77
  import { randomUUID } from "crypto";
75
78
  import { getMessagesPath } from "../utils/log.js";
76
79
  import {
@@ -88,12 +91,10 @@ import { useAgentTranscripts } from "../hooks/useAgentTranscripts.js";
88
91
  import { GroupRenderer } from "../components/messages/GroupRenderer.js";
89
92
  import { SEMANTIC_COLORS } from "../constants/colors.js";
90
93
  import {
91
- initSessionTracker,
92
94
  recordFirstPrompt,
93
95
  incrementMessageCount,
94
96
  incrementToolCallCount,
95
- flushSessionStats,
96
- endSession
97
+ flushSessionStats
97
98
  } from "../utils/sessionTracker.js";
98
99
  const RESUME_VISIBLE_MESSAGE_COUNT = Infinity;
99
100
  function REPL({
@@ -113,7 +114,9 @@ function REPL({
113
114
  initialUpdateVersion,
114
115
  initialUpdateCommands,
115
116
  fallbackMode = false,
116
- isResumedConversation = false
117
+ isResumedConversation = false,
118
+ enableArchitect,
119
+ autoResume = false
117
120
  }) {
118
121
  const [verbose, setVerbose] = useState(
119
122
  verboseFromCLI === true ? true : false
@@ -155,8 +158,21 @@ function REPL({
155
158
  );
156
159
  const [binaryFeedbackContext, setBinaryFeedbackContext] = useState(null);
157
160
  const [askUserQuestionContext, setAskUserQuestionContext] = useState(null);
158
- const updateAvailableVersion = initialUpdateVersion ?? null;
159
- const updateCommands = initialUpdateCommands ?? null;
161
+ const {
162
+ commands: currentCommands,
163
+ tools: currentTools,
164
+ mcpClients: currentMcpClients,
165
+ updateVersion: updateAvailableVersion,
166
+ updateCommands,
167
+ startupItems
168
+ } = useDeferredLoading({
169
+ initialCommands: commands,
170
+ initialTools: tools,
171
+ initialMcpClients: mcpClients,
172
+ initialUpdateVersion,
173
+ initialUpdateCommands,
174
+ enableArchitect
175
+ });
160
176
  const [isTodoPanelVisible, setIsTodoPanelVisible] = useState(true);
161
177
  const [verboseToggleMessage, setVerboseToggleMessage] = useState(null);
162
178
  const turnStartTimeRef = useRef(null);
@@ -178,10 +194,12 @@ function REPL({
178
194
  turnStartTimeRef.current = null;
179
195
  }
180
196
  }, [isLoading]);
181
- const [backgroundShells, setBackgroundShells] = useState(
182
- []
183
- );
184
- const [showBackgroundPanel, setShowBackgroundPanel] = useState(false);
197
+ const {
198
+ shells: backgroundShells,
199
+ isPanelVisible: showBackgroundPanel,
200
+ setIsPanelVisible: setShowBackgroundPanel,
201
+ runningCount: backgroundShellRunningCount
202
+ } = useBackgroundShells();
185
203
  const prevUnresolvedRef = useRef(/* @__PURE__ */ new Set());
186
204
  const messageBatchBufferRef = useRef(null);
187
205
  if (messageBatchBufferRef.current === null) {
@@ -217,7 +235,6 @@ function REPL({
217
235
  []
218
236
  );
219
237
  const readFileTimestamps = useRef({});
220
- const hookManagerRef = useRef(null);
221
238
  const { status: apiKeyStatus, reverify } = useApiKeyVerification();
222
239
  function onInterrupt() {
223
240
  if (!isLoading) {
@@ -276,10 +293,10 @@ function REPL({
276
293
  {
277
294
  abortController: newAbortController,
278
295
  options: {
279
- commands,
296
+ commands: currentCommands,
280
297
  forkNumber,
281
298
  messageLogName,
282
- tools,
299
+ tools: currentTools,
283
300
  verbose,
284
301
  maxThinkingTokens: 0
285
302
  },
@@ -313,10 +330,10 @@ function REPL({
313
330
  canUseTool,
314
331
  {
315
332
  options: {
316
- commands,
333
+ commands: currentCommands,
317
334
  forkNumber,
318
335
  messageLogName,
319
- tools,
336
+ tools: currentTools,
320
337
  verbose,
321
338
  safeMode,
322
339
  safetyMode,
@@ -402,10 +419,10 @@ function REPL({
402
419
  canUseTool,
403
420
  {
404
421
  options: {
405
- commands,
422
+ commands: currentCommands,
406
423
  forkNumber,
407
424
  messageLogName,
408
- tools,
425
+ tools: currentTools,
409
426
  verbose,
410
427
  safeMode,
411
428
  safetyMode,
@@ -501,45 +518,29 @@ function REPL({
501
518
  useLogMessages(messages, messageLogName, forkNumber);
502
519
  useLogStartupTime();
503
520
  useEffect(() => {
504
- onInit();
521
+ if (!autoResume) return;
522
+ loadLogList(CACHE_PATHS.messages()).then(async (logs) => {
523
+ for (const log of logs) {
524
+ try {
525
+ const loaded = await loadMessagesFromLog(log.fullPath, tools);
526
+ if (loaded && loaded.length > 0) {
527
+ setMessages(loaded);
528
+ emitReminderEvent("session:continuation", {
529
+ messageCount: loaded.length
530
+ });
531
+ break;
532
+ }
533
+ } catch {
534
+ continue;
535
+ }
536
+ }
537
+ }).catch(() => {
538
+ });
505
539
  }, []);
506
540
  useEffect(() => {
507
- try {
508
- const plugins = loadAllPlugins();
509
- const sessionId = randomUUID();
510
- const transcriptPath = getMessagesPath(messageLogName, forkNumber, 0);
511
- const hookManager = initializeHookManager(
512
- sessionId,
513
- transcriptPath,
514
- plugins
515
- );
516
- hookManagerRef.current = hookManager;
517
- initSessionTracker(getOriginalCwd());
518
- hookManager.executeSessionStart().catch((err) => {
519
- debugLogger.error("SessionStart hooks failed", { error: err });
520
- });
521
- return () => {
522
- flushSessionStats();
523
- endSession("other");
524
- hookManager.executeSessionEnd("other").catch((err) => {
525
- debugLogger.error("SessionEnd hooks failed", { error: err });
526
- });
527
- };
528
- } catch (err) {
529
- debugLogger.error("Failed to initialize hook manager", { error: err });
530
- }
531
- }, [messageLogName, forkNumber]);
532
- useEffect(() => {
533
- const manager = BackgroundShellManager.getInstance();
534
- setBackgroundShells(manager.list());
535
- const handleListChange = (shells) => {
536
- setBackgroundShells(shells);
537
- };
538
- manager.on("listChange", handleListChange);
539
- return () => {
540
- manager.off("listChange", handleListChange);
541
- };
541
+ onInit();
542
542
  }, []);
543
+ useSessionTracking(messageLogName, forkNumber);
543
544
  const normalizedMessages = useMemo(
544
545
  () => normalizeMessages(messages).filter(isNotEmptyMessage),
545
546
  [messages]
@@ -599,7 +600,7 @@ function REPL({
599
600
  jsx: /* @__PURE__ */ React.createElement(Box, { flexDirection: "column", width: "100%", key: "logo" }, /* @__PURE__ */ React.createElement(
600
601
  Logo,
601
602
  {
602
- mcpClients,
603
+ mcpClients: currentMcpClients,
603
604
  isDefaultModel,
604
605
  updateBannerVersion: updateAvailableVersion,
605
606
  updateBannerCommands: updateCommands
@@ -622,6 +623,9 @@ function REPL({
622
623
  if (!group && _.type === "progress") {
623
624
  group = getGroupForToolUse(_.toolUseID);
624
625
  }
626
+ if (!group && toolUseID) {
627
+ group = getGroupForToolUse(toolUseID);
628
+ }
625
629
  if (group && (group.type === "parallel-tasks" || group.type === "task")) {
626
630
  if (renderedGroupIds.has(group.id)) {
627
631
  continue;
@@ -688,7 +692,7 @@ function REPL({
688
692
  }
689
693
  }
690
694
  }
691
- if (_.type === "progress" && "type" in _.content && _.content.type === "streaming" && !unresolvedToolUseIDs.has(_.toolUseID)) {
695
+ if (_.type === "progress" && !unresolvedToolUseIDs.has(_.toolUseID)) {
692
696
  continue;
693
697
  }
694
698
  const message = _.type === "progress" ? (
@@ -746,7 +750,7 @@ function REPL({
746
750
  message: _,
747
751
  messages: normalizedMessages,
748
752
  addMargin: true,
749
- tools,
753
+ tools: currentTools,
750
754
  verbose,
751
755
  debug,
752
756
  erroredToolUseIDs,
@@ -786,7 +790,7 @@ function REPL({
786
790
  }, [
787
791
  forkNumber,
788
792
  normalizedMessages,
789
- tools,
793
+ currentTools,
790
794
  verbose,
791
795
  debug,
792
796
  erroredToolUseIDs,
@@ -795,7 +799,7 @@ function REPL({
795
799
  toolUseConfirm,
796
800
  isMessageSelectorVisible,
797
801
  unresolvedToolUseIDs,
798
- mcpClients,
802
+ currentMcpClients,
799
803
  isDefaultModel,
800
804
  isResumedConversation,
801
805
  // V1+ dependencies
@@ -830,8 +834,12 @@ function REPL({
830
834
  const handleToggleBackgroundPanel = useCallback(() => {
831
835
  setShowBackgroundPanel((prev) => !prev);
832
836
  }, []);
833
- const handleModelChange = useCallback(() => {
837
+ const handleModelChange = useCallback(async () => {
838
+ setIsResizeClearing(true);
839
+ await new Promise((resolve) => setTimeout(resolve, 50));
840
+ await clearTerminal();
834
841
  setForkNumber((prev) => prev + 1);
842
+ setIsResizeClearing(false);
835
843
  }, []);
836
844
  const handleToggleVerbose = useCallback(async (newVerbose) => {
837
845
  const message = `${getVerboseLabel(newVerbose)} (Ctrl+O)`;
@@ -883,7 +891,7 @@ function REPL({
883
891
  PermissionProvider,
884
892
  {
885
893
  isBypassPermissionsModeAvailable: !safeMode,
886
- children: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(React.Fragment, { key: `mode-indicator-${forkNumber}` }, /* @__PURE__ */ React.createElement(ModeIndicator, null)), /* @__PURE__ */ React.createElement(React.Fragment, { key: `static-wrapper-${forkNumber}` }, /* @__PURE__ */ React.createElement(
894
+ children: /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(React.Fragment, { key: `static-wrapper-${forkNumber}` }, /* @__PURE__ */ React.createElement(
887
895
  Static,
888
896
  {
889
897
  items: staticItems,
@@ -907,7 +915,7 @@ function REPL({
907
915
  showTodoList: isTodoPanelVisible
908
916
  }
909
917
  ),
910
- !isResizeClearing && !isLoading && !toolJSX && !toolUseConfirm && !binaryFeedbackContext && /* @__PURE__ */ React.createElement(
918
+ !isResizeClearing && !isLoading && !toolJSX && !toolUseConfirm && !binaryFeedbackContext && queuedPrompts.length === 0 && /* @__PURE__ */ React.createElement(
911
919
  TurnCompletionIndicator,
912
920
  {
913
921
  durationMs: lastTurnDurationMs,
@@ -926,7 +934,7 @@ function REPL({
926
934
  },
927
935
  verbose,
928
936
  normalizedMessages,
929
- tools,
937
+ tools: currentTools,
930
938
  debug,
931
939
  erroredToolUseIDs,
932
940
  inProgressToolUseIDs,
@@ -978,10 +986,10 @@ function REPL({
978
986
  ), /* @__PURE__ */ React.createElement(
979
987
  PromptInput,
980
988
  {
981
- commands,
989
+ commands: currentCommands,
982
990
  forkNumber,
983
991
  messageLogName,
984
- tools,
992
+ tools: currentTools,
985
993
  isDisabled: apiKeyStatus === "invalid",
986
994
  isLoading,
987
995
  onQuery,
@@ -1020,7 +1028,8 @@ function REPL({
1020
1028
  },
1021
1029
  onInterrupt,
1022
1030
  isOverlayActive: !!(toolJSX && !toolJSX.shouldHidePromptInput),
1023
- unmount: unmountREPL
1031
+ unmount: unmountREPL,
1032
+ startupItems
1024
1033
  }
1025
1034
  ), toolJSX && !toolJSX.shouldHidePromptInput && toolJSX.jsx)
1026
1035
  ), isMessageSelectorVisible && /* @__PURE__ */ React.createElement(React.Fragment, { key: `message-selector-wrapper-${forkNumber}` }, /* @__PURE__ */ React.createElement(
@@ -1047,7 +1056,7 @@ function REPL({
1047
1056
  });
1048
1057
  },
1049
1058
  onEscape: () => setIsMessageSelectorVisible(false),
1050
- tools
1059
+ tools: currentTools
1051
1060
  }
1052
1061
  )), /* @__PURE__ */ React.createElement(Newline, null))
1053
1062
  }