@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.
- package/bin/{dsh-tui.js → dsh-cli.js} +27 -27
- package/cordis.patch.yml +32 -32
- package/cordis.yml +17 -17
- package/lib/types/activityPrefs.d.ts +2 -2
- package/lib/types/activityPrefs.js +2 -2
- package/lib/types/adapter/channel/actions.js +1 -1
- package/lib/types/adapter/channel/consumer.js +1 -1
- package/lib/types/adapter/channel/internal-token.js +1 -1
- package/lib/types/adapter/channel/plugins.js +1 -1
- package/lib/types/adapter/channel/session-projection.js +3 -3
- package/lib/types/adapter/channel/transcript.js +1 -1
- package/lib/types/adapter/channel/ui.js +3 -3
- package/lib/types/adapter/kernel/host-facade.d.ts +1 -1
- package/lib/types/adapter/kernel/host-facade.js +6 -6
- package/lib/types/adapter/kernel/host-probe-access.d.ts +1 -1
- package/lib/types/adapter/kernel/host-probe-access.js +6 -6
- package/lib/types/adapter/kernel/kernel-runtime.js +1 -1
- package/lib/types/adapter/kernel/legacy-facade.d.ts +1 -1
- package/lib/types/adapter/kernel/legacy-facade.js +1 -1
- package/lib/types/adapter/kernel/replay-isolation.js +1 -1
- package/lib/types/adapter/kernel/runtime.d.ts +1 -1
- package/lib/types/adapter/kernel/runtime.js +7 -7
- package/lib/types/adapter/ports/channel-display.d.ts +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +15 -15
- package/lib/types/adapter/standard/descriptor.d.ts +1 -1
- package/lib/types/adapter/standard/descriptor.js +2 -2
- package/lib/types/adapter/standard/registry.d.ts +1 -1
- package/lib/types/adapter/standard/registry.js +2 -2
- package/lib/types/adapter/standard/tui-extension.d.ts +2 -2
- package/lib/types/adapter/standard/tui-extension.js +3 -3
- package/lib/types/adapter/upstream/channel-driver.js +10 -10
- package/lib/types/adapter/upstream/decisions-driver.js +3 -3
- package/lib/types/adapter/upstream/extensions-driver.js +18 -18
- package/lib/types/adapter/upstream/host-descriptor-driver.js +4 -4
- package/lib/types/adapter/upstream/presentation-driver.js +5 -5
- package/lib/types/adapter/upstream/scenes-driver.js +4 -4
- package/lib/types/adapter/upstream/settings-driver.js +4 -4
- package/lib/types/adapter/upstream/workspace-driver.js +2 -2
- package/lib/types/bootstrap/state.d.ts +4 -4
- package/lib/types/bootstrap/state.js +4 -4
- package/lib/types/{tuiDisplayPrefs.d.ts → cliDisplayPrefs.d.ts} +1 -1
- package/lib/types/{tuiDisplayPrefs.d.ts.map → cliDisplayPrefs.d.ts.map} +1 -1
- package/lib/types/{tuiDisplayPrefs.js → cliDisplayPrefs.js} +1 -1
- package/lib/types/commands.js +7 -7
- package/lib/types/components/AutoRecapRow.d.ts +1 -1
- package/lib/types/components/AutoRecapRow.js +1 -1
- package/lib/types/components/HelpMenu.d.ts +1 -1
- package/lib/types/components/HelpMenu.js +1 -1
- package/lib/types/components/LogoV2.d.ts +2 -2
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +5 -19
- package/lib/types/components/MermaidDiagram.js +1 -1
- package/lib/types/components/MessageList.d.ts +2 -2
- package/lib/types/components/MessageList.js +1 -1
- package/lib/types/components/PageMargin.d.ts +3 -3
- package/lib/types/components/PageMargin.js +1 -1
- package/lib/types/components/PluginSceneBoundary.d.ts +1 -1
- package/lib/types/components/PluginSceneBoundary.js +1 -1
- package/lib/types/components/PromptInput.d.ts +1 -1
- package/lib/types/components/PromptInput.js +3 -3
- package/lib/types/components/ScrollbarGutter.d.ts +1 -1
- package/lib/types/components/ScrollbarGutter.js +1 -1
- package/lib/types/components/Select.d.ts +1 -1
- package/lib/types/components/Select.js +1 -1
- package/lib/types/components/SplitDiffView.d.ts +1 -1
- package/lib/types/components/ThemePicker.d.ts +1 -1
- package/lib/types/components/ThemePicker.js +1 -1
- package/lib/types/components/activityFrames.d.ts +1 -1
- package/lib/types/components/activityFrames.js +1 -1
- package/lib/types/components/design-system/Byline.d.ts +1 -1
- package/lib/types/components/design-system/Byline.js +1 -1
- package/lib/types/components/design-system/Divider.d.ts +1 -1
- package/lib/types/components/design-system/Divider.js +1 -1
- package/lib/types/components/design-system/StatusIcon.d.ts +1 -1
- package/lib/types/components/design-system/StatusIcon.js +1 -1
- package/lib/types/components/design-system/ThemeProvider.d.ts +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +11 -11
- package/lib/types/components/design-system/ThemedBox.d.ts +1 -1
- package/lib/types/components/design-system/ThemedBox.js +1 -1
- package/lib/types/components/design-system/ThemedText.d.ts +1 -1
- package/lib/types/components/design-system/ThemedText.js +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +3 -3
- package/lib/types/components/messages/AssistantToolUseMessage.js +1 -1
- package/lib/types/components/messages/originalImage.js +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +1 -1
- package/lib/types/components/smoothReveal.d.ts +1 -1
- package/lib/types/components/smoothReveal.js +1 -1
- package/lib/types/customTheme.d.ts +5 -5
- package/lib/types/customTheme.js +7 -7
- package/lib/types/dsh-adapter/activity-store.d.ts +1 -1
- package/lib/types/dsh-adapter/activity-store.js +3 -3
- package/lib/types/dsh-adapter/bundled-presets.js +2 -2
- package/lib/types/dsh-adapter/channel/action-readiness.js +2 -2
- package/lib/types/dsh-adapter/channel/agent-view-projection.js +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +1 -1
- package/lib/types/dsh-adapter/channel/binding.js +14 -14
- package/lib/types/dsh-adapter/channel/external-commands.js +3 -3
- package/lib/types/dsh-adapter/channel/input-delivery.js +1 -1
- package/lib/types/dsh-adapter/channel/job-projection.js +1 -1
- package/lib/types/dsh-adapter/channel/lifetime-resources.js +1 -1
- package/lib/types/dsh-adapter/channel/local-actions.js +1 -1
- package/lib/types/dsh-adapter/channel/mode-actions.js +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission.js +6 -6
- package/lib/types/dsh-adapter/channel/mode-roster.js +1 -1
- package/lib/types/dsh-adapter/channel/owner.js +2 -2
- package/lib/types/dsh-adapter/channel/preferences.js +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +1 -1
- package/lib/types/dsh-adapter/channel/reports.js +3 -3
- package/lib/types/dsh-adapter/channel/session-fork.js +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-metadata.js +2 -2
- package/lib/types/dsh-adapter/channel/session-rewind.js +2 -2
- package/lib/types/dsh-adapter/channel/state.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/state.js +1 -1
- package/lib/types/dsh-adapter/channel/types.d.ts +1 -1
- package/lib/types/dsh-adapter/channel-ui.js +2 -2
- package/lib/types/dsh-adapter/channel.js +9 -9
- package/lib/types/dsh-adapter/cli-registration.d.ts.map +1 -1
- package/lib/types/dsh-adapter/cli-registration.js +5 -4
- package/lib/types/dsh-adapter/command-trees.d.ts +1 -1
- package/lib/types/dsh-adapter/command-trees.js +2 -2
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts +3 -3
- package/lib/types/dsh-adapter/compat/sessionLog.js +5 -5
- package/lib/types/dsh-adapter/compat/settings.d.ts.map +1 -1
- package/lib/types/dsh-adapter/compat/settings.js +15 -7
- package/lib/types/dsh-adapter/decision-guard.d.ts +3 -3
- package/lib/types/dsh-adapter/decision-guard.js +6 -6
- package/lib/types/dsh-adapter/dialogs.d.ts +1 -1
- package/lib/types/dsh-adapter/dialogs.js +7 -7
- package/lib/types/dsh-adapter/effect-ledger.d.ts +2 -2
- package/lib/types/dsh-adapter/effect-ledger.js +5 -5
- package/lib/types/dsh-adapter/extension-events.js +10 -10
- package/lib/types/dsh-adapter/extensions.d.ts +3 -3
- package/lib/types/dsh-adapter/extensions.js +3 -3
- package/lib/types/dsh-adapter/host-access.js +11 -11
- package/lib/types/dsh-adapter/ide-channel.d.ts +6 -6
- package/lib/types/dsh-adapter/ide-channel.js +6 -6
- package/lib/types/dsh-adapter/index.d.ts +18 -18
- package/lib/types/dsh-adapter/index.js +5 -5
- package/lib/types/dsh-adapter/inject-channel.d.ts +4 -4
- package/lib/types/dsh-adapter/inject-channel.js +5 -5
- package/lib/types/dsh-adapter/invariant.d.ts +1 -1
- package/lib/types/dsh-adapter/invariant.js +1 -1
- package/lib/types/dsh-adapter/message-observer.d.ts +2 -2
- package/lib/types/dsh-adapter/message-observer.js +23 -23
- package/lib/types/dsh-adapter/migrate/adapters/scan.js +1 -1
- package/lib/types/dsh-adapter/migrate/bin-path.d.ts +1 -1
- package/lib/types/dsh-adapter/migrate/bin-path.js +4 -4
- package/lib/types/dsh-adapter/migrate/picker.d.ts +1 -1
- package/lib/types/dsh-adapter/migrate/picker.js +1 -1
- package/lib/types/dsh-adapter/migrate/uuid.js +1 -1
- package/lib/types/dsh-adapter/packaged-presets.js +1 -1
- package/lib/types/dsh-adapter/plugin-host.d.ts +2 -2
- package/lib/types/dsh-adapter/plugin-host.js +32 -32
- package/lib/types/dsh-adapter/plugin-storage.d.ts +3 -3
- package/lib/types/dsh-adapter/plugin-storage.js +5 -5
- package/lib/types/dsh-adapter/plugin.d.ts +4 -4
- package/lib/types/dsh-adapter/plugin.js +89 -89
- package/lib/types/dsh-adapter/preset-resolution.d.ts +1 -1
- package/lib/types/dsh-adapter/presets.js +1 -1
- package/lib/types/dsh-adapter/promptDebug.js +1 -1
- package/lib/types/dsh-adapter/questions.d.ts +1 -1
- package/lib/types/dsh-adapter/questions.js +1 -1
- package/lib/types/dsh-adapter/renderers.js +7 -7
- package/lib/types/dsh-adapter/scenes.d.ts +1 -1
- package/lib/types/dsh-adapter/scenes.js +6 -6
- package/lib/types/dsh-adapter/settings-sections.d.ts +1 -1
- package/lib/types/dsh-adapter/settings-sections.js +5 -5
- package/lib/types/dsh-adapter/sharp.js +1 -1
- package/lib/types/dsh-adapter/shortcuts.js +9 -9
- package/lib/types/dsh-adapter/status.js +21 -21
- package/lib/types/dsh-adapter/themes.js +2 -2
- package/lib/types/dsh-adapter/toast.js +7 -7
- package/lib/types/dsh-adapter/workspaces.d.ts +1 -1
- package/lib/types/dsh-adapter/workspaces.js +6 -6
- package/lib/types/effortPrefs.d.ts +2 -2
- package/lib/types/effortPrefs.js +2 -2
- package/lib/types/force-production-react.js +1 -1
- package/lib/types/herdr.js +4 -4
- package/lib/types/homePrefs.js +1 -1
- package/lib/types/i18n.d.ts +54 -54
- package/lib/types/i18n.js +39 -39
- package/lib/types/ink/clearTerminal.d.ts +1 -1
- package/lib/types/ink/clearTerminal.js +1 -1
- package/lib/types/ink/colorize.js +1 -1
- package/lib/types/ink/components/App.d.ts +1 -1
- package/lib/types/ink/components/App.js +5 -5
- package/lib/types/ink/components/Text.d.ts +1 -1
- package/lib/types/ink/devtools.d.ts +1 -1
- package/lib/types/ink/dom.d.ts +1 -1
- package/lib/types/ink/dom.js +1 -1
- package/lib/types/ink/geometry-trace.js +4 -4
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +8 -19
- package/lib/types/ink/reconciler.d.ts +1 -1
- package/lib/types/ink/reconciler.d.ts.map +1 -1
- package/lib/types/ink/reconciler.js +6 -3
- package/lib/types/ink/render-to-screen.d.ts.map +1 -1
- package/lib/types/ink/render-to-screen.js +0 -5
- package/lib/types/ink/terminal.js +3 -3
- package/lib/types/ink/termio/osc.js +1 -1
- package/lib/types/ink/update-overflow-guard.js +2 -2
- package/lib/types/minimalMode.d.ts +2 -2
- package/lib/types/minimalMode.js +2 -2
- package/lib/types/modelGroups.d.ts +1 -1
- package/lib/types/modelGroups.js +1 -1
- package/lib/types/modelPrefs.d.ts +1 -1
- package/lib/types/modelPrefs.js +1 -1
- package/lib/types/modelRecents.d.ts +2 -2
- package/lib/types/modelRecents.js +2 -2
- package/lib/types/package-version.d.ts +3 -0
- package/lib/types/package-version.d.ts.map +1 -0
- package/lib/types/package-version.js +25 -0
- package/lib/types/presetPrefs.d.ts +1 -1
- package/lib/types/presetPrefs.js +1 -1
- package/lib/types/reload.d.ts +8 -8
- package/lib/types/reload.js +4 -4
- package/lib/types/screens/Chat.js +27 -27
- package/lib/types/screens/StatusLine.js +1 -1
- package/lib/types/screens/StatusMetrics.js +1 -1
- package/lib/types/sessionHistory.d.ts +3 -3
- package/lib/types/sessionHistory.js +7 -7
- package/lib/types/sessionModes.js +1 -1
- package/lib/types/sessionMounts.d.ts +1 -1
- package/lib/types/sessionMounts.js +1 -1
- package/lib/types/sessionPins.d.ts +1 -1
- package/lib/types/sessionPins.js +1 -1
- package/lib/types/terminal-utils/cliHighlight.d.ts +1 -1
- package/lib/types/terminal-utils/hash.d.ts +1 -1
- package/lib/types/terminal-utils/hash.js +1 -1
- package/lib/types/terminal-utils/mermaid.d.ts +1 -1
- package/lib/types/terminal-utils/syntaxTheme.js +1 -1
- package/lib/types/theme.d.ts +3 -3
- package/lib/types/theme.js +3 -3
- package/lib/types/themePrefs.d.ts +3 -3
- package/lib/types/themePrefs.js +3 -3
- package/lib/types/tips.js +4 -4
- package/lib/types/trajectory/effortIgnition.d.ts +1 -1
- package/lib/types/trajectoryPrefs.d.ts +1 -1
- package/lib/types/trajectoryPrefs.js +1 -1
- package/lib/types/ui.d.ts +1 -1
- package/lib/types/ui.js +1 -1
- package/lib/types/update.d.ts +25 -26
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +55 -73
- package/lib/types/utils/clipboard.js +1 -1
- package/lib/types/utils/credentials.js +2 -2
- package/lib/types/utils/debug.d.ts +3 -3
- package/lib/types/utils/debug.js +6 -6
- package/lib/types/utils/earlyInput.d.ts +1 -1
- package/lib/types/utils/earlyInput.js +1 -1
- package/lib/types/utils/externalEditor.js +1 -1
- package/lib/types/utils/fullscreen.d.ts +3 -3
- package/lib/types/utils/fullscreen.js +4 -4
- package/lib/types/utils/log.js +1 -1
- package/lib/types/utils/paths.d.ts +3 -3
- package/lib/types/utils/paths.js +4 -4
- package/lib/types/working-activity.js +1 -1
- package/node_modules/@askdkc/dsh-auth/dsh-plugin.json +1 -1
- package/node_modules/@askdkc/dsh-auth/lib/index.d.ts +2 -2
- package/node_modules/@askdkc/dsh-auth/lib/index.js +2 -2
- package/node_modules/@askdkc/dsh-auth/lib/pi-ai.d.ts +0 -2
- package/node_modules/@askdkc/dsh-auth/lib/pi-ai.js +0 -2
- package/node_modules/@askdkc/dsh-auth/lib/service.d.ts +1 -1
- package/node_modules/@askdkc/dsh-auth/lib/service.js +2 -2
- package/node_modules/dsh-working-activity/lib/client.js.map +1 -1
- package/node_modules/dsh-working-activity/lib/types/client/index.d.ts +1 -1
- package/node_modules/dsh-working-activity/lib/types/config.d.ts +2 -2
- package/node_modules/dsh-working-activity/lib/types/config.js +2 -2
- package/node_modules/dsh-working-activity/lib/types/frames.d.ts +1 -1
- package/node_modules/dsh-working-activity/lib/types/frames.js +1 -1
- package/node_modules/dsh-working-activity/lib/types/index.d.ts +1 -1
- package/node_modules/dsh-working-activity/lib/types/index.js +2 -2
- package/node_modules/dsh-working-activity/lib/types/lang.d.ts +5 -5
- package/node_modules/dsh-working-activity/lib/types/lang.js +8 -8
- package/node_modules/dsh-working-activity/lib/types/projection.d.ts +1 -1
- package/node_modules/dsh-working-activity/lib/types/projection.js +1 -1
- package/node_modules/dsh-working-activity/lib/types/status.d.ts +1 -1
- package/node_modules/dsh-working-activity/lib/types/status.js +1 -1
- package/node_modules/dsh-working-activity/src/client/index.ts +1 -1
- package/node_modules/dsh-working-activity/src/config.ts +2 -2
- package/node_modules/dsh-working-activity/src/frames.ts +1 -1
- package/node_modules/dsh-working-activity/src/index.ts +4 -4
- package/node_modules/dsh-working-activity/src/lang.ts +8 -8
- package/node_modules/dsh-working-activity/src/projection.ts +1 -1
- package/node_modules/dsh-working-activity/src/status.ts +1 -1
- package/package.json +8 -8
- package/presets/liangshen/agent.cordis.yml +1 -1
- package/presets/liangshen/custom-bash.mjs +2 -2
|
@@ -227,10 +227,10 @@ async function probeCommandLive(service) {
|
|
|
227
227
|
if (!hasFunction(service, 'register') || !hasFunction(service, 'list') || !hasFunction(service, 'find')) {
|
|
228
228
|
return { evidence: [], missing: ['commands.register()', 'commands.list()', 'commands.find()'] };
|
|
229
229
|
}
|
|
230
|
-
const name = `
|
|
230
|
+
const name = `dsh_cli_live_probe_${randomUUID().replace(/-/g, '').slice(0, 12)}`;
|
|
231
231
|
const definition = {
|
|
232
232
|
name,
|
|
233
|
-
description: 'dsh-
|
|
233
|
+
description: 'dsh-cli adapter reversible live probe',
|
|
234
234
|
handler: () => ({ kind: 'success', text: 'ok' }),
|
|
235
235
|
};
|
|
236
236
|
let dispose;
|
|
@@ -590,8 +590,8 @@ export async function refreshHostCapabilityLifecycles(ctx) {
|
|
|
590
590
|
}
|
|
591
591
|
/** The driver object for future kernel composition. */
|
|
592
592
|
export const hostDescriptorDriver = {
|
|
593
|
-
id: 'dsh-
|
|
594
|
-
upstreamFamily: 'dsh-
|
|
593
|
+
id: 'dsh-cli-host-descriptor',
|
|
594
|
+
upstreamFamily: 'dsh-cli',
|
|
595
595
|
capability: 'host.descriptor',
|
|
596
596
|
mountEffectClass: 'read-only',
|
|
597
597
|
detect: detectHostDescriptorCapability,
|
|
@@ -69,7 +69,7 @@ function createPresentationPort(ctx) {
|
|
|
69
69
|
async ask(request) {
|
|
70
70
|
const questionStore = getQuestionStore(ctx);
|
|
71
71
|
if (questionStore === undefined) {
|
|
72
|
-
throw new Error('dsh-
|
|
72
|
+
throw new Error('dsh-cli: host.presentation.ask is unavailable because no QuestionStore is mounted in this composition');
|
|
73
73
|
}
|
|
74
74
|
const answer = await questionStore.ask({
|
|
75
75
|
questions: request.questions.map(item => ({
|
|
@@ -90,9 +90,9 @@ function createPresentationPort(ctx) {
|
|
|
90
90
|
// pretending to be a working approval path.
|
|
91
91
|
const approvalStore = getApprovalStore(ctx);
|
|
92
92
|
if (approvalStore === undefined) {
|
|
93
|
-
throw new Error('dsh-
|
|
93
|
+
throw new Error('dsh-cli: host.presentation.approve is unavailable because no ApprovalStore is mounted in this composition');
|
|
94
94
|
}
|
|
95
|
-
throw new Error('dsh-
|
|
95
|
+
throw new Error('dsh-cli: host.presentation.approve is staged in P3; use the DSH approval/request waterfall which carries a live ApprovalRequest');
|
|
96
96
|
},
|
|
97
97
|
dialog(request) {
|
|
98
98
|
if (store === undefined)
|
|
@@ -116,8 +116,8 @@ function createPresentationPort(ctx) {
|
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
export const presentationDriver = {
|
|
119
|
-
id: 'dsh-
|
|
120
|
-
upstreamFamily: 'dsh-
|
|
119
|
+
id: 'dsh-cli-presentation',
|
|
120
|
+
upstreamFamily: 'dsh-cli',
|
|
121
121
|
capability: 'host.presentation',
|
|
122
122
|
mountEffectClass: 'mutate',
|
|
123
123
|
detect: detectPresentationCapability,
|
|
@@ -88,10 +88,10 @@ async function verifyScenesLive(ctx) {
|
|
|
88
88
|
}
|
|
89
89
|
const evidence = [serviceEvidence('tuiScenes')];
|
|
90
90
|
const missing = [];
|
|
91
|
-
const id = `
|
|
91
|
+
const id = `dsh_cli_probe_${randomUUID().replace(/-/g, '').slice(0, 12)}`;
|
|
92
92
|
const descriptor = {
|
|
93
93
|
id,
|
|
94
|
-
title: 'dsh-
|
|
94
|
+
title: 'dsh-cli reversible scene probe',
|
|
95
95
|
component: () => undefined,
|
|
96
96
|
};
|
|
97
97
|
let dispose;
|
|
@@ -156,8 +156,8 @@ function createScenesPort(host) {
|
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
export const scenesDriver = {
|
|
159
|
-
id: 'dsh-
|
|
160
|
-
upstreamFamily: 'dsh-
|
|
159
|
+
id: 'dsh-cli-scenes',
|
|
160
|
+
upstreamFamily: 'dsh-cli',
|
|
161
161
|
capability: 'host.scenes',
|
|
162
162
|
mountEffectClass: 'register',
|
|
163
163
|
detect: detectScenesCapability,
|
|
@@ -86,10 +86,10 @@ export async function verifySettingsLiveForHost(host) {
|
|
|
86
86
|
}
|
|
87
87
|
const evidence = [serviceEvidence('tuiSettingsSections')];
|
|
88
88
|
const missing = [];
|
|
89
|
-
const ns = `
|
|
89
|
+
const ns = `dsh_cli_probe_${randomUUID().replace(/-/g, '').slice(0, 12)}`;
|
|
90
90
|
const section = {
|
|
91
91
|
ns,
|
|
92
|
-
title: 'dsh-
|
|
92
|
+
title: 'dsh-cli reversible settings probe',
|
|
93
93
|
fields: [],
|
|
94
94
|
};
|
|
95
95
|
let dispose;
|
|
@@ -159,8 +159,8 @@ function createSettingsPort(host) {
|
|
|
159
159
|
});
|
|
160
160
|
}
|
|
161
161
|
export const settingsDriver = {
|
|
162
|
-
id: 'dsh-
|
|
163
|
-
upstreamFamily: 'dsh-
|
|
162
|
+
id: 'dsh-cli-settings',
|
|
163
|
+
upstreamFamily: 'dsh-cli',
|
|
164
164
|
capability: 'host.settings',
|
|
165
165
|
mountEffectClass: 'register',
|
|
166
166
|
detect: detectSettingsCapability,
|
|
@@ -184,8 +184,8 @@ function createWorkspacePort(host) {
|
|
|
184
184
|
});
|
|
185
185
|
}
|
|
186
186
|
export const workspaceDriver = {
|
|
187
|
-
id: 'dsh-
|
|
188
|
-
upstreamFamily: 'dsh-
|
|
187
|
+
id: 'dsh-cli-workspace',
|
|
188
|
+
upstreamFamily: 'dsh-cli',
|
|
189
189
|
capability: 'host.workspaces',
|
|
190
190
|
mountEffectClass: 'mutate',
|
|
191
191
|
detect: detectWorkspaceCapability,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interaction-time telemetry stubs used by the renderer's input and scroll
|
|
3
|
-
* paths. dsh-
|
|
3
|
+
* paths. dsh-cli does not track interaction time, so these hooks are no-ops.
|
|
4
4
|
*/
|
|
5
|
-
/** No-op interaction-time flush stub; dsh-
|
|
5
|
+
/** No-op interaction-time flush stub; dsh-cli does not track interaction time. */
|
|
6
6
|
export declare function flushInteractionTime(): void;
|
|
7
|
-
/** No-op interaction-time update stub; dsh-
|
|
7
|
+
/** No-op interaction-time update stub; dsh-cli does not track interaction time. */
|
|
8
8
|
export declare function updateLastInteractionTime(): void;
|
|
9
|
-
/** No-op scroll-activity stub; dsh-
|
|
9
|
+
/** No-op scroll-activity stub; dsh-cli does not track interaction time. */
|
|
10
10
|
export declare function markScrollActivity(): void;
|
|
11
11
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interaction-time telemetry stubs used by the renderer's input and scroll
|
|
3
|
-
* paths. dsh-
|
|
3
|
+
* paths. dsh-cli does not track interaction time, so these hooks are no-ops.
|
|
4
4
|
*/
|
|
5
|
-
/** No-op interaction-time flush stub; dsh-
|
|
5
|
+
/** No-op interaction-time flush stub; dsh-cli does not track interaction time. */
|
|
6
6
|
export function flushInteractionTime() { }
|
|
7
|
-
/** No-op interaction-time update stub; dsh-
|
|
7
|
+
/** No-op interaction-time update stub; dsh-cli does not track interaction time. */
|
|
8
8
|
export function updateLastInteractionTime() { }
|
|
9
|
-
/** No-op scroll-activity stub; dsh-
|
|
9
|
+
/** No-op scroll-activity stub; dsh-cli does not track interaction time. */
|
|
10
10
|
export function markScrollActivity() { }
|
|
@@ -46,4 +46,4 @@ export declare const applyPageMargin: (value: unknown) => PageMarginSetting;
|
|
|
46
46
|
export declare const subscribeMermaidDiagrams: (listener: () => void) => () => void;
|
|
47
47
|
export declare const getMermaidDiagrams: () => boolean;
|
|
48
48
|
export declare const applyMermaidDiagrams: (value: unknown) => boolean;
|
|
49
|
-
//# sourceMappingURL=
|
|
49
|
+
//# sourceMappingURL=cliDisplayPrefs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"cliDisplayPrefs.d.ts","sourceRoot":"","sources":["../../src/cliDisplayPrefs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAC9J,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAG9J,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,eAAe,CAuBvD,CAAA;AAMF,0EAA0E;AAC1E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAItE;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAItE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CASlE;AASD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,UAAO,GACb,MAAM,GAAG,SAAS,CASpB;AAED;;4CAE4C;AAC5C,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAK3G,CAAA;AAEF,eAAO,MAAM,mBAAmB,EAAE,cAAyB,CAAA;AAE3D;4CAC4C;AAC5C,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAQlC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE;AAED;wBACwB;AACxB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAO5E;AAED;;kCAEkC;AAClC,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAOrE;AAED;2EAC2E;AAC3E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAWxG;AAyCD,eAAO,MAAM,mBAAmB,aA5BR,MAAM,IAAI,KAAK,MAAM,IA4Be,CAAA;AAC5D,eAAO,MAAM,oBAAoB,yBAAsB,CAAA;AACvD,wFAAwF;AACxF,eAAO,MAAM,eAAe,UA3BX,OAAO,sBA2B4B,CAAA;AAMpD,eAAO,MAAM,wBAAwB,aArCb,MAAM,IAAI,KAAK,MAAM,IAqCyB,CAAA;AACtE,eAAO,MAAM,kBAAkB,eAA2B,CAAA;AAC1D,eAAO,MAAM,oBAAoB,UAnChB,OAAO,YAmCsC,CAAA"}
|
|
@@ -160,7 +160,7 @@ export const getPageMarginSetting = pageMarginStore.get;
|
|
|
160
160
|
/** Returns the value that ended up applied — the plugin mirrors it into the channel. */
|
|
161
161
|
export const applyPageMargin = pageMarginStore.apply;
|
|
162
162
|
/** Whether ```mermaid fences render as box-drawing diagrams (settings
|
|
163
|
-
* `dsh-
|
|
163
|
+
* `dsh-cli.mermaidDiagrams`, default on). Only an explicit `false` keeps
|
|
164
164
|
* the fenced source. */
|
|
165
165
|
const mermaidDiagramsStore = createLiveSetting(true, value => value !== false);
|
|
166
166
|
export const subscribeMermaidDiagrams = mermaidDiagramsStore.subscribe;
|
package/lib/types/commands.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Local slash commands for dsh-
|
|
2
|
+
* Local slash commands for dsh-cli, presented as `/name — description`.
|
|
3
3
|
* The built-in set is merged with plugin-registered
|
|
4
4
|
* commands (plan/goal/…) from the DSH command registry (`dsh-commands`) —
|
|
5
5
|
* `runCommand` in the Chat screen dispatches either kind, with the registry
|
|
@@ -39,7 +39,7 @@ export const LOCAL_COMMANDS = [
|
|
|
39
39
|
{ name: 'context', description: 'Show loaded context details' },
|
|
40
40
|
{ name: 'status', description: 'Show session status' },
|
|
41
41
|
{ name: 'cost', description: 'Show session token usage' },
|
|
42
|
-
{ name: 'config', description: 'Show the dsh-
|
|
42
|
+
{ name: 'config', description: 'Show the dsh-cli configuration source' },
|
|
43
43
|
{ name: 'reload', description: 'Reload preference files from disk and apply live' },
|
|
44
44
|
{ name: 'settings', description: 'View and edit plugin settings' },
|
|
45
45
|
{ name: 'doctor', description: 'Run environment checks' },
|
|
@@ -67,7 +67,7 @@ export const LOCAL_COMMANDS = [
|
|
|
67
67
|
{ name: 'mcp', description: 'Show MCP status' },
|
|
68
68
|
{ name: 'skills', description: 'List available skills' },
|
|
69
69
|
{ name: 'plugins', description: 'Show plugin contract, grant, and ledger diagnostics' },
|
|
70
|
-
{ name: 'update', description: 'Update dsh-
|
|
70
|
+
{ name: 'update', description: 'Update dsh-cli and restart' },
|
|
71
71
|
// Skills are discovered through the DSH registry and added at runtime.
|
|
72
72
|
// A local entry of the same name would win the collision filter.
|
|
73
73
|
// Misc / not applicable on this leaf
|
|
@@ -79,10 +79,10 @@ export const LOCAL_COMMANDS = [
|
|
|
79
79
|
// Help / exit
|
|
80
80
|
{ name: 'help', description: 'Show shortcuts and commands' },
|
|
81
81
|
{ name: 'tips', description: 'Show usage tips and shortcuts' },
|
|
82
|
-
{ name: 'restart', description: 'Restart dsh-
|
|
83
|
-
{ name: 'exit', description: 'Exit dsh-
|
|
84
|
-
{ name: 'quit', description: 'Exit dsh-
|
|
85
|
-
{ name: 'q', description: 'Exit dsh-
|
|
82
|
+
{ name: 'restart', description: 'Restart dsh-cli and resume this session' },
|
|
83
|
+
{ name: 'exit', description: 'Exit dsh-cli' },
|
|
84
|
+
{ name: 'quit', description: 'Exit dsh-cli', tag: 'alias of /exit' },
|
|
85
|
+
{ name: 'q', description: 'Exit dsh-cli', tag: 'alias of /exit' },
|
|
86
86
|
];
|
|
87
87
|
/**
|
|
88
88
|
* Hidden slash commands: intentionally not exposed in the `/` suggestion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
/**
|
|
3
|
-
* Auto-recap row (`dsh-
|
|
3
|
+
* Auto-recap row (`dsh-cli.recapOnOpen` setting): a quiet, dim recap shown
|
|
4
4
|
* at the bottom of the transcript after an automatic summary on session
|
|
5
5
|
* open/resume — a thin divider, then a `回顾:` line showing the session
|
|
6
6
|
* tail in FULL (wraps over lines rather than truncating, like a colleague
|
|
@@ -4,7 +4,7 @@ import { Box, Text } from '../ui.js';
|
|
|
4
4
|
import { Divider } from './design-system/Divider.js';
|
|
5
5
|
import { t } from '../i18n.js';
|
|
6
6
|
/**
|
|
7
|
-
* Auto-recap row (`dsh-
|
|
7
|
+
* Auto-recap row (`dsh-cli.recapOnOpen` setting): a quiet, dim recap shown
|
|
8
8
|
* at the bottom of the transcript after an automatic summary on session
|
|
9
9
|
* open/resume — a thin divider, then a `回顾:` line showing the session
|
|
10
10
|
* tail in FULL (wraps over lines rather than truncating, like a colleague
|
|
@@ -3,7 +3,7 @@ import { type ScrollBoxHandle } from '../ui.js';
|
|
|
3
3
|
import type { LocalCommand } from '../commands.js';
|
|
4
4
|
/**
|
|
5
5
|
* The `?` help menu with a three-column shortcut layout, trimmed to the keys
|
|
6
|
-
* dsh-
|
|
6
|
+
* dsh-cli actually binds.
|
|
7
7
|
* The command column lists the merged slash-command surface: built-in
|
|
8
8
|
* commands plus plugin-registered ones from the DSH registry (plan/goal/…).
|
|
9
9
|
* Skill entries (user-invocable skills merged for `/` completion, issue
|
|
@@ -6,7 +6,7 @@ import { t } from '../i18n.js';
|
|
|
6
6
|
import { modLabel } from '../utils/modifiers.js';
|
|
7
7
|
/**
|
|
8
8
|
* The `?` help menu with a three-column shortcut layout, trimmed to the keys
|
|
9
|
-
* dsh-
|
|
9
|
+
* dsh-cli actually binds.
|
|
10
10
|
* The command column lists the merged slash-command surface: built-in
|
|
11
11
|
* commands plus plugin-registered ones from the DSH registry (plan/goal/…).
|
|
12
12
|
* Skill entries (user-invocable skills merged for `/` completion, issue
|
|
@@ -29,10 +29,10 @@ export declare function LogoV2({ model, effort, cwd, skipIntro, intro, tip, whal
|
|
|
29
29
|
intro?: WhaleIntroId;
|
|
30
30
|
/** Test seam: pin the startup tip line (probes need a deterministic tip). */
|
|
31
31
|
tip?: Tip;
|
|
32
|
-
/** Show the pixel whale art (settings `dsh-
|
|
32
|
+
/** Show the pixel whale art (settings `dsh-cli.whale`); off → text-only header. */
|
|
33
33
|
whale?: boolean;
|
|
34
34
|
/** Welcome-phase idle whale behaviors — fin flutters, tail thumps,
|
|
35
|
-
* sleep after inactivity (settings `dsh-
|
|
35
|
+
* sleep after inactivity (settings `dsh-cli.whaleIdle`; on by default —
|
|
36
36
|
* an explicit `false` keeps the settled header timer-free). Click-hearts
|
|
37
37
|
* work regardless, until the freeze. */
|
|
38
38
|
whaleIdle?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoV2.d.ts","sourceRoot":"","sources":["../../../src/components/LogoV2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAiB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"LogoV2.d.ts","sourceRoot":"","sources":["../../../src/components/LogoV2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAiB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAA;AAWpD,OAAO,EAA+E,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAiCjI;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,MAAM,EACN,GAAG,EACH,SAAiB,EACjB,KAAK,EACL,GAAG,EACH,KAAY,EACZ,SAAgB,EAChB,OAAe,GAChB,EAAE;IACD,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,GAAG,CAAA;IACT,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;4CAGwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;mCAG+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,KAAK,CAAC,SAAS,CA+MlB"}
|
|
@@ -2,9 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { getLang, t as tr } from '../i18n.js';
|
|
4
4
|
import { pickRandomTip } from '../tips.js';
|
|
5
|
-
import {
|
|
6
|
-
import { dirname, join } from 'node:path';
|
|
7
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { installedCliVersion } from '../package-version.js';
|
|
8
6
|
import { Box, Text, useAnimationFrame, useTerminalSize } from '../ui.js';
|
|
9
7
|
import { getTheme } from '../theme.js';
|
|
10
8
|
import { useTheme } from './design-system/ThemeProvider.js';
|
|
@@ -21,20 +19,8 @@ import { initialWhaleIdleState, nextWhaleIdleStep, } from './whaleIdle.js';
|
|
|
21
19
|
const INTRO_HEART_PASS = [
|
|
22
20
|
WHALE_FRAME_INDEX.heart1, WHALE_FRAME_INDEX.heart2, WHALE_FRAME_INDEX.heart3,
|
|
23
21
|
];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* never drifts from the published version. Falls back to a literal when the
|
|
27
|
-
* package metadata is unreadable (unusual layouts).
|
|
28
|
-
*/
|
|
29
|
-
const VERSION = (() => {
|
|
30
|
-
try {
|
|
31
|
-
const pkgPath = join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..', 'package.json');
|
|
32
|
-
return JSON.parse(readFileSync(pkgPath, 'utf8')).version ?? '0.1.0';
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return '0.1.0';
|
|
36
|
-
}
|
|
37
|
-
})();
|
|
22
|
+
// Cache only the splash badge; update checks must reread package metadata.
|
|
23
|
+
const VERSION = installedCliVersion();
|
|
38
24
|
/**
|
|
39
25
|
* Center of the whale art's bounding box: sprite columns 3..34 (center
|
|
40
26
|
* 18.5) of the 40-wide box. The welcome tagline is indented so its own
|
|
@@ -134,7 +120,7 @@ export function LogoV2({ model, effort, cwd, skipIntro = false, intro, tip, whal
|
|
|
134
120
|
const wordmarkShimmerRGB = parseRGB(theme.accentShimmer) ?? ICE;
|
|
135
121
|
const taglineRGB = parseRGB(theme.activity) ?? ICE;
|
|
136
122
|
const { showWhale, showBigTitle, showPlainTitle } = resolveSplashLayout(columns, { whale });
|
|
137
|
-
// Welcome-phase idle behaviors (settings `dsh-
|
|
123
|
+
// Welcome-phase idle behaviors (settings `dsh-cli.whaleIdle`): fin
|
|
138
124
|
// flutters, tail thumps and blinks while idle, and a sleep-Z loop after
|
|
139
125
|
// sustained inactivity — all as INDEPENDENT layers composed per tick
|
|
140
126
|
// (whaleLayers.ts), so a click heart plays over a mid-wag tail or the
|
|
@@ -220,5 +206,5 @@ export function LogoV2({ model, effort, cwd, skipIntro = false, intro, tip, whal
|
|
|
220
206
|
setHeartSeq(0);
|
|
221
207
|
setHeartKey(k => k + 1);
|
|
222
208
|
}
|
|
223
|
-
}, children: _jsx(WhaleArt, { frameIndex: frameIndex, pose: settled && whaleIdle && !whaleFrozen ? (idlePose ?? RESTING_POSE) : undefined, width: WHALE_BOX_WIDTH }) })), (showBigTitle || showPlainTitle) && _jsxs(Box, { flexDirection: "column", flexShrink: 1, children: [_jsxs(Text, { wrap: "truncate-end", children: [sweep('✦ dsh-CLI', t, wordmarkRGB, wordmarkShimmerRGB, 60), _jsx(Text, { dimColor: true, children: ' v' + VERSION })] }), showBigTitle ? _jsxs(_Fragment, { children: [bigDeepSeek.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `ds-${index}`))), bigHarness.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `h-${index}`)))] }) : _jsx(Text, { color: "accent", bold: true, wrap: "truncate-end", children: "DeepSeek Harness" }), _jsxs(Text, { wrap: "truncate-end", children: [model, effort !== undefined && _jsx(Text, { dimColor: true, children: ' · ' + capitalize(effort) + ' effort' })] }), _jsx(Text, { dimColor: true, wrap: "truncate-end", children: cwd }), _jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { dimColor: true, children: tr('logo-tip-prefix') }), getLang() === 'zh' ? randomTip.zh : randomTip.en, _jsx(Text, { dimColor: true, children: ' · /tips ' + tr('logo-tip-more') })] })] })] }), _jsx(Box, { marginTop: 1, paddingLeft: welcomePad, children: _jsx(Text, { children: sweep(tagline, t, taglineRGB, FLASH, 60) }) })] }));
|
|
209
|
+
}, children: _jsx(WhaleArt, { frameIndex: frameIndex, pose: settled && whaleIdle && !whaleFrozen ? (idlePose ?? RESTING_POSE) : undefined, width: WHALE_BOX_WIDTH }) })), (showBigTitle || showPlainTitle) && _jsxs(Box, { flexDirection: "column", flexShrink: 1, children: [_jsxs(Text, { wrap: "truncate-end", children: [sweep('✦ dsh-CLI', t, wordmarkRGB, wordmarkShimmerRGB, 60), VERSION !== undefined && _jsx(Text, { dimColor: true, children: ' v' + VERSION })] }), showBigTitle ? _jsxs(_Fragment, { children: [bigDeepSeek.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `ds-${index}`))), bigHarness.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row }, `h-${index}`)))] }) : _jsx(Text, { color: "accent", bold: true, wrap: "truncate-end", children: "DeepSeek Harness" }), _jsxs(Text, { wrap: "truncate-end", children: [model, effort !== undefined && _jsx(Text, { dimColor: true, children: ' · ' + capitalize(effort) + ' effort' })] }), _jsx(Text, { dimColor: true, wrap: "truncate-end", children: cwd }), _jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { dimColor: true, children: tr('logo-tip-prefix') }), getLang() === 'zh' ? randomTip.zh : randomTip.en, _jsx(Text, { dimColor: true, children: ' · /tips ' + tr('logo-tip-more') })] })] })] }), _jsx(Box, { marginTop: 1, paddingLeft: welcomePad, children: _jsx(Text, { children: sweep(tagline, t, taglineRGB, FLASH, 60) }) })] }));
|
|
224
210
|
}
|
|
@@ -7,7 +7,7 @@ import { getTheme } from '../theme.js';
|
|
|
7
7
|
import { useTheme } from './design-system/ThemeProvider.js';
|
|
8
8
|
import { formatToken } from '../terminal-utils/markdown.js';
|
|
9
9
|
import { getMermaidEnginePromise, paintMermaidArt, peekMermaidEngine, renderMermaid, } from '../terminal-utils/mermaid.js';
|
|
10
|
-
import { getMermaidDiagrams, subscribeMermaidDiagrams } from '../
|
|
10
|
+
import { getMermaidDiagrams, subscribeMermaidDiagrams } from '../cliDisplayPrefs.js';
|
|
11
11
|
import { t } from '../i18n.js';
|
|
12
12
|
/**
|
|
13
13
|
* A ```mermaid fence rendered as Unicode box-drawing art.
|
|
@@ -4,7 +4,7 @@ import type { ChatRow } from '../dsh-adapter/channel.js';
|
|
|
4
4
|
import type { TranscriptImage } from '../dsh-adapter/transcript-images.js';
|
|
5
5
|
import type { DOMElement } from '../ink/dom.js';
|
|
6
6
|
import { type TimelineSnapshot } from '../ink/timeline-rail.js';
|
|
7
|
-
import type { ToolBackground } from '../
|
|
7
|
+
import type { ToolBackground } from '../cliDisplayPrefs.js';
|
|
8
8
|
/**
|
|
9
9
|
* Display form of an IDE-selection path (T-FIX-01): when the path lives
|
|
10
10
|
* under the session cwd, strip that prefix so the indicator line reads
|
|
@@ -44,7 +44,7 @@ export declare function MessageList({ rows, expanded, expandedRows, selectedId,
|
|
|
44
44
|
foldTerminalCommand?: boolean;
|
|
45
45
|
/** Smooth streaming reveal from the live channel settings (default off at
|
|
46
46
|
* this layer — embedders and verify harnesses keep exact-paint behavior;
|
|
47
|
-
* Chat passes the channel's `dsh-
|
|
47
|
+
* Chat passes the channel's `dsh-cli.smoothStreaming` value). */
|
|
48
48
|
smoothStreaming?: boolean;
|
|
49
49
|
/** Working-activity preset name from the channel; drives the subagent
|
|
50
50
|
* card's running glyph so both indicators follow one setting. */
|
|
@@ -26,7 +26,7 @@ import { getRevealVersion, revealLengthOf, revealTextOf } from './smoothReveal.j
|
|
|
26
26
|
import { useRevealVersion } from '../hooks/useRevealVersion.js';
|
|
27
27
|
import { TranscriptImages } from './messages/TranscriptImages.js';
|
|
28
28
|
/**
|
|
29
|
-
* Transcript rows rendered with the dsh-
|
|
29
|
+
* Transcript rows rendered with the dsh-CLI message layout: user prompts
|
|
30
30
|
* on a grey bubble with a `❯` pointer, assistant text with a `●` bullet and
|
|
31
31
|
* markdown, thinking as a live three-line/full toggle then a settled
|
|
32
32
|
* `⚓ Thinking` row with the localized ctrl+o expand hint, and tool calls as
|
|
@@ -4,9 +4,9 @@ import React from 'react';
|
|
|
4
4
|
* PowerShell 等 profile 默认 8px padding、GUI 终端)自带内缩,另一些
|
|
5
5
|
* (裸 WSL、tmux、SSH、部分嵌入宿主)完全没有——文字直接贴着屏幕四边,
|
|
6
6
|
* 观感压抑。TUI 无法读取终端的 padding,所以在根布局自备一层小"页边距"。
|
|
7
|
-
* 设置(`dsh-
|
|
7
|
+
* 设置(`dsh-cli.pageMargin`)可以是预设名 none / slim / normal(默认,
|
|
8
8
|
* 左右 2 列、上下 1 行)/ roomy,或自定义 `NxM`(左右各 N 列 × 上下各 M
|
|
9
|
-
* 行,如 3x1)——解析与几何见
|
|
9
|
+
* 行,如 3x1)——解析与几何见 cliDisplayPrefs。
|
|
10
10
|
*
|
|
11
11
|
* 实现策略(三层):
|
|
12
12
|
*
|
|
@@ -21,7 +21,7 @@ import React from 'react';
|
|
|
21
21
|
* 右键菜单)补偿——它们的锚点来自指针事件(屏幕坐标),而 absolute
|
|
22
22
|
* 盒子相对的是内缩后的内容区原点。
|
|
23
23
|
*
|
|
24
|
-
* 模式来源是
|
|
24
|
+
* 模式来源是 cliDisplayPrefs 的模块级 store(applyPageMargin),不是
|
|
25
25
|
* props:`.PageMargin` 位于 Chat 之上,/settings 的更改如果只走 channel
|
|
26
26
|
* 的版本 bump 无法驱动它(那只重渲染 Chat 以下)。store 由 plugin 的
|
|
27
27
|
* applyDisplay 镜像写入,模式变化时本组件重渲染并重布局。
|
|
@@ -3,7 +3,7 @@ import React from 'react';
|
|
|
3
3
|
import { Box } from '../ui.js';
|
|
4
4
|
import { TerminalSizeContext, } from '../ink/components/TerminalSizeContext.js';
|
|
5
5
|
import { useTerminalSize } from '../ink/hooks/use-terminal-size.js';
|
|
6
|
-
import { getPageMarginSetting, resolvePageMargin, subscribePageMargin, } from '../
|
|
6
|
+
import { getPageMarginSetting, resolvePageMargin, subscribePageMargin, } from '../cliDisplayPrefs.js';
|
|
7
7
|
/** 嵌套安全的 inset(若未来出现嵌套 PageMargin 会累加)。 */
|
|
8
8
|
export const PageInsetContext = React.createContext({ x: 0, y: 0 });
|
|
9
9
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Error boundary for plugin scenes (dsh-
|
|
2
|
+
* Error boundary for plugin scenes (dsh-cli-scenes). A scene component is
|
|
3
3
|
* third-party code rendered inside Chat's tree: without a boundary a render
|
|
4
4
|
* error propagates to ink's app-level boundary (src/ink/components/App.tsx)
|
|
5
5
|
* and takes the whole TUI down with it. Catching here collapses the blast
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Error boundary for plugin scenes (dsh-
|
|
2
|
+
* Error boundary for plugin scenes (dsh-cli-scenes). A scene component is
|
|
3
3
|
* third-party code rendered inside Chat's tree: without a boundary a render
|
|
4
4
|
* error propagates to ink's app-level boundary (src/ink/components/App.tsx)
|
|
5
5
|
* and takes the whole TUI down with it. Catching here collapses the blast
|
|
@@ -130,7 +130,7 @@ export interface PromptInputProps {
|
|
|
130
130
|
onDismissCaretPreview?(): void;
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
133
|
-
* dsh-
|
|
133
|
+
* dsh-CLI prompt input: rounded border box (top+bottom borders
|
|
134
134
|
* only), `❯ ` prompt char (dimmed while a turn is working), the text with a
|
|
135
135
|
* block cursor at the cursor position, and above it the slash-command /
|
|
136
136
|
* file-completion suggestion card (SuggestionCard: rounded panel with the
|
|
@@ -344,7 +344,7 @@ const EDITOR_CHROME_ROWS = 5;
|
|
|
344
344
|
*/
|
|
345
345
|
const DOUBLE_CLICK_MS = 500;
|
|
346
346
|
/**
|
|
347
|
-
* dsh-
|
|
347
|
+
* dsh-CLI prompt input: rounded border box (top+bottom borders
|
|
348
348
|
* only), `❯ ` prompt char (dimmed while a turn is working), the text with a
|
|
349
349
|
* block cursor at the cursor position, and above it the slash-command /
|
|
350
350
|
* file-completion suggestion card (SuggestionCard: rounded panel with the
|
|
@@ -501,7 +501,7 @@ export function PromptInput({ channel, suspended = false, draftCache, helpOpen,
|
|
|
501
501
|
const [, setExpandedTick] = React.useState(0);
|
|
502
502
|
const prevExpandedRef = React.useRef(false);
|
|
503
503
|
/**
|
|
504
|
-
* Feature gate (settings `dsh-
|
|
504
|
+
* Feature gate (settings `dsh-cli.expandEditor`, on by default; a mock
|
|
505
505
|
* channel without the field also reads as on). Off hides the ✎
|
|
506
506
|
* affordance and refuses the shortcut — the editor cannot open.
|
|
507
507
|
*/
|
|
@@ -3193,7 +3193,7 @@ export function PromptInput({ channel, suspended = false, draftCache, helpOpen,
|
|
|
3193
3193
|
(helpOpen || channel.pending.length > 0 || fileOverlayOpen || overlayOpen || peekOpen);
|
|
3194
3194
|
// 顶边框右侧的会话名标签 chip:色随强调色;超宽截断,宽度
|
|
3195
3195
|
// 随终端列数伸缩但不超过 28 显示单元。默认关闭——`/settings` 的
|
|
3196
|
-
// 「会话名标签」开关(dsh-
|
|
3196
|
+
// 「会话名标签」开关(dsh-cli.promptSessionLabel)开启后显示。
|
|
3197
3197
|
const sessionTitle = channel.sessionTitle ?? '';
|
|
3198
3198
|
const topRightLabel = channel.promptSessionLabel === true && sessionTitle !== ''
|
|
3199
3199
|
? {
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { type ScrollBoxHandle } from '../ui.js';
|
|
3
3
|
/**
|
|
4
4
|
* Proportional scrollbar for the fullscreen transcript's gutter — the
|
|
5
|
-
* `scrollbar` option of the `dsh-
|
|
5
|
+
* `scrollbar` option of the `dsh-cli.scrollGutter` setting (the timeline
|
|
6
6
|
* rail's sibling; same 2-column slot, same chrome rules):
|
|
7
7
|
*
|
|
8
8
|
* - the thumb (██) shows the visible window's position AND size over the
|
|
@@ -18,7 +18,7 @@ const CHIP_DWELL_MS = 250;
|
|
|
18
18
|
const PIN_SETTLE_CHECKS = 3;
|
|
19
19
|
/**
|
|
20
20
|
* Proportional scrollbar for the fullscreen transcript's gutter — the
|
|
21
|
-
* `scrollbar` option of the `dsh-
|
|
21
|
+
* `scrollbar` option of the `dsh-cli.scrollGutter` setting (the timeline
|
|
22
22
|
* rail's sibling; same 2-column slot, same chrome rules):
|
|
23
23
|
*
|
|
24
24
|
* - the thumb (██) shows the visible window's position AND size over the
|
|
@@ -7,7 +7,7 @@ export type SelectOption = {
|
|
|
7
7
|
description?: string;
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
|
-
* A single-choice select list with the standard dsh-
|
|
10
|
+
* A single-choice select list with the standard dsh-CLI visual treatment:
|
|
11
11
|
* ListItem rows with ❯ focus pointer, ✓ selected checkmark, descriptions,
|
|
12
12
|
* scroll arrows). Keyboard navigation is owned by the parent dialog, which
|
|
13
13
|
* passes focus/selection indices back in.
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import Box from '../ink/components/Box.js';
|
|
3
3
|
import { ListItem } from './design-system/ListItem.js';
|
|
4
4
|
/**
|
|
5
|
-
* A single-choice select list with the standard dsh-
|
|
5
|
+
* A single-choice select list with the standard dsh-CLI visual treatment:
|
|
6
6
|
* ListItem rows with ❯ focus pointer, ✓ selected checkmark, descriptions,
|
|
7
7
|
* scroll arrows). Keyboard navigation is owned by the parent dialog, which
|
|
8
8
|
* passes focus/selection indices back in.
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { ToolFileDiff } from '../dsh-adapter/channel.js';
|
|
3
3
|
export { chalkFromToken } from '../terminal-utils/syntaxTheme.js';
|
|
4
4
|
export { parseAnsiRuns, highlightLines } from '../terminal-utils/syntaxRuns.js';
|
|
5
|
-
import type { ToolBackground } from '../
|
|
5
|
+
import type { ToolBackground } from '../cliDisplayPrefs.js';
|
|
6
6
|
export declare function SplitDiffView({ diffs, width, maxRows, verbose, toolBackground, reveal, }: {
|
|
7
7
|
readonly diffs: readonly ToolFileDiff[];
|
|
8
8
|
/** Content width available to the whole two-pane block (divider included). */
|
|
@@ -12,7 +12,7 @@ export declare function getThemeOptions(themeHost?: TuiThemeHost): SelectOption[
|
|
|
12
12
|
* listing the `auto` pseudo-theme and built-in palettes first, followed by
|
|
13
13
|
* static JSON and plugin themes — each row shows the display name, base and
|
|
14
14
|
* three key color swatches; `❯` marks focus, `✓` the active theme. Enter
|
|
15
|
-
* applies through the ThemeProvider setter (persists to ~/.dsh-
|
|
15
|
+
* applies through the ThemeProvider setter (persists to ~/.dsh-cli/theme.json
|
|
16
16
|
* and hot swaps), Esc cancels.
|
|
17
17
|
*/
|
|
18
18
|
export declare function ThemePicker({ focusIndex, currentTheme, themeHost, onPick, }: {
|
|
@@ -45,7 +45,7 @@ export function getThemeOptions(themeHost) {
|
|
|
45
45
|
* listing the `auto` pseudo-theme and built-in palettes first, followed by
|
|
46
46
|
* static JSON and plugin themes — each row shows the display name, base and
|
|
47
47
|
* three key color swatches; `❯` marks focus, `✓` the active theme. Enter
|
|
48
|
-
* applies through the ThemeProvider setter (persists to ~/.dsh-
|
|
48
|
+
* applies through the ThemeProvider setter (persists to ~/.dsh-cli/theme.json
|
|
49
49
|
* and hot swaps), Esc cancels.
|
|
50
50
|
*/
|
|
51
51
|
export function ThemePicker({ focusIndex, currentTheme, themeHost, onPick, }) {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* keeps this shim so existing importers (`/activity` picker, status line,
|
|
5
5
|
* channel, activity prefs) resolve the same names without moving; all preset
|
|
6
6
|
* data (the pi-extension union, 35 presets) lives upstream.
|
|
7
|
-
* @module dsh-
|
|
7
|
+
* @module dsh-cli/components/activityFrames
|
|
8
8
|
*/
|
|
9
9
|
import { type FramePreset } from 'dsh-working-activity/frames';
|
|
10
10
|
export type { FramePreset };
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* keeps this shim so existing importers (`/activity` picker, status line,
|
|
5
5
|
* channel, activity prefs) resolve the same names without moving; all preset
|
|
6
6
|
* data (the pi-extension union, 35 presets) lives upstream.
|
|
7
|
-
* @module dsh-
|
|
7
|
+
* @module dsh-cli/components/activityFrames
|
|
8
8
|
*/
|
|
9
9
|
import { FRAME_PRESETS as upstreamPresets } from 'dsh-working-activity/frames';
|
|
10
10
|
export const DEFAULT_PRESET = 'moon8';
|
|
@@ -5,7 +5,7 @@ type Props = {
|
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
7
|
* Joins children with a middot separator (" · ") for inline metadata display
|
|
8
|
-
* (in the dsh-
|
|
8
|
+
* (in the dsh-CLI visual language). Automatically filters out
|
|
9
9
|
* null/undefined/false children and only renders separators between valid
|
|
10
10
|
* elements.
|
|
11
11
|
*/
|
|
@@ -3,7 +3,7 @@ import React, { Children, isValidElement } from 'react';
|
|
|
3
3
|
import Text from './ThemedText.js';
|
|
4
4
|
/**
|
|
5
5
|
* Joins children with a middot separator (" · ") for inline metadata display
|
|
6
|
-
* (in the dsh-
|
|
6
|
+
* (in the dsh-CLI visual language). Automatically filters out
|
|
7
7
|
* null/undefined/false children and only renders separators between valid
|
|
8
8
|
* elements.
|
|
9
9
|
*/
|
|
@@ -37,7 +37,7 @@ type DividerProps = {
|
|
|
37
37
|
};
|
|
38
38
|
/**
|
|
39
39
|
* A horizontal divider line, optionally with a title in the middle
|
|
40
|
-
* in the dsh-
|
|
40
|
+
* in the dsh-CLI visual language.
|
|
41
41
|
*
|
|
42
42
|
* The rule fills the width Yoga actually grants it: the Box is measured
|
|
43
43
|
* after layout (SearchBox pattern — a resize re-layouts without any prop
|
|
@@ -14,7 +14,7 @@ import { usePageInset } from '../PageMargin.js';
|
|
|
14
14
|
const MAX_APPLIED_MEASUREMENTS = 8;
|
|
15
15
|
/**
|
|
16
16
|
* A horizontal divider line, optionally with a title in the middle
|
|
17
|
-
* in the dsh-
|
|
17
|
+
* in the dsh-CLI visual language.
|
|
18
18
|
*
|
|
19
19
|
* The rule fills the width Yoga actually grants it: the Box is measured
|
|
20
20
|
* after layout (SearchBox pattern — a resize re-layouts without any prop
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
type Status = 'success' | 'error' | 'warning' | 'info' | 'pending' | 'loading';
|
|
3
3
|
/**
|
|
4
|
-
* A status indicator icon with the dsh-
|
|
4
|
+
* A status indicator icon with the dsh-CLI color mapping: ✓ green / ✗ red /
|
|
5
5
|
* ⚠ amber / ℹ blue /
|
|
6
6
|
* ○ dim / … dim.
|
|
7
7
|
*/
|