@astralyn/pi 1.4.1 → 1.4.3

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 (257) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/bundle/chunks/{chunk-N77PYEXG.js → chunk-ISXCH6TG.js} +1 -1
  3. package/dist/bundle/chunks/{chunk-KSKBY3VV.js → chunk-Z2YN4E74.js} +117 -111
  4. package/dist/bundle/chunks/{virtual-modules-XNEYDLXF.js → virtual-modules-QX6D3D7X.js} +1 -1
  5. package/dist/bundle/cli.js +1 -1
  6. package/dist/bundle/index.js +1 -1
  7. package/dist/bundle/rpc-entry.js +1 -1
  8. package/dist/core/agent-session.d.ts +15 -1
  9. package/dist/core/agent-session.d.ts.map +1 -1
  10. package/dist/core/agent-session.js +1 -8
  11. package/dist/core/agent-session.js.map +1 -1
  12. package/dist/core/extensions/distribution-api.d.ts +1 -1
  13. package/dist/core/extensions/distribution-api.d.ts.map +1 -1
  14. package/dist/core/extensions/distribution-api.js.map +1 -1
  15. package/dist/core/extensions/index.d.ts +2 -2
  16. package/dist/core/extensions/index.d.ts.map +1 -1
  17. package/dist/core/extensions/index.js.map +1 -1
  18. package/dist/core/extensions/runner.d.ts.map +1 -1
  19. package/dist/core/extensions/runner.js +3 -2
  20. package/dist/core/extensions/runner.js.map +1 -1
  21. package/dist/core/extensions/types.d.ts +29 -2
  22. package/dist/core/extensions/types.d.ts.map +1 -1
  23. package/dist/core/extensions/types.js.map +1 -1
  24. package/dist/core/keybinding-registry.d.ts +16 -1
  25. package/dist/core/keybinding-registry.d.ts.map +1 -1
  26. package/dist/core/keybinding-registry.js +20 -0
  27. package/dist/core/keybinding-registry.js.map +1 -1
  28. package/dist/core/keybindings-schema.d.ts.map +1 -1
  29. package/dist/core/keybindings-schema.js +2 -1
  30. package/dist/core/keybindings-schema.js.map +1 -1
  31. package/dist/core/keybindings.d.ts +4 -106
  32. package/dist/core/keybindings.d.ts.map +1 -1
  33. package/dist/core/keybindings.js +0 -13
  34. package/dist/core/keybindings.js.map +1 -1
  35. package/dist/core/slash-commands.d.ts.map +1 -1
  36. package/dist/core/slash-commands.js +0 -1
  37. package/dist/core/slash-commands.js.map +1 -1
  38. package/dist/core/tasks/format.d.ts.map +1 -1
  39. package/dist/core/tasks/format.js +10 -4
  40. package/dist/core/tasks/format.js.map +1 -1
  41. package/dist/core/tasks/limits.d.ts +5 -0
  42. package/dist/core/tasks/limits.d.ts.map +1 -0
  43. package/dist/core/tasks/limits.js +5 -0
  44. package/dist/core/tasks/limits.js.map +1 -0
  45. package/dist/core/tasks/runtime.d.ts +1 -0
  46. package/dist/core/tasks/runtime.d.ts.map +1 -1
  47. package/dist/core/tasks/runtime.js +7 -3
  48. package/dist/core/tasks/runtime.js.map +1 -1
  49. package/dist/core/tasks/session.d.ts +1 -1
  50. package/dist/core/tasks/session.d.ts.map +1 -1
  51. package/dist/core/tasks/session.js +10 -2
  52. package/dist/core/tasks/session.js.map +1 -1
  53. package/dist/core/tasks/types.d.ts +13 -0
  54. package/dist/core/tasks/types.d.ts.map +1 -1
  55. package/dist/core/tasks/types.js.map +1 -1
  56. package/dist/core/tools/bash.d.ts +98 -9
  57. package/dist/core/tools/bash.d.ts.map +1 -1
  58. package/dist/core/tools/bash.js +308 -11
  59. package/dist/core/tools/bash.js.map +1 -1
  60. package/dist/core/tools/index.d.ts +5 -4
  61. package/dist/core/tools/index.d.ts.map +1 -1
  62. package/dist/core/tools/index.js +3 -11
  63. package/dist/core/tools/index.js.map +1 -1
  64. package/dist/core/tools/powershell.d.ts +2 -1
  65. package/dist/core/tools/powershell.d.ts.map +1 -1
  66. package/dist/core/tools/powershell.js +2 -1
  67. package/dist/core/tools/powershell.js.map +1 -1
  68. package/dist/core/tools/renderers/bash.d.ts +1 -1
  69. package/dist/core/tools/renderers/bash.d.ts.map +1 -1
  70. package/dist/core/tools/renderers/bash.js.map +1 -1
  71. package/dist/core/tools/renderers/index.d.ts.map +1 -1
  72. package/dist/core/tools/renderers/index.js +7 -5
  73. package/dist/core/tools/renderers/index.js.map +1 -1
  74. package/dist/core/tools/shell-execution.d.ts +2 -2
  75. package/dist/core/tools/shell-execution.d.ts.map +1 -1
  76. package/dist/core/tools/shell-execution.js +0 -21
  77. package/dist/core/tools/shell-execution.js.map +1 -1
  78. package/dist/core/tools/shell-operations.d.ts +12 -0
  79. package/dist/core/tools/shell-operations.d.ts.map +1 -0
  80. package/dist/core/tools/shell-operations.js +38 -0
  81. package/dist/core/tools/shell-operations.js.map +1 -0
  82. package/dist/core/tools/shell-tool.d.ts +8 -64
  83. package/dist/core/tools/shell-tool.d.ts.map +1 -1
  84. package/dist/core/tools/shell-tool.js +27 -125
  85. package/dist/core/tools/shell-tool.js.map +1 -1
  86. package/dist/extensions/index.d.ts +1 -0
  87. package/dist/extensions/index.d.ts.map +1 -1
  88. package/dist/extensions/index.js +5 -0
  89. package/dist/extensions/index.js.map +1 -1
  90. package/dist/extensions/keybindings.d.ts +6 -0
  91. package/dist/extensions/keybindings.d.ts.map +1 -0
  92. package/dist/extensions/keybindings.js +6 -0
  93. package/dist/extensions/keybindings.js.map +1 -0
  94. package/dist/extensions/tasks/index.d.ts +5 -0
  95. package/dist/extensions/tasks/index.d.ts.map +1 -0
  96. package/dist/extensions/tasks/index.js +42 -0
  97. package/dist/extensions/tasks/index.js.map +1 -0
  98. package/dist/extensions/tasks/keybindings.d.ts +19 -0
  99. package/dist/extensions/tasks/keybindings.d.ts.map +1 -0
  100. package/dist/extensions/tasks/keybindings.js +30 -0
  101. package/dist/extensions/tasks/keybindings.js.map +1 -0
  102. package/dist/{core/tools/tasks → extensions/tasks/tool}/actions.d.ts +2 -2
  103. package/dist/extensions/tasks/tool/actions.d.ts.map +1 -0
  104. package/dist/{core/tools/tasks → extensions/tasks/tool}/actions.js +4 -4
  105. package/dist/extensions/tasks/tool/actions.js.map +1 -0
  106. package/dist/{core/tools/tasks → extensions/tasks/tool}/constants.d.ts +1 -3
  107. package/dist/extensions/tasks/tool/constants.d.ts.map +1 -0
  108. package/dist/{core/tools/tasks → extensions/tasks/tool}/constants.js +1 -3
  109. package/dist/extensions/tasks/tool/constants.js.map +1 -0
  110. package/dist/extensions/tasks/tool/schema.d.ts.map +1 -0
  111. package/dist/{core/tools/tasks → extensions/tasks/tool}/schema.js +5 -4
  112. package/dist/extensions/tasks/tool/schema.js.map +1 -0
  113. package/dist/{core/tools/tasks → extensions/tasks/tool}/types.d.ts +1 -1
  114. package/dist/extensions/tasks/tool/types.d.ts.map +1 -0
  115. package/dist/extensions/tasks/tool/types.js.map +1 -0
  116. package/dist/extensions/tasks/tool.d.ts +6 -0
  117. package/dist/extensions/tasks/tool.d.ts.map +1 -0
  118. package/dist/{core/tools/tasks.js → extensions/tasks/tool.js} +6 -10
  119. package/dist/extensions/tasks/tool.js.map +1 -0
  120. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/completion-render.d.ts +1 -1
  121. package/dist/extensions/tasks/ui/completion-render.d.ts.map +1 -0
  122. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/completion-render.js +2 -2
  123. package/dist/extensions/tasks/ui/completion-render.js.map +1 -0
  124. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/index.d.ts +1 -1
  125. package/dist/extensions/tasks/ui/index.d.ts.map +1 -0
  126. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/index.js +4 -4
  127. package/dist/extensions/tasks/ui/index.js.map +1 -0
  128. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/inspector.d.ts +1 -1
  129. package/dist/extensions/tasks/ui/inspector.d.ts.map +1 -0
  130. package/dist/extensions/tasks/ui/inspector.js.map +1 -0
  131. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/layout.d.ts +1 -1
  132. package/dist/extensions/tasks/ui/layout.d.ts.map +1 -0
  133. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/layout.js +1 -1
  134. package/dist/extensions/tasks/ui/layout.js.map +1 -0
  135. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/list.d.ts +1 -1
  136. package/dist/extensions/tasks/ui/list.d.ts.map +1 -0
  137. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/list.js +1 -1
  138. package/dist/extensions/tasks/ui/list.js.map +1 -0
  139. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/manager.d.ts +2 -1
  140. package/dist/extensions/tasks/ui/manager.d.ts.map +1 -0
  141. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/manager.js +2 -1
  142. package/dist/extensions/tasks/ui/manager.js.map +1 -0
  143. package/dist/extensions/tasks/ui/model.d.ts.map +1 -0
  144. package/dist/extensions/tasks/ui/model.js.map +1 -0
  145. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/render.d.ts +3 -3
  146. package/dist/extensions/tasks/ui/render.d.ts.map +1 -0
  147. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/render.js +2 -2
  148. package/dist/extensions/tasks/ui/render.js.map +1 -0
  149. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/task-view.d.ts +1 -1
  150. package/dist/extensions/tasks/ui/task-view.d.ts.map +1 -0
  151. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/task-view.js +1 -1
  152. package/dist/extensions/tasks/ui/task-view.js.map +1 -0
  153. package/dist/extensions/tasks/ui/text.d.ts.map +1 -0
  154. package/dist/extensions/tasks/ui/text.js.map +1 -0
  155. package/dist/extensions/tasks/ui/tree.d.ts +7 -0
  156. package/dist/extensions/tasks/ui/tree.d.ts.map +1 -0
  157. package/dist/{modes/interactive/tasks/host-hooks.js → extensions/tasks/ui/tree.js} +1 -18
  158. package/dist/extensions/tasks/ui/tree.js.map +1 -0
  159. package/dist/extensions/tasks/ui/viewport.d.ts.map +1 -0
  160. package/dist/extensions/tasks/ui/viewport.js.map +1 -0
  161. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/views.d.ts +1 -1
  162. package/dist/extensions/tasks/ui/views.d.ts.map +1 -0
  163. package/dist/{modes/interactive/tasks → extensions/tasks/ui}/views.js +1 -1
  164. package/dist/extensions/tasks/ui/views.js.map +1 -0
  165. package/dist/extensions/tool-presentation/index.d.ts +7 -0
  166. package/dist/extensions/tool-presentation/index.d.ts.map +1 -0
  167. package/dist/extensions/tool-presentation/index.js +9 -0
  168. package/dist/extensions/tool-presentation/index.js.map +1 -0
  169. package/dist/index.d.ts +2 -2
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js.map +1 -1
  172. package/dist/modes/interactive/components/assistant-message.d.ts +3 -2
  173. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  174. package/dist/modes/interactive/components/assistant-message.js +65 -18
  175. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  176. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  177. package/dist/modes/interactive/components/custom-message.js +1 -3
  178. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  179. package/dist/modes/interactive/components/index.d.ts +1 -1
  180. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  181. package/dist/modes/interactive/components/index.js +1 -1
  182. package/dist/modes/interactive/components/index.js.map +1 -1
  183. package/dist/modes/interactive/components/tool-execution.d.ts +85 -0
  184. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  185. package/dist/modes/interactive/components/tool-execution.js +362 -0
  186. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  187. package/dist/modes/interactive/interactive-mode.d.ts +5 -3
  188. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  189. package/dist/modes/interactive/interactive-mode.js +14 -29
  190. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  191. package/dist/modes/interactive/tool-view/chat.d.ts +1 -1
  192. package/dist/modes/interactive/tool-view/chat.d.ts.map +1 -1
  193. package/dist/modes/interactive/tool-view/chat.js +2 -3
  194. package/dist/modes/interactive/tool-view/chat.js.map +1 -1
  195. package/dist/modes/interactive/tool-view/shell.d.ts +15 -0
  196. package/dist/modes/interactive/tool-view/shell.d.ts.map +1 -0
  197. package/dist/modes/interactive/tool-view/shell.js +51 -0
  198. package/dist/modes/interactive/tool-view/shell.js.map +1 -0
  199. package/dist/modes/interactive/tool-view/tool-execution.d.ts +10 -79
  200. package/dist/modes/interactive/tool-view/tool-execution.d.ts.map +1 -1
  201. package/dist/modes/interactive/tool-view/tool-execution.js +7 -298
  202. package/dist/modes/interactive/tool-view/tool-execution.js.map +1 -1
  203. package/docs/bundled/README.md +1 -4
  204. package/docs/bundled/tasks.md +3 -3
  205. package/docs/bundled/tool-presentation.md +9 -7
  206. package/docs/extensions.md +9 -4
  207. package/docs/settings.md +1 -1
  208. package/npm-shrinkwrap.json +2 -2
  209. package/package.json +1 -1
  210. package/schemas/keybindings.schema.json +84 -52
  211. package/dist/core/tools/tasks/actions.d.ts.map +0 -1
  212. package/dist/core/tools/tasks/actions.js.map +0 -1
  213. package/dist/core/tools/tasks/constants.d.ts.map +0 -1
  214. package/dist/core/tools/tasks/constants.js.map +0 -1
  215. package/dist/core/tools/tasks/schema.d.ts.map +0 -1
  216. package/dist/core/tools/tasks/schema.js.map +0 -1
  217. package/dist/core/tools/tasks/types.d.ts.map +0 -1
  218. package/dist/core/tools/tasks/types.js.map +0 -1
  219. package/dist/core/tools/tasks.d.ts +0 -14
  220. package/dist/core/tools/tasks.d.ts.map +0 -1
  221. package/dist/core/tools/tasks.js.map +0 -1
  222. package/dist/modes/interactive/tasks/completion-render.d.ts.map +0 -1
  223. package/dist/modes/interactive/tasks/completion-render.js.map +0 -1
  224. package/dist/modes/interactive/tasks/host-hooks.d.ts +0 -14
  225. package/dist/modes/interactive/tasks/host-hooks.d.ts.map +0 -1
  226. package/dist/modes/interactive/tasks/host-hooks.js.map +0 -1
  227. package/dist/modes/interactive/tasks/index.d.ts.map +0 -1
  228. package/dist/modes/interactive/tasks/index.js.map +0 -1
  229. package/dist/modes/interactive/tasks/inspector.d.ts.map +0 -1
  230. package/dist/modes/interactive/tasks/inspector.js.map +0 -1
  231. package/dist/modes/interactive/tasks/layout.d.ts.map +0 -1
  232. package/dist/modes/interactive/tasks/layout.js.map +0 -1
  233. package/dist/modes/interactive/tasks/list.d.ts.map +0 -1
  234. package/dist/modes/interactive/tasks/list.js.map +0 -1
  235. package/dist/modes/interactive/tasks/manager.d.ts.map +0 -1
  236. package/dist/modes/interactive/tasks/manager.js.map +0 -1
  237. package/dist/modes/interactive/tasks/model.d.ts.map +0 -1
  238. package/dist/modes/interactive/tasks/model.js.map +0 -1
  239. package/dist/modes/interactive/tasks/render.d.ts.map +0 -1
  240. package/dist/modes/interactive/tasks/render.js.map +0 -1
  241. package/dist/modes/interactive/tasks/task-view.d.ts.map +0 -1
  242. package/dist/modes/interactive/tasks/task-view.js.map +0 -1
  243. package/dist/modes/interactive/tasks/text.d.ts.map +0 -1
  244. package/dist/modes/interactive/tasks/text.js.map +0 -1
  245. package/dist/modes/interactive/tasks/viewport.d.ts.map +0 -1
  246. package/dist/modes/interactive/tasks/viewport.js.map +0 -1
  247. package/dist/modes/interactive/tasks/views.d.ts.map +0 -1
  248. package/dist/modes/interactive/tasks/views.js.map +0 -1
  249. /package/dist/{core/tools/tasks → extensions/tasks/tool}/schema.d.ts +0 -0
  250. /package/dist/{core/tools/tasks → extensions/tasks/tool}/types.js +0 -0
  251. /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/inspector.js +0 -0
  252. /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/model.d.ts +0 -0
  253. /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/model.js +0 -0
  254. /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/text.d.ts +0 -0
  255. /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/text.js +0 -0
  256. /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/viewport.d.ts +0 -0
  257. /package/dist/{modes/interactive/tasks → extensions/tasks/ui}/viewport.js +0 -0
@@ -1,5 +1,3 @@
1
- import { confirmStopBranchTasks, hotkeysTaskSection } from "./tasks/host-hooks.js";
2
- import { bindTasksUI } from "./tasks/index.js";
3
1
  /**
4
2
  * Interactive mode for the coding agent.
5
3
  * Handles TUI rendering and user interaction, delegating business logic to AgentSession.
@@ -22,6 +20,7 @@ import { findExtensionStackMatches, recordCrash, takeUnnotifiedCrash } from "../
22
20
  import { DEFAULT_THINKING_LEVEL, THINKING_LEVEL_OPTIONS } from "../../core/defaults.js";
23
21
  import { FooterDataProvider } from "../../core/footer-data-provider.js";
24
22
  import { configureHttpDispatcher, formatHttpIdleTimeoutMs } from "../../core/http-dispatcher.js";
23
+ import { getRegisteredKeybindingHelpSections } from "../../core/keybinding-registry.js";
25
24
  import { KeybindingsManager } from "../../core/keybindings.js";
26
25
  import { createCompactionSummaryMessage, createCustomMessage } from "../../core/messages.js";
27
26
  import { defaultModelPerProvider, findExactModelReferenceMatch, resolveModelScopeFromModels, } from "../../core/model-resolver.js";
@@ -50,7 +49,7 @@ import { checkForNewPiVersion } from "../../utils/version-check.js";
50
49
  import { reportBug } from "./bug-report.js";
51
50
  import { createChatViewport } from "./chat-viewport.js";
52
51
  import { ArminComponent } from "./components/armin.js";
53
- import { AssistantMessageComponent } from "./components/assistant-message.js";
52
+ import { AssistantMessageComponent, DEFAULT_ACTIVE_THINKING_LABEL } from "./components/assistant-message.js";
54
53
  import { BashExecutionComponent } from "./components/bash-execution.js";
55
54
  import { BranchSummaryMessageComponent } from "./components/branch-summary-message.js";
56
55
  import { CompactionSummaryMessageComponent } from "./components/compaction-summary-message.js";
@@ -78,6 +77,7 @@ import { SkillInvocationMessageComponent } from "./components/skill-invocation-m
78
77
  import { BranchSummaryStatusIndicator, CompactionStatusIndicator, IdleStatus, RetryStatusIndicator, WorkingStatusIndicator, } from "./components/status-indicator.js";
79
78
  import { ThemedText } from "./components/themed-text.js";
80
79
  import { ThinkingSelectorComponent } from "./components/thinking-selector.js";
80
+ import { ToolExecutionComponent } from "./components/tool-execution.js";
81
81
  import { TreeSelectorComponent } from "./components/tree-selector.js";
82
82
  import { TrustSelectorComponent } from "./components/trust-selector.js";
83
83
  import { UserMessageComponent } from "./components/user-message.js";
@@ -91,7 +91,6 @@ import { shareSession } from "./session-share.js";
91
91
  import { getAvailableThemes, getAvailableThemesWithPaths, getEditorTheme, getMarkdownTheme, getThemeByName, onThemeChange, SYSTEM_THEME_NAME, setRegisteredThemes, stopThemeWatcher, Theme, theme, } from "./theme/theme.js";
92
92
  import { InteractiveThemeController } from "./theme/theme-controller.js";
93
93
  import { disposeChatRows, PendingToolMap, ToolChatContainer } from "./tool-view/chat.js";
94
- import { ToolExecutionComponent } from "./tool-view/tool-execution.js";
95
94
  import { createInteractiveTui, createInteractiveTuiReference } from "./tui-renderer.js";
96
95
  export { createInteractiveTui, createInteractiveTuiReference } from "./tui-renderer.js";
97
96
  function isEmbeddedStatus(editor) {
@@ -259,8 +258,7 @@ export class InteractiveMode {
259
258
  this.workingVisible = true;
260
259
  this.workingIndicatorOptions = undefined;
261
260
  this.defaultWorkingMessage = "Working";
262
- this.defaultHiddenThinkingLabel = "Thinking...";
263
- this.hiddenThinkingLabel = this.defaultHiddenThinkingLabel;
261
+ this.activeThinkingLabel = DEFAULT_ACTIVE_THINKING_LABEL;
264
262
  this.lastSigintTime = 0;
265
263
  this.lastEscapeTime = 0;
266
264
  this.changelogMarkdown = undefined;
@@ -345,7 +343,6 @@ export class InteractiveMode {
345
343
  this.options = { ...options, tuiMode };
346
344
  this.autoTrustOnReloadCwd = options.autoTrustOnReloadCwd;
347
345
  this.runtimeHost.setBeforeSessionInvalidate(() => {
348
- this.tasksUI?.dispose();
349
346
  this.resetExtensionUI();
350
347
  });
351
348
  this.runtimeHost.setRebindSession(async () => {
@@ -1456,7 +1453,6 @@ export class InteractiveMode {
1456
1453
  * Initialize the extension system with TUI-based UI context.
1457
1454
  */
1458
1455
  async bindCurrentSessionExtensions() {
1459
- this.tasksUI?.dispose();
1460
1456
  const uiContext = this.createExtensionUIContext();
1461
1457
  await this.session.bindExtensions({
1462
1458
  uiContext,
@@ -1525,7 +1521,6 @@ export class InteractiveMode {
1525
1521
  this.showExtensionError(error.extensionPath, error.error, error.stack);
1526
1522
  },
1527
1523
  });
1528
- this.tasksUI = bindTasksUI({ tasks: this.session.tasks, ui: uiContext });
1529
1524
  setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
1530
1525
  this.setupAutocompleteProvider();
1531
1526
  const extensionRunner = this.session.extensionRunner;
@@ -1787,14 +1782,14 @@ export class InteractiveMode {
1787
1782
  this.ui.requestRender();
1788
1783
  }
1789
1784
  setHiddenThinkingLabel(label) {
1790
- this.hiddenThinkingLabel = label ?? this.defaultHiddenThinkingLabel;
1785
+ this.activeThinkingLabel = label ?? DEFAULT_ACTIVE_THINKING_LABEL;
1791
1786
  for (const child of this.chatContainer.children) {
1792
1787
  if (child instanceof AssistantMessageComponent) {
1793
- child.setHiddenThinkingLabel(this.hiddenThinkingLabel);
1788
+ child.setHiddenThinkingLabel(this.activeThinkingLabel);
1794
1789
  }
1795
1790
  }
1796
1791
  if (this.streamingComponent) {
1797
- this.streamingComponent.setHiddenThinkingLabel(this.hiddenThinkingLabel);
1792
+ this.streamingComponent.setHiddenThinkingLabel(this.activeThinkingLabel);
1798
1793
  }
1799
1794
  this.ui.requestRender();
1800
1795
  }
@@ -2463,11 +2458,6 @@ export class InteractiveMode {
2463
2458
  if (this.editorHost.intercept(text, "steer"))
2464
2459
  return;
2465
2460
  // Handle commands
2466
- if (text === "/tasks") {
2467
- this.editor.setText("");
2468
- await this.tasksUI?.open();
2469
- return;
2470
- }
2471
2461
  if (text === "/settings") {
2472
2462
  this.showSettingsSelector();
2473
2463
  this.editor.setText("");
@@ -2758,7 +2748,7 @@ export class InteractiveMode {
2758
2748
  this.ui.requestRender();
2759
2749
  }
2760
2750
  else if (event.message.role === "assistant") {
2761
- this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.getMarkdownTransformers());
2751
+ this.streamingComponent = new AssistantMessageComponent(undefined, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.activeThinkingLabel, this.outputPad, this.getMarkdownTransformers());
2762
2752
  this.streamingMessage = event.message;
2763
2753
  this.chatContainer.addChild(this.streamingComponent);
2764
2754
  this.streamingComponent.updateContent(this.streamingMessage, true);
@@ -3139,7 +3129,7 @@ export class InteractiveMode {
3139
3129
  break;
3140
3130
  }
3141
3131
  case "assistant": {
3142
- const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.hiddenThinkingLabel, this.outputPad, this.getMarkdownTransformers());
3132
+ const assistantComponent = new AssistantMessageComponent(message, this.hideThinkingBlock, this.getMarkdownThemeWithSettings(), this.activeThinkingLabel, this.outputPad, this.getMarkdownTransformers());
3143
3133
  this.chatContainer.addChild(assistantComponent);
3144
3134
  break;
3145
3135
  }
@@ -3403,7 +3393,6 @@ export class InteractiveMode {
3403
3393
  if (this.isShuttingDown)
3404
3394
  return;
3405
3395
  this.isShuttingDown = true;
3406
- this.tasksUI?.dispose();
3407
3396
  this.session.tasks.close();
3408
3397
  // Keep signal handlers registered until terminal cleanup has completed.
3409
3398
  // `signal-exit` checks the listener list during the same SIGTERM/SIGHUP
@@ -4586,11 +4575,6 @@ export class InteractiveMode {
4586
4575
  }
4587
4576
  // Ask about summarization
4588
4577
  done(); // Close selector first
4589
- const stopped = this.session.tasksStoppedByTreeNavigation(entryId);
4590
- if (!(await confirmStopBranchTasks(stopped, (title, message) => this.showExtensionConfirm(title, message)))) {
4591
- this.showTreeSelector(entryId);
4592
- return;
4593
- }
4594
4578
  // Loop until user makes a complete choice or cancels to tree
4595
4579
  let wantsSummary = false;
4596
4580
  let customInstructions;
@@ -5342,9 +5326,7 @@ export class InteractiveMode {
5342
5326
  chatRestoredBeforeSessionStart = true;
5343
5327
  };
5344
5328
  try {
5345
- this.tasksUI?.dispose();
5346
5329
  await this.session.reload({ beforeSessionStart: restoreChatBeforeSessionStart });
5347
- this.tasksUI = bindTasksUI({ tasks: this.session.tasks, ui: this.createExtensionUIContext() });
5348
5330
  restoreChatBeforeSessionStart();
5349
5331
  this.keybindings.reload();
5350
5332
  const activeHeader = this.customHeader ?? this.builtInHeader;
@@ -5726,8 +5708,11 @@ export class InteractiveMode {
5726
5708
  | \`!\` | Run bash command |
5727
5709
  | \`!!\` | Run bash command (excluded from context) |
5728
5710
  `;
5729
- // Task keybindings act outside the editor contexts this table was built from.
5730
- hotkeys += hotkeysTaskSection((action) => this.getAppKeyDisplay(action));
5711
+ for (const section of getRegisteredKeybindingHelpSections()) {
5712
+ hotkeys += `\n**${section.title}**\n| Key | Action |\n|-----|--------|\n`;
5713
+ for (const row of section.rows)
5714
+ hotkeys += `| \`${this.getEditorKeyDisplay(row.action)}\` | ${row.description} |\n`;
5715
+ }
5731
5716
  // Add extension-registered shortcuts
5732
5717
  const extensionRunner = this.session.extensionRunner;
5733
5718
  const shortcuts = extensionRunner.getShortcuts(this.keybindings.getEffectiveConfig());