dsh-ssh-tui 0.7.3 → 0.7.4

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 (74) hide show
  1. package/README.en.md +98 -27
  2. package/README.md +77 -27
  3. package/docs/remote-ops.md +27 -1
  4. package/docs/terminals.md +17 -4
  5. package/docs/windows.md +128 -0
  6. package/lib/attach.js +14 -1
  7. package/lib/attach.js.map +1 -1
  8. package/lib/commands.js +1 -0
  9. package/lib/commands.js.map +1 -1
  10. package/lib/copy-text.js +2 -0
  11. package/lib/copy-text.js.map +1 -1
  12. package/lib/diag.js +3 -0
  13. package/lib/diag.js.map +1 -1
  14. package/lib/dialogs.js.map +1 -1
  15. package/lib/display-sock.js +313 -2
  16. package/lib/display-sock.js.map +1 -1
  17. package/lib/dsh-compat.js +46 -0
  18. package/lib/dsh-compat.js.map +1 -1
  19. package/lib/i18n/en.js +40 -14
  20. package/lib/i18n/en.js.map +1 -1
  21. package/lib/i18n/index.js +5 -0
  22. package/lib/i18n/index.js.map +1 -1
  23. package/lib/i18n/zh.js +40 -14
  24. package/lib/i18n/zh.js.map +1 -1
  25. package/lib/index.js +75 -15
  26. package/lib/index.js.map +1 -1
  27. package/lib/line-mode.js +4 -0
  28. package/lib/line-mode.js.map +1 -1
  29. package/lib/paint.js +32 -1
  30. package/lib/paint.js.map +1 -1
  31. package/lib/picker.js +104 -15
  32. package/lib/picker.js.map +1 -1
  33. package/lib/plan.js +8 -0
  34. package/lib/plan.js.map +1 -1
  35. package/lib/platform.js +81 -0
  36. package/lib/platform.js.map +1 -1
  37. package/lib/preset-rows.js +54 -24
  38. package/lib/preset-rows.js.map +1 -1
  39. package/lib/question-wait.js +418 -0
  40. package/lib/question-wait.js.map +1 -0
  41. package/lib/selection.js +26 -8
  42. package/lib/selection.js.map +1 -1
  43. package/lib/term-text.js +79 -8
  44. package/lib/term-text.js.map +1 -1
  45. package/lib/terminal-input.js +13 -0
  46. package/lib/terminal-input.js.map +1 -1
  47. package/lib/tui.js +597 -51
  48. package/lib/tui.js.map +1 -1
  49. package/lib/types/attach.d.ts +8 -0
  50. package/lib/types/commands.d.ts +3 -0
  51. package/lib/types/diag.d.ts +2 -0
  52. package/lib/types/dialogs.d.ts +16 -0
  53. package/lib/types/display-sock.d.ts +78 -2
  54. package/lib/types/dsh-compat.d.ts +44 -12
  55. package/lib/types/i18n/index.d.ts +13 -3
  56. package/lib/types/paint.d.ts +21 -0
  57. package/lib/types/picker.d.ts +22 -0
  58. package/lib/types/platform.d.ts +22 -0
  59. package/lib/types/preset-rows.d.ts +18 -10
  60. package/lib/types/question-wait.d.ts +221 -0
  61. package/lib/types/selection.d.ts +12 -4
  62. package/lib/types/settings-subagent.d.ts +3 -3
  63. package/lib/types/subagent-model.d.ts +3 -3
  64. package/lib/types/term-text.d.ts +14 -0
  65. package/lib/types/terminal-input.d.ts +10 -0
  66. package/lib/types/transcript-types.d.ts +22 -0
  67. package/lib/types/tui.d.ts +126 -3
  68. package/lib/types/update-check.d.ts +19 -4
  69. package/lib/types/workspace-changes.d.ts +135 -0
  70. package/lib/update-check.js +25 -8
  71. package/lib/update-check.js.map +1 -1
  72. package/lib/workspace-changes.js +120 -0
  73. package/lib/workspace-changes.js.map +1 -0
  74. package/package.json +80 -42
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Per-turn workspace change cards, read from the Host's `workspaceChanges`
3
+ * service (`@deepseek-ai/dsh-workspace-changes`, shipped with dsh 0.1.7).
4
+ *
5
+ * The service is not a dependency of this plugin: 0.1.5 has neither the
6
+ * package nor the `workspace/changes` event, so everything here is reached by
7
+ * feature detection and the local types below are copied from the service's
8
+ * contract rather than imported. Importing the package would fail to compile
9
+ * on the 0.1.5 tree, where the module does not exist.
10
+ *
11
+ * What the service serves lives only as long as the Session does, in this Host
12
+ * process. After a restart a replayed event resolves to `undefined`, and the
13
+ * upstream decision — which this module honours — is to show no card at all
14
+ * rather than a card whose contents can no longer be opened.
15
+ * @module dsh-ssh-tui/workspace-changes
16
+ */
17
+ import { t } from './i18n/index.js';
18
+ /**
19
+ * The `workspaceChanges` service, when this Host actually has one.
20
+ *
21
+ * Both methods have to be functions: a present-but-incomplete object (a stub,
22
+ * a future shape) must read as "not available" so the event is ignored instead
23
+ * of throwing when the card is built.
24
+ * @param ctx - the Host context.
25
+ * @returns the service, or undefined on a Host that never registered one.
26
+ */
27
+ export function workspaceChangesOf(ctx) {
28
+ const get = ctx.get;
29
+ if (typeof get !== 'function')
30
+ return undefined;
31
+ const service = get.call(ctx, 'workspaceChanges');
32
+ if (typeof service !== 'object' || service === null)
33
+ return undefined;
34
+ const candidate = service;
35
+ if (typeof candidate.summary !== 'function' || typeof candidate.diff !== 'function')
36
+ return undefined;
37
+ return service;
38
+ }
39
+ /** Whether a summary is worth a card. A turn that changed nothing is not. */
40
+ export function changesSummaryVisible(summary) {
41
+ return summary.total > 0 && summary.files.length > 0;
42
+ }
43
+ /** Collapsed-card header: `本轮改动 · 3 个文件 +42 -7`. */
44
+ export function changesHeader(summary) {
45
+ return t('changes.header', {
46
+ count: summary.total,
47
+ added: summary.added,
48
+ deleted: summary.deleted,
49
+ });
50
+ }
51
+ /**
52
+ * One expanded-card file line.
53
+ *
54
+ * Binary and oversized files carry no counts upstream, so naming the file and
55
+ * then printing `+0 -0` would report a change that was not measured. They get
56
+ * a label instead.
57
+ * @param file - one entry of the summary.
58
+ * @returns the line, without the card's indent.
59
+ */
60
+ export function changesFileLine(file) {
61
+ const label = file.display === '' ? file.path : file.display;
62
+ if (file.binary === true)
63
+ return `${label} ${t('changes.binary')}`;
64
+ if (file.oversized === true)
65
+ return `${label} ${t('changes.oversized')}`;
66
+ return `${label} +${file.added} -${file.deleted}`;
67
+ }
68
+ /**
69
+ * Files the cap left out, when there are any.
70
+ * @param summary - the turn's summary.
71
+ * @returns the trailing line, or undefined when every file is listed.
72
+ */
73
+ export function changesRemainderLine(summary) {
74
+ const omitted = summary.total - summary.files.length;
75
+ if (omitted <= 0)
76
+ return undefined;
77
+ return t('changes.more', { count: omitted });
78
+ }
79
+ /** `@@ -12,3 +12,4 @@`, the range a hunk covers on each side. */
80
+ function hunkRange(start, lines) {
81
+ return lines === 1 ? String(start) : `${start},${lines}`;
82
+ }
83
+ /**
84
+ * Render one file's comparison as overlay lines.
85
+ *
86
+ * The service already compared the two sides, so this only maps what it
87
+ * returned: recomputing the diff would be slower and could disagree with the
88
+ * counts the card already showed. A `+` line is an addition, a `-` line a
89
+ * removal, and a space-prefixed line is the unchanged context. Anything else
90
+ * (a hunk line the service did not prefix) is shown as context too — dropping
91
+ * it would hide part of the file.
92
+ * @param diff - the comparison `workspaceChanges.diff` returned.
93
+ * @returns the lines, or an empty list when there is nothing to show.
94
+ */
95
+ export function renderChangesDiff(diff) {
96
+ if (diff === undefined)
97
+ return [];
98
+ if (diff.kind === 'binary')
99
+ return [{ kind: 'tool-result', text: t('changes.binaryFile') }];
100
+ if (diff.kind === 'oversized')
101
+ return [{ kind: 'tool-result', text: t('changes.oversizedFile') }];
102
+ const lines = [];
103
+ if (diff.coarse)
104
+ lines.push({ kind: 'tool-result', text: t('changes.coarse') });
105
+ for (const hunk of diff.hunks) {
106
+ lines.push({
107
+ kind: 'diff-path',
108
+ text: `@@ -${hunkRange(hunk.oldStart, hunk.oldLines)} +${hunkRange(hunk.newStart, hunk.newLines)} @@`,
109
+ });
110
+ for (const raw of hunk.lines) {
111
+ const prefix = raw.charAt(0);
112
+ lines.push({
113
+ kind: prefix === '+' ? 'diff-add' : prefix === '-' ? 'diff-del' : 'tool-result',
114
+ text: raw,
115
+ });
116
+ }
117
+ }
118
+ return lines;
119
+ }
120
+ //# sourceMappingURL=workspace-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-changes.js","sourceRoot":"","sources":["../src/workspace-changes.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-ssh-tui",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "SSH-friendly interactive terminal TUI plugin for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -59,7 +59,8 @@
59
59
  "docs/screenshots/workspace.png",
60
60
  "docs/screenshots/slow-link.gif",
61
61
  "LICENSE",
62
- "docs/terminals.md"
62
+ "docs/terminals.md",
63
+ "docs/windows.md"
63
64
  ],
64
65
  "license": "MIT",
65
66
  "dsh": {
@@ -77,7 +78,8 @@
77
78
  "0.1.5-rc.1": "compatible",
78
79
  "0.1.5-rc.2": "compatible",
79
80
  "0.1.5-rc.3": "compatible",
80
- "0.1.7-rc.1": "compatible"
81
+ "0.1.7-rc.1": "compatible",
82
+ "0.1.7-rc.2": "compatible"
81
83
  },
82
84
  "profiles": [
83
85
  "tui"
@@ -92,10 +94,10 @@
92
94
  "prepare": "npm run build",
93
95
  "prepack": "npm run build",
94
96
  "prepublishOnly": "npm run typecheck",
95
- "install:dsh": "bash scripts/install.sh",
96
- "install:npm": "bash scripts/install-npm.sh",
97
- "uninstall:dsh": "bash scripts/uninstall.sh",
98
- "verify:dsh": "bash scripts/verify.sh",
97
+ "install:dsh": "node scripts/install.mjs",
98
+ "install:npm": "node scripts/install-npm.mjs",
99
+ "uninstall:dsh": "node scripts/uninstall.mjs",
100
+ "verify:dsh": "node scripts/verify.mjs",
99
101
  "probe:home": "node scripts/probe-home.mjs --probe",
100
102
  "probe:home:drop": "node scripts/probe-home.mjs --probe --script tui-drop-probe.mjs",
101
103
  "screenshots": "npm run build && node scripts/capture-readme-frames.mjs",
@@ -151,45 +153,81 @@
151
153
  }
152
154
  },
153
155
  "devDependencies": {
154
- "@deepseek-ai/cordis": "4.0.2",
156
+ "@deepseek-ai/cordis": "4.0.4",
157
+ "@deepseek-ai/cordis-plugin-group": "1.0.4",
155
158
  "@deepseek-ai/cordis-plugin-hmr": "1.0.17",
156
- "@deepseek-ai/cordis-plugin-include": "1.0.7",
157
- "@deepseek-ai/cordis-plugin-loader": "1.0.3",
158
- "@deepseek-ai/cordis-plugin-timer": "1.1.4",
159
- "@deepseek-ai/dsh": "0.1.5-rc.3",
160
- "@deepseek-ai/dsh-agent": "0.1.5-rc.3",
161
- "@deepseek-ai/dsh-agent-default-model": "0.1.5-rc.3",
162
- "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.3",
163
- "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.3",
164
- "@deepseek-ai/dsh-atomic-write": "0.1.5-rc.3",
165
- "@deepseek-ai/dsh-attachment": "0.1.5-rc.3",
166
- "@deepseek-ai/dsh-brand": "0.1.5-rc.3",
167
- "@deepseek-ai/dsh-cmdline": "0.1.5-rc.3",
168
- "@deepseek-ai/dsh-commands": "0.1.5-rc.3",
169
- "@deepseek-ai/dsh-credentials": "0.1.5-rc.3",
170
- "@deepseek-ai/dsh-home-paths": "0.1.5-rc.3",
171
- "@deepseek-ai/dsh-invariants": "0.1.5-rc.3",
172
- "@deepseek-ai/dsh-jobs": "0.1.5-rc.3",
173
- "@deepseek-ai/dsh-llm": "0.1.5-rc.3",
174
- "@deepseek-ai/dsh-llm-mock-server": "0.1.5-rc.3",
175
- "@deepseek-ai/dsh-sandbox": "0.1.5-rc.3",
176
- "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.3",
177
- "@deepseek-ai/dsh-scope": "0.1.5-rc.3",
178
- "@deepseek-ai/dsh-session": "0.1.5-rc.3",
179
- "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.3",
180
- "@deepseek-ai/dsh-session-projection": "0.1.5-rc.3",
181
- "@deepseek-ai/dsh-session-projection-cache": "0.1.5-rc.3",
182
- "@deepseek-ai/dsh-settings": "0.1.5-rc.3",
183
- "@deepseek-ai/dsh-subagent": "0.1.5-rc.3",
184
- "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.3",
185
- "@deepseek-ai/dsh-timeout": "0.1.5-rc.3",
186
- "@deepseek-ai/dsh-tools": "0.1.5-rc.3",
187
- "@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.3",
188
- "@deepseek-ai/dsh-user-approval": "0.1.5-rc.3",
189
- "@deepseek-ai/dsh-user-questions": "0.1.5-rc.3",
159
+ "@deepseek-ai/cordis-plugin-include": "1.0.9",
160
+ "@deepseek-ai/cordis-plugin-loader": "1.0.5",
161
+ "@deepseek-ai/cordis-plugin-timer": "1.1.6",
162
+ "@deepseek-ai/dsh": "0.1.7-rc.1",
163
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.1",
164
+ "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.1",
165
+ "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.1",
166
+ "@deepseek-ai/dsh-agent-preset": "0.1.7-rc.1",
167
+ "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.1",
168
+ "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.1",
169
+ "@deepseek-ai/dsh-attachment": "0.1.7-rc.1",
170
+ "@deepseek-ai/dsh-brand": "0.1.7-rc.1",
171
+ "@deepseek-ai/dsh-cmdline": "0.1.7-rc.1",
172
+ "@deepseek-ai/dsh-commands": "0.1.7-rc.1",
173
+ "@deepseek-ai/dsh-credentials": "0.1.7-rc.1",
174
+ "@deepseek-ai/dsh-home-paths": "0.1.7-rc.1",
175
+ "@deepseek-ai/dsh-invariants": "0.1.7-rc.1",
176
+ "@deepseek-ai/dsh-jobs": "0.1.7-rc.1",
177
+ "@deepseek-ai/dsh-llm": "0.1.7-rc.1",
178
+ "@deepseek-ai/dsh-llm-mock-server": "0.1.7-rc.1",
179
+ "@deepseek-ai/dsh-sandbox": "0.1.7-rc.1",
180
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.1",
181
+ "@deepseek-ai/dsh-scope": "0.1.7-rc.1",
182
+ "@deepseek-ai/dsh-session": "0.1.7-rc.1",
183
+ "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.1",
184
+ "@deepseek-ai/dsh-session-projection": "0.1.7-rc.1",
185
+ "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.1",
186
+ "@deepseek-ai/dsh-settings": "0.1.7-rc.1",
187
+ "@deepseek-ai/dsh-subagent": "0.1.7-rc.1",
188
+ "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.1",
189
+ "@deepseek-ai/dsh-timeout": "0.1.7-rc.1",
190
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.1",
191
+ "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.1",
192
+ "@deepseek-ai/dsh-user-approval": "0.1.7-rc.1",
193
+ "@deepseek-ai/dsh-user-questions": "0.1.7-rc.1",
190
194
  "@types/node": "^24.0.0",
191
195
  "@xterm/headless": "^6.0.0",
192
196
  "semver": "^7.8.5",
193
197
  "typescript": "^5.9.0"
198
+ },
199
+ "overrides": {
200
+ "@deepseek-ai/dsh": "0.1.7-rc.1",
201
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.1",
202
+ "@deepseek-ai/dsh-agent-default-model": "0.1.7-rc.1",
203
+ "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.1",
204
+ "@deepseek-ai/dsh-agent-preset": "0.1.7-rc.1",
205
+ "@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.1",
206
+ "@deepseek-ai/dsh-atomic-write": "0.1.7-rc.1",
207
+ "@deepseek-ai/dsh-attachment": "0.1.7-rc.1",
208
+ "@deepseek-ai/dsh-brand": "0.1.7-rc.1",
209
+ "@deepseek-ai/dsh-cmdline": "0.1.7-rc.1",
210
+ "@deepseek-ai/dsh-commands": "0.1.7-rc.1",
211
+ "@deepseek-ai/dsh-credentials": "0.1.7-rc.1",
212
+ "@deepseek-ai/dsh-home-paths": "0.1.7-rc.1",
213
+ "@deepseek-ai/dsh-invariants": "0.1.7-rc.1",
214
+ "@deepseek-ai/dsh-jobs": "0.1.7-rc.1",
215
+ "@deepseek-ai/dsh-llm": "0.1.7-rc.1",
216
+ "@deepseek-ai/dsh-llm-mock-server": "0.1.7-rc.1",
217
+ "@deepseek-ai/dsh-sandbox": "0.1.7-rc.1",
218
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.1",
219
+ "@deepseek-ai/dsh-scope": "0.1.7-rc.1",
220
+ "@deepseek-ai/dsh-session": "0.1.7-rc.1",
221
+ "@deepseek-ai/dsh-session-persistence": "0.1.7-rc.1",
222
+ "@deepseek-ai/dsh-session-projection": "0.1.7-rc.1",
223
+ "@deepseek-ai/dsh-session-projection-cache": "0.1.7-rc.1",
224
+ "@deepseek-ai/dsh-settings": "0.1.7-rc.1",
225
+ "@deepseek-ai/dsh-subagent": "0.1.7-rc.1",
226
+ "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.1",
227
+ "@deepseek-ai/dsh-timeout": "0.1.7-rc.1",
228
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.1",
229
+ "@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.1",
230
+ "@deepseek-ai/dsh-user-approval": "0.1.7-rc.1",
231
+ "@deepseek-ai/dsh-user-questions": "0.1.7-rc.1"
194
232
  }
195
233
  }