@askdkc/dsh-cli 0.13.5 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/bin/{dsh-tui.js → dsh-cli.js} +27 -27
  2. package/cordis.patch.yml +32 -32
  3. package/cordis.yml +17 -17
  4. package/lib/types/activityPrefs.d.ts +2 -2
  5. package/lib/types/activityPrefs.js +2 -2
  6. package/lib/types/adapter/channel/actions.js +1 -1
  7. package/lib/types/adapter/channel/consumer.js +1 -1
  8. package/lib/types/adapter/channel/internal-token.js +1 -1
  9. package/lib/types/adapter/channel/plugins.js +1 -1
  10. package/lib/types/adapter/channel/session-projection.js +3 -3
  11. package/lib/types/adapter/channel/transcript.js +1 -1
  12. package/lib/types/adapter/channel/ui.js +3 -3
  13. package/lib/types/adapter/kernel/host-facade.d.ts +1 -1
  14. package/lib/types/adapter/kernel/host-facade.js +6 -6
  15. package/lib/types/adapter/kernel/host-probe-access.d.ts +1 -1
  16. package/lib/types/adapter/kernel/host-probe-access.js +6 -6
  17. package/lib/types/adapter/kernel/kernel-runtime.js +1 -1
  18. package/lib/types/adapter/kernel/legacy-facade.d.ts +1 -1
  19. package/lib/types/adapter/kernel/legacy-facade.js +1 -1
  20. package/lib/types/adapter/kernel/replay-isolation.js +1 -1
  21. package/lib/types/adapter/kernel/runtime.d.ts +1 -1
  22. package/lib/types/adapter/kernel/runtime.js +7 -7
  23. package/lib/types/adapter/ports/channel-display.d.ts +1 -1
  24. package/lib/types/adapter/ports/channel-ui.d.ts +15 -15
  25. package/lib/types/adapter/standard/descriptor.d.ts +1 -1
  26. package/lib/types/adapter/standard/descriptor.js +2 -2
  27. package/lib/types/adapter/standard/registry.d.ts +1 -1
  28. package/lib/types/adapter/standard/registry.js +2 -2
  29. package/lib/types/adapter/standard/tui-extension.d.ts +2 -2
  30. package/lib/types/adapter/standard/tui-extension.js +3 -3
  31. package/lib/types/adapter/upstream/channel-driver.js +10 -10
  32. package/lib/types/adapter/upstream/decisions-driver.js +3 -3
  33. package/lib/types/adapter/upstream/extensions-driver.js +18 -18
  34. package/lib/types/adapter/upstream/host-descriptor-driver.js +4 -4
  35. package/lib/types/adapter/upstream/presentation-driver.js +5 -5
  36. package/lib/types/adapter/upstream/scenes-driver.js +4 -4
  37. package/lib/types/adapter/upstream/settings-driver.js +4 -4
  38. package/lib/types/adapter/upstream/workspace-driver.js +2 -2
  39. package/lib/types/bootstrap/state.d.ts +4 -4
  40. package/lib/types/bootstrap/state.js +4 -4
  41. package/lib/types/{tuiDisplayPrefs.d.ts → cliDisplayPrefs.d.ts} +1 -1
  42. package/lib/types/{tuiDisplayPrefs.d.ts.map → cliDisplayPrefs.d.ts.map} +1 -1
  43. package/lib/types/{tuiDisplayPrefs.js → cliDisplayPrefs.js} +1 -1
  44. package/lib/types/commands.js +7 -7
  45. package/lib/types/components/AutoRecapRow.d.ts +1 -1
  46. package/lib/types/components/AutoRecapRow.js +1 -1
  47. package/lib/types/components/HelpMenu.d.ts +1 -1
  48. package/lib/types/components/HelpMenu.js +1 -1
  49. package/lib/types/components/LogoV2.d.ts +2 -2
  50. package/lib/types/components/LogoV2.d.ts.map +1 -1
  51. package/lib/types/components/LogoV2.js +5 -19
  52. package/lib/types/components/MermaidDiagram.js +1 -1
  53. package/lib/types/components/MessageList.d.ts +2 -2
  54. package/lib/types/components/MessageList.js +1 -1
  55. package/lib/types/components/PageMargin.d.ts +3 -3
  56. package/lib/types/components/PageMargin.js +1 -1
  57. package/lib/types/components/PluginSceneBoundary.d.ts +1 -1
  58. package/lib/types/components/PluginSceneBoundary.js +1 -1
  59. package/lib/types/components/PromptInput.d.ts +1 -1
  60. package/lib/types/components/PromptInput.js +3 -3
  61. package/lib/types/components/ScrollbarGutter.d.ts +1 -1
  62. package/lib/types/components/ScrollbarGutter.js +1 -1
  63. package/lib/types/components/Select.d.ts +1 -1
  64. package/lib/types/components/Select.js +1 -1
  65. package/lib/types/components/SplitDiffView.d.ts +1 -1
  66. package/lib/types/components/ThemePicker.d.ts +1 -1
  67. package/lib/types/components/ThemePicker.js +1 -1
  68. package/lib/types/components/activityFrames.d.ts +1 -1
  69. package/lib/types/components/activityFrames.js +1 -1
  70. package/lib/types/components/design-system/Byline.d.ts +1 -1
  71. package/lib/types/components/design-system/Byline.js +1 -1
  72. package/lib/types/components/design-system/Divider.d.ts +1 -1
  73. package/lib/types/components/design-system/Divider.js +1 -1
  74. package/lib/types/components/design-system/StatusIcon.d.ts +1 -1
  75. package/lib/types/components/design-system/StatusIcon.js +1 -1
  76. package/lib/types/components/design-system/ThemeProvider.d.ts +1 -1
  77. package/lib/types/components/design-system/ThemeProvider.js +11 -11
  78. package/lib/types/components/design-system/ThemedBox.d.ts +1 -1
  79. package/lib/types/components/design-system/ThemedBox.js +1 -1
  80. package/lib/types/components/design-system/ThemedText.d.ts +1 -1
  81. package/lib/types/components/design-system/ThemedText.js +1 -1
  82. package/lib/types/components/messages/AssistantThinkingMessage.d.ts +1 -1
  83. package/lib/types/components/messages/AssistantThinkingMessage.js +1 -1
  84. package/lib/types/components/messages/AssistantToolUseMessage.d.ts +3 -3
  85. package/lib/types/components/messages/AssistantToolUseMessage.js +1 -1
  86. package/lib/types/components/messages/originalImage.js +1 -1
  87. package/lib/types/components/questions/AskUserQuestionPanel.d.ts +1 -1
  88. package/lib/types/components/questions/AskUserQuestionPanel.js +1 -1
  89. package/lib/types/components/smoothReveal.d.ts +1 -1
  90. package/lib/types/components/smoothReveal.js +1 -1
  91. package/lib/types/customTheme.d.ts +5 -5
  92. package/lib/types/customTheme.js +7 -7
  93. package/lib/types/dsh-adapter/activity-store.d.ts +1 -1
  94. package/lib/types/dsh-adapter/activity-store.js +3 -3
  95. package/lib/types/dsh-adapter/bundled-presets.js +2 -2
  96. package/lib/types/dsh-adapter/channel/action-readiness.js +2 -2
  97. package/lib/types/dsh-adapter/channel/agent-view-projection.js +1 -1
  98. package/lib/types/dsh-adapter/channel/background-action.js +1 -1
  99. package/lib/types/dsh-adapter/channel/binding-events.js +1 -1
  100. package/lib/types/dsh-adapter/channel/binding.js +14 -14
  101. package/lib/types/dsh-adapter/channel/external-commands.js +3 -3
  102. package/lib/types/dsh-adapter/channel/input-delivery.js +1 -1
  103. package/lib/types/dsh-adapter/channel/job-projection.js +1 -1
  104. package/lib/types/dsh-adapter/channel/lifetime-resources.js +1 -1
  105. package/lib/types/dsh-adapter/channel/local-actions.js +1 -1
  106. package/lib/types/dsh-adapter/channel/mode-actions.js +1 -1
  107. package/lib/types/dsh-adapter/channel/mode-permission.js +6 -6
  108. package/lib/types/dsh-adapter/channel/mode-roster.js +1 -1
  109. package/lib/types/dsh-adapter/channel/owner.js +2 -2
  110. package/lib/types/dsh-adapter/channel/preferences.js +1 -1
  111. package/lib/types/dsh-adapter/channel/projection.js +1 -1
  112. package/lib/types/dsh-adapter/channel/reports.js +3 -3
  113. package/lib/types/dsh-adapter/channel/session-fork.js +1 -1
  114. package/lib/types/dsh-adapter/channel/session-metadata.d.ts +4 -4
  115. package/lib/types/dsh-adapter/channel/session-metadata.js +2 -2
  116. package/lib/types/dsh-adapter/channel/session-rewind.js +2 -2
  117. package/lib/types/dsh-adapter/channel/state.d.ts +1 -1
  118. package/lib/types/dsh-adapter/channel/state.js +1 -1
  119. package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
  120. package/lib/types/dsh-adapter/channel-ui.js +2 -2
  121. package/lib/types/dsh-adapter/channel.js +9 -9
  122. package/lib/types/dsh-adapter/cli-registration.d.ts.map +1 -1
  123. package/lib/types/dsh-adapter/cli-registration.js +5 -4
  124. package/lib/types/dsh-adapter/command-trees.d.ts +1 -1
  125. package/lib/types/dsh-adapter/command-trees.js +2 -2
  126. package/lib/types/dsh-adapter/compat/sessionLog.d.ts +3 -3
  127. package/lib/types/dsh-adapter/compat/sessionLog.js +5 -5
  128. package/lib/types/dsh-adapter/compat/settings.d.ts.map +1 -1
  129. package/lib/types/dsh-adapter/compat/settings.js +15 -7
  130. package/lib/types/dsh-adapter/decision-guard.d.ts +3 -3
  131. package/lib/types/dsh-adapter/decision-guard.js +6 -6
  132. package/lib/types/dsh-adapter/dialogs.d.ts +1 -1
  133. package/lib/types/dsh-adapter/dialogs.js +7 -7
  134. package/lib/types/dsh-adapter/effect-ledger.d.ts +2 -2
  135. package/lib/types/dsh-adapter/effect-ledger.js +5 -5
  136. package/lib/types/dsh-adapter/extension-events.js +10 -10
  137. package/lib/types/dsh-adapter/extensions.d.ts +3 -3
  138. package/lib/types/dsh-adapter/extensions.js +3 -3
  139. package/lib/types/dsh-adapter/host-access.js +11 -11
  140. package/lib/types/dsh-adapter/ide-channel.d.ts +6 -6
  141. package/lib/types/dsh-adapter/ide-channel.js +6 -6
  142. package/lib/types/dsh-adapter/index.d.ts +18 -18
  143. package/lib/types/dsh-adapter/index.js +5 -5
  144. package/lib/types/dsh-adapter/inject-channel.d.ts +4 -4
  145. package/lib/types/dsh-adapter/inject-channel.js +5 -5
  146. package/lib/types/dsh-adapter/invariant.d.ts +1 -1
  147. package/lib/types/dsh-adapter/invariant.js +1 -1
  148. package/lib/types/dsh-adapter/message-observer.d.ts +2 -2
  149. package/lib/types/dsh-adapter/message-observer.js +23 -23
  150. package/lib/types/dsh-adapter/migrate/adapters/scan.js +1 -1
  151. package/lib/types/dsh-adapter/migrate/bin-path.d.ts +1 -1
  152. package/lib/types/dsh-adapter/migrate/bin-path.js +4 -4
  153. package/lib/types/dsh-adapter/migrate/picker.d.ts +1 -1
  154. package/lib/types/dsh-adapter/migrate/picker.js +1 -1
  155. package/lib/types/dsh-adapter/migrate/uuid.js +1 -1
  156. package/lib/types/dsh-adapter/packaged-presets.js +1 -1
  157. package/lib/types/dsh-adapter/plugin-host.d.ts +2 -2
  158. package/lib/types/dsh-adapter/plugin-host.js +32 -32
  159. package/lib/types/dsh-adapter/plugin-storage.d.ts +3 -3
  160. package/lib/types/dsh-adapter/plugin-storage.js +5 -5
  161. package/lib/types/dsh-adapter/plugin.d.ts +4 -4
  162. package/lib/types/dsh-adapter/plugin.js +89 -89
  163. package/lib/types/dsh-adapter/preset-resolution.d.ts +1 -1
  164. package/lib/types/dsh-adapter/presets.js +1 -1
  165. package/lib/types/dsh-adapter/promptDebug.js +1 -1
  166. package/lib/types/dsh-adapter/questions.d.ts +1 -1
  167. package/lib/types/dsh-adapter/questions.js +1 -1
  168. package/lib/types/dsh-adapter/renderers.js +7 -7
  169. package/lib/types/dsh-adapter/scenes.d.ts +1 -1
  170. package/lib/types/dsh-adapter/scenes.js +6 -6
  171. package/lib/types/dsh-adapter/settings-sections.d.ts +1 -1
  172. package/lib/types/dsh-adapter/settings-sections.js +5 -5
  173. package/lib/types/dsh-adapter/sharp.js +1 -1
  174. package/lib/types/dsh-adapter/shortcuts.js +9 -9
  175. package/lib/types/dsh-adapter/status.js +21 -21
  176. package/lib/types/dsh-adapter/themes.js +2 -2
  177. package/lib/types/dsh-adapter/toast.js +7 -7
  178. package/lib/types/dsh-adapter/workspaces.d.ts +1 -1
  179. package/lib/types/dsh-adapter/workspaces.js +6 -6
  180. package/lib/types/effortPrefs.d.ts +2 -2
  181. package/lib/types/effortPrefs.js +2 -2
  182. package/lib/types/force-production-react.js +1 -1
  183. package/lib/types/herdr.js +4 -4
  184. package/lib/types/homePrefs.js +1 -1
  185. package/lib/types/i18n.d.ts +54 -54
  186. package/lib/types/i18n.js +39 -39
  187. package/lib/types/ink/clearTerminal.d.ts +1 -1
  188. package/lib/types/ink/clearTerminal.js +1 -1
  189. package/lib/types/ink/colorize.js +1 -1
  190. package/lib/types/ink/components/App.d.ts +1 -1
  191. package/lib/types/ink/components/App.js +5 -5
  192. package/lib/types/ink/components/Text.d.ts +1 -1
  193. package/lib/types/ink/devtools.d.ts +1 -1
  194. package/lib/types/ink/dom.d.ts +1 -1
  195. package/lib/types/ink/dom.js +1 -1
  196. package/lib/types/ink/geometry-trace.js +4 -4
  197. package/lib/types/ink/ink.d.ts.map +1 -1
  198. package/lib/types/ink/ink.js +8 -19
  199. package/lib/types/ink/reconciler.d.ts +1 -1
  200. package/lib/types/ink/reconciler.d.ts.map +1 -1
  201. package/lib/types/ink/reconciler.js +6 -3
  202. package/lib/types/ink/render-to-screen.d.ts.map +1 -1
  203. package/lib/types/ink/render-to-screen.js +0 -5
  204. package/lib/types/ink/terminal.js +3 -3
  205. package/lib/types/ink/termio/osc.js +1 -1
  206. package/lib/types/ink/update-overflow-guard.js +2 -2
  207. package/lib/types/minimalMode.d.ts +2 -2
  208. package/lib/types/minimalMode.js +2 -2
  209. package/lib/types/modelGroups.d.ts +1 -1
  210. package/lib/types/modelGroups.js +1 -1
  211. package/lib/types/modelPrefs.d.ts +1 -1
  212. package/lib/types/modelPrefs.js +1 -1
  213. package/lib/types/modelRecents.d.ts +2 -2
  214. package/lib/types/modelRecents.js +2 -2
  215. package/lib/types/package-version.d.ts +3 -0
  216. package/lib/types/package-version.d.ts.map +1 -0
  217. package/lib/types/package-version.js +25 -0
  218. package/lib/types/presetPrefs.d.ts +1 -1
  219. package/lib/types/presetPrefs.js +1 -1
  220. package/lib/types/reload.d.ts +8 -8
  221. package/lib/types/reload.js +4 -4
  222. package/lib/types/screens/Chat.js +27 -27
  223. package/lib/types/screens/StatusLine.js +1 -1
  224. package/lib/types/screens/StatusMetrics.js +1 -1
  225. package/lib/types/sessionHistory.d.ts +3 -3
  226. package/lib/types/sessionHistory.js +7 -7
  227. package/lib/types/sessionModes.js +1 -1
  228. package/lib/types/sessionMounts.d.ts +1 -1
  229. package/lib/types/sessionMounts.js +1 -1
  230. package/lib/types/sessionPins.d.ts +1 -1
  231. package/lib/types/sessionPins.js +1 -1
  232. package/lib/types/terminal-utils/cliHighlight.d.ts +1 -1
  233. package/lib/types/terminal-utils/hash.d.ts +1 -1
  234. package/lib/types/terminal-utils/hash.js +1 -1
  235. package/lib/types/terminal-utils/mermaid.d.ts +1 -1
  236. package/lib/types/terminal-utils/syntaxTheme.js +1 -1
  237. package/lib/types/theme.d.ts +3 -3
  238. package/lib/types/theme.js +3 -3
  239. package/lib/types/themePrefs.d.ts +3 -3
  240. package/lib/types/themePrefs.js +3 -3
  241. package/lib/types/tips.js +4 -4
  242. package/lib/types/trajectory/effortIgnition.d.ts +1 -1
  243. package/lib/types/trajectoryPrefs.d.ts +1 -1
  244. package/lib/types/trajectoryPrefs.js +1 -1
  245. package/lib/types/ui.d.ts +1 -1
  246. package/lib/types/ui.js +1 -1
  247. package/lib/types/update.d.ts +25 -26
  248. package/lib/types/update.d.ts.map +1 -1
  249. package/lib/types/update.js +55 -73
  250. package/lib/types/utils/clipboard.js +1 -1
  251. package/lib/types/utils/credentials.js +2 -2
  252. package/lib/types/utils/debug.d.ts +3 -3
  253. package/lib/types/utils/debug.js +6 -6
  254. package/lib/types/utils/earlyInput.d.ts +1 -1
  255. package/lib/types/utils/earlyInput.js +1 -1
  256. package/lib/types/utils/externalEditor.js +1 -1
  257. package/lib/types/utils/fullscreen.d.ts +3 -3
  258. package/lib/types/utils/fullscreen.js +4 -4
  259. package/lib/types/utils/log.js +1 -1
  260. package/lib/types/utils/paths.d.ts +3 -3
  261. package/lib/types/utils/paths.js +4 -4
  262. package/lib/types/working-activity.js +1 -1
  263. package/node_modules/@askdkc/dsh-auth/dsh-plugin.json +1 -1
  264. package/node_modules/@askdkc/dsh-auth/lib/index.d.ts +2 -2
  265. package/node_modules/@askdkc/dsh-auth/lib/index.js +2 -2
  266. package/node_modules/@askdkc/dsh-auth/lib/pi-ai.d.ts +0 -2
  267. package/node_modules/@askdkc/dsh-auth/lib/pi-ai.js +0 -2
  268. package/node_modules/@askdkc/dsh-auth/lib/service.d.ts +1 -1
  269. package/node_modules/@askdkc/dsh-auth/lib/service.js +2 -2
  270. package/node_modules/dsh-working-activity/lib/client.js.map +1 -1
  271. package/node_modules/dsh-working-activity/lib/types/client/index.d.ts +1 -1
  272. package/node_modules/dsh-working-activity/lib/types/config.d.ts +2 -2
  273. package/node_modules/dsh-working-activity/lib/types/config.js +2 -2
  274. package/node_modules/dsh-working-activity/lib/types/frames.d.ts +1 -1
  275. package/node_modules/dsh-working-activity/lib/types/frames.js +1 -1
  276. package/node_modules/dsh-working-activity/lib/types/index.d.ts +1 -1
  277. package/node_modules/dsh-working-activity/lib/types/index.js +2 -2
  278. package/node_modules/dsh-working-activity/lib/types/lang.d.ts +5 -5
  279. package/node_modules/dsh-working-activity/lib/types/lang.js +8 -8
  280. package/node_modules/dsh-working-activity/lib/types/projection.d.ts +1 -1
  281. package/node_modules/dsh-working-activity/lib/types/projection.js +1 -1
  282. package/node_modules/dsh-working-activity/lib/types/status.d.ts +1 -1
  283. package/node_modules/dsh-working-activity/lib/types/status.js +1 -1
  284. package/node_modules/dsh-working-activity/src/client/index.ts +1 -1
  285. package/node_modules/dsh-working-activity/src/config.ts +2 -2
  286. package/node_modules/dsh-working-activity/src/frames.ts +1 -1
  287. package/node_modules/dsh-working-activity/src/index.ts +4 -4
  288. package/node_modules/dsh-working-activity/src/lang.ts +8 -8
  289. package/node_modules/dsh-working-activity/src/projection.ts +1 -1
  290. package/node_modules/dsh-working-activity/src/status.ts +1 -1
  291. package/package.json +8 -8
  292. package/presets/liangshen/agent.cordis.yml +1 -1
  293. package/presets/liangshen/custom-bash.mjs +2 -2
@@ -96,7 +96,7 @@ export class TuiRendererRuntime extends Service {
96
96
  caller = requirePluginCaller(this.ctx, 'tuiRenderers.register', this);
97
97
  }
98
98
  catch {
99
- this.ctx.logger.warn('dsh-tui: tuiRenderers.register requires a live non-root plugin activation');
99
+ this.ctx.logger.warn('dsh-cli: tuiRenderers.register requires a live non-root plugin activation');
100
100
  return () => { };
101
101
  }
102
102
  const state = rendererStateFor(this);
@@ -105,11 +105,11 @@ export class TuiRendererRuntime extends Service {
105
105
  normalized = String(type ?? '').trim().toLowerCase();
106
106
  }
107
107
  catch {
108
- this.ctx.logger.warn('dsh-tui: tuiRenderers.register rejected an uncoercible event type');
108
+ this.ctx.logger.warn('dsh-cli: tuiRenderers.register rejected an uncoercible event type');
109
109
  return () => { };
110
110
  }
111
111
  if (!TYPE_PATTERN.test(normalized)) {
112
- this.ctx.logger.warn('dsh-tui: tuiRenderers.register rejected an invalid event type');
112
+ this.ctx.logger.warn('dsh-cli: tuiRenderers.register rejected an invalid event type');
113
113
  return () => { };
114
114
  }
115
115
  // The channel's own projection (its renderEvent switch plus special-
@@ -118,11 +118,11 @@ export class TuiRendererRuntime extends Service {
118
118
  // KNOWN_SESSION_EVENT_TYPES, which plugins must extend with their own
119
119
  // types (see BUILTIN_SESSION_EVENT_TYPES above).
120
120
  if (BUILTIN_SESSION_EVENT_TYPES.has(normalized) || normalized === 'agent-preset/selected') {
121
- this.ctx.logger.warn(`dsh-tui: tuiRenderers.register rejected "${normalized}" — built-in event types keep their own projection`);
121
+ this.ctx.logger.warn(`dsh-cli: tuiRenderers.register rejected "${normalized}" — built-in event types keep their own projection`);
122
122
  return () => { };
123
123
  }
124
124
  if (state.renderers.has(normalized)) {
125
- this.ctx.logger.warn(`dsh-tui: tuiRenderers.register rejected "${normalized}" — already registered`);
125
+ this.ctx.logger.warn(`dsh-cli: tuiRenderers.register rejected "${normalized}" — already registered`);
126
126
  this.ctx.get('tuiEffectLedger')?.record({
127
127
  operation: 'create',
128
128
  resource: { kind: 'renderer', id: normalized },
@@ -132,7 +132,7 @@ export class TuiRendererRuntime extends Service {
132
132
  return () => { };
133
133
  }
134
134
  if (typeof renderer !== 'function') {
135
- this.ctx.logger.warn(`dsh-tui: tuiRenderers.register rejected "${normalized}" — renderer must be a function`);
135
+ this.ctx.logger.warn(`dsh-cli: tuiRenderers.register rejected "${normalized}" — renderer must be a function`);
136
136
  return () => { };
137
137
  }
138
138
  state.renderers.set(normalized, renderer);
@@ -180,7 +180,7 @@ function renderEntry(runtime, type, payload) {
180
180
  catch (error) {
181
181
  if (!state.failedTypes.has(type)) {
182
182
  state.failedTypes.add(type);
183
- state.logger.warn(`dsh-tui: renderer for "${type}" threw; its entries are skipped: %o`, error);
183
+ state.logger.warn(`dsh-cli: renderer for "${type}" threw; its entries are skipped: %o`, error);
184
184
  }
185
185
  return undefined;
186
186
  }
@@ -51,7 +51,7 @@ declare module '@deepseek-ai/cordis' {
51
51
  tuiScenes: TuiSceneRuntime;
52
52
  }
53
53
  }
54
- export declare const name = "dsh-tui-scenes";
54
+ export declare const name = "dsh-cli-scenes";
55
55
  /**
56
56
  * Small host-only registry; command execution remains owned by dsh-commands.
57
57
  *
@@ -4,7 +4,7 @@ import { activationFiber, bindCallerEffect, compositionRoot, concreteService, re
4
4
  import { componentIdentityOf } from './component-identity.js';
5
5
  import { assertCapabilityShadowPolicy, } from '../adapter/kernel/runtime.js';
6
6
  import { adapterRuntimeFor } from '../adapter/kernel/runtime-context.js';
7
- export const name = 'dsh-tui-scenes';
7
+ export const name = 'dsh-cli-scenes';
8
8
  /**
9
9
  * Small host-only registry; command execution remains owned by dsh-commands.
10
10
  *
@@ -79,11 +79,11 @@ export class TuiSceneRuntime extends Service {
79
79
  const caller = requirePluginCaller(this.ctx, 'tuiScenes.register', this);
80
80
  const activationOwner = activationFiber(caller);
81
81
  if (activationOwner === undefined)
82
- throw new Error('dsh-tui: tuiScenes.register requires a live activation');
82
+ throw new Error('dsh-cli: tuiScenes.register requires a live activation');
83
83
  const callerIdentity = componentIdentityOf(caller);
84
84
  const suppliedIdentity = identity === undefined ? callerIdentity : componentIdentityOf(identity);
85
85
  if (identity !== undefined && callerIdentity !== undefined && suppliedIdentity !== callerIdentity) {
86
- throw new Error('dsh-tui: tuiScenes.register identity belongs to another activation');
86
+ throw new Error('dsh-cli: tuiScenes.register identity belongs to another activation');
87
87
  }
88
88
  const id = descriptor.id.trim().toLowerCase();
89
89
  if (!/^[a-z][a-z0-9_-]*$/u.test(id))
@@ -168,11 +168,11 @@ function openScene(runtime, id, caller, owner) {
168
168
  const scene = state.scenes.get(id.trim().toLowerCase());
169
169
  if (scene === undefined) {
170
170
  ;
171
- (caller?.logger ?? state.logger).warn(`dsh-tui: no TUI scene registered as "${id}"`);
171
+ (caller?.logger ?? state.logger).warn(`dsh-cli: no TUI scene registered as "${id}"`);
172
172
  return false;
173
173
  }
174
174
  if (owner !== undefined && state.owners.get(scene.id) !== owner) {
175
- caller?.logger.warn(`dsh-tui: scene "${scene.id}" belongs to another activation`);
175
+ caller?.logger.warn(`dsh-cli: scene "${scene.id}" belongs to another activation`);
176
176
  return false;
177
177
  }
178
178
  if (scene === state.current)
@@ -187,7 +187,7 @@ function closeScene(runtime, caller, owner) {
187
187
  if (state.current === undefined)
188
188
  return;
189
189
  if (owner !== undefined && state.owners.get(state.current.id) !== owner) {
190
- caller?.logger.warn(`dsh-tui: scene "${state.current.id}" belongs to another activation`);
190
+ caller?.logger.warn(`dsh-cli: scene "${state.current.id}" belongs to another activation`);
191
191
  return;
192
192
  }
193
193
  const previousOwner = state.owners.get(state.current.id);
@@ -24,7 +24,7 @@ declare module '@deepseek-ai/cordis' {
24
24
  tuiSettingsSections: TuiSettingsSectionsRuntime;
25
25
  }
26
26
  }
27
- export declare const name = "dsh-tui-settings-sections";
27
+ export declare const name = "dsh-cli-settings-sections";
28
28
  /**
29
29
  * Small host-only registry; settings storage and validation remain owned by
30
30
  * the dsh settings service (`ctx.settings`).
@@ -14,7 +14,7 @@ import { activationFiber, bindCallerEffect, compositionRoot, concreteService, re
14
14
  import { vetSectionSecretRefs } from './credentialRefGuard.js';
15
15
  import { assertCapabilityShadowPolicy, defaultAdapterRuntime, } from '../adapter/kernel/runtime.js';
16
16
  import { adapterRuntimeFor } from '../adapter/kernel/runtime-context.js';
17
- export const name = 'dsh-tui-settings-sections';
17
+ export const name = 'dsh-cli-settings-sections';
18
18
  /**
19
19
  * Small host-only registry; settings storage and validation remain owned by
20
20
  * the dsh settings service (`ctx.settings`).
@@ -46,7 +46,7 @@ export class TuiSettingsSectionsRuntime extends Service {
46
46
  const caller = requirePluginCaller(this.ctx, 'tuiSettingsSections.register', this);
47
47
  const owner = activationFiber(caller);
48
48
  if (owner === undefined)
49
- throw new Error('dsh-tui: tuiSettingsSections.register requires a live activation');
49
+ throw new Error('dsh-cli: tuiSettingsSections.register requires a live activation');
50
50
  // The service path is plugin-land. A plugin's secret field names its own
51
51
  // credential ref, but nothing stopped it from naming a host-owned ref
52
52
  // (DEEPSEEK_API_KEY / DEEPSEEK_* / DSH_*) and overwriting the user's
@@ -55,7 +55,7 @@ export class TuiSettingsSectionsRuntime extends Service {
55
55
  // owner-less host objects below) never pass through this method.
56
56
  const vetted = vetSectionSecretRefs(section);
57
57
  for (const rejection of vetted.rejected) {
58
- this.ctx.logger.warn(`dsh-tui: settings section "${section.ns}" field "${rejection.path.join('.')}" was rejected: ` +
58
+ this.ctx.logger.warn(`dsh-cli: settings section "${section.ns}" field "${rejection.path.join('.')}" was rejected: ` +
59
59
  `credential ref "${rejection.ref}" is reserved by the host`);
60
60
  }
61
61
  const dispose = registerSection(this, vetted.section, owner);
@@ -194,8 +194,8 @@ function isSectionState(value) {
194
194
  }
195
195
  /**
196
196
  * In-package fallback registry: some real compositions dispose the
197
- * `dsh-tui-settings-sections` service row right after it loads (the whole
198
- * dsh-tui-* host-seam insert list is affected — see the issue-#183 skew
197
+ * `dsh-cli-settings-sections` service row right after it loads (the whole
198
+ * dsh-cli-* host-seam insert list is affected — see the issue-#183 skew
199
199
  * family), leaving `ctx.get('tuiSettingsSections')` permanently undefined.
200
200
  * The TUI's own section must not depend on that: plugin.ts registers into —
201
201
  * and channel.ts reads from — this local host whenever the composition
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Host-first `sharp` loader.
3
3
  *
4
- * dsh-tui runs inside the dsh process, and the host attachment service
4
+ * dsh-cli runs inside the dsh process, and the host attachment service
5
5
  * (`@deepseek-ai/dsh-attachment-local`) already loads its own `sharp`. Loading
6
6
  * a second copy from this package's optional dependency puts two libvips
7
7
  * dylibs into one process; on macOS the Objective-C runtime reports the
@@ -129,13 +129,13 @@ export class TuiShortcutRuntime extends Service {
129
129
  caller = requirePluginCaller(this.ctx, 'tuiShortcuts.register', this);
130
130
  }
131
131
  catch {
132
- this.ctx.logger.warn('dsh-tui: tuiShortcuts.register requires a live non-root plugin activation');
132
+ this.ctx.logger.warn('dsh-cli: tuiShortcuts.register requires a live non-root plugin activation');
133
133
  return () => { };
134
134
  }
135
135
  const state = shortcutStateFor(this);
136
136
  const owner = activationFiber(caller);
137
137
  if (owner === undefined) {
138
- this.ctx.logger.warn('dsh-tui: tuiShortcuts.register requires a live activation');
138
+ this.ctx.logger.warn('dsh-cli: tuiShortcuts.register requires a live activation');
139
139
  return () => { };
140
140
  }
141
141
  let parsed;
@@ -143,11 +143,11 @@ export class TuiShortcutRuntime extends Service {
143
143
  parsed = parseShortcutCombo(combo);
144
144
  }
145
145
  catch {
146
- this.ctx.logger.warn('dsh-tui: tuiShortcuts.register rejected an uncoercible combo');
146
+ this.ctx.logger.warn('dsh-cli: tuiShortcuts.register rejected an uncoercible combo');
147
147
  return () => { };
148
148
  }
149
149
  if (parsed === undefined) {
150
- this.ctx.logger.warn('dsh-tui: tuiShortcuts.register rejected an invalid combo — need ctrl/alt plus one key (e.g. "ctrl+shift+p")');
150
+ this.ctx.logger.warn('dsh-cli: tuiShortcuts.register rejected an invalid combo — need ctrl/alt plus one key (e.g. "ctrl+shift+p")');
151
151
  return () => { };
152
152
  }
153
153
  const key = canonicalCombo(parsed);
@@ -162,11 +162,11 @@ export class TuiShortcutRuntime extends Service {
162
162
  const actionReserved = reservedActionCombos();
163
163
  if (FIXED_RESERVED_CANONICAL.has(key) || FIXED_RESERVED_CANONICAL.has(shiftlessKey) ||
164
164
  actionReserved.has(key) || actionReserved.has(shiftlessKey)) {
165
- this.ctx.logger.warn(`dsh-tui: tuiShortcuts.register rejected "${parsed.raw}" — reserved by a built-in binding`);
165
+ this.ctx.logger.warn(`dsh-cli: tuiShortcuts.register rejected "${parsed.raw}" — reserved by a built-in binding`);
166
166
  return () => { };
167
167
  }
168
168
  if (state.shortcuts.has(key)) {
169
- this.ctx.logger.warn(`dsh-tui: tuiShortcuts.register rejected "${parsed.raw}" — already registered`);
169
+ this.ctx.logger.warn(`dsh-cli: tuiShortcuts.register rejected "${parsed.raw}" — already registered`);
170
170
  this.ctx.get('tuiEffectLedger')?.record({
171
171
  operation: 'bind',
172
172
  resource: { kind: 'shortcut', id: key },
@@ -182,11 +182,11 @@ export class TuiShortcutRuntime extends Service {
182
182
  handler = options?.handler;
183
183
  }
184
184
  catch {
185
- this.ctx.logger.warn(`dsh-tui: tuiShortcuts.register rejected "${parsed.raw}" — malformed options`);
185
+ this.ctx.logger.warn(`dsh-cli: tuiShortcuts.register rejected "${parsed.raw}" — malformed options`);
186
186
  return () => { };
187
187
  }
188
188
  if (typeof handler !== 'function' || description === '') {
189
- this.ctx.logger.warn(`dsh-tui: tuiShortcuts.register rejected "${parsed.raw}" — needs a description and a handler`);
189
+ this.ctx.logger.warn(`dsh-cli: tuiShortcuts.register rejected "${parsed.raw}" — needs a description and a handler`);
190
190
  return () => { };
191
191
  }
192
192
  const entry = { combo: parsed, description, handler };
@@ -233,7 +233,7 @@ function dispatchShortcut(runtime, input, key) {
233
233
  .then(() => entry.handler())
234
234
  .catch((error) => {
235
235
  state.onError?.(entry.combo.raw, error);
236
- state.logger.warn(`dsh-tui: shortcut "${entry.combo.raw}" handler failed: %o`, error);
236
+ state.logger.warn(`dsh-cli: shortcut "${entry.combo.raw}" handler failed: %o`, error);
237
237
  });
238
238
  return true;
239
239
  }
@@ -147,7 +147,7 @@ export class TuiStatusRuntime extends Service {
147
147
  // works with Cordis's caller-bound method proxy (unlike `#private`).
148
148
  const state = {
149
149
  store: new TuiStatusStore((key, error) => {
150
- ctx.logger.warn(`dsh-tui: status view "${key}" crashed and was hidden: %o`, error);
150
+ ctx.logger.warn(`dsh-cli: status view "${key}" crashed and was hidden: %o`, error);
151
151
  }),
152
152
  nextToken: 1,
153
153
  runtime: adapterRuntimeFor(ctx),
@@ -182,7 +182,7 @@ export class TuiStatusRuntime extends Service {
182
182
  caller = requirePluginCaller(this.ctx, 'tuiStatus.set', this);
183
183
  }
184
184
  catch {
185
- this.ctx.logger.warn('dsh-tui: tuiStatus.set requires a live non-root plugin activation');
185
+ this.ctx.logger.warn('dsh-cli: tuiStatus.set requires a live non-root plugin activation');
186
186
  return noop;
187
187
  }
188
188
  const state = statusStateFor(this);
@@ -194,13 +194,13 @@ export class TuiStatusRuntime extends Service {
194
194
  assertCallerContext(caller, identity, 'tuiStatus.set');
195
195
  }
196
196
  catch {
197
- caller.logger.warn('dsh-tui: tuiStatus.set rejected an identity belonging to another activation');
197
+ caller.logger.warn('dsh-cli: tuiStatus.set rejected an identity belonging to another activation');
198
198
  return noop;
199
199
  }
200
200
  }
201
201
  const owner = activationFiber(caller);
202
202
  if (owner === undefined) {
203
- caller.logger.warn('dsh-tui: tuiStatus.set requires a live activation owner');
203
+ caller.logger.warn('dsh-cli: tuiStatus.set requires a live activation owner');
204
204
  return noop;
205
205
  }
206
206
  let normalized;
@@ -208,18 +208,18 @@ export class TuiStatusRuntime extends Service {
208
208
  normalized = String(key ?? '').trim().toLowerCase();
209
209
  }
210
210
  catch {
211
- caller.logger.warn('dsh-tui: tuiStatus.set rejected an uncoercible key');
211
+ caller.logger.warn('dsh-cli: tuiStatus.set rejected an uncoercible key');
212
212
  return noop;
213
213
  }
214
214
  if (!KEY_PATTERN.test(normalized)) {
215
- caller.logger.warn('dsh-tui: tuiStatus.set rejected an invalid key');
215
+ caller.logger.warn('dsh-cli: tuiStatus.set rejected an invalid key');
216
216
  return noop;
217
217
  }
218
218
  if (text !== undefined && !store.getSnapshot().some(e => e.key === normalized)) {
219
219
  // New key beyond the cap: the line is one row of terminal — an
220
220
  // unbounded count would push the prompt off screen.
221
221
  if (store.getSnapshot().length >= MAX_ENTRIES) {
222
- caller.logger.warn(`dsh-tui: tuiStatus.set rejected "${normalized}": ${MAX_ENTRIES} contributions already shown`);
222
+ caller.logger.warn(`dsh-cli: tuiStatus.set rejected "${normalized}": ${MAX_ENTRIES} contributions already shown`);
223
223
  return noop;
224
224
  }
225
225
  }
@@ -229,18 +229,18 @@ export class TuiStatusRuntime extends Service {
229
229
  // object would otherwise render as "[object Object]") is REFUSED with
230
230
  // a warning — it must not silently become a clear, either.
231
231
  if (typeof text !== 'string' && typeof text !== 'number' && typeof text !== 'boolean') {
232
- caller.logger.warn(`dsh-tui: tuiStatus.set rejected non-scalar text for "${normalized}"`);
232
+ caller.logger.warn(`dsh-cli: tuiStatus.set rejected non-scalar text for "${normalized}"`);
233
233
  return noop;
234
234
  }
235
235
  cleaned = cleanScalarText(text, TEXT_CELLS);
236
236
  }
237
237
  if (cleaned !== undefined && store.viewOwnerOf(normalized) !== undefined) {
238
- caller.logger.warn(`dsh-tui: tuiStatus.set rejected "${normalized}" — the key already owns a rich view`);
238
+ caller.logger.warn(`dsh-cli: tuiStatus.set rejected "${normalized}" — the key already owns a rich view`);
239
239
  return noop;
240
240
  }
241
241
  const had = store.getSnapshot().some(entry => entry.key === normalized);
242
242
  if (store.ownerOf(normalized) !== undefined && store.ownerOf(normalized) !== owner) {
243
- caller.logger.warn(`dsh-tui: tuiStatus.set rejected "${normalized}" — the contribution belongs to another activation`);
243
+ caller.logger.warn(`dsh-cli: tuiStatus.set rejected "${normalized}" — the contribution belongs to another activation`);
244
244
  return noop;
245
245
  }
246
246
  const ledger = caller.get('tuiEffectLedger');
@@ -299,7 +299,7 @@ export class TuiStatusRuntime extends Service {
299
299
  caller = requirePluginCaller(this.ctx, 'tuiStatus.registerView', this);
300
300
  }
301
301
  catch {
302
- this.ctx.logger.warn('dsh-tui: tuiStatus.registerView requires a live non-root plugin activation');
302
+ this.ctx.logger.warn('dsh-cli: tuiStatus.registerView requires a live non-root plugin activation');
303
303
  return undefined;
304
304
  }
305
305
  if (identity !== undefined) {
@@ -307,17 +307,17 @@ export class TuiStatusRuntime extends Service {
307
307
  assertCallerContext(caller, identity, 'tuiStatus.registerView');
308
308
  }
309
309
  catch {
310
- caller.logger.warn('dsh-tui: tuiStatus.registerView rejected an identity belonging to another activation');
310
+ caller.logger.warn('dsh-cli: tuiStatus.registerView rejected an identity belonging to another activation');
311
311
  return undefined;
312
312
  }
313
313
  }
314
314
  const owner = activationFiber(caller);
315
315
  if (owner === undefined) {
316
- caller.logger.warn('dsh-tui: tuiStatus.registerView requires a live activation owner');
316
+ caller.logger.warn('dsh-cli: tuiStatus.registerView requires a live activation owner');
317
317
  return undefined;
318
318
  }
319
319
  if (typeof descriptor !== 'object' || descriptor === null || Array.isArray(descriptor)) {
320
- caller.logger.warn('dsh-tui: tuiStatus.registerView rejected an invalid descriptor');
320
+ caller.logger.warn('dsh-cli: tuiStatus.registerView rejected an invalid descriptor');
321
321
  return undefined;
322
322
  }
323
323
  const raw = descriptor;
@@ -326,26 +326,26 @@ export class TuiStatusRuntime extends Service {
326
326
  normalized = String(raw.key ?? '').trim().toLowerCase();
327
327
  }
328
328
  catch {
329
- caller.logger.warn('dsh-tui: tuiStatus.registerView rejected an uncoercible key');
329
+ caller.logger.warn('dsh-cli: tuiStatus.registerView rejected an uncoercible key');
330
330
  return undefined;
331
331
  }
332
332
  if (!KEY_PATTERN.test(normalized)) {
333
- caller.logger.warn('dsh-tui: tuiStatus.registerView rejected an invalid key');
333
+ caller.logger.warn('dsh-cli: tuiStatus.registerView rejected an invalid key');
334
334
  return undefined;
335
335
  }
336
336
  const maxRows = raw.maxRows ?? 1;
337
337
  if (typeof maxRows !== 'number' || !Number.isInteger(maxRows) || maxRows < 1 || maxRows > MAX_VIEW_ROWS) {
338
- caller.logger.warn(`dsh-tui: tuiStatus.registerView rejected "${normalized}" — maxRows must be an integer from 1 to ${MAX_VIEW_ROWS}`);
338
+ caller.logger.warn(`dsh-cli: tuiStatus.registerView rejected "${normalized}" — maxRows must be an integer from 1 to ${MAX_VIEW_ROWS}`);
339
339
  return undefined;
340
340
  }
341
341
  if (typeof raw.component !== 'function') {
342
- caller.logger.warn(`dsh-tui: tuiStatus.registerView rejected "${normalized}" — component must be a function`);
342
+ caller.logger.warn(`dsh-cli: tuiStatus.registerView rejected "${normalized}" — component must be a function`);
343
343
  return undefined;
344
344
  }
345
345
  const state = statusStateFor(this);
346
346
  const store = state.store;
347
347
  if (store.ownerOf(normalized) !== undefined || store.viewOwnerOf(normalized) !== undefined) {
348
- caller.logger.warn(`dsh-tui: tuiStatus.registerView rejected "${normalized}" — the key is already registered`);
348
+ caller.logger.warn(`dsh-cli: tuiStatus.registerView rejected "${normalized}" — the key is already registered`);
349
349
  caller.get('tuiEffectLedger')?.record({
350
350
  operation: 'bind',
351
351
  resource: { kind: 'status', id: normalized },
@@ -356,7 +356,7 @@ export class TuiStatusRuntime extends Service {
356
356
  }
357
357
  const requestedRows = store.getViewSnapshot().reduce((rows, view) => rows + view.maxRows, maxRows);
358
358
  if (requestedRows > MAX_VIEW_ROW_BUDGET) {
359
- caller.logger.warn(`dsh-tui: tuiStatus.registerView rejected "${normalized}" — rich status views are limited to ${MAX_VIEW_ROW_BUDGET} rows total`);
359
+ caller.logger.warn(`dsh-cli: tuiStatus.registerView rejected "${normalized}" — rich status views are limited to ${MAX_VIEW_ROW_BUDGET} rows total`);
360
360
  return undefined;
361
361
  }
362
362
  const token = state.nextToken++;
@@ -407,7 +407,7 @@ export class TuiStatusRuntime extends Service {
407
407
  listener();
408
408
  }
409
409
  catch (error) {
410
- caller.logger.warn(`dsh-tui: tuiStatus listener failed: ${error instanceof Error ? error.message : String(error)}`);
410
+ caller.logger.warn(`dsh-cli: tuiStatus listener failed: ${error instanceof Error ? error.message : String(error)}`);
411
411
  }
412
412
  };
413
413
  const dispose = statusStateFor(this).store.subscribe(wrapped);
@@ -26,7 +26,7 @@ const NOOP = () => { };
26
26
  const hostThemes = new WeakMap();
27
27
  function warn(ctx, message) {
28
28
  try {
29
- ctx.logger.warn(`dsh-tui: ${message}`);
29
+ ctx.logger.warn(`dsh-cli: ${message}`);
30
30
  }
31
31
  catch {
32
32
  // A logger is observability only; malformed plugin data must stay inert.
@@ -284,7 +284,7 @@ export class TuiThemeRuntime extends Service {
284
284
  }
285
285
  catch {
286
286
  try {
287
- this.ctx.logger.warn('dsh-tui: tuiThemes.register rejected malformed data');
287
+ this.ctx.logger.warn('dsh-cli: tuiThemes.register rejected malformed data');
288
288
  }
289
289
  catch {
290
290
  // Never let a malformed plugin descriptor crash the TUI.
@@ -97,23 +97,23 @@ export class TuiToastRuntime extends Service {
97
97
  caller = requirePluginCaller(this.ctx, 'tuiToast.show', this);
98
98
  }
99
99
  catch {
100
- this.ctx.logger.warn('dsh-tui: tuiToast.show requires a live non-root plugin activation');
100
+ this.ctx.logger.warn('dsh-cli: tuiToast.show requires a live non-root plugin activation');
101
101
  return false;
102
102
  }
103
103
  const state = toastStateFor(this);
104
104
  if (typeof text !== 'string' && typeof text !== 'number' && typeof text !== 'boolean') {
105
- caller.logger.warn('dsh-tui: tuiToast.show rejected non-scalar text');
105
+ caller.logger.warn('dsh-cli: tuiToast.show rejected non-scalar text');
106
106
  return false;
107
107
  }
108
108
  const cleaned = cleanScalarText(text, TEXT_CELLS);
109
109
  if (cleaned === '') {
110
- caller.logger.warn('dsh-tui: tuiToast.show rejected empty text');
110
+ caller.logger.warn('dsh-cli: tuiToast.show rejected empty text');
111
111
  return false;
112
112
  }
113
113
  let color;
114
114
  if (options.color !== undefined) {
115
115
  if (!COLORS.has(options.color)) {
116
- caller.logger.warn(`dsh-tui: tuiToast.show rejected unknown color "${String(options.color)}"`);
116
+ caller.logger.warn(`dsh-cli: tuiToast.show rejected unknown color "${String(options.color)}"`);
117
117
  return false;
118
118
  }
119
119
  color = options.color;
@@ -123,7 +123,7 @@ export class TuiToastRuntime extends Service {
123
123
  if (options.timeoutMs <= 0) {
124
124
  // Sticky toasts are a host-only device; fall back, don't fail —
125
125
  // the plugin asked to be seen, not to park an indicator forever.
126
- caller.logger.warn('dsh-tui: tuiToast.show ignores sticky timeoutMs (host-only); using the 4000ms default');
126
+ caller.logger.warn('dsh-cli: tuiToast.show ignores sticky timeoutMs (host-only); using the 4000ms default');
127
127
  }
128
128
  else {
129
129
  timeoutMs = Math.min(TIMEOUT_MAX_MS, Math.max(TIMEOUT_MIN_MS, Math.floor(options.timeoutMs)));
@@ -131,7 +131,7 @@ export class TuiToastRuntime extends Service {
131
131
  }
132
132
  const owner = activationFiber(caller);
133
133
  if (owner === undefined) {
134
- caller.logger.warn('dsh-tui: tuiToast.show requires a live activation owner');
134
+ caller.logger.warn('dsh-cli: tuiToast.show requires a live activation owner');
135
135
  return false;
136
136
  }
137
137
  const now = Date.now();
@@ -141,7 +141,7 @@ export class TuiToastRuntime extends Service {
141
141
  if (window.length >= RATE_LIMIT) {
142
142
  if (!state.warned.has(owner)) {
143
143
  state.warned.add(owner);
144
- caller.logger.warn(`dsh-tui: tuiToast.show rate-limited an activation to ${RATE_LIMIT}/min; further toasts in this window are dropped silently`);
144
+ caller.logger.warn(`dsh-cli: tuiToast.show rate-limited an activation to ${RATE_LIMIT}/min; further toasts in this window are dropped silently`);
145
145
  }
146
146
  state.windows.set(owner, window);
147
147
  return false;
@@ -83,7 +83,7 @@ declare module '@deepseek-ai/cordis' {
83
83
  tuiWorkspaces: TuiWorkspaceRuntime;
84
84
  }
85
85
  }
86
- export declare const name = "dsh-tui-workspaces";
86
+ export declare const name = "dsh-cli-workspaces";
87
87
  /** Bound every provider promise so one plugin cannot park workspace flows. */
88
88
  export declare const WORKSPACE_PROVIDER_TIMEOUT_MS = 2000;
89
89
  /** Registry and local fallback shared by the TUI and workspace plugins. */
@@ -94,7 +94,7 @@ function ownsWorkspace(runtime, owner, cwd) {
94
94
  }
95
95
  return false;
96
96
  }
97
- export const name = 'dsh-tui-workspaces';
97
+ export const name = 'dsh-cli-workspaces';
98
98
  /** Bound every provider promise so one plugin cannot park workspace flows. */
99
99
  export const WORKSPACE_PROVIDER_TIMEOUT_MS = 2000;
100
100
  async function providerWithBudget(task, signal, timeoutMs = WORKSPACE_PROVIDER_TIMEOUT_MS) {
@@ -158,7 +158,7 @@ export class TuiWorkspaceRuntime extends Service {
158
158
  const owner = activationFiber(caller);
159
159
  if (owner === undefined) {
160
160
  state.providers.delete(provider);
161
- throw new Error('dsh-tui: tuiWorkspaces.register requires a live activation');
161
+ throw new Error('dsh-cli: tuiWorkspaces.register requires a live activation');
162
162
  }
163
163
  state.providerOwners.set(provider, owner);
164
164
  this.notifyProviderWaiters();
@@ -256,7 +256,7 @@ function workspaceCaller(runtime, capability) {
256
256
  const caller = requirePluginCaller(runtimeContext(runtime), capability, runtime);
257
257
  const owner = activationFiber(caller);
258
258
  if (owner === undefined)
259
- throw new Error(`dsh-tui: ${capability} requires a live activation`);
259
+ throw new Error(`dsh-cli: ${capability} requires a live activation`);
260
260
  return owner;
261
261
  }
262
262
  function runtimeContext(runtime) {
@@ -280,7 +280,7 @@ async function listWorkspaces(runtime, currentCwd, signal, owner) {
280
280
  targets.set(target.uri, withStoredTitle(runtime, target));
281
281
  }
282
282
  catch (error) {
283
- runtimeContext(runtime).logger.warn(`dsh-tui: workspace provider list failed: ${error instanceof Error ? error.message : String(error)}`);
283
+ runtimeContext(runtime).logger.warn(`dsh-cli: workspace provider list failed: ${error instanceof Error ? error.message : String(error)}`);
284
284
  }
285
285
  }
286
286
  for (const workspace of workspaceRegistry(runtime)?.list() ?? []) {
@@ -350,7 +350,7 @@ function describeWorkspace(runtime, cwd, owner) {
350
350
  target = provider.describe(cwd);
351
351
  }
352
352
  catch (error) {
353
- runtimeContext(runtime).logger.warn(`dsh-tui: workspace provider describe failed: ${error instanceof Error ? error.message : String(error)}`);
353
+ runtimeContext(runtime).logger.warn(`dsh-cli: workspace provider describe failed: ${error instanceof Error ? error.message : String(error)}`);
354
354
  continue;
355
355
  }
356
356
  if (target !== undefined)
@@ -366,7 +366,7 @@ async function commandShellFor(runtime, cwd, owner) {
366
366
  shell = await providerWithBudget(() => provider.commandShell?.(cwd), undefined);
367
367
  }
368
368
  catch (error) {
369
- runtimeContext(runtime).logger.warn(`dsh-tui: workspace provider commandShell failed: ${error instanceof Error ? error.message : String(error)}`);
369
+ runtimeContext(runtime).logger.warn(`dsh-cli: workspace provider commandShell failed: ${error instanceof Error ? error.message : String(error)}`);
370
370
  continue;
371
371
  }
372
372
  if (shell !== undefined)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Persisted reasoning-effort preference (`~/.dsh-tui/effort.json`). Set via
2
+ * Persisted reasoning-effort preference (`~/.dsh-cli/effort.json`). Set via
3
3
  * `/effort` (slider or `/effort <id>`; `/effort status` reports the current
4
4
  * level) — note Shift+Tab cycles session modes (default/plan/full), not
5
5
  * effort levels. The choice lands here so the next boot starts on it. The
@@ -16,7 +16,7 @@ export declare function readEffortPref(dir?: string): string | undefined;
16
16
  /**
17
17
  * Default reasoning-effort precedence for sessions that do not carry their
18
18
  * own choice: the /settings 默认推理强度 user layer (`settings.yaml
19
- * dsh-tui.effortDefault`; the plugin folds the `auto` option to undefined
19
+ * dsh-cli.effortDefault`; the plugin folds the `auto` option to undefined
20
20
  * before calling), then the cordis.yml `effort` pin, then this persisted
21
21
  * `/effort` file, then the adapter/model default (undefined). Mirrors the
22
22
  * lang chain (settings user layer > cordis.yml > lang.json).
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Persisted reasoning-effort preference (`~/.dsh-tui/effort.json`). Set via
2
+ * Persisted reasoning-effort preference (`~/.dsh-cli/effort.json`). Set via
3
3
  * `/effort` (slider or `/effort <id>`; `/effort status` reports the current
4
4
  * level) — note Shift+Tab cycles session modes (default/plan/full), not
5
5
  * effort levels. The choice lands here so the next boot starts on it. The
@@ -31,7 +31,7 @@ export function readEffortPref(dir = PREFS_DIR) {
31
31
  /**
32
32
  * Default reasoning-effort precedence for sessions that do not carry their
33
33
  * own choice: the /settings 默认推理强度 user layer (`settings.yaml
34
- * dsh-tui.effortDefault`; the plugin folds the `auto` option to undefined
34
+ * dsh-cli.effortDefault`; the plugin folds the `auto` option to undefined
35
35
  * before calling), then the cordis.yml `effort` pin, then this persisted
36
36
  * `/effort` file, then the adapter/model default (undefined). Mirrors the
37
37
  * lang chain (settings user layer > cordis.yml > lang.json).
@@ -3,7 +3,7 @@
3
3
  * React-reconciler selects its dev/production build at require time from
4
4
  * NODE_ENV; the dev build records one performance.measure() per render into
5
5
  * an unbounded buffer — the 4 GB long-session OOM (b1e06d8). Every launcher
6
- * forces production, but a direct `dsh --profile dsh-tui` boot loads this
6
+ * forces production, but a direct `dsh --profile dsh-cli` boot loads this
7
7
  * plugin without one and silently regressed to the dev build. This module
8
8
  * must stay the FIRST import of the package entry so its body runs before
9
9
  * any module in the plugin graph requires react. `??=` keeps an explicit
@@ -69,8 +69,8 @@ export function attachHerdrIntegration(options) {
69
69
  attempts += 1;
70
70
  const result = await withTimeout(runSafely([
71
71
  'pane', 'report-agent', paneId,
72
- '--source', 'custom:dsh-tui',
73
- '--agent', 'dsh-tui',
72
+ '--source', 'custom:dsh-cli',
73
+ '--agent', 'dsh-cli',
74
74
  '--state', state,
75
75
  ...(blocked ? ['--message', 'Waiting for user input'] : []),
76
76
  '--seq', String(++sequence),
@@ -122,8 +122,8 @@ export function attachHerdrIntegration(options) {
122
122
  unsubscribe();
123
123
  const release = runSafely([
124
124
  'pane', 'release-agent', paneId,
125
- '--source', 'custom:dsh-tui',
126
- '--agent', 'dsh-tui',
125
+ '--source', 'custom:dsh-cli',
126
+ '--agent', 'dsh-cli',
127
127
  '--seq', String(++sequence),
128
128
  ]);
129
129
  disposePromise = withTimeout(release, releaseTimeoutMs).then(() => undefined);
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Landing-screen preference for the TUI's workspace home screen.
3
3
  *
4
- * A one-key preference under `~/.dsh-tui/home.json`, deliberately NOT a cordis
4
+ * A one-key preference under `~/.dsh-cli/home.json`, deliberately NOT a cordis
5
5
  * config value: "has this installation shown the user the workspace home on a
6
6
  * fresh launch yet" is per-machine UI state, like the lang and tray
7
7
  * preferences next to it — not a deployment choice a cordis.yml row should own.