@askdkc/dsh-cli 0.13.4 → 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
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * messages.observe contract surface (C-042,
3
3
  * `messages.dsh/v1alpha1#MessageObserver`): the host event broker, mounted
4
- * by the dsh-tui-plugin-host row as `ctx.tuiMessageObserver`.
4
+ * by the dsh-cli-plugin-host row as `ctx.tuiMessageObserver`.
5
5
  *
6
6
  * Mapping (deliberately narrow):
7
7
  *
@@ -174,7 +174,7 @@ export class TuiMessageObserverRuntime extends Service {
174
174
  runtime.#publishGuarded(session, event);
175
175
  }
176
176
  catch (error) {
177
- runtime.ctx.logger.warn('dsh-tui: messages.observe publish failed (event dropped)');
177
+ runtime.ctx.logger.warn('dsh-cli: messages.observe publish failed (event dropped)');
178
178
  }
179
179
  },
180
180
  });
@@ -242,22 +242,22 @@ export class TuiMessageObserverRuntime extends Service {
242
242
  const state = observerStateFor(this);
243
243
  const before = state.subscriptions.size;
244
244
  const identity = {
245
- componentId: '__dsh_tui_live_probe__',
246
- activationId: '__dsh_tui_live_probe__',
245
+ componentId: '__dsh_cli_live_probe__',
246
+ activationId: '__dsh_cli_live_probe__',
247
247
  version: '0.0.0',
248
248
  facet: 'host',
249
- manifest: { id: '__dsh_tui_live_probe__' },
250
- projection: { id: '__dsh_tui_live_probe__' },
249
+ manifest: { id: '__dsh_cli_live_probe__' },
250
+ projection: { id: '__dsh_cli_live_probe__' },
251
251
  };
252
252
  const self = concreteService(this);
253
253
  const received = [];
254
- const release = self.#registerSubscription(state.hostContext, identity, '__dsh_tui_live_probe__', 'session:__dsh_tui_live_probe__', envelope => { received.push(envelope); }, { enforceGrants: false, recordLedger: false, bindLifecycle: false });
254
+ const release = self.#registerSubscription(state.hostContext, identity, '__dsh_cli_live_probe__', 'session:__dsh_cli_live_probe__', envelope => { received.push(envelope); }, { enforceGrants: false, recordLedger: false, bindLifecycle: false });
255
255
  try {
256
256
  const during = state.subscriptions.size;
257
257
  if (during !== before + 1) {
258
258
  throw new Error(`temporary subscription did not enter the broker (${before} -> ${during})`);
259
259
  }
260
- self.#publishGuarded({ id: '__dsh_tui_live_probe__' }, {
260
+ self.#publishGuarded({ id: '__dsh_cli_live_probe__' }, {
261
261
  type: 'user/message',
262
262
  seq: 1,
263
263
  data: {
@@ -315,18 +315,18 @@ export class TuiMessageObserverRuntime extends Service {
315
315
  assertCapabilityShadowPolicy('host.messages.subscribe', observerStateFor(this).runtime.mode, observerStateFor(this).runtime.slices);
316
316
  const caller = activationContext(pluginCtx);
317
317
  if (caller === undefined)
318
- throw new Error('dsh-tui: messages.observe.subscribe requires a live activation context');
318
+ throw new Error('dsh-cli: messages.observe.subscribe requires a live activation context');
319
319
  assertCallerContext(this.ctx, caller, 'messages.observe.subscribe', this);
320
320
  const identity = requireComponentIdentity(caller);
321
321
  const plugin = identity.componentId;
322
322
  if (!requiresContract(identity, 'messages.dsh/v1alpha1', 'MessageObserver')) {
323
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe subscription from Component "${plugin}" denied — ` +
323
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe subscription from Component "${plugin}" denied — ` +
324
324
  'the messages.dsh/v1alpha1#MessageObserver contract was not required');
325
325
  return () => false;
326
326
  }
327
327
  const scope = typeof options?.scope === 'string' ? options.scope : '';
328
328
  if (scope === '' || scope.length > OBSERVE_SCOPE_MAX_CHARS) {
329
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe subscription from plugin "${plugin}" refused — options.scope must be a ` +
329
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe subscription from plugin "${plugin}" refused — options.scope must be a ` +
330
330
  `non-empty string of at most ${OBSERVE_SCOPE_MAX_CHARS} characters (e.g. "session:<id>")`);
331
331
  return () => false;
332
332
  }
@@ -347,7 +347,7 @@ export class TuiMessageObserverRuntime extends Service {
347
347
  && (!declaresObserverScope(identity, scope)
348
348
  || !declaresPermission(identity, 'messages.observe.read', scope)
349
349
  || !this.grants().allows({ componentId: identity.componentId, activationId: identity.activationId }, 'messages.observe.read', scope)))) {
350
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe subscription from Component "${plugin}" denied — ` +
350
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe subscription from Component "${plugin}" denied — ` +
351
351
  'the scope is not statically declared or the current grant does not cover it; the listener was NOT registered');
352
352
  if (options.recordLedger) {
353
353
  this.ledger()?.record({
@@ -406,7 +406,7 @@ export class TuiMessageObserverRuntime extends Service {
406
406
  return;
407
407
  const sessionId = session?.id;
408
408
  if (typeof sessionId !== 'string' || sessionId === '') {
409
- observerStateFor(this).hostContext.logger.warn('dsh-tui: messages.observe publish skipped — the session carries no string id');
409
+ observerStateFor(this).hostContext.logger.warn('dsh-cli: messages.observe publish skipped — the session carries no string id');
410
410
  return;
411
411
  }
412
412
  const data = (record.data ?? {});
@@ -415,7 +415,7 @@ export class TuiMessageObserverRuntime extends Service {
415
415
  // Never truncate a session identity into the schema's scope bound: two
416
416
  // distinct long ids can otherwise collapse into one subscription scope.
417
417
  if (scope.length > OBSERVE_SCOPE_MAX_CHARS) {
418
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe publish skipped — the session scope exceeds ${OBSERVE_SCOPE_MAX_CHARS} characters`);
418
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe publish skipped — the session scope exceeds ${OBSERVE_SCOPE_MAX_CHARS} characters`);
419
419
  return;
420
420
  }
421
421
  // C-042 isolation: match subscriptions BEFORE building anything — a
@@ -462,7 +462,7 @@ export class TuiMessageObserverRuntime extends Service {
462
462
  if (state.validatorUnavailable) {
463
463
  if (!state.validatorWarned) {
464
464
  state.validatorWarned = true;
465
- observerStateFor(this).hostContext.logger.warn('dsh-tui: standard message envelope validator unavailable — delivery is fail-closed');
465
+ observerStateFor(this).hostContext.logger.warn('dsh-cli: standard message envelope validator unavailable — delivery is fail-closed');
466
466
  }
467
467
  return;
468
468
  }
@@ -470,7 +470,7 @@ export class TuiMessageObserverRuntime extends Service {
470
470
  state.validateEnvelope(envelope);
471
471
  }
472
472
  catch (error) {
473
- observerStateFor(this).hostContext.logger.warn('dsh-tui: messages.observe envelope failed the standard validator and was dropped');
473
+ observerStateFor(this).hostContext.logger.warn('dsh-cli: messages.observe envelope failed the standard validator and was dropped');
474
474
  return;
475
475
  }
476
476
  for (const subscription of matched) {
@@ -481,12 +481,12 @@ export class TuiMessageObserverRuntime extends Service {
481
481
  // probe subscriptions bypass this re-check because they are synthetic
482
482
  // and never represent a real caller grant.
483
483
  if (!subscription.probe && !this.grants().allows({ componentId: subscription.identity.componentId, activationId: subscription.identity.activationId }, 'messages.observe.read', scope)) {
484
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe subscription of plugin "${subscription.plugin}" released — the grant was revoked`);
484
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe subscription of plugin "${subscription.plugin}" released — the grant was revoked`);
485
485
  this.drop(subscription);
486
486
  continue;
487
487
  }
488
488
  if (subscription.pendingCallbacks >= OBSERVE_CALLBACK_QUEUE_LIMIT) {
489
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe listener of Component "${subscription.plugin}" reached its ` +
489
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe listener of Component "${subscription.plugin}" reached its ` +
490
490
  `${OBSERVE_CALLBACK_QUEUE_LIMIT}-callback queue limit; this envelope was skipped`);
491
491
  continue;
492
492
  }
@@ -499,28 +499,28 @@ export class TuiMessageObserverRuntime extends Service {
499
499
  // running; queued envelopes must then be skipped rather than
500
500
  // delivered from the stale pre-revocation snapshot.
501
501
  if (!subscription.probe && !this.grants().allows({ componentId: subscription.identity.componentId, activationId: subscription.identity.activationId }, 'messages.observe.read', scope)) {
502
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe subscription of plugin "${subscription.plugin}" released — the grant was revoked`);
502
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe subscription of plugin "${subscription.plugin}" released — the grant was revoked`);
503
503
  this.drop(subscription);
504
504
  return;
505
505
  }
506
506
  const isolated = freezeEnvelope(envelope);
507
507
  const result = await runWithBudget(() => subscription.listener(isolated), OBSERVE_CALLBACK_TIMEOUT_MS);
508
508
  if (result.kind === 'timeout') {
509
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe listener of Component "${subscription.plugin}" exceeded ` +
509
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe listener of Component "${subscription.plugin}" exceeded ` +
510
510
  `${OBSERVE_CALLBACK_TIMEOUT_MS}ms and the subscription was closed`);
511
511
  this.drop(subscription);
512
512
  }
513
513
  else if (result.kind === 'rejected') {
514
- observerStateFor(this).hostContext.logger.warn(`dsh-tui: messages.observe listener of Component "${subscription.plugin}" failed; delivery continues`);
514
+ observerStateFor(this).hostContext.logger.warn(`dsh-cli: messages.observe listener of Component "${subscription.plugin}" failed; delivery continues`);
515
515
  }
516
516
  });
517
517
  subscription.chain = run.catch(error => {
518
- observerStateFor(this).hostContext.logger.warn('dsh-tui: messages.observe delivery failed');
518
+ observerStateFor(this).hostContext.logger.warn('dsh-cli: messages.observe delivery failed');
519
519
  }).finally(() => { subscription.pendingCallbacks -= 1; });
520
520
  }
521
521
  }
522
522
  catch (error) {
523
- observerStateFor(this).hostContext.logger.warn('dsh-tui: messages.observe publish failed (event dropped)');
523
+ observerStateFor(this).hostContext.logger.warn('dsh-cli: messages.observe publish failed (event dropped)');
524
524
  }
525
525
  }
526
526
  /** Release a subscription exactly once (disposer, ctx unload, revoke). */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared lightweight counting for the migration adapters.
3
3
  *
4
- * Bare `dsh-tui migrate` (and the TUI's `/migrate`) only prints a per-agent
4
+ * Bare `dsh-cli migrate` (and the TUI's `/migrate`) only prints a per-agent
5
5
  * count, but discover() parses EVERY file into memory (real-world scale:
6
6
  * ~9600 files / 5.5GB → 49s and ~880MB just to print five numbers —
7
7
  * deep-review M3). countSessions() walks the same trees matching only
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Resolve `bin/dsh-tui.js` for the package that contains `fromDir`, or
2
+ * Resolve `bin/dsh-cli.js` for the package that contains `fromDir`, or
3
3
  * undefined when no ancestor within the probe bound carries it.
4
4
  */
5
5
  export declare function resolveOwnBin(fromDir: string): string | undefined;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Locate this package's `bin/dsh-tui.js` from a module directory inside it.
2
+ * Locate this package's `bin/dsh-cli.js` from a module directory inside it.
3
3
  *
4
4
  * The TUI's `/migrate` spawns the CLI through the package bin so the import
5
5
  * runs in a child process. Callers live at DIFFERENT depths per layout:
@@ -7,7 +7,7 @@
7
7
  * installed (four levels) — a fixed dirname count lands inside the tree and
8
8
  * the spawn fails on every real install (the regression the probe-up walk
9
9
  * below replaces; found by the independent test session on a real profile).
10
- * Probing upward for `bin/dsh-tui.js` matches both layouts without knowing
10
+ * Probing upward for `bin/dsh-cli.js` matches both layouts without knowing
11
11
  * which one we are in — the same spirit as src/update.ts's manifest walk.
12
12
  *
13
13
  * @module dsh-cli/migrate/bin-path
@@ -17,12 +17,12 @@ import { join } from 'node:path';
17
17
  /** Upward probe bounds: covers src/screens and lib/types/screens layouts. */
18
18
  const PROBE_UP = ['..', '../..', '../../..', '../../../..'];
19
19
  /**
20
- * Resolve `bin/dsh-tui.js` for the package that contains `fromDir`, or
20
+ * Resolve `bin/dsh-cli.js` for the package that contains `fromDir`, or
21
21
  * undefined when no ancestor within the probe bound carries it.
22
22
  */
23
23
  export function resolveOwnBin(fromDir) {
24
24
  for (const up of PROBE_UP) {
25
- const candidate = join(fromDir, up, 'bin', 'dsh-tui.js');
25
+ const candidate = join(fromDir, up, 'bin', 'dsh-cli.js');
26
26
  if (existsSync(candidate))
27
27
  return candidate;
28
28
  }
@@ -36,7 +36,7 @@ export declare function parseImportSummary(stdout: string): ImportSummary[];
36
36
  * command is valid must never depend on the picker having been opened first
37
37
  * (`migrateRows` is empty on a fresh mount, which used to make every
38
38
  * `/migrate <agent>` report an unknown source), and the CLI keeps the same
39
- * one-source rule (`dsh-tui migrate a b` is a usage error there too).
39
+ * one-source rule (`dsh-cli migrate a b` is a usage error there too).
40
40
  *
41
41
  * @param rawInput - arguments after `/migrate`, e.g. `" claude-code --dry-run"`.
42
42
  * @param knownAgentIds - the adapter registry's ids (see MIGRATION_ADAPTERS).
@@ -64,7 +64,7 @@ export function parseImportSummary(stdout) {
64
64
  * command is valid must never depend on the picker having been opened first
65
65
  * (`migrateRows` is empty on a fresh mount, which used to make every
66
66
  * `/migrate <agent>` report an unknown source), and the CLI keeps the same
67
- * one-source rule (`dsh-tui migrate a b` is a usage error there too).
67
+ * one-source rule (`dsh-cli migrate a b` is a usage error there too).
68
68
  *
69
69
  * @param rawInput - arguments after `/migrate`, e.g. `" claude-code --dry-run"`.
70
70
  * @param knownAgentIds - the adapter registry's ids (see MIGRATION_ADAPTERS).
@@ -9,7 +9,7 @@
9
9
  * @module dsh-cli/migrate/uuid
10
10
  */
11
11
  import { createHash } from 'node:crypto';
12
- /** This project's migration namespace: dsh-tui-migrate as 16 fixed bytes. */
12
+ /** This project's migration namespace: dsh-cli-migrate as 16 fixed bytes. */
13
13
  const NAMESPACE = Buffer.from([0x9f, 0x1d, 0x3a, 0x72, 0x6c, 0x55, 0x4c, 0x8e, 0xb0, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74]);
14
14
  /**
15
15
  * RFC 4122 UUIDv5 over the migration namespace.
@@ -7,7 +7,7 @@ export function packagedPresetRoot(moduleUrl = import.meta.url) {
7
7
  const candidates = [join(directory, '../../presets'), join(directory, '../../../presets')];
8
8
  const found = candidates.find(candidate => existsSync(candidate));
9
9
  if (found === undefined) {
10
- throw new Error(`dsh-tui: packaged preset root is missing (checked ${candidates.join(', ')})`);
10
+ throw new Error(`dsh-cli: packaged preset root is missing (checked ${candidates.join(', ')})`);
11
11
  }
12
12
  return found;
13
13
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The dsh-tui-plugin-host row: the plugin-interop anchor every later
2
+ * The dsh-cli-plugin-host row: the plugin-interop anchor every later
3
3
  * contract surface hangs off (storage.local, messages.observe, effect
4
4
  * ledger — each lands as a sibling service mounted by THIS row's apply, so
5
5
  * the patch surface changed exactly once for the whole v0.15 alignment).
@@ -200,6 +200,6 @@ export declare function getHostAdmission(runtime: TuiPluginHost | TuiPluginHostR
200
200
  * describe() wrapper. It remains read-only and shadow-guarded.
201
201
  */
202
202
  export declare function getHostFacade(runtime: TuiPluginHost | TuiPluginHostRuntime | undefined): import("../adapter/index.js").HostFacade | undefined;
203
- export declare const name = "dsh-tui-plugin-host";
203
+ export declare const name = "dsh-cli-plugin-host";
204
204
  export declare function apply(ctx: Context): void;
205
205
  //# sourceMappingURL=plugin-host.d.ts.map
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The dsh-tui-plugin-host row: the plugin-interop anchor every later
2
+ * The dsh-cli-plugin-host row: the plugin-interop anchor every later
3
3
  * contract surface hangs off (storage.local, messages.observe, effect
4
4
  * ledger — each lands as a sibling service mounted by THIS row's apply, so
5
5
  * the patch surface changed exactly once for the whole v0.15 alignment).
@@ -147,7 +147,7 @@ export class TuiPluginHostRuntime extends Service {
147
147
  installDecisionGuard(ctx, rawGrants);
148
148
  const violations = this.selfCheck();
149
149
  if (violations.length > 0) {
150
- ctx.logger.warn(`dsh-tui: vendored adapter registry failed self-check (${violations.length} violation(s)); ` +
150
+ ctx.logger.warn(`dsh-cli: vendored adapter registry failed self-check (${violations.length} violation(s)); ` +
151
151
  `affected contracts are dropped from the Host Descriptor fail-closed: ${violations.join(' | ')}`);
152
152
  }
153
153
  }
@@ -187,7 +187,7 @@ export class TuiPluginHostRuntime extends Service {
187
187
  const message = error instanceof Error ? error.message : String(error);
188
188
  const result = Object.freeze({ status: kernelRuntime.refreshStatus(), error: message });
189
189
  state.initialKernelRefreshResult = result;
190
- this.ctx.logger.warn(`dsh-tui: kernel live refresh failed: ${message}`);
190
+ this.ctx.logger.warn(`dsh-cli: kernel live refresh failed: ${message}`);
191
191
  state.descriptorBuild = undefined;
192
192
  state.descriptorTopology = undefined;
193
193
  return result;
@@ -209,7 +209,7 @@ export class TuiPluginHostRuntime extends Service {
209
209
  // Production mount/dispose closure: mount the kernel drivers now and
210
210
  // dispose them when the plugin-host service's owning fiber unloads.
211
211
  void kernelRuntime.mount().catch((error) => {
212
- this.ctx.logger.warn(`dsh-tui: kernel driver mount failed: ${error instanceof Error ? error.message : String(error)}`);
212
+ this.ctx.logger.warn(`dsh-cli: kernel driver mount failed: ${error instanceof Error ? error.message : String(error)}`);
213
213
  });
214
214
  this.ctx.effect(() => () => {
215
215
  kernelRuntime.dispose();
@@ -263,16 +263,16 @@ export class TuiPluginHostRuntime extends Service {
263
263
  kernel.detect();
264
264
  const build = kernel.descriptorBuild();
265
265
  if (host.get('commands') === undefined) {
266
- host.logger.warn('dsh-tui: host descriptor: commands.dsh/v1alpha1#Command excluded — the commands service is not mounted on this context');
266
+ host.logger.warn('dsh-cli: host descriptor: commands.dsh/v1alpha1#Command excluded — the commands service is not mounted on this context');
267
267
  }
268
268
  if (host.get('tuiPluginStorage') === undefined) {
269
- host.logger.warn('dsh-tui: host descriptor: storage.dsh/v1alpha1#LocalStorage excluded — the tuiPluginStorage service is not mounted on this context');
269
+ host.logger.warn('dsh-cli: host descriptor: storage.dsh/v1alpha1#LocalStorage excluded — the tuiPluginStorage service is not mounted on this context');
270
270
  }
271
271
  if (host.get('tuiMessageObserver') === undefined) {
272
- host.logger.warn('dsh-tui: host descriptor: messages.dsh/v1alpha1#MessageObserver excluded — the tuiMessageObserver service is not mounted on this context');
272
+ host.logger.warn('dsh-cli: host descriptor: messages.dsh/v1alpha1#MessageObserver excluded — the tuiMessageObserver service is not mounted on this context');
273
273
  }
274
274
  for (const warning of build.warnings) {
275
- host.logger.warn(`dsh-tui: host descriptor: ${warning}`);
275
+ host.logger.warn(`dsh-cli: host descriptor: ${warning}`);
276
276
  }
277
277
  return build;
278
278
  }
@@ -311,17 +311,17 @@ export class TuiPluginHostRuntime extends Service {
311
311
  });
312
312
  state.descriptorTopology = topology;
313
313
  for (const warning of state.descriptorBuild.warnings) {
314
- host.logger.warn(`dsh-tui: host descriptor: ${warning}`);
314
+ host.logger.warn(`dsh-cli: host descriptor: ${warning}`);
315
315
  }
316
316
  }
317
317
  if (host.get('commands') === undefined) {
318
- host.logger.warn('dsh-tui: host descriptor: commands.dsh/v1alpha1#Command excluded — the commands service is not mounted on this context');
318
+ host.logger.warn('dsh-cli: host descriptor: commands.dsh/v1alpha1#Command excluded — the commands service is not mounted on this context');
319
319
  }
320
320
  if (host.get('tuiPluginStorage') === undefined) {
321
- host.logger.warn('dsh-tui: host descriptor: storage.dsh/v1alpha1#LocalStorage excluded — the tuiPluginStorage service is not mounted on this context');
321
+ host.logger.warn('dsh-cli: host descriptor: storage.dsh/v1alpha1#LocalStorage excluded — the tuiPluginStorage service is not mounted on this context');
322
322
  }
323
323
  if (host.get('tuiMessageObserver') === undefined) {
324
- host.logger.warn('dsh-tui: host descriptor: messages.dsh/v1alpha1#MessageObserver excluded — the tuiMessageObserver service is not mounted on this context');
324
+ host.logger.warn('dsh-cli: host descriptor: messages.dsh/v1alpha1#MessageObserver excluded — the tuiMessageObserver service is not mounted on this context');
325
325
  }
326
326
  return state.descriptorBuild;
327
327
  }
@@ -337,21 +337,21 @@ export class TuiPluginHostRuntime extends Service {
337
337
  void pluginCtx;
338
338
  void source;
339
339
  void options;
340
- throw new Error('dsh-tui: admission is host-owned; the loader must use its admission capability');
340
+ throw new Error('dsh-cli: admission is host-owned; the loader must use its admission capability');
341
341
  }
342
342
  /** @internal Host loader entry; the unexported production token prevents
343
343
  * proxy calls. The test token is only reachable from the test-only adapter
344
344
  * helper, never from the package's production admission accessor. */
345
345
  admitInternal(pluginCtx, source, options = {}, token) {
346
346
  if (token !== HOST_ADMISSION_TOKEN && token !== HOST_ADMISSION_TEST_TOKEN) {
347
- throw new Error('dsh-tui: admission capability is host-owned');
347
+ throw new Error('dsh-cli: admission capability is host-owned');
348
348
  }
349
349
  this.assertEffect('host.admission');
350
350
  const host = hostContextFor(this);
351
351
  const caller = assertActivationContext(host, pluginCtx);
352
352
  const callerFiber = activationFiber(caller);
353
353
  if (callerFiber === undefined) {
354
- throw new Error('dsh-tui: admission requires an owning Cordis activation fiber');
354
+ throw new Error('dsh-cli: admission requires an owning Cordis activation fiber');
355
355
  }
356
356
  const manifest = parseManifest(source, { source: options.source });
357
357
  // The host (not the caller) owns the activation instance identity.
@@ -365,10 +365,10 @@ export class TuiPluginHostRuntime extends Service {
365
365
  : issueActivationId(callerFiber);
366
366
  const data = loadSpecData();
367
367
  if (data === undefined)
368
- throw new Error('dsh-tui: admission profile is unavailable');
368
+ throw new Error('dsh-cli: admission profile is unavailable');
369
369
  const specViolations = [...verifyRegistry(data), ...verifyContractProfiles(data)];
370
370
  if (specViolations.length > 0) {
371
- throw new Error(`dsh-tui: admission profile self-check failed: ${specViolations.join(' | ')}`);
371
+ throw new Error(`dsh-cli: admission profile self-check failed: ${specViolations.join(' | ')}`);
372
372
  }
373
373
  const index = createContractIndex(data.registry, data.permissions);
374
374
  validatePlugin(index, manifest);
@@ -392,7 +392,7 @@ export class TuiPluginHostRuntime extends Service {
392
392
  const missing = 'missingRequired' in decision && decision.missingRequired !== undefined
393
393
  ? ` (${decision.missingRequired.join(', ')})`
394
394
  : '';
395
- throw new Error(`dsh-tui: Component ${manifest.id} admission ${decision.decision}: ${'reasonCode' in decision ? decision.reasonCode : 'incompatible'}${missing}`);
395
+ throw new Error(`dsh-cli: Component ${manifest.id} admission ${decision.decision}: ${'reasonCode' in decision ? decision.reasonCode : 'incompatible'}${missing}`);
396
396
  }
397
397
  return bindComponentIdentity(caller, manifest, projection, activationId);
398
398
  }
@@ -410,7 +410,7 @@ export class TuiPluginHostRuntime extends Service {
410
410
  assertCallerContext(this.ctx, caller, 'DecisionEvents.subscribe', this);
411
411
  const identity = requireComponentIdentity(caller);
412
412
  if (!requiresDecisionEvents(identity)) {
413
- throw new Error(`dsh-tui: Component "${identity.componentId}" must require tui.dsh/v1alpha1#DecisionEvents before subscribing`);
413
+ throw new Error(`dsh-cli: Component "${identity.componentId}" must require tui.dsh/v1alpha1#DecisionEvents before subscribing`);
414
414
  }
415
415
  const previousMetadata = decisionHandlerMetadataOf(listener);
416
416
  const release = withDecisionRegistration(caller, () => registerDecisionHandler(caller, identity, event, listener, options, () => {
@@ -446,22 +446,22 @@ export class TuiPluginHostRuntime extends Service {
446
446
  // layer. Its traceable service proxy carries this context into register().
447
447
  const commands = caller.get('commands');
448
448
  if (commands === undefined) {
449
- throw new Error('dsh-tui: registerCommand unavailable — the commands service is not mounted on this context');
449
+ throw new Error('dsh-cli: registerCommand unavailable — the commands service is not mounted on this context');
450
450
  }
451
451
  const identity = requireComponentIdentity(caller);
452
452
  if (!requiresContract(identity, 'commands.dsh/v1alpha1', 'Command')) {
453
- throw new Error(`dsh-tui: Component "${identity.componentId}" must require commands.dsh/v1alpha1#Command before registering commands`);
453
+ throw new Error(`dsh-cli: Component "${identity.componentId}" must require commands.dsh/v1alpha1#Command before registering commands`);
454
454
  }
455
455
  const definition = typeof contributionOrDefinition === 'string' ? explicitDefinition : contributionOrDefinition;
456
456
  if (definition === undefined)
457
- throw new TypeError('dsh-tui: registerCommand requires a command definition');
457
+ throw new TypeError('dsh-cli: registerCommand requires a command definition');
458
458
  const name = typeof definition.name === 'string' ? definition.name : 'unknown';
459
459
  const inferred = identity.manifest.contributes.commands.filter(command => command.id === name || command.id.endsWith(`.${name}`));
460
460
  const contributionId = typeof contributionOrDefinition === 'string'
461
461
  ? contributionOrDefinition
462
462
  : inferred.length === 1 ? inferred[0].id : '';
463
463
  if (contributionId === '' || !declaresCommand(identity, contributionId)) {
464
- throw new TypeError(`dsh-tui: command "${name}" is not bound to a declared contribution id`);
464
+ throw new TypeError(`dsh-cli: command "${name}" is not bound to a declared contribution id`);
465
465
  }
466
466
  // dsh-commands normalizes into a fresh definition and intentionally drops
467
467
  // unknown fields. A per-registration handler wrapper survives that copy,
@@ -539,10 +539,10 @@ export class TuiPluginHostRuntime extends Service {
539
539
  throw new Error('commands service is not mounted for reversible command probe');
540
540
  }
541
541
  const service = commands;
542
- const name = `dsh_tui_live_probe_${randomUUID().replace(/-/g, '').slice(0, 12)}`;
542
+ const name = `dsh_cli_live_probe_${randomUUID().replace(/-/g, '').slice(0, 12)}`;
543
543
  const definition = {
544
544
  name,
545
- description: 'dsh-tui adapter reversible live probe',
545
+ description: 'dsh-cli adapter reversible live probe',
546
546
  handler: () => ({ kind: 'success', text: 'ok' }),
547
547
  };
548
548
  let dispose;
@@ -617,8 +617,8 @@ export class TuiPluginHostRuntime extends Service {
617
617
  return [...verifyRegistry(data), ...verifyContractProfiles(data)];
618
618
  }
619
619
  }
620
- const HOST_ADMISSION_TOKEN = Symbol('dsh-tui.host-admission');
621
- const HOST_ADMISSION_TEST_TOKEN = Symbol('dsh-tui.host-admission-test');
620
+ const HOST_ADMISSION_TOKEN = Symbol('dsh-cli.host-admission');
621
+ const HOST_ADMISSION_TEST_TOKEN = Symbol('dsh-cli.host-admission-test');
622
622
  /** Per-activation fiber -> host-issued opaque activation id (Cordis activation scope). */
623
623
  const activationFiberIds = new WeakMap();
624
624
  function issueActivationId(fiber) {
@@ -651,7 +651,7 @@ export function getHostInitialKernelRefreshForTest(runtime) {
651
651
  await state.initialKernelRefreshStarted;
652
652
  const refresh = state.initialKernelRefresh;
653
653
  if (refresh === undefined) {
654
- throw new Error('dsh-tui: host initial kernel refresh was not started');
654
+ throw new Error('dsh-cli: host initial kernel refresh was not started');
655
655
  }
656
656
  return refresh;
657
657
  },
@@ -731,17 +731,17 @@ function assertActivationContext(hostCtx, pluginCtx) {
731
731
  || caller === root
732
732
  || callerFiber === undefined
733
733
  || callerFiber === rootFiber) {
734
- throw new Error('dsh-tui: mediated capability requires a non-root activation context from the host composition');
734
+ throw new Error('dsh-cli: mediated capability requires a non-root activation context from the host composition');
735
735
  }
736
736
  return caller;
737
737
  }
738
738
  catch (error) {
739
- if (error instanceof Error && error.message.startsWith('dsh-tui:'))
739
+ if (error instanceof Error && error.message.startsWith('dsh-cli:'))
740
740
  throw error;
741
- throw new Error('dsh-tui: mediated capability requires a live activation context');
741
+ throw new Error('dsh-cli: mediated capability requires a live activation context');
742
742
  }
743
743
  }
744
- export const name = 'dsh-tui-plugin-host';
744
+ export const name = 'dsh-cli-plugin-host';
745
745
  export function apply(ctx) {
746
746
  // The plugin-host service first — the contract surfaces mounted below
747
747
  // read its grant store (they fall back to a private read only when mounted
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * storage.local contract surface (C-040, `storage.dsh/v1alpha1#LocalStorage`):
3
- * per-plugin private persistence, mounted by the dsh-tui-plugin-host row as
3
+ * per-plugin private persistence, mounted by the dsh-cli-plugin-host row as
4
4
  * `ctx.tuiPluginStorage`.
5
5
  *
6
6
  * The plugin-facing API is `open(ctx)` → `{ get, set, delete }`:
@@ -11,7 +11,7 @@
11
11
  * - GRANTS AT CALL TIME: `get` requires `storage.local.read`, `set`/`delete`
12
12
  * require `storage.local.write` — checked per call against the live grant
13
13
  * store (a revoked grant blocks the very next operation without restart).
14
- * - Backend: `~/.dsh-tui/plugin-storage/<namespace>.json`, one flat JSON
14
+ * - Backend: `~/.dsh-cli/plugin-storage/<namespace>.json`, one flat JSON
15
15
  * object per namespace. Writes go through dsh-atomic-write (`withFileLock`
16
16
  * for the read-modify-write cycle + `writeFileAtomic` for the commit), and
17
17
  * an in-process per-namespace promise chain serializes operations in
@@ -81,7 +81,7 @@ export declare const PLUGIN_STORAGE_DIR = "plugin-storage";
81
81
  export declare function storageFileName(plugin: string): string;
82
82
  /**
83
83
  * `ctx.tuiPluginStorage` — storage.local contract surface. Mounted by the
84
- * dsh-tui-plugin-host row; grants come from that row's store when present
84
+ * dsh-cli-plugin-host row; grants come from that row's store when present
85
85
  * (normal path) or a private read otherwise (bare mounts in tests).
86
86
  */
87
87
  export declare class TuiPluginStorageRuntime extends Service {
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * storage.local contract surface (C-040, `storage.dsh/v1alpha1#LocalStorage`):
3
- * per-plugin private persistence, mounted by the dsh-tui-plugin-host row as
3
+ * per-plugin private persistence, mounted by the dsh-cli-plugin-host row as
4
4
  * `ctx.tuiPluginStorage`.
5
5
  *
6
6
  * The plugin-facing API is `open(ctx)` → `{ get, set, delete }`:
@@ -11,7 +11,7 @@
11
11
  * - GRANTS AT CALL TIME: `get` requires `storage.local.read`, `set`/`delete`
12
12
  * require `storage.local.write` — checked per call against the live grant
13
13
  * store (a revoked grant blocks the very next operation without restart).
14
- * - Backend: `~/.dsh-tui/plugin-storage/<namespace>.json`, one flat JSON
14
+ * - Backend: `~/.dsh-cli/plugin-storage/<namespace>.json`, one flat JSON
15
15
  * object per namespace. Writes go through dsh-atomic-write (`withFileLock`
16
16
  * for the read-modify-write cycle + `writeFileAtomic` for the commit), and
17
17
  * an in-process per-namespace promise chain serializes operations in
@@ -212,7 +212,7 @@ function isJsonValue(value, seen) {
212
212
  }
213
213
  /**
214
214
  * `ctx.tuiPluginStorage` — storage.local contract surface. Mounted by the
215
- * dsh-tui-plugin-host row; grants come from that row's store when present
215
+ * dsh-cli-plugin-host row; grants come from that row's store when present
216
216
  * (normal path) or a private read otherwise (bare mounts in tests).
217
217
  */
218
218
  export class TuiPluginStorageRuntime extends Service {
@@ -280,7 +280,7 @@ export class TuiPluginStorageRuntime extends Service {
280
280
  async #runReversibleProbe() {
281
281
  assertCapabilityShadowPolicy('host.storage.liveProbe', storageStateFor(this).runtime.mode, storageStateFor(this).runtime.slices);
282
282
  const state = storageStateFor(this);
283
- const tempNamespace = `__dsh_tui_live_probe_${randomUUID().replace(/-/g, '')}`;
283
+ const tempNamespace = `__dsh_cli_live_probe_${randomUUID().replace(/-/g, '')}`;
284
284
  const file = join(state.dir, `${storageFileName(tempNamespace)}.json`);
285
285
  const operations = [];
286
286
  const identity = {
@@ -456,7 +456,7 @@ export class TuiPluginStorageRuntime extends Service {
456
456
  errorCode: 'PERMISSION_NOT_GRANTED',
457
457
  }, caller);
458
458
  throw new PluginStorageError('PERMISSION_NOT_GRANTED', `storage.${permission.endsWith('.read') ? 'get' : 'set/delete'} from plugin "${plugin}" denied — grant "${permission}" ` +
459
- `for "${plugin}" in ~/.dsh-tui/extension-grants.json first`);
459
+ `for "${plugin}" in ~/.dsh-cli/extension-grants.json first`);
460
460
  }
461
461
  };
462
462
  // withFileLock creates its lock as a SIBLING of the file and does not
@@ -12,13 +12,13 @@ export declare function initialPromptFromCmdlineArgs(args: readonly string[] | u
12
12
  * How this process should treat the TUI frontend, given the terminal it runs on.
13
13
  *
14
14
  * Three startup identities exist:
15
- * 1. `dsh-tui` / standalone — the user explicitly asked for the terminal UI;
16
- * 2. Web / Tauri / other GUI hosts — the profile merely has dsh-tui installed
17
- * and the current process is NOT a dsh-tui frontend. stdout is a pipe or
15
+ * 1. `dsh-cli` / standalone — the user explicitly asked for the terminal UI;
16
+ * 2. Web / Tauri / other GUI hosts — the profile merely has dsh-cli installed
17
+ * and the current process is NOT a dsh-cli frontend. stdout is a pipe or
18
18
  * null there, and mounting a TUI would fail the whole composition.
19
19
  *
20
20
  * The official launcher (and the standalone runtime) mark explicit launches,
21
- * so an explicit `dsh-tui` run without a TTY keeps failing loudly, while
21
+ * so an explicit `dsh-cli` run without a TTY keeps failing loudly, while
22
22
  * foreign hosts skip the plugin and let the host boot.
23
23
  */
24
24
  export type TuiHostMode = 'interactive' | 'invalid-explicit-launch' | 'headless-host';