@lemoncat7/dsh-ssh 1.14.2 → 1.16.20

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 (114) hide show
  1. package/README.md +10 -3
  2. package/docs/releases/1.15.0.md +16 -0
  3. package/docs/releases/1.16.0.md +19 -0
  4. package/docs/releases/1.16.1.md +7 -0
  5. package/docs/releases/1.16.10.md +8 -0
  6. package/docs/releases/1.16.11.md +5 -0
  7. package/docs/releases/1.16.12.md +9 -0
  8. package/docs/releases/1.16.13.md +7 -0
  9. package/docs/releases/1.16.14.md +7 -0
  10. package/docs/releases/1.16.15.md +5 -0
  11. package/docs/releases/1.16.16.md +5 -0
  12. package/docs/releases/1.16.17.md +5 -0
  13. package/docs/releases/1.16.18.md +5 -0
  14. package/docs/releases/1.16.19.md +21 -0
  15. package/docs/releases/1.16.2.md +7 -0
  16. package/docs/releases/1.16.20.md +7 -0
  17. package/docs/releases/1.16.3.md +11 -0
  18. package/docs/releases/1.16.4.md +10 -0
  19. package/docs/releases/1.16.5.md +9 -0
  20. package/docs/releases/1.16.6.md +7 -0
  21. package/docs/releases/1.16.7.md +7 -0
  22. package/docs/releases/1.16.8.md +19 -0
  23. package/docs/releases/1.16.9.md +7 -0
  24. package/lib/api.d.ts.map +1 -1
  25. package/lib/api.js +29 -1
  26. package/lib/api.js.map +1 -1
  27. package/lib/client-api.d.ts +1 -0
  28. package/lib/client-api.d.ts.map +1 -1
  29. package/lib/client-api.js.map +1 -1
  30. package/lib/client.d.ts.map +1 -1
  31. package/lib/client.js +381 -140
  32. package/lib/client.js.map +4 -4
  33. package/lib/commands-panel.js +1 -1
  34. package/lib/commands-panel.js.map +1 -1
  35. package/lib/domain.d.ts +3 -0
  36. package/lib/domain.d.ts.map +1 -1
  37. package/lib/domain.js +2 -0
  38. package/lib/domain.js.map +1 -1
  39. package/lib/file-transfer-workspace.d.ts.map +1 -1
  40. package/lib/file-transfer-workspace.js +4 -4
  41. package/lib/file-transfer-workspace.js.map +1 -1
  42. package/lib/host-action-menu.d.ts +10 -0
  43. package/lib/host-action-menu.d.ts.map +1 -0
  44. package/lib/host-action-menu.js +32 -0
  45. package/lib/host-action-menu.js.map +1 -0
  46. package/lib/host-select.d.ts +9 -0
  47. package/lib/host-select.d.ts.map +1 -0
  48. package/lib/host-select.js +92 -0
  49. package/lib/host-select.js.map +1 -0
  50. package/lib/locales/messages.d.ts +256 -0
  51. package/lib/locales/messages.d.ts.map +1 -1
  52. package/lib/locales/messages.js +64 -0
  53. package/lib/locales/messages.js.map +1 -1
  54. package/lib/profile-editor.d.ts.map +1 -1
  55. package/lib/profile-editor.js +4 -1
  56. package/lib/profile-editor.js.map +1 -1
  57. package/lib/remote-workspace-tree.d.ts +4 -0
  58. package/lib/remote-workspace-tree.d.ts.map +1 -1
  59. package/lib/remote-workspace-tree.js +97 -34
  60. package/lib/remote-workspace-tree.js.map +1 -1
  61. package/lib/settings-pane.js +1 -1
  62. package/lib/settings-pane.js.map +1 -1
  63. package/lib/sftp-client.d.ts +3 -1
  64. package/lib/sftp-client.d.ts.map +1 -1
  65. package/lib/sftp-client.js +11 -10
  66. package/lib/sftp-client.js.map +1 -1
  67. package/lib/sftp-path-mapping.d.ts +9 -0
  68. package/lib/sftp-path-mapping.d.ts.map +1 -0
  69. package/lib/sftp-path-mapping.js +36 -0
  70. package/lib/sftp-path-mapping.js.map +1 -0
  71. package/lib/sftp.js +1 -1
  72. package/lib/sftp.js.map +1 -1
  73. package/lib/split-icon.d.ts +4 -0
  74. package/lib/split-icon.d.ts.map +1 -0
  75. package/lib/split-icon.js +5 -0
  76. package/lib/split-icon.js.map +1 -0
  77. package/lib/sync-panel.js +1 -1
  78. package/lib/sync-panel.js.map +1 -1
  79. package/lib/terminal-bootstrap-echo.d.ts +1 -1
  80. package/lib/terminal-bootstrap-echo.d.ts.map +1 -1
  81. package/lib/terminal-bootstrap-echo.js +57 -19
  82. package/lib/terminal-bootstrap-echo.js.map +1 -1
  83. package/lib/terminal-desk-state.d.ts +71 -0
  84. package/lib/terminal-desk-state.d.ts.map +1 -0
  85. package/lib/terminal-desk-state.js +205 -0
  86. package/lib/terminal-desk-state.js.map +1 -0
  87. package/lib/terminal-desk.d.ts +16 -0
  88. package/lib/terminal-desk.d.ts.map +1 -0
  89. package/lib/terminal-desk.js +197 -0
  90. package/lib/terminal-desk.js.map +1 -0
  91. package/lib/terminal-session.d.ts +5 -1
  92. package/lib/terminal-session.d.ts.map +1 -1
  93. package/lib/terminal-session.js +52 -18
  94. package/lib/terminal-session.js.map +1 -1
  95. package/lib/terminal-transport.d.ts.map +1 -1
  96. package/lib/terminal-transport.js +7 -4
  97. package/lib/terminal-transport.js.map +1 -1
  98. package/lib/terminal-workspace-state.d.ts +45 -0
  99. package/lib/terminal-workspace-state.d.ts.map +1 -0
  100. package/lib/terminal-workspace-state.js +110 -0
  101. package/lib/terminal-workspace-state.js.map +1 -0
  102. package/lib/terminal-workspace.d.ts +2 -1
  103. package/lib/terminal-workspace.d.ts.map +1 -1
  104. package/lib/terminal-workspace.js +43 -19
  105. package/lib/terminal-workspace.js.map +1 -1
  106. package/lib/terminal.d.ts +10 -3
  107. package/lib/terminal.d.ts.map +1 -1
  108. package/lib/terminal.js +33 -4
  109. package/lib/terminal.js.map +1 -1
  110. package/lib/vault-password-dialog.d.ts +7 -0
  111. package/lib/vault-password-dialog.d.ts.map +1 -0
  112. package/lib/vault-password-dialog.js +80 -0
  113. package/lib/vault-password-dialog.js.map +1 -0
  114. package/package.json +1 -1
@@ -1,4 +1,41 @@
1
- /** Removes exact, uniquely tagged bootstrap echoes, never their execution output.
1
+ /** A comparison-only view. Raw bytes are retained until an exact bootstrap match. */
2
+ function echoView(raw) {
3
+ let text = '', incomplete = raw.length;
4
+ const offsets = [];
5
+ for (let i = 0; i < raw.length;) {
6
+ // Readline can force a right-margin wrap by writing an extra blank then CR.
7
+ // CRLF is an ordinary newline and must not consume a real preceding space.
8
+ if (raw[i] === ' ' && raw[i + 1] === '\r') {
9
+ if (i + 2 === raw.length) {
10
+ incomplete = i;
11
+ break;
12
+ }
13
+ if (raw[i + 2] !== '\n') {
14
+ i += 2;
15
+ continue;
16
+ }
17
+ }
18
+ if (raw[i] === '\x1b') {
19
+ const tail = raw.slice(i);
20
+ const csi = /^\x1b\[[0-?]*[ -/]*[@-~]/.exec(tail);
21
+ if (csi) {
22
+ i += csi[0].length;
23
+ continue;
24
+ }
25
+ if (tail === '\x1b' || /^\x1b\[[0-?]*[ -/]*$/.test(tail)) {
26
+ incomplete = i;
27
+ break;
28
+ }
29
+ }
30
+ if (raw[i] !== '\r' && raw[i] !== '\n') {
31
+ text += raw[i];
32
+ offsets.push(i);
33
+ }
34
+ i++;
35
+ }
36
+ return { text, offsets, incomplete };
37
+ }
38
+ /** Removes only exact, uniquely tagged bootstrap echoes, never execution output.
2
39
  * A mismatch/timeout is fail-open: original bytes are displayed unchanged.
3
40
  */
4
41
  export class TerminalBootstrapEcho {
@@ -20,35 +57,36 @@ export class TerminalBootstrapEcho {
20
57
  this.pending += text;
21
58
  let output = '';
22
59
  while (!this.done) {
23
- const start = this.pending.indexOf(this.start);
24
- const completed = this.pending.indexOf(this.completed);
60
+ const view = echoView(this.pending);
61
+ const start = view.text.indexOf(this.start);
62
+ const completed = view.text.indexOf(this.completed);
25
63
  if (completed >= 0 && (start < 0 || completed < start)) {
26
- output += this.pending.slice(0, completed) + this.pending.slice(completed + this.completed.length);
64
+ const begin = view.offsets[completed], end = view.offsets[completed + this.completed.length - 1] + 1;
65
+ output += this.pending.slice(0, begin) + this.pending.slice(end);
27
66
  this.pending = '';
28
67
  this.done = true;
29
68
  return output;
30
69
  }
31
70
  if (start < 0) {
32
- // Retain only a possible marker prefix split between transport chunks.
33
- let keep = Math.min(Math.max(this.start.length, this.completed.length) - 1, this.pending.length);
34
- while (keep > 0 && !this.start.startsWith(this.pending.slice(-keep)) && !this.completed.startsWith(this.pending.slice(-keep)))
71
+ let keep = Math.min(Math.max(this.start.length, this.completed.length) - 1, view.text.length);
72
+ while (keep > 0 && !this.start.startsWith(view.text.slice(-keep)) && !this.completed.startsWith(view.text.slice(-keep)))
35
73
  keep--;
36
- output += this.pending.slice(0, this.pending.length - keep);
37
- this.pending = this.pending.slice(this.pending.length - keep);
74
+ const cutoff = keep ? view.offsets[view.text.length - keep] : view.incomplete;
75
+ output += this.pending.slice(0, cutoff);
76
+ this.pending = this.pending.slice(cutoff);
38
77
  return output;
39
78
  }
40
- output += this.pending.slice(0, start);
41
- this.pending = this.pending.slice(start);
42
- const end = this.pending.indexOf(this.end, this.start.length);
43
- if (end < 0)
79
+ const begin = view.offsets[start];
80
+ const end = view.text.indexOf(this.end, start + this.start.length);
81
+ if (end < 0) {
82
+ output += this.pending.slice(0, begin);
83
+ this.pending = this.pending.slice(begin);
44
84
  return output + (this.pending.length > 65_536 ? this.flush() : '');
45
- const length = end + this.end.length;
46
- const candidate = this.pending.slice(0, length);
47
- // PTYs may wrap with CR/LF and readline may insert CSI styling sequences.
48
- const normalized = candidate.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, '').replace(/[\r\n]/g, '');
49
- if (normalized !== this.command)
85
+ }
86
+ if (view.text.slice(start, end + this.end.length) !== this.command)
50
87
  return output + this.flush();
51
- this.pending = this.pending.slice(length);
88
+ output += this.pending.slice(0, begin);
89
+ this.pending = this.pending.slice(view.offsets[end + this.end.length - 1] + 1);
52
90
  }
53
91
  return output;
54
92
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-bootstrap-echo.js","sourceRoot":"","sources":["../src/terminal-bootstrap-echo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-bootstrap-echo.js","sourceRoot":"","sources":["../src/terminal-bootstrap-echo.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,IAAI,GAAG,EAAE,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAA;IACtC,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;QAChC,4EAA4E;QAC5E,2EAA2E;QAC3E,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;gBAAC,UAAU,GAAG,CAAC,CAAC;gBAAC,MAAK;YAAC,CAAC;YACnD,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAAC,CAAC,IAAI,CAAC,CAAC;gBAAC,SAAQ;YAAC,CAAC;QAC/C,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACzB,MAAM,GAAG,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACjD,IAAI,GAAG,EAAE,CAAC;gBAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAAC,SAAQ;YAAC,CAAC;YACzC,IAAI,IAAI,KAAK,MAAM,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,UAAU,GAAG,CAAC,CAAC;gBAAC,MAAK;YAAC,CAAC;QACrF,CAAC;QACD,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;QAC3E,CAAC,EAAE,CAAA;IACL,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAGH;IAAkC;IAAgC;IAA8B;IAFrH,OAAO,GAAG,EAAE,CAAA;IACZ,IAAI,GAAG,KAAK,CAAA;IACpB,YAA6B,OAAe,EAAmB,KAAa,EAAmB,GAAW,EAAmB,SAAiB;QAAjH,YAAO,GAAP,OAAO,CAAQ;QAAmB,UAAK,GAAL,KAAK,CAAQ;QAAmB,QAAG,GAAH,GAAG,CAAQ;QAAmB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAElJ,IAAI,CAAC,IAAY;QACf,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QAC1B,IAAI,CAAC,OAAO,IAAI,IAAI,CAAA;QACpB,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACnD,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAE,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,CAAC,CAAA;gBACtG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAChE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;gBACnC,OAAO,MAAM,CAAA;YACf,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC7F,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;oBAAE,IAAI,EAAE,CAAA;gBAC/H,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAA;gBAC9E,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;gBACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACzC,OAAO,MAAM,CAAA;YACf,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAE,CAAA;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YAClE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACZ,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAChF,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACpE,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO;gBAAE,OAAO,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;YAChG,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;YACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,CAAA;QACjF,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAA;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;CACF"}
@@ -0,0 +1,71 @@
1
+ import { BrowserTerminalHandle } from './terminal-workspace-state.js';
2
+ export interface DeskTarget {
3
+ profileId: string;
4
+ path: string;
5
+ label?: string | undefined;
6
+ }
7
+ export interface DeskPane extends DeskTarget {
8
+ id: number;
9
+ directory?: string | undefined;
10
+ handle: BrowserTerminalHandle;
11
+ autoConnect: boolean;
12
+ phase: 'idle' | 'connecting' | 'connected' | 'error';
13
+ }
14
+ export type DeskLayout = number | {
15
+ direction: 'horizontal' | 'vertical';
16
+ first: DeskLayout;
17
+ second: DeskLayout;
18
+ };
19
+ export interface DeskTab extends DeskTarget {
20
+ id: number;
21
+ panes: DeskPane[];
22
+ layout: DeskLayout;
23
+ focused: number;
24
+ filesOnly: boolean;
25
+ }
26
+ export interface PaneRect {
27
+ id: number;
28
+ left: number;
29
+ top: number;
30
+ width: number;
31
+ height: number;
32
+ }
33
+ /** Horizontal means side by side; vertical means top and bottom. Existing leaves never move in the DOM. */
34
+ export declare function deskPaneRects(layout: DeskLayout, rect?: {
35
+ left: number;
36
+ top: number;
37
+ width: number;
38
+ height: number;
39
+ }): PaneRect[];
40
+ export type DeskLayoutMode = 'single' | 'horizontal' | 'vertical' | 'grid';
41
+ export declare function deskLayoutSize(mode: DeskLayoutMode): number;
42
+ export declare function deskLayoutMode(tab: DeskTab): DeskLayoutMode;
43
+ export declare class TerminalDeskState {
44
+ readonly scope: string;
45
+ tabs: DeskTab[];
46
+ activeId: number;
47
+ private changing;
48
+ private serial;
49
+ private revision;
50
+ private listeners;
51
+ private readonly key;
52
+ constructor(scope: string);
53
+ get activeTab(): DeskTab | undefined;
54
+ get currentPane(): DeskPane | undefined;
55
+ subscribe: (listener: () => void) => (() => void);
56
+ snapshot: () => number;
57
+ save: () => void;
58
+ private makePane;
59
+ open(target: DeskTarget, fresh?: boolean, connect?: boolean): DeskTab;
60
+ focus(id: number): void;
61
+ focusPane(tabId: number, paneId: number): void;
62
+ setFilesOnly(value: boolean): void;
63
+ /** Reductions require an explicit keep list and the pane snapshot shown in the confirmation dialog. */
64
+ applyLayout(tabId: number, mode: DeskLayoutMode, remove: (id: string) => Promise<void>, keepIds?: number[], expectedIds?: number[]): Promise<unknown[]>;
65
+ setPhase(id: number, phase: DeskPane['phase']): void;
66
+ setDirectory(id: number, directory: string | undefined): void;
67
+ private removePanes;
68
+ close(ids: number[], remove: (id: string) => Promise<void>): Promise<unknown[]>;
69
+ }
70
+ export declare function terminalDesk(scope: string): TerminalDeskState;
71
+ //# sourceMappingURL=terminal-desk-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-desk-state.d.ts","sourceRoot":"","sources":["../src/terminal-desk-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ import { BrowserTerminalHandle, readTerminalStorage, writeTerminalStorage, readWorkbenchState } from './terminal-workspace-state.js';
2
+ /** Horizontal means side by side; vertical means top and bottom. Existing leaves never move in the DOM. */
3
+ export function deskPaneRects(layout, rect = { left: 0, top: 0, width: 100, height: 100 }) {
4
+ if (typeof layout === 'number')
5
+ return [{ id: layout, ...rect }];
6
+ const horizontal = layout.direction === 'horizontal';
7
+ const first = { ...rect, ...(horizontal ? { width: rect.width / 2 } : { height: rect.height / 2 }) };
8
+ const second = { ...first, ...(horizontal ? { left: rect.left + first.width } : { top: rect.top + first.height }) };
9
+ return [...deskPaneRects(layout.first, first), ...deskPaneRects(layout.second, second)];
10
+ }
11
+ export function deskLayoutSize(mode) { return mode === 'single' ? 1 : mode === 'grid' ? 4 : 2; }
12
+ function fixedLayout(ids, mode) {
13
+ if (ids.length === 1)
14
+ return ids[0];
15
+ if (mode === 'grid' || ids.length > 2)
16
+ return { direction: 'vertical', first: { direction: 'horizontal', first: ids[0], second: ids[1] }, second: { direction: 'horizontal', first: ids[2] ?? 0, second: ids[3] ?? 0 } };
17
+ return { direction: mode === 'vertical' ? 'vertical' : 'horizontal', first: ids[0], second: ids[1] };
18
+ }
19
+ export function deskLayoutMode(tab) {
20
+ return tab.panes.length === 1 ? 'single' : tab.panes.length > 2 ? 'grid' : typeof tab.layout !== 'number' && tab.layout.direction === 'vertical' ? 'vertical' : 'horizontal';
21
+ }
22
+ function pruneLayout(raw, remaining, seen = new Set(), depth = 0) {
23
+ if (typeof raw === 'number') {
24
+ if (!remaining.has(raw) || seen.has(raw))
25
+ return;
26
+ seen.add(raw);
27
+ return raw;
28
+ }
29
+ if (!raw || depth > 8 || !['horizontal', 'vertical'].includes(raw.direction))
30
+ return;
31
+ const first = pruneLayout(raw.first, remaining, seen, depth + 1), second = pruneLayout(raw.second, remaining, seen, depth + 1);
32
+ return first === undefined ? second : second === undefined ? first : { direction: raw.direction, first, second };
33
+ }
34
+ export class TerminalDeskState {
35
+ scope;
36
+ tabs = [];
37
+ activeId = 0;
38
+ changing = new Set();
39
+ serial = 0;
40
+ revision = 0;
41
+ listeners = new Set();
42
+ key;
43
+ constructor(scope) {
44
+ this.scope = scope;
45
+ this.key = 'dsh-ssh:terminal-desk:v2:' + scope;
46
+ const saved = readTerminalStorage(this.key), legacy = readTerminalStorage('dsh-ssh:terminal-desk:v1:' + scope);
47
+ let rows = [], active = saved?.activeId;
48
+ if (Array.isArray(saved?.tabs))
49
+ rows = saved.tabs;
50
+ else {
51
+ let previous = [];
52
+ if (Array.isArray(legacy?.tabs)) {
53
+ previous = legacy.tabs;
54
+ active = legacy.view?.focused;
55
+ }
56
+ else
57
+ for (const host of readWorkbenchState(scope).hosts) {
58
+ const old = readTerminalStorage('dsh-ssh:terminals:v1:' + JSON.stringify([scope, host]));
59
+ if (Array.isArray(old?.tabs))
60
+ previous.push(...old.tabs.map((tab) => ({ ...tab, id: ++this.serial, profileId: host })));
61
+ }
62
+ // Each old tab stays independent, including tabs previously displayed side by side.
63
+ rows = previous.map(tab => ({ ...tab, panes: [tab], layout: tab.id, focused: tab.id, filesOnly: false }));
64
+ }
65
+ const tabIds = new Set(), paneIds = new Set();
66
+ for (const row of rows.slice(0, 32)) {
67
+ if (!Number.isSafeInteger(row?.id) || row.id < 1 || tabIds.has(row.id) || typeof row.profileId !== 'string' || typeof row.path !== 'string' || !Array.isArray(row.panes))
68
+ continue;
69
+ const panes = [];
70
+ for (const pane of row.panes.slice(0, 4)) {
71
+ if (!Number.isSafeInteger(pane?.id) || pane.id < 1 || paneIds.has(pane.id) || typeof pane.path !== 'string')
72
+ continue;
73
+ paneIds.add(pane.id);
74
+ panes.push({ id: pane.id, profileId: row.profileId, path: pane.path, label: typeof pane.label === 'string' ? pane.label : undefined, directory: typeof pane.directory === 'string' ? pane.directory : undefined, handle: new BrowserTerminalHandle(typeof pane.terminalId === 'string' ? pane.terminalId : undefined, this.save), autoConnect: false, phase: 'idle' });
75
+ }
76
+ if (!panes.length)
77
+ continue;
78
+ tabIds.add(row.id);
79
+ const seen = new Set();
80
+ let layout = pruneLayout(row.layout, new Set(panes.map(pane => pane.id)), seen);
81
+ for (const pane of panes)
82
+ if (!seen.has(pane.id))
83
+ layout = layout === undefined ? pane.id : { direction: 'horizontal', first: layout, second: pane.id };
84
+ this.tabs.push({ id: row.id, profileId: row.profileId, path: row.path, label: typeof row.label === 'string' ? row.label : undefined, panes, layout: layout, focused: panes.some(pane => pane.id === row.focused) ? row.focused : panes[0].id, filesOnly: row.filesOnly === true });
85
+ }
86
+ for (const tab of this.tabs) {
87
+ const order = deskPaneRects(tab.layout).sort((a, b) => a.top - b.top || a.left - b.left).map(rect => rect.id);
88
+ tab.panes.sort((a, b) => order.indexOf(a.id) - order.indexOf(b.id));
89
+ tab.layout = fixedLayout(tab.panes.map(pane => pane.id), deskLayoutMode(tab));
90
+ }
91
+ this.serial = Math.max(0, ...tabIds, ...paneIds);
92
+ this.activeId = tabIds.has(active) ? active : this.tabs[0]?.id ?? 0;
93
+ this.save();
94
+ }
95
+ get activeTab() { return this.tabs.find(tab => tab.id === this.activeId); }
96
+ get currentPane() { const tab = this.activeTab; return tab?.panes.find(pane => pane.id === tab.focused); }
97
+ subscribe = (listener) => { this.listeners.add(listener); return () => this.listeners.delete(listener); };
98
+ snapshot = () => this.revision;
99
+ save = () => {
100
+ writeTerminalStorage(this.key, { tabs: this.tabs.map(tab => ({ ...tab, panes: tab.panes.map(({ handle, phase, autoConnect, ...pane }) => ({ ...pane, terminalId: handle.id })) })), activeId: this.activeId });
101
+ this.revision++;
102
+ for (const listener of this.listeners)
103
+ listener();
104
+ };
105
+ makePane(target, connect) { return { ...target, id: ++this.serial, handle: new BrowserTerminalHandle(undefined, this.save), autoConnect: connect, phase: 'idle' }; }
106
+ open(target, fresh = false, connect = true) {
107
+ let tab = !fresh ? [...this.tabs].reverse().find(tab => tab.profileId === target.profileId && tab.path === target.path) : undefined;
108
+ if (!tab) {
109
+ if (this.tabs.length >= 32)
110
+ throw new Error('最多保留 32 个终端标签,请先关闭不再使用的标签。');
111
+ const pane = this.makePane(target, connect);
112
+ tab = { ...target, id: pane.id, panes: [pane], layout: pane.id, focused: pane.id, filesOnly: !connect };
113
+ this.tabs.push(tab);
114
+ }
115
+ this.activeId = tab.id;
116
+ this.save();
117
+ return tab;
118
+ }
119
+ focus(id) { if (!this.tabs.some(tab => tab.id === id))
120
+ return; this.activeId = id; this.save(); }
121
+ focusPane(tabId, paneId) {
122
+ const tab = this.tabs.find(tab => tab.id === tabId);
123
+ if (!tab?.panes.some(pane => pane.id === paneId) || (this.activeId === tabId && tab.focused === paneId))
124
+ return;
125
+ this.activeId = tabId;
126
+ tab.focused = paneId;
127
+ this.save();
128
+ }
129
+ setFilesOnly(value) { if (this.activeTab) {
130
+ this.activeTab.filesOnly = value;
131
+ this.save();
132
+ } }
133
+ /** Reductions require an explicit keep list and the pane snapshot shown in the confirmation dialog. */
134
+ async applyLayout(tabId, mode, remove, keepIds, expectedIds) {
135
+ const tab = this.tabs.find(tab => tab.id === tabId);
136
+ if (!tab || !['single', 'horizontal', 'vertical', 'grid'].includes(mode))
137
+ throw new Error('Terminal layout is unavailable');
138
+ if (this.changing.has(tabId))
139
+ throw new Error('Terminal layout is changing');
140
+ const count = deskLayoutSize(mode), ids = tab.panes.map(pane => pane.id);
141
+ if (count < ids.length && (!expectedIds || expectedIds.length !== ids.length || expectedIds.some((id, index) => id !== ids[index]) || !keepIds || keepIds.length !== count || new Set(keepIds).size !== count || keepIds.some(id => !ids.includes(id))))
142
+ throw new Error('Terminal selection changed; select the panes to keep again');
143
+ this.changing.add(tabId);
144
+ try {
145
+ if (count < ids.length) {
146
+ const errors = await this.removePanes(ids.filter(id => !keepIds.includes(id)), remove);
147
+ if (errors.length)
148
+ return errors;
149
+ }
150
+ const source = tab.panes.find(pane => pane.id === tab.focused) ?? tab.panes[0];
151
+ while (tab.panes.length < count)
152
+ tab.panes.push(this.makePane({ profileId: source.profileId, path: source.directory ?? source.path, label: source.label }, true));
153
+ tab.layout = fixedLayout(tab.panes.map(pane => pane.id), mode);
154
+ tab.filesOnly = false;
155
+ this.save();
156
+ return [];
157
+ }
158
+ finally {
159
+ this.changing.delete(tabId);
160
+ }
161
+ }
162
+ setPhase(id, phase) { const pane = this.tabs.flatMap(tab => tab.panes).find(pane => pane.id === id); if (pane && pane.phase !== phase) {
163
+ pane.phase = phase;
164
+ this.save();
165
+ } }
166
+ setDirectory(id, directory) { const pane = this.tabs.flatMap(tab => tab.panes).find(pane => pane.id === id); if (pane && pane.directory !== directory) {
167
+ pane.directory = directory;
168
+ this.save();
169
+ } }
170
+ async removePanes(ids, remove) {
171
+ const panes = this.tabs.flatMap(tab => tab.panes).filter(pane => ids.includes(pane.id));
172
+ const results = await Promise.allSettled(panes.map(async (pane) => { await pane.handle.close(remove); return pane.id; }));
173
+ const closed = new Set(results.flatMap(result => result.status === 'fulfilled' ? [result.value] : []));
174
+ for (const tab of this.tabs) {
175
+ const mode = deskLayoutMode(tab);
176
+ tab.panes = tab.panes.filter(pane => !closed.has(pane.id));
177
+ if (!tab.panes.length)
178
+ continue;
179
+ tab.layout = fixedLayout(tab.panes.map(pane => pane.id), tab.panes.length > 2 ? 'grid' : mode === 'vertical' ? 'vertical' : 'horizontal');
180
+ if (!tab.panes.some(pane => pane.id === tab.focused))
181
+ tab.focused = tab.panes[0].id;
182
+ }
183
+ const index = this.tabs.findIndex(tab => tab.id === this.activeId);
184
+ this.tabs = this.tabs.filter(tab => tab.panes.length);
185
+ if (!this.activeTab)
186
+ this.activeId = this.tabs[Math.min(Math.max(index, 0), this.tabs.length - 1)]?.id ?? 0;
187
+ this.save();
188
+ return results.flatMap(result => result.status === 'rejected' ? [result.reason] : []);
189
+ }
190
+ async close(ids, remove) {
191
+ if (ids.some(id => this.changing.has(id)))
192
+ return [new Error('Terminal layout is changing')];
193
+ return this.removePanes(this.tabs.filter(tab => ids.includes(tab.id)).flatMap(tab => tab.panes.map(pane => pane.id)), remove);
194
+ }
195
+ }
196
+ const desks = new Map();
197
+ export function terminalDesk(scope) {
198
+ let state = desks.get(scope);
199
+ if (!state) {
200
+ state = new TerminalDeskState(scope);
201
+ desks.set(scope, state);
202
+ }
203
+ return state;
204
+ }
205
+ //# sourceMappingURL=terminal-desk-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-desk-state.js","sourceRoot":"","sources":["../src/terminal-desk-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type ProfileView } from './client-api.js';
2
+ import { type DeskTarget } from './terminal-desk-state.js';
3
+ export interface OpenTerminalRequest {
4
+ serial: number;
5
+ target: DeskTarget;
6
+ fresh?: boolean;
7
+ filesOnly?: boolean;
8
+ }
9
+ export declare function TerminalDesk({ scope, profiles, active, request, onManage }: {
10
+ scope: string;
11
+ profiles: ProfileView[];
12
+ active: boolean;
13
+ request?: OpenTerminalRequest | undefined;
14
+ onManage(): void;
15
+ }): JSX.Element;
16
+ //# sourceMappingURL=terminal-desk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-desk.d.ts","sourceRoot":"","sources":["../src/terminal-desk.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAqD,KAAK,WAAW,EAA0B,MAAM,iBAAiB,CAAA;AAC7H,OAAO,EAAoF,KAAK,UAAU,EAA+B,MAAM,0BAA0B,CAAA;AAUzK,MAAM,WAAW,mBAAmB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE;AACjH,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAAC,QAAQ,IAAI,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA8HlN"}