dsh-ssh-tui 0.5.5 → 0.5.7

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.
@@ -33,7 +33,9 @@ export interface DisplayHostHandlers {
33
33
  onStdin(bytes: Buffer): void;
34
34
  onResize(columns: number, rows: number): void;
35
35
  onRtt?(rttMs: number | undefined): void;
36
- onDetach(): void;
36
+ onDetach(info?: {
37
+ replaced?: boolean;
38
+ }): void;
37
39
  onAttach(): void;
38
40
  }
39
41
  /**
@@ -46,6 +46,11 @@ export declare function wrapWaitDetails(detail: string, width: number, maxLines?
46
46
  * those ambiguous glyphs as two made `repeatToWidth('─', cols)` paint a
47
47
  * half-width rule and parked the input cursor half a cell past the text.
48
48
  *
49
+ * Emoji-bearing symbols are the exception: an emoji font draws them two cells
50
+ * wide even where wcwidth says one, and ✔ / ✖ from `npm test` spilled a row
51
+ * into the next card. Variation selectors are zero-width, so ✔️ counts once
52
+ * for the base plus nothing for VS16.
53
+ *
49
54
  * Overflow into the input box is handled by clipping/padding painted rows to
50
55
  * the measured column count, not by inflating glyph width.
51
56
  */
@@ -281,6 +281,13 @@ export declare class SshTui {
281
281
  * instead of leaving a leftover process.
282
282
  */
283
283
  private isBusyForHangupKeepalive;
284
+ /**
285
+ * Display socket closed. Replacing a leftover Display with a new HELLO,
286
+ * or closing a socket after we already detached, is not an SSH hangup.
287
+ */
288
+ handleDisplayDetach(info?: {
289
+ replaced?: boolean;
290
+ }): void;
284
291
  /**
285
292
  * SSH / TTY hangup: drop the local display, flush, and either keep the Host
286
293
  * (busy: thinking / reply / tools / subagents) or exit (idle).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-ssh-tui",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "SSH-friendly interactive terminal TUI plugin for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -22,7 +22,8 @@
22
22
  "url": "https://github.com/cyjyyd/dsh-ssh-tui/issues"
23
23
  },
24
24
  "publishConfig": {
25
- "access": "public"
25
+ "access": "public",
26
+ "registry": "https://registry.npmjs.org/"
26
27
  },
27
28
  "type": "module",
28
29
  "main": "lib/index.js",
@@ -56,7 +57,7 @@
56
57
  "patch": "./cordis.patch.yml"
57
58
  },
58
59
  "compatibility": {
59
- "dsh": ">=0.1.2-rc.1 <0.1.6",
60
+ "dsh": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
60
61
  "dshReleases": {
61
62
  "0.1.2-rc.1": "compatible",
62
63
  "0.1.3-alpha.1": "unknown",
@@ -92,20 +93,20 @@
92
93
  },
93
94
  "peerDependencies": {
94
95
  "@deepseek-ai/cordis": "^4.0.1",
95
- "@deepseek-ai/dsh-agent": ">=0.1.2-rc.1",
96
- "@deepseek-ai/dsh-agent-default-model": ">=0.1.2-rc.1",
97
- "@deepseek-ai/dsh-agent-loop": ">=0.1.2-rc.1",
98
- "@deepseek-ai/dsh-agent-presets": ">=0.1.2-rc.1",
99
- "@deepseek-ai/dsh-cmdline": ">=0.1.2-rc.1",
100
- "@deepseek-ai/dsh-commands": ">=0.1.2-rc.1",
101
- "@deepseek-ai/dsh-credentials": ">=0.1.2-rc.1",
102
- "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1",
103
- "@deepseek-ai/dsh-session": ">=0.1.2-rc.1",
104
- "@deepseek-ai/dsh-settings": ">=0.1.2-rc.1",
105
- "@deepseek-ai/dsh-subagent": ">=0.1.2-rc.1",
106
- "@deepseek-ai/dsh-user-approval": ">=0.1.2-rc.1",
107
- "@deepseek-ai/dsh-user-questions": ">=0.1.2-rc.1",
108
- "@deepseek-ai/dsh-session-persistence": ">=0.1.2-rc.1"
96
+ "@deepseek-ai/dsh-agent": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
97
+ "@deepseek-ai/dsh-agent-default-model": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
98
+ "@deepseek-ai/dsh-agent-loop": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
99
+ "@deepseek-ai/dsh-agent-presets": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
100
+ "@deepseek-ai/dsh-cmdline": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
101
+ "@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
102
+ "@deepseek-ai/dsh-credentials": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
103
+ "@deepseek-ai/dsh-llm": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
104
+ "@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
105
+ "@deepseek-ai/dsh-settings": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
106
+ "@deepseek-ai/dsh-subagent": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
107
+ "@deepseek-ai/dsh-user-approval": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
108
+ "@deepseek-ai/dsh-user-questions": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6",
109
+ "@deepseek-ai/dsh-session-persistence": ">=0.1.2-rc.1 <0.1.6 || >=0.1.3-alpha.2 <0.1.6 || >=0.1.5-alpha.1 <0.1.6"
109
110
  },
110
111
  "peerDependenciesMeta": {
111
112
  "@deepseek-ai/dsh-user-approval": {
@@ -124,36 +125,37 @@
124
125
  "devDependencies": {
125
126
  "@deepseek-ai/cordis": "^4.0.1",
126
127
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3",
127
- "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
128
- "@deepseek-ai/dsh-agent-default-model": "0.1.2-rc.1",
129
- "@deepseek-ai/dsh-agent-loop": "0.1.2-rc.1",
130
- "@deepseek-ai/dsh-agent-presets": "0.1.2-rc.1",
131
- "@deepseek-ai/dsh-atomic-write": "0.1.2-rc.1",
132
- "@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
133
- "@deepseek-ai/dsh-brand": "0.1.2-rc.1",
134
- "@deepseek-ai/dsh-cmdline": "0.1.2-rc.1",
135
- "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
136
- "@deepseek-ai/dsh-credentials": "0.1.2-rc.1",
137
- "@deepseek-ai/dsh-home-paths": "0.1.2-rc.1",
138
- "@deepseek-ai/dsh-invariants": "0.1.2-rc.1",
139
- "@deepseek-ai/dsh-jobs": "0.1.2-rc.1",
140
- "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
141
- "@deepseek-ai/dsh-sandbox": "0.1.2-rc.1",
142
- "@deepseek-ai/dsh-sandbox-policy": "0.1.2-rc.1",
143
- "@deepseek-ai/dsh-scope": "0.1.2-rc.1",
144
- "@deepseek-ai/dsh-session": "0.1.2-rc.1",
145
- "@deepseek-ai/dsh-session-persistence": "0.1.2-rc.1",
146
- "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
147
- "@deepseek-ai/dsh-session-projection-cache": "0.1.2-rc.1",
148
- "@deepseek-ai/dsh-settings": "0.1.2-rc.1",
149
- "@deepseek-ai/dsh-subagent": "0.1.2-rc.1",
150
- "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
151
- "@deepseek-ai/dsh-timeout": "0.1.2-rc.1",
152
- "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
153
- "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
154
- "@deepseek-ai/dsh-user-approval": "0.1.2-rc.1",
155
- "@deepseek-ai/dsh-user-questions": "0.1.2-rc.1",
128
+ "@deepseek-ai/dsh-agent": "0.1.5-rc.1",
129
+ "@deepseek-ai/dsh-agent-default-model": "0.1.5-rc.1",
130
+ "@deepseek-ai/dsh-agent-loop": "0.1.5-rc.1",
131
+ "@deepseek-ai/dsh-agent-presets": "0.1.5-rc.1",
132
+ "@deepseek-ai/dsh-atomic-write": "0.1.5-rc.1",
133
+ "@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
134
+ "@deepseek-ai/dsh-brand": "0.1.5-rc.1",
135
+ "@deepseek-ai/dsh-cmdline": "0.1.5-rc.1",
136
+ "@deepseek-ai/dsh-commands": "0.1.5-rc.1",
137
+ "@deepseek-ai/dsh-credentials": "0.1.5-rc.1",
138
+ "@deepseek-ai/dsh-home-paths": "0.1.5-rc.1",
139
+ "@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
140
+ "@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
141
+ "@deepseek-ai/dsh-llm": "0.1.5-rc.1",
142
+ "@deepseek-ai/dsh-sandbox": "0.1.5-rc.1",
143
+ "@deepseek-ai/dsh-sandbox-policy": "0.1.5-rc.1",
144
+ "@deepseek-ai/dsh-scope": "0.1.5-rc.1",
145
+ "@deepseek-ai/dsh-session": "0.1.5-rc.1",
146
+ "@deepseek-ai/dsh-session-persistence": "0.1.5-rc.1",
147
+ "@deepseek-ai/dsh-session-projection": "0.1.5-rc.1",
148
+ "@deepseek-ai/dsh-session-projection-cache": "0.1.5-rc.1",
149
+ "@deepseek-ai/dsh-settings": "0.1.5-rc.1",
150
+ "@deepseek-ai/dsh-subagent": "0.1.5-rc.1",
151
+ "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
152
+ "@deepseek-ai/dsh-timeout": "0.1.5-rc.1",
153
+ "@deepseek-ai/dsh-tools": "0.1.5-rc.1",
154
+ "@deepseek-ai/dsh-typert-protocol": "0.1.5-rc.1",
155
+ "@deepseek-ai/dsh-user-approval": "0.1.5-rc.1",
156
+ "@deepseek-ai/dsh-user-questions": "0.1.5-rc.1",
156
157
  "@types/node": "^24.0.0",
158
+ "semver": "^7.8.5",
157
159
  "typescript": "^5.9.0"
158
160
  }
159
161
  }