@lemoncat7/dsh-ssh 1.1.8 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/ARCHITECTURE.md +62 -0
  2. package/README.md +25 -17
  3. package/lib/activity-panel.d.ts +17 -0
  4. package/lib/activity-panel.d.ts.map +1 -0
  5. package/lib/activity-panel.js +160 -0
  6. package/lib/activity-panel.js.map +1 -0
  7. package/lib/adaptive-workspace.d.ts.map +1 -1
  8. package/lib/adaptive-workspace.js +19 -4
  9. package/lib/adaptive-workspace.js.map +1 -1
  10. package/lib/api.js +93 -6
  11. package/lib/api.js.map +1 -1
  12. package/lib/client-api.d.ts +20 -0
  13. package/lib/client-api.d.ts.map +1 -1
  14. package/lib/client-api.js +13 -0
  15. package/lib/client-api.js.map +1 -1
  16. package/lib/client.d.ts.map +1 -1
  17. package/lib/client.js +3708 -21057
  18. package/lib/client.js.map +4 -4
  19. package/lib/domain.d.ts +17 -1
  20. package/lib/domain.d.ts.map +1 -1
  21. package/lib/domain.js +15 -0
  22. package/lib/domain.js.map +1 -1
  23. package/lib/profile-editor.d.ts +16 -0
  24. package/lib/profile-editor.d.ts.map +1 -0
  25. package/lib/profile-editor.js +143 -0
  26. package/lib/profile-editor.js.map +1 -0
  27. package/lib/project-session-dialog.d.ts +15 -0
  28. package/lib/project-session-dialog.d.ts.map +1 -0
  29. package/lib/project-session-dialog.js +60 -0
  30. package/lib/project-session-dialog.js.map +1 -0
  31. package/lib/remote-workspace-tree.d.ts +28 -0
  32. package/lib/remote-workspace-tree.d.ts.map +1 -0
  33. package/lib/remote-workspace-tree.js +127 -0
  34. package/lib/remote-workspace-tree.js.map +1 -0
  35. package/lib/resizable-split.d.ts +10 -0
  36. package/lib/resizable-split.d.ts.map +1 -0
  37. package/lib/resizable-split.js +115 -0
  38. package/lib/resizable-split.js.map +1 -0
  39. package/lib/session-access-channel.d.ts +6 -0
  40. package/lib/session-access-channel.d.ts.map +1 -0
  41. package/lib/session-access-channel.js +10 -0
  42. package/lib/session-access-channel.js.map +1 -0
  43. package/lib/session-access.d.ts +15 -0
  44. package/lib/session-access.d.ts.map +1 -0
  45. package/lib/session-access.js +99 -0
  46. package/lib/session-access.js.map +1 -0
  47. package/lib/sftp-client.d.ts +5 -1
  48. package/lib/sftp-client.d.ts.map +1 -1
  49. package/lib/sftp-client.js +85 -31
  50. package/lib/sftp-client.js.map +1 -1
  51. package/lib/store.d.ts +3 -1
  52. package/lib/store.d.ts.map +1 -1
  53. package/lib/store.js +35 -3
  54. package/lib/store.js.map +1 -1
  55. package/lib/terminal.d.ts +2 -0
  56. package/lib/terminal.d.ts.map +1 -1
  57. package/lib/terminal.js +10 -2
  58. package/lib/terminal.js.map +1 -1
  59. package/lib/ui-components.d.ts +25 -0
  60. package/lib/ui-components.d.ts.map +1 -0
  61. package/lib/ui-components.js +27 -0
  62. package/lib/ui-components.js.map +1 -0
  63. package/package.json +2 -1
package/lib/domain.d.ts CHANGED
@@ -80,6 +80,16 @@ export interface SessionInjection {
80
80
  permission: 'exec' | 'terminal';
81
81
  requireCommandApproval: boolean;
82
82
  workingDirectories: Record<string, string>;
83
+ workingProjectIds: Record<string, string>;
84
+ updatedAt: number;
85
+ }
86
+ /** A reusable remote project root attached to one SSH profile. */
87
+ export interface RemoteProject {
88
+ id: string;
89
+ profileId: string;
90
+ name: string;
91
+ path: string;
92
+ createdAt: number;
83
93
  updatedAt: number;
84
94
  }
85
95
  export interface SshSettings {
@@ -88,14 +98,19 @@ export interface SshSettings {
88
98
  maxOutputChars: number;
89
99
  }
90
100
  export interface SshState {
91
- schemaVersion: 2;
101
+ schemaVersion: 4;
92
102
  profiles: SshProfile[];
103
+ remoteProjects: RemoteProject[];
93
104
  credentialEntries: CredentialEntry[];
94
105
  proxyEntries: ProxyEntry[];
95
106
  forwardRules: ForwardRule[];
96
107
  injections: SessionInjection[];
97
108
  settings: SshSettings;
98
109
  }
110
+ export interface RemoteProjectDraft {
111
+ name: string;
112
+ path: string;
113
+ }
99
114
  export interface ProfileDraft {
100
115
  name: string;
101
116
  group?: string;
@@ -137,6 +152,7 @@ export declare function normalizeProfileDraft(value: unknown): ProfileDraft;
137
152
  export declare function normalizeCredentialEntryDraft(value: unknown): CredentialEntryDraft;
138
153
  export declare function normalizeProxyEntryDraft(value: unknown): ProxyEntryDraft;
139
154
  export declare function normalizeForwardDraft(value: unknown): ForwardDraft;
155
+ export declare function normalizeRemoteProjectDraft(value: unknown): RemoteProjectDraft;
140
156
  export declare function normalizeSecrets(value: unknown): SshCredentialPayload;
141
157
  export declare function compactSecrets(value: SshCredentialPayload): SshCredentialPayload;
142
158
  export declare function isLoopbackHost(host: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"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"}
package/lib/domain.js CHANGED
@@ -61,6 +61,13 @@ export function normalizeForwardDraft(value) {
61
61
  autoStart: input.autoStart === true,
62
62
  };
63
63
  }
64
+ export function normalizeRemoteProjectDraft(value) {
65
+ const input = record(value, 'remote project');
66
+ return {
67
+ name: text(input.name, 'name', 1, 80),
68
+ path: remotePath(input.path, 'path'),
69
+ };
70
+ }
64
71
  export function normalizeSecrets(value) {
65
72
  const input = value === undefined ? {} : record(value, 'secrets');
66
73
  const password = secret(input.password, 'password');
@@ -144,6 +151,14 @@ function secret(value, label, max = 65_536) {
144
151
  throw bad(`${label} is invalid`);
145
152
  return value;
146
153
  }
154
+ function remotePath(value, label) {
155
+ if (typeof value !== 'string')
156
+ throw bad(`${label} must be a string`);
157
+ const result = value.trim();
158
+ if (result.length < 1 || result.length > 4096 || /[\0\r\n]/.test(result))
159
+ throw bad(`${label} is invalid`);
160
+ return result;
161
+ }
147
162
  function bad(message) {
148
163
  return Object.assign(new Error(message), { status: 400 });
149
164
  }
package/lib/domain.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"domain.js","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"AAyJA,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC/B,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,KAAK,OAAO;QAAE,MAAM,GAAG,CAAC,kDAAkD,CAAC,CAAA;IAChJ,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACzC,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;QACtC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;QAClD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC;QAClD,QAAQ;QACR,GAAG,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,CAAC;QAC3D,GAAG,YAAY,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC;QACjE,KAAK;QACL,mBAAmB,EAAE,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAAE,OAAO,CAAC;QACpG,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,CAAC;QAC9F,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,gBAAgB,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACjF,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;KAC9C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,KAAK,aAAa;QAAE,MAAM,GAAG,CAAC,qDAAqD,CAAC,CAAA;IACvI,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC;QAClD,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;IAC1C,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ;QAAE,MAAM,GAAG,CAAC,kCAAkC,CAAC,CAAA;IAC7G,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;QACtC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;QAC5C,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC;KACpD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,GAAG,CAAC,wCAAwC,CAAC,CAAA;IACpH,MAAM,cAAc,GAAG,IAAI,KAAK,SAAS,CAAA;IACzC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC;QACrD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI;QACJ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC;QACrG,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,CAAC;QACxD,GAAG,cAAc,CAAC,CAAC,CAAC;YAClB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC;YACxD,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC;SAC/D,CAAC,CAAC,CAAC,EAAE;QACN,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI;KACpC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;IAC7C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC;KACrC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACzD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IAClE,OAAO,cAAc,CAAC;QACpB,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;QACnD,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;KAC1D,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAA2B;IACxD,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;AACpJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC/D,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACpC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAClD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IAC3G,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS;YAC/C,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACpD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,kBAAkB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;QAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,GAAG,CAAC,sDAAsD,CAAC,CAAA;QAC9F,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;IACrC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACrD,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC;YAC5C,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC;YAClD,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC;SAC1D,CAAA;IACH,CAAC;IACD,MAAM,GAAG,CAAC,uDAAuD,CAAC,CAAA;AACpE,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,KAAa;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,oBAAoB,CAAC,CAAA;IAChH,OAAO,KAAgC,CAAA;AACzC,CAAC;AAED,SAAS,IAAI,CAAC,KAAc,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,iBAAiB,GAAG,IAAI,GAAG,aAAa,CAAC,CAAA;IAC3G,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW;IAC3E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,CAAA;IACpE,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;AAC7E,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW;IACtE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,+BAA+B,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAA;IAC/J,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa,EAAE,QAAgB,EAAE,SAAiB;IACrF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,kCAAkC,QAAQ,QAAQ,CAAC,CAAA;IAC3H,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AACjG,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,KAAa,EAAE,GAAG,GAAG,MAAM;IACzD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,CAAA;IACrF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,KAAa;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,MAAM,GAAG,CAAC,GAAG,KAAK,aAAa,CAAC,CAAA;IAC1G,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,GAAG,CAAC,OAAe;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;AAC3D,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type ProfileView, type ProxyEntryView, type VaultEntryView } from './client-api.js';
2
+ export declare function ProfileDeleteDialog({ profile, dependents, onClose, onDeleted }: {
3
+ profile: ProfileView;
4
+ dependents: ProfileView[];
5
+ onClose(): void;
6
+ onDeleted(): void;
7
+ }): JSX.Element;
8
+ export declare function ProfileEditor({ profile, profiles, vaultEntries, proxyEntries, onClose, onSaved }: {
9
+ profile?: ProfileView | undefined;
10
+ profiles: ProfileView[];
11
+ vaultEntries: VaultEntryView[];
12
+ proxyEntries: ProxyEntryView[];
13
+ onClose(): void;
14
+ onSaved(): void;
15
+ }): JSX.Element;
16
+ //# sourceMappingURL=profile-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-editor.d.ts","sourceRoot":"","sources":["../src/profile-editor.tsx"],"names":[],"mappings":"AASA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAA;AAGxB,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,IAAI,IAAI,CAAC;IAAC,SAAS,IAAI,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA2BrL;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,OAAO,IAAI,IAAI,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAwHhR"}
@@ -0,0 +1,143 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { IconCheckOutline14, IconChevronDownOutline14, IconChevronUpOutline14, IconPlusOutline16, IconTrashOutline16, IconUserOutline16, } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ import { ApiError, api, profileAddress, } from './client-api.js';
5
+ import { Dialog, Field, errorMessage } from './ui-components.js';
6
+ export function ProfileDeleteDialog({ profile, dependents, onClose, onDeleted }) {
7
+ const [deleting, setDeleting] = useState(false);
8
+ const [error, setError] = useState();
9
+ const remove = async () => {
10
+ if (deleting || dependents.length > 0)
11
+ return;
12
+ setDeleting(true);
13
+ setError(undefined);
14
+ try {
15
+ await api(`/profiles/${encodeURIComponent(profile.id)}`, { method: 'DELETE' });
16
+ onDeleted();
17
+ }
18
+ catch (reason) {
19
+ setError(errorMessage(reason));
20
+ }
21
+ finally {
22
+ setDeleting(false);
23
+ }
24
+ };
25
+ return _jsx(Dialog, { title: `删除 ${profile.name}`, subtitle: profileAddress(profile), onClose: onClose, children: _jsxs("div", { className: "dsh-ssh-delete-profile", children: [_jsx("span", { className: "dsh-ssh-delete-profile-mark", children: _jsx(IconTrashOutline16, { size: 19 }) }), _jsxs("div", { children: [_jsx("strong", { children: "\u8FD9\u4E2A\u64CD\u4F5C\u65E0\u6CD5\u64A4\u9500" }), _jsx("p", { children: "\u8FDE\u63A5\u914D\u7F6E\u3001\u8BE5\u4E3B\u673A\u7684\u72EC\u7ACB\u51ED\u636E\u548C\u5173\u8054\u7AEF\u53E3\u8F6C\u53D1\u4F1A\u4E00\u5E76\u5220\u9664\uFF1B\u5B83\u4E5F\u4F1A\u4ECE\u6240\u6709\u4F1A\u8BDD\u6388\u6743\u4E2D\u79FB\u9664\u3002\u5BC6\u94A5\u5E93\u4E2D\u7684\u5171\u4EAB\u51ED\u636E\u4E0D\u4F1A\u5220\u9664\u3002" })] }), dependents.length > 0 && _jsxs("div", { className: "dsh-ssh-delete-profile-block", role: "alert", children: [_jsx("strong", { children: "\u6682\u65F6\u4E0D\u80FD\u5220\u9664" }), _jsxs("p", { children: ["\u4EE5\u4E0B\u8FDE\u63A5\u4ECD\u5C06\u5B83\u4F5C\u4E3A SSH \u8DF3\u677F\uFF1A", dependents.map(item => item.name).join('、'), "\u3002\u8BF7\u5148\u4FEE\u6539\u8FD9\u4E9B\u8FDE\u63A5\u7684\u8DF3\u677F\u94FE\u3002"] })] }), error && _jsx("p", { className: "dsh-ssh-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-ssh-dialog-actions", children: [_jsx("button", { type: "button", className: "dsh-ssh-secondary-button", disabled: deleting, onClick: onClose, children: "\u53D6\u6D88" }), _jsx("button", { type: "button", className: "dsh-ssh-danger-button", disabled: deleting || dependents.length > 0, onClick: () => { void remove(); }, children: deleting ? '正在删除…' : '删除主机' })] })] }) });
26
+ }
27
+ export function ProfileEditor({ profile, profiles, vaultEntries, proxyEntries, onClose, onSaved }) {
28
+ const [form, setForm] = useState(() => ({
29
+ name: profile?.name ?? '',
30
+ group: profile?.group ?? '',
31
+ host: profile?.host ?? '',
32
+ port: String(profile?.port ?? 22),
33
+ username: profile?.username ?? '',
34
+ authType: profile?.authType ?? 'password',
35
+ credentialId: profile?.credentialId ?? '',
36
+ proxyType: profile?.proxy.type ?? 'none',
37
+ proxyEntryId: profile?.proxy.type === 'saved' ? profile.proxy.proxyId : '',
38
+ proxyHost: profile?.proxy.type === 'http' || profile?.proxy.type === 'socks5' ? profile.proxy.host : '',
39
+ proxyPort: profile?.proxy.type === 'http' || profile?.proxy.type === 'socks5' ? String(profile.proxy.port) : '1080',
40
+ proxyUsername: profile?.proxy.type === 'http' || profile?.proxy.type === 'socks5' ? profile.proxy.username ?? '' : '',
41
+ jumpProfileIds: profile?.proxy.type === 'jump' ? profile.proxy.profileIds : [],
42
+ tags: profile?.tags.join(', ') ?? '',
43
+ password: '',
44
+ privateKey: '',
45
+ passphrase: '',
46
+ proxyPassword: '',
47
+ hostFingerprint: profile?.hostFingerprint ?? '',
48
+ }));
49
+ const [saving, setSaving] = useState(false);
50
+ const [testing, setTesting] = useState(false);
51
+ const [testState, setTestState] = useState();
52
+ const [pendingFingerprint, setPendingFingerprint] = useState();
53
+ const [error, setError] = useState();
54
+ const field = (name) => ({
55
+ value: form[name],
56
+ onChange: (event) => {
57
+ setForm(value => ({ ...value, [name]: event.target.value }));
58
+ setTestState(undefined);
59
+ setPendingFingerprint(undefined);
60
+ },
61
+ });
62
+ const selectedCredential = vaultEntries.find(entry => entry.id === form.credentialId);
63
+ const buildPayload = (hostFingerprint = form.hostFingerprint) => {
64
+ const proxy = form.proxyType === 'none' ? { type: 'none' }
65
+ : form.proxyType === 'saved' ? { type: 'saved', proxyId: form.proxyEntryId }
66
+ : form.proxyType === 'jump' ? { type: 'jump', profileIds: form.jumpProfileIds }
67
+ : { type: form.proxyType, host: form.proxyHost, port: Number(form.proxyPort), ...(form.proxyUsername.trim() ? { username: form.proxyUsername.trim() } : {}) };
68
+ return {
69
+ profile: {
70
+ name: form.name,
71
+ ...(form.group.trim() ? { group: form.group.trim() } : {}),
72
+ host: form.host,
73
+ port: Number(form.port),
74
+ username: selectedCredential?.username ?? form.username,
75
+ authType: selectedCredential?.authType ?? form.authType,
76
+ ...(form.credentialId ? { credentialId: form.credentialId } : {}),
77
+ ...(hostFingerprint ? { hostFingerprint } : {}),
78
+ proxy,
79
+ keepAliveIntervalMs: profile?.keepAliveIntervalMs ?? 15000,
80
+ connectTimeoutMs: profile?.connectTimeoutMs ?? 15000,
81
+ terminalType: profile?.terminalType ?? 'xterm-256color',
82
+ tags: form.tags.split(',').map(item => item.trim()).filter(Boolean),
83
+ },
84
+ secrets: { password: form.password, privateKey: form.privateKey, passphrase: form.passphrase, proxyPassword: form.proxyPassword },
85
+ };
86
+ };
87
+ const testConnection = async (confirmedFingerprint) => {
88
+ setTesting(true);
89
+ setError(undefined);
90
+ setTestState(undefined);
91
+ setPendingFingerprint(undefined);
92
+ try {
93
+ await api('/profiles/test-draft', { method: 'POST', body: JSON.stringify({ ...buildPayload(confirmedFingerprint), ...(profile === undefined ? {} : { profileId: profile.id }) }) });
94
+ if (confirmedFingerprint !== undefined)
95
+ setForm(current => ({ ...current, hostFingerprint: confirmedFingerprint }));
96
+ setTestState('success');
97
+ }
98
+ catch (reason) {
99
+ if (reason instanceof ApiError && reason.body?.code === 'HOST_KEY_REQUIRED' && typeof reason.body.fingerprint === 'string')
100
+ setPendingFingerprint(reason.body.fingerprint);
101
+ else
102
+ setError(errorMessage(reason));
103
+ }
104
+ finally {
105
+ setTesting(false);
106
+ }
107
+ };
108
+ const submit = async (event) => {
109
+ event.preventDefault();
110
+ setSaving(true);
111
+ setError(undefined);
112
+ try {
113
+ await api(profile === undefined ? '/profiles' : `/profiles/${profile.id}`, { method: profile === undefined ? 'POST' : 'PUT', body: JSON.stringify(buildPayload()) });
114
+ onSaved();
115
+ }
116
+ catch (reason) {
117
+ setError(errorMessage(reason));
118
+ }
119
+ finally {
120
+ setSaving(false);
121
+ }
122
+ };
123
+ return _jsx(Dialog, { title: profile === undefined ? '新建 SSH 连接' : `编辑 ${profile.name}`, subtitle: "\u51ED\u636E\u4FDD\u5B58\u540E\u4E0D\u4F1A\u56DE\u663E", onClose: onClose, children: _jsxs("form", { className: "dsh-ssh-form", onSubmit: event => { void submit(event); }, children: [_jsxs("div", { className: "dsh-ssh-form-section", children: [_jsxs("div", { className: "dsh-ssh-form-section-heading", children: [_jsx("strong", { children: "\u8FDE\u63A5\u4FE1\u606F" }), _jsx("small", { children: "\u4E3B\u673A\u5730\u5740\u4E0E\u663E\u793A\u65B9\u5F0F" })] }), _jsxs("div", { className: "dsh-ssh-form-grid", children: [_jsx(Field, { label: "\u540D\u79F0", children: _jsx("input", { required: true, maxLength: 80, placeholder: "\u5F00\u53D1\u670D\u52A1\u5668", ...field('name') }) }), _jsx(Field, { label: "\u5206\u7EC4", children: _jsx("input", { maxLength: 64, placeholder: "\u4F8B\u5982\uFF1A\u751F\u4EA7\u73AF\u5883", ...field('group') }) })] }), _jsxs("div", { className: "dsh-ssh-form-grid is-host", children: [_jsx(Field, { label: "\u4E3B\u673A", children: _jsx("input", { required: true, placeholder: "server.example.com", spellCheck: false, ...field('host') }) }), _jsx(Field, { label: "\u7AEF\u53E3", children: _jsx("input", { required: true, type: "number", inputMode: "numeric", min: "1", max: "65535", ...field('port') }) })] }), _jsx(Field, { label: "\u6807\u7B7E", hint: "\u591A\u4E2A\u6807\u7B7E\u4F7F\u7528\u82F1\u6587\u9017\u53F7\u5206\u9694\u3002", children: _jsx("input", { placeholder: "production, linux", ...field('tags') }) })] }), _jsxs("div", { className: "dsh-ssh-form-section", children: [_jsxs("div", { className: "dsh-ssh-form-section-heading", children: [_jsx("strong", { children: "\u8EAB\u4EFD\u8BA4\u8BC1" }), _jsx("small", { children: "\u9009\u62E9\u5171\u4EAB\u51ED\u636E\u6216\u5355\u72EC\u4FDD\u5B58" })] }), _jsx(Field, { label: "\u51ED\u636E\u6765\u6E90", hint: "\u53EF\u4F7F\u7528\u6B64\u8FDE\u63A5\u81EA\u5DF1\u7684\u51ED\u636E\uFF0C\u6216\u5F15\u7528\u5BC6\u94A5\u5E93\u4E2D\u7684\u5E38\u7528\u8D26\u53F7\u3002", children: _jsxs("select", { ...field('credentialId'), children: [_jsx("option", { value: "", children: "\u6B64\u8FDE\u63A5\u72EC\u7ACB\u4FDD\u5B58" }), vaultEntries.map(entry => _jsxs("option", { value: entry.id, children: [entry.name, " \u00B7 ", entry.username] }, entry.id))] }) }), selectedCredential ? _jsxs("div", { className: "dsh-ssh-credential-reference", children: [_jsx("span", { children: _jsx(IconUserOutline16, { size: 16 }) }), _jsxs("span", { children: [_jsx("strong", { children: selectedCredential.name }), _jsxs("small", { children: [selectedCredential.username, " \u00B7 ", selectedCredential.authType === 'password' ? '密码' : '私钥'] })] }), _jsx("em", { children: selectedCredential.credential.configured ? '已就绪' : '缺少凭据' })] }) : _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-ssh-form-grid", children: [_jsx(Field, { label: "\u7528\u6237\u540D", children: _jsx("input", { required: true, autoComplete: "username", ...field('username') }) }), _jsx(Field, { label: "\u8BA4\u8BC1\u65B9\u5F0F", children: _jsxs("select", { ...field('authType'), children: [_jsx("option", { value: "password", children: "\u5BC6\u7801" }), _jsx("option", { value: "private-key", children: "\u79C1\u94A5" }), _jsx("option", { value: "agent", children: "SSH Agent" })] }) })] }), form.authType === 'password' && _jsx(Field, { label: "\u5BC6\u7801", hint: profile?.credential.source === 'profile' && profile.credential.fields.includes('password') ? '已保存;留空保持不变' : '保存后不可读回', children: _jsx("input", { required: profile === undefined, type: "password", autoComplete: "new-password", placeholder: profile?.credential.source === 'profile' && profile.credential.fields.includes('password') ? '••••••••' : '', ...field('password') }) }), form.authType === 'private-key' && _jsxs(_Fragment, { children: [_jsx(Field, { label: "\u79C1\u94A5", hint: profile?.credential.source === 'profile' && profile.credential.fields.includes('privateKey') ? '已保存;留空保持不变' : '粘贴 OpenSSH/PEM 私钥', children: _jsx("textarea", { required: profile === undefined, rows: 5, spellCheck: false, ...field('privateKey') }) }), _jsx(Field, { label: "\u79C1\u94A5\u53E3\u4EE4", children: _jsx("input", { type: "password", autoComplete: "new-password", ...field('passphrase') }) })] })] })] }), _jsxs("div", { className: "dsh-ssh-form-section", children: [_jsxs("div", { className: "dsh-ssh-form-section-heading", children: [_jsx("strong", { children: "\u8FDE\u63A5\u8DEF\u5F84" }), _jsx("small", { children: "\u76F4\u8FDE\u3001\u4EE3\u7406\u6216\u8DF3\u677F\u94FE" })] }), _jsx(Field, { label: "\u8FDE\u63A5\u65B9\u5F0F", children: _jsxs("select", { ...field('proxyType'), children: [_jsx("option", { value: "none", children: "\u76F4\u8FDE" }), _jsx("option", { value: "saved", children: "\u5E38\u7528\u4EE3\u7406" }), _jsx("option", { value: "http", children: "\u81EA\u5B9A\u4E49 HTTP CONNECT" }), _jsx("option", { value: "socks5", children: "\u81EA\u5B9A\u4E49 SOCKS5" }), _jsx("option", { value: "jump", children: "SSH \u8DF3\u677F" })] }) }), form.proxyType === 'saved' && _jsx(Field, { label: "\u5E38\u7528\u4EE3\u7406", hint: proxyEntries.length === 0 ? '请先在代理库中添加 HTTP 或 SOCKS5 代理。' : '多台主机可引用同一条代理配置。', children: _jsxs("select", { required: true, ...field('proxyEntryId'), children: [_jsx("option", { value: "", children: "\u9009\u62E9\u4EE3\u7406" }), proxyEntries.map(entry => _jsxs("option", { value: entry.id, children: [entry.name, " \u00B7 ", entry.proxyType === 'http' ? 'HTTP' : 'SOCKS5', " \u00B7 ", entry.host, ":", entry.port] }, entry.id))] }) }), (form.proxyType === 'http' || form.proxyType === 'socks5') && _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-ssh-form-grid is-host", children: [_jsx(Field, { label: "\u4EE3\u7406\u4E3B\u673A", children: _jsx("input", { required: true, spellCheck: false, ...field('proxyHost') }) }), _jsx(Field, { label: "\u4EE3\u7406\u7AEF\u53E3", children: _jsx("input", { required: true, type: "number", inputMode: "numeric", min: "1", max: "65535", ...field('proxyPort') }) })] }), _jsxs("div", { className: "dsh-ssh-form-grid", children: [_jsx(Field, { label: "\u4EE3\u7406\u7528\u6237\u540D", children: _jsx("input", { autoComplete: "username", ...field('proxyUsername') }) }), _jsx(Field, { label: "\u4EE3\u7406\u5BC6\u7801", children: _jsx("input", { type: "password", autoComplete: "new-password", ...field('proxyPassword') }) })] })] }), form.proxyType === 'jump' && _jsx(JumpChainEditor, { profiles: profiles.filter(item => item.id !== profile?.id), value: form.jumpProfileIds, onChange: jumpProfileIds => setForm(current => ({ ...current, jumpProfileIds })) })] }), pendingFingerprint && _jsxs("div", { className: "dsh-ssh-test-result is-warning", role: "alert", children: [_jsxs("span", { children: [_jsx("strong", { children: "\u9996\u6B21\u8FDE\u63A5\uFF0C\u8BF7\u6838\u5BF9\u4E3B\u673A\u6307\u7EB9" }), _jsx("code", { children: pendingFingerprint })] }), _jsx("button", { type: "button", className: "dsh-ssh-small-primary", disabled: testing, onClick: () => { void testConnection(pendingFingerprint); }, children: "\u786E\u8BA4\u5E76\u91CD\u8BD5" })] }), testState === 'success' && _jsxs("p", { className: "dsh-ssh-test-result is-success", role: "status", children: [_jsx(IconCheckOutline14, { size: 14 }), "\u8FDE\u63A5\u6D4B\u8BD5\u6210\u529F"] }), error && _jsx("p", { className: "dsh-ssh-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-ssh-dialog-actions", children: [_jsx("button", { type: "button", className: "dsh-ssh-secondary-button dsh-ssh-test-button", disabled: saving || testing, onClick: event => { if (event.currentTarget.form?.reportValidity())
124
+ void testConnection(); }, children: testing ? '正在测试…' : '测试连接' }), _jsx("button", { type: "button", className: "dsh-ssh-secondary-button", disabled: saving || testing, onClick: onClose, children: "\u53D6\u6D88" }), _jsx("button", { className: "dsh-ssh-primary-button", disabled: saving || testing, children: saving ? '正在保存…' : '保存连接' })] })] }) });
125
+ }
126
+ function JumpChainEditor({ profiles, value, onChange }) {
127
+ const add = () => {
128
+ const next = profiles.find(profile => !value.includes(profile.id));
129
+ if (next !== undefined && value.length < 8)
130
+ onChange([...value, next.id]);
131
+ };
132
+ const update = (index, profileId) => onChange(value.map((id, current) => current === index ? profileId : id));
133
+ const move = (index, offset) => {
134
+ const target = index + offset;
135
+ if (target < 0 || target >= value.length)
136
+ return;
137
+ const next = [...value];
138
+ [next[index], next[target]] = [next[target], next[index]];
139
+ onChange(next);
140
+ };
141
+ return _jsxs("fieldset", { className: "dsh-ssh-jump-chain", children: [_jsx("legend", { children: "\u8DF3\u677F\u94FE" }), _jsx("p", { children: "\u8FDE\u63A5\u4F1A\u6309\u4ECE\u4E0A\u5230\u4E0B\u7684\u987A\u5E8F\u9010\u7EA7\u5EFA\u7ACB\u3002" }), _jsx("div", { children: value.map((profileId, index) => _jsxs("div", { className: "dsh-ssh-jump-row", children: [_jsx("em", { children: index + 1 }), _jsxs("select", { required: true, value: profileId, onChange: event => update(index, event.target.value), children: [_jsx("option", { value: "", children: "\u9009\u62E9\u5DF2\u6709\u8FDE\u63A5" }), profiles.filter(profile => profile.id === profileId || !value.includes(profile.id)).map(profile => _jsxs("option", { value: profile.id, children: [profile.name, " \u00B7 ", profile.host] }, profile.id))] }), _jsx("button", { type: "button", className: "dsh-ssh-icon-button", disabled: index === 0, "aria-label": "\u4E0A\u79FB\u8DF3\u677F", onClick: () => move(index, -1), children: _jsx(IconChevronUpOutline14, { size: 14 }) }), _jsx("button", { type: "button", className: "dsh-ssh-icon-button", disabled: index === value.length - 1, "aria-label": "\u4E0B\u79FB\u8DF3\u677F", onClick: () => move(index, 1), children: _jsx(IconChevronDownOutline14, { size: 14 }) }), _jsx("button", { type: "button", className: "dsh-ssh-icon-button is-danger", "aria-label": "\u79FB\u9664\u8DF3\u677F", onClick: () => onChange(value.filter((_, current) => current !== index)), children: _jsx(IconTrashOutline16, { size: 15 }) })] }, `${profileId}-${index}`)) }), value.length === 0 && _jsx("p", { className: "dsh-ssh-jump-empty", children: "\u81F3\u5C11\u6DFB\u52A0\u4E00\u53F0\u8DF3\u677F\u4E3B\u673A\u3002" }), _jsxs("button", { type: "button", className: "dsh-ssh-secondary-button", disabled: value.length >= 8 || profiles.every(profile => value.includes(profile.id)), onClick: add, children: [_jsx(IconPlusOutline16, { size: 15 }), "\u6DFB\u52A0\u8DF3\u677F"] })] });
142
+ }
143
+ //# sourceMappingURL=profile-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-editor.js","sourceRoot":"","sources":["../src/profile-editor.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { WorkspaceView } from '@deepseek-ai/dsh-client-runtime/client';
2
+ import type { ProfileView, RemoteProjectView } from './client-api.js';
3
+ interface ProjectSessionDialogProps {
4
+ profile: ProfileView;
5
+ project: RemoteProjectView;
6
+ workspaces: readonly WorkspaceView[];
7
+ currentWorkspaceId?: string | undefined;
8
+ recentWorkspaceId?: string | undefined;
9
+ returnFocus: HTMLButtonElement;
10
+ onClose(): void;
11
+ onCreate(project: RemoteProjectView, workspaceId: string): Promise<void>;
12
+ }
13
+ export declare function ProjectSessionDialog({ profile, project, workspaces, currentWorkspaceId, recentWorkspaceId, returnFocus, onClose, onCreate }: ProjectSessionDialogProps): JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=project-session-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-session-dialog.d.ts","sourceRoot":"","sources":["../src/project-session-dialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAErE,UAAU,yBAAyB;IACjC,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,UAAU,EAAE,SAAS,aAAa,EAAE,CAAA;IACpC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,WAAW,EAAE,iBAAiB,CAAA;IAC9B,OAAO,IAAI,IAAI,CAAA;IACf,QAAQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACzE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,yBAAyB,GAAG,GAAG,CAAC,OAAO,CA0CpL"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { IconCloseOutline16, IconFolderClose16, Modal } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ export function ProjectSessionDialog({ profile, project, workspaces, currentWorkspaceId, recentWorkspaceId, returnFocus, onClose, onCreate }) {
5
+ const preferredWorkspaceId = workspaces.some(workspace => String(workspace.workspaceId) === currentWorkspaceId)
6
+ ? currentWorkspaceId
7
+ : workspaces.some(workspace => String(workspace.workspaceId) === recentWorkspaceId) ? recentWorkspaceId : workspaces[0] === undefined ? undefined : String(workspaces[0].workspaceId);
8
+ const [workspaceId, setWorkspaceId] = useState(preferredWorkspaceId);
9
+ const [creating, setCreating] = useState(false);
10
+ const [error, setError] = useState();
11
+ const preferredOptionRef = useRef(null);
12
+ const closeButtonRef = useRef(null);
13
+ useEffect(() => {
14
+ const initialFocus = preferredOptionRef.current ?? closeButtonRef.current;
15
+ initialFocus?.focus();
16
+ return () => { if (returnFocus.isConnected)
17
+ returnFocus.focus(); };
18
+ }, [returnFocus]);
19
+ const close = () => { if (!creating)
20
+ onClose(); };
21
+ const submit = async (event) => {
22
+ event.preventDefault();
23
+ if (workspaceId === undefined)
24
+ return;
25
+ setCreating(true);
26
+ setError(undefined);
27
+ try {
28
+ await onCreate(project, workspaceId);
29
+ }
30
+ catch (reason) {
31
+ setError(message(reason));
32
+ setCreating(false);
33
+ }
34
+ };
35
+ return _jsx(Modal, { open: true, onClose: close, title: "\u9009\u62E9\u4F1A\u8BDD\u5F52\u5C5E\u7A7A\u95F4", closeLabel: "\u5173\u95ED", headless: true, className: "dsh-ssh-session-create-modal", children: _jsxs("section", { className: "dsh-ssh-session-create-shell", onKeyDown: trapDialogFocus, children: [_jsxs("header", { children: [_jsxs("span", { children: [_jsx("h2", { children: "\u65B0\u5EFA\u8FDC\u7AEF\u4F1A\u8BDD" }), _jsx("p", { children: "\u9009\u62E9\u8FD9\u4E2A\u4F1A\u8BDD\u5728 DSH \u4E2D\u5F52\u5C5E\u7684\u672C\u5730\u9879\u76EE" })] }), _jsx("button", { ref: closeButtonRef, type: "button", className: "dsh-ssh-icon-button", disabled: creating, onClick: close, "aria-label": "\u5173\u95ED", children: _jsx(IconCloseOutline16, { size: 16 }) })] }), _jsxs("form", { onSubmit: event => { void submit(event); }, children: [_jsxs("dl", { className: "dsh-ssh-session-create-target", children: [_jsxs("div", { children: [_jsx("dt", { children: "\u8FDC\u7AEF\u4E3B\u673A" }), _jsxs("dd", { children: [profile.name, _jsxs("small", { children: [profile.username, "@", profile.host, ":", profile.port] })] })] }), _jsxs("div", { children: [_jsx("dt", { children: "\u8FDC\u7AEF\u5DE5\u4F5C\u76EE\u5F55" }), _jsxs("dd", { children: [project.name, _jsx("small", { title: project.path, children: project.path })] })] })] }), _jsxs("fieldset", { className: "dsh-ssh-workspace-picker", children: [_jsx("legend", { children: "\u4F1A\u8BDD\u5F52\u5C5E\u7A7A\u95F4" }), _jsx("p", { children: "\u4F1A\u8BDD\u8BB0\u5F55\u4FDD\u5B58\u5728\u6240\u9009 DSH \u9879\u76EE\u4E2D\uFF0CSSH \u547D\u4EE4\u4E0E\u7EC8\u7AEF\u56FA\u5B9A\u4F7F\u7528\u4E0A\u9762\u7684\u8FDC\u7AEF\u76EE\u5F55\u3002" }), workspaces.length === 0 ? _jsxs("div", { className: "dsh-ssh-workspace-picker-empty", children: [_jsx(IconFolderClose16, { size: 18 }), _jsxs("span", { children: [_jsx("strong", { children: "\u8FD8\u6CA1\u6709\u53EF\u7528\u7684 DSH \u9879\u76EE" }), _jsx("small", { children: "\u8BF7\u5148\u5173\u95ED\u6B64\u7A97\u53E3\uFF0C\u5728 DSH \u5DE6\u4FA7\u7A7A\u95F4\u4E2D\u65B0\u5EFA\u6216\u6DFB\u52A0\u9879\u76EE\u3002" })] })] })
36
+ : _jsx("div", { className: "dsh-ssh-workspace-options dsh-ssh-scroll-surface", role: "radiogroup", "aria-label": "\u9009\u62E9 DSH \u9879\u76EE", children: workspaces.map(workspace => {
37
+ const id = String(workspace.workspaceId);
38
+ const status = id === currentWorkspaceId ? '当前项目' : id === recentWorkspaceId ? '最近使用' : undefined;
39
+ return _jsxs("label", { className: "dsh-ssh-workspace-option", children: [_jsx("input", { ref: id === preferredWorkspaceId ? preferredOptionRef : undefined, className: "sr-only", type: "radio", name: "dsh-ssh-session-workspace", value: id, checked: workspaceId === id, disabled: creating, onChange: () => setWorkspaceId(id) }), _jsxs("span", { children: [_jsx("span", { className: "dsh-ssh-workspace-option-icon", children: _jsx(IconFolderClose16, { size: 16 }) }), _jsxs("span", { className: "dsh-ssh-workspace-option-copy", children: [_jsx("strong", { children: workspace.title }), _jsx("small", { title: workspace.path, children: workspace.path })] }), status && _jsx("em", { children: status }), _jsx("i", { "aria-hidden": "true" })] })] }, id);
40
+ }) })] }), error && _jsx("p", { className: "dsh-ssh-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-ssh-dialog-actions", children: [_jsx("button", { type: "button", className: "dsh-ssh-secondary-button", disabled: creating, onClick: close, children: "\u53D6\u6D88" }), _jsx("button", { type: "submit", className: "dsh-ssh-primary-button", disabled: creating || workspaceId === undefined, children: creating ? '正在新建…' : '新建并打开' })] })] })] }) });
41
+ }
42
+ function trapDialogFocus(event) {
43
+ if (event.key !== 'Tab')
44
+ return;
45
+ const controls = Array.from(event.currentTarget.querySelectorAll('button:not(:disabled), input:not(:disabled), a[href], [tabindex]:not([tabindex="-1"])')).filter(control => control.getClientRects().length > 0);
46
+ const first = controls[0];
47
+ const last = controls[controls.length - 1];
48
+ if (first === undefined || last === undefined)
49
+ return;
50
+ if (event.shiftKey && document.activeElement === first) {
51
+ event.preventDefault();
52
+ last.focus();
53
+ }
54
+ else if (!event.shiftKey && document.activeElement === last) {
55
+ event.preventDefault();
56
+ first.focus();
57
+ }
58
+ }
59
+ function message(reason) { return reason instanceof Error ? reason.message : String(reason); }
60
+ //# sourceMappingURL=project-session-dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-session-dialog.js","sourceRoot":"","sources":["../src/project-session-dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAsC,MAAM,OAAO,CAAA;AAEvF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAA;AAcpG,MAAM,UAAU,oBAAoB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAA6B;IACrK,MAAM,oBAAoB,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,kBAAkB,CAAC;QAC7G,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IACvL,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IACpE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,kBAAkB,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAA;IACzD,MAAM,cAAc,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAA;QACzE,YAAY,EAAE,KAAK,EAAE,CAAA;QACrB,OAAO,GAAG,EAAE,GAAG,IAAI,WAAW,CAAC,WAAW;YAAE,WAAW,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,CAAA;IACnE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,MAAM,KAAK,GAAG,GAAS,EAAE,GAAG,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAA,CAAC,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,KAAK,EAAE,KAAgB,EAAiB,EAAE;QACvD,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,IAAI,WAAW,KAAK,SAAS;YAAE,OAAM;QACrC,WAAW,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,CAAC;YAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAAC,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;IAC/G,CAAC,CAAA;IAED,OAAO,KAAC,KAAK,IAAC,IAAI,QAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAC,kDAAU,EAAC,UAAU,EAAC,cAAI,EAAC,QAAQ,QAAC,SAAS,EAAC,8BAA8B,YACnH,mBAAS,SAAS,EAAC,8BAA8B,EAAC,SAAS,EAAE,eAAe,aAC1E,6BAAQ,2BAAM,gEAAe,EAAA,0HAA2B,IAAO,EAAA,iBAAQ,GAAG,EAAE,cAAc,EAAE,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,qBAAqB,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,gBAAa,cAAI,YAAC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,IAAS,EAChP,gBAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,aAC7C,cAAI,SAAS,EAAC,+BAA+B,aAAC,0BAAK,oDAAa,EAAA,yBAAK,OAAO,CAAC,IAAI,EAAC,4BAAQ,OAAO,CAAC,QAAQ,OAAG,OAAO,CAAC,IAAI,OAAG,OAAO,CAAC,IAAI,IAAS,IAAK,IAAM,EAAA,0BAAK,gEAAe,EAAA,yBAAK,OAAO,CAAC,IAAI,EAAC,gBAAO,KAAK,EAAE,OAAO,CAAC,IAAI,YAAG,OAAO,CAAC,IAAI,GAAS,IAAK,IAAM,IAAK,EACpQ,oBAAU,SAAS,EAAC,0BAA0B,aAAC,oEAAuB,EAAA,wNAA8C,EACjH,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,gCAAgC,aAAC,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,EAAA,2BAAM,qFAA8B,EAAA,wKAA0C,IAAO,IAAM;oCACnM,CAAC,CAAC,cAAK,SAAS,EAAC,kDAAkD,EAAC,IAAI,EAAC,YAAY,gBAAY,+BAAW,YAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;4CACvI,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;4CACxC,MAAM,MAAM,GAAG,EAAE,KAAK,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;4CACjG,OAAO,iBAAO,SAAS,EAAC,0BAA0B,aAAU,gBAAO,GAAG,EAAE,EAAE,KAAK,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,2BAA2B,EAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,GAAI,EAAA,2BAAM,eAAM,SAAS,EAAC,+BAA+B,YAAC,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAO,EAAA,gBAAM,SAAS,EAAC,+BAA+B,aAAC,2BAAS,SAAS,CAAC,KAAK,GAAU,EAAA,gBAAO,KAAK,EAAE,SAAS,CAAC,IAAI,YAAG,SAAS,CAAC,IAAI,GAAS,IAAO,EAAC,MAAM,IAAI,uBAAK,MAAM,GAAM,EAAC,2BAAe,MAAM,GAAG,IAAO,KAAzhB,EAAE,CAA+hB,CAAA;wCAC3lB,CAAC,CAAC,GAAO,IACF,EACV,KAAK,IAAI,YAAG,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,OAAO,YAAE,KAAK,GAAK,EACtE,eAAK,SAAS,EAAC,wBAAwB,aAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,0BAA0B,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,6BAAa,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,wBAAwB,EAAC,QAAQ,EAAE,QAAQ,IAAI,WAAW,KAAK,SAAS,YAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAU,IAAM,IACpS,IACC,GACJ,CAAA;AACV,CAAC;AAED,SAAS,eAAe,CAAC,KAAiC;IACxD,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;QAAE,OAAM;IAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAc,uFAAuF,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9N,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,OAAM;IACrD,IAAI,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IAAC,CAAC;SAC3F,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAAC,CAAC;AACxG,CAAC;AAED,SAAS,OAAO,CAAC,MAAe,IAAY,OAAO,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { WorkspaceView } from '@deepseek-ai/dsh-client-runtime/client';
2
+ import { type InjectionView, type ProfileView, type RemoteProjectView } from './client-api.js';
3
+ export interface RemoteTarget {
4
+ profileId: string;
5
+ path: string;
6
+ projectId?: string;
7
+ }
8
+ interface RemoteWorkspaceTreeProps {
9
+ profiles: ProfileView[];
10
+ access: InjectionView | null;
11
+ accessLoading: boolean;
12
+ accessSaving: boolean;
13
+ accessError?: string | undefined;
14
+ workspaces: readonly WorkspaceView[];
15
+ currentWorkspaceId?: string | undefined;
16
+ recentWorkspaceId?: string | undefined;
17
+ selected: RemoteTarget | null;
18
+ onSelect(target: RemoteTarget): void;
19
+ onProfiles(profileIds: string[]): void;
20
+ onDirectory(profileId: string, path?: string, projectId?: string): void;
21
+ onPermission(permission: InjectionView['permission']): void;
22
+ onApproval(value: boolean): void;
23
+ onCreateSession(project: RemoteProjectView, workspaceId: string): Promise<void>;
24
+ onNewProfile(): void;
25
+ }
26
+ export declare function RemoteWorkspaceTree(props: RemoteWorkspaceTreeProps): JSX.Element;
27
+ export {};
28
+ //# sourceMappingURL=remote-workspace-tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-workspace-tree.d.ts","sourceRoot":"","sources":["../src/remote-workspace-tree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAK3E,OAAO,EAEL,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAC7D,MAAM,iBAAiB,CAAA;AAIxB,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,UAAU,EAAE,SAAS,aAAa,EAAE,CAAA;IACpC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IACpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACtC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvE,YAAY,CAAC,UAAU,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;IAC3D,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAChC,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/E,YAAY,IAAI,IAAI,CAAA;CACrB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,CA6FhF"}