@lemoncat7/dsh-ssh 1.1.8 → 1.3.0-alpha.9

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 (126) hide show
  1. package/ARCHITECTURE.md +77 -0
  2. package/README.md +39 -18
  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.d.ts +8 -0
  11. package/lib/api.d.ts.map +1 -1
  12. package/lib/api.js +306 -14
  13. package/lib/api.js.map +1 -1
  14. package/lib/client-api.d.ts +86 -0
  15. package/lib/client-api.d.ts.map +1 -1
  16. package/lib/client-api.js +27 -0
  17. package/lib/client-api.js.map +1 -1
  18. package/lib/client.d.ts.map +1 -1
  19. package/lib/client.js +4070 -21049
  20. package/lib/client.js.map +4 -4
  21. package/lib/connector.js +2 -2
  22. package/lib/connector.js.map +1 -1
  23. package/lib/credentials.d.ts +9 -0
  24. package/lib/credentials.d.ts.map +1 -1
  25. package/lib/credentials.js +16 -0
  26. package/lib/credentials.js.map +1 -1
  27. package/lib/domain.d.ts +58 -1
  28. package/lib/domain.d.ts.map +1 -1
  29. package/lib/domain.js +47 -0
  30. package/lib/domain.js.map +1 -1
  31. package/lib/endpoint-session-manager.d.ts +16 -0
  32. package/lib/endpoint-session-manager.d.ts.map +1 -0
  33. package/lib/endpoint-session-manager.js +70 -0
  34. package/lib/endpoint-session-manager.js.map +1 -0
  35. package/lib/file-transfer-manager.d.ts +50 -0
  36. package/lib/file-transfer-manager.d.ts.map +1 -0
  37. package/lib/file-transfer-manager.js +257 -0
  38. package/lib/file-transfer-manager.js.map +1 -0
  39. package/lib/file-transfer-tools.d.ts +6 -0
  40. package/lib/file-transfer-tools.d.ts.map +1 -0
  41. package/lib/file-transfer-tools.js +143 -0
  42. package/lib/file-transfer-tools.js.map +1 -0
  43. package/lib/file-transfer-workspace.d.ts +10 -0
  44. package/lib/file-transfer-workspace.d.ts.map +1 -0
  45. package/lib/file-transfer-workspace.js +299 -0
  46. package/lib/file-transfer-workspace.js.map +1 -0
  47. package/lib/ftp-adapter.d.ts +18 -0
  48. package/lib/ftp-adapter.d.ts.map +1 -0
  49. package/lib/ftp-adapter.js +240 -0
  50. package/lib/ftp-adapter.js.map +1 -0
  51. package/lib/ftp-profile-editor.d.ts +9 -0
  52. package/lib/ftp-profile-editor.d.ts.map +1 -0
  53. package/lib/ftp-profile-editor.js +89 -0
  54. package/lib/ftp-profile-editor.js.map +1 -0
  55. package/lib/index.d.ts.map +1 -1
  56. package/lib/index.js +17 -2
  57. package/lib/index.js.map +1 -1
  58. package/lib/network-dialer.d.ts +12 -0
  59. package/lib/network-dialer.d.ts.map +1 -0
  60. package/lib/network-dialer.js +27 -0
  61. package/lib/network-dialer.js.map +1 -0
  62. package/lib/profile-editor.d.ts +16 -0
  63. package/lib/profile-editor.d.ts.map +1 -0
  64. package/lib/profile-editor.js +143 -0
  65. package/lib/profile-editor.js.map +1 -0
  66. package/lib/project-session-dialog.d.ts +15 -0
  67. package/lib/project-session-dialog.d.ts.map +1 -0
  68. package/lib/project-session-dialog.js +60 -0
  69. package/lib/project-session-dialog.js.map +1 -0
  70. package/lib/proxy.d.ts +3 -3
  71. package/lib/proxy.d.ts.map +1 -1
  72. package/lib/proxy.js +11 -7
  73. package/lib/proxy.js.map +1 -1
  74. package/lib/remote-file-systems.d.ts +9 -0
  75. package/lib/remote-file-systems.d.ts.map +1 -0
  76. package/lib/remote-file-systems.js +23 -0
  77. package/lib/remote-file-systems.js.map +1 -0
  78. package/lib/remote-files.d.ts +51 -0
  79. package/lib/remote-files.d.ts.map +1 -0
  80. package/lib/remote-files.js +36 -0
  81. package/lib/remote-files.js.map +1 -0
  82. package/lib/remote-workspace-tree.d.ts +28 -0
  83. package/lib/remote-workspace-tree.d.ts.map +1 -0
  84. package/lib/remote-workspace-tree.js +117 -0
  85. package/lib/remote-workspace-tree.js.map +1 -0
  86. package/lib/resizable-split.d.ts +10 -0
  87. package/lib/resizable-split.d.ts.map +1 -0
  88. package/lib/resizable-split.js +115 -0
  89. package/lib/resizable-split.js.map +1 -0
  90. package/lib/session-access-channel.d.ts +6 -0
  91. package/lib/session-access-channel.d.ts.map +1 -0
  92. package/lib/session-access-channel.js +10 -0
  93. package/lib/session-access-channel.js.map +1 -0
  94. package/lib/session-access.d.ts +18 -0
  95. package/lib/session-access.d.ts.map +1 -0
  96. package/lib/session-access.js +102 -0
  97. package/lib/session-access.js.map +1 -0
  98. package/lib/sftp-adapter.d.ts +13 -0
  99. package/lib/sftp-adapter.d.ts.map +1 -0
  100. package/lib/sftp-adapter.js +28 -0
  101. package/lib/sftp-adapter.js.map +1 -0
  102. package/lib/sftp-client.d.ts +5 -1
  103. package/lib/sftp-client.d.ts.map +1 -1
  104. package/lib/sftp-client.js +85 -31
  105. package/lib/sftp-client.js.map +1 -1
  106. package/lib/sftp.d.ts +7 -0
  107. package/lib/sftp.d.ts.map +1 -1
  108. package/lib/sftp.js +215 -6
  109. package/lib/sftp.js.map +1 -1
  110. package/lib/store.d.ts +5 -1
  111. package/lib/store.d.ts.map +1 -1
  112. package/lib/store.js +83 -3
  113. package/lib/store.js.map +1 -1
  114. package/lib/terminal.d.ts +2 -0
  115. package/lib/terminal.d.ts.map +1 -1
  116. package/lib/terminal.js +10 -2
  117. package/lib/terminal.js.map +1 -1
  118. package/lib/tools.d.ts +3 -1
  119. package/lib/tools.d.ts.map +1 -1
  120. package/lib/tools.js +4 -1
  121. package/lib/tools.js.map +1 -1
  122. package/lib/ui-components.d.ts +25 -0
  123. package/lib/ui-components.d.ts.map +1 -0
  124. package/lib/ui-components.js +27 -0
  125. package/lib/ui-components.js.map +1 -0
  126. package/package.json +8 -2
@@ -0,0 +1,25 @@
1
+ import { type ReactNode } from 'react';
2
+ interface DialogProps {
3
+ title: string;
4
+ subtitle?: string | undefined;
5
+ className?: string | undefined;
6
+ onClose(): void;
7
+ children: ReactNode;
8
+ }
9
+ export declare function Dialog({ title, subtitle, className, onClose, children }: DialogProps): JSX.Element;
10
+ export declare function Field({ label, hint, children }: {
11
+ label: string;
12
+ hint?: string | undefined;
13
+ children: ReactNode;
14
+ }): JSX.Element;
15
+ export declare function Segment({ active, onClick, children }: {
16
+ active: boolean;
17
+ onClick(): void;
18
+ children: ReactNode;
19
+ }): JSX.Element;
20
+ export declare function EmptyState(): JSX.Element;
21
+ export declare function ServerGlyph(): JSX.Element;
22
+ export declare function errorMessage(error: unknown): string;
23
+ export declare function shortId(id: string): string;
24
+ export {};
25
+ //# sourceMappingURL=ui-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-components.d.ts","sourceRoot":"","sources":["../src/ui-components.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAG7C,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,OAAO,IAAI,IAAI,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CAUlG;AAED,wBAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAE/H;AAED,wBAAgB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,IAAI,IAAI,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAE7H;AAED,wBAAgB,UAAU,IAAI,GAAG,CAAC,OAAO,CAExC;AAED,wBAAgB,WAAW,IAAI,GAAG,CAAC,OAAO,CAEzC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE1C"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useId } from 'react';
3
+ import { IconCloseOutline16, IconDataOutline16, Modal } from '@deepseek-ai/dsh-client-ui-primitives';
4
+ export function Dialog({ title, subtitle, className, onClose, children }) {
5
+ const titleId = useId();
6
+ const descriptionId = useId();
7
+ return _jsx(Modal, { open: true, onClose: onClose, title: title, closeLabel: "\u5173\u95ED", headless: true, className: `dsh-ssh-dialog-modal${className === undefined ? '' : ` ${className}-modal`}`, children: _jsxs("section", { className: `dsh-ssh-dialog dsh-ssh-scroll-surface${className === undefined ? '' : ` ${className}`}`, "aria-labelledby": titleId, "aria-describedby": subtitle === undefined ? undefined : descriptionId, children: [_jsxs("header", { children: [_jsxs("span", { children: [_jsx("h2", { id: titleId, children: title }), subtitle && _jsx("p", { id: descriptionId, children: subtitle })] }), _jsx("button", { type: "button", className: "dsh-ssh-icon-button", onClick: onClose, "aria-label": "\u5173\u95ED", children: _jsx(IconCloseOutline16, { size: 16 }) })] }), children] }) });
8
+ }
9
+ export function Field({ label, hint, children }) {
10
+ return _jsxs("label", { className: "dsh-ssh-field", children: [_jsx("span", { children: label }), children, hint && _jsx("small", { children: hint })] });
11
+ }
12
+ export function Segment({ active, onClick, children }) {
13
+ return _jsx("button", { type: "button", role: "tab", className: active ? 'is-active' : '', "aria-selected": active, onClick: onClick, children: children });
14
+ }
15
+ export function EmptyState() {
16
+ return _jsxs("div", { className: "dsh-ssh-empty-state", children: [_jsx("span", { children: _jsx(ServerGlyph, {}) }), _jsx("h1", { children: "\u8FDE\u63A5\u4F60\u7684\u7B2C\u4E00\u53F0\u8FDC\u7AEF\u4E3B\u673A" }), _jsx("p", { children: "\u4F7F\u7528\u201C\u4E3B\u673A\u4E0E\u9879\u76EE\u201D\u65C1\u7684\u6DFB\u52A0\u6309\u94AE\u4FDD\u5B58 SSH \u914D\u7F6E\uFF0C\u968F\u540E\u5373\u53EF\u6253\u5F00\u7EC8\u7AEF\u3001\u5EFA\u7ACB\u7AEF\u53E3\u8F6C\u53D1\uFF0C\u5E76\u6309\u4F1A\u8BDD\u6388\u6743\u7ED9 AI\u3002" })] });
17
+ }
18
+ export function ServerGlyph() {
19
+ return _jsx("span", { className: "dsh-ssh-server-glyph", children: _jsx(IconDataOutline16, { size: 17 }) });
20
+ }
21
+ export function errorMessage(error) {
22
+ return error instanceof Error ? error.message : String(error);
23
+ }
24
+ export function shortId(id) {
25
+ return id.length <= 16 ? id : `${id.slice(0, 8)}…${id.slice(-5)}`;
26
+ }
27
+ //# sourceMappingURL=ui-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-components.js","sourceRoot":"","sources":["../src/ui-components.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAA;AAUpG,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAe;IACnF,MAAM,OAAO,GAAG,KAAK,EAAE,CAAA;IACvB,MAAM,aAAa,GAAG,KAAK,EAAE,CAAA;IAE7B,OAAO,KAAC,KAAK,IAAC,IAAI,QAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAC,cAAI,EAAC,QAAQ,QAAC,SAAS,EAAE,uBAAuB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,QAAQ,EAAE,YAClK,mBAAS,SAAS,EAAE,wCAAwC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,EAAE,qBAAmB,OAAO,sBAAoB,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,aAC1M,6BAAQ,2BAAM,aAAI,EAAE,EAAE,OAAO,YAAG,KAAK,GAAM,EAAC,QAAQ,IAAI,YAAG,EAAE,EAAE,aAAa,YAAG,QAAQ,GAAK,IAAQ,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,qBAAqB,EAAC,OAAO,EAAE,OAAO,gBAAa,cAAI,YAAC,KAAC,kBAAkB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAS,IAAS,EAC7O,QAAQ,IACD,GACJ,CAAA;AACV,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAqE;IAChH,OAAO,iBAAO,SAAS,EAAC,eAAe,aAAC,yBAAO,KAAK,GAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,0BAAQ,IAAI,GAAS,IAAS,CAAA;AAC/G,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAA6D;IAC9G,OAAO,iBAAQ,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,mBAAiB,MAAM,EAAE,OAAO,EAAE,OAAO,YAAG,QAAQ,GAAU,CAAA;AAC5I,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,eAAK,SAAS,EAAC,qBAAqB,aAAC,yBAAM,KAAC,WAAW,KAAG,GAAO,EAAA,8FAAoB,EAAA,2SAA2D,IAAM,CAAA;AAC/J,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,eAAM,SAAS,EAAC,sBAAsB,YAAC,KAAC,iBAAiB,IAAC,IAAI,EAAE,EAAE,GAAI,GAAO,CAAA;AACtF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAU;IAChC,OAAO,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACnE,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,16 @@
1
1
  {
2
2
  "name": "@lemoncat7/dsh-ssh",
3
- "version": "1.1.8",
4
- "description": "Secure SSH profiles, browser terminals, proxies, port forwarding, and session-scoped AI access for DeepSeek Harness",
3
+ "version": "1.3.0-alpha.9",
4
+ "description": "Secure SSH, FTP/FTPS/SFTP file transfer, browser terminals, proxies, port forwarding, and session-scoped AI access for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",
7
7
  "dsh",
8
8
  "dsh-plugin",
9
9
  "ssh",
10
+ "ftp",
11
+ "ftps",
12
+ "sftp",
13
+ "file-transfer",
10
14
  "terminal",
11
15
  "port-forwarding",
12
16
  "socks5",
@@ -33,6 +37,7 @@
33
37
  "lib/**/*.map",
34
38
  "cordis.patch.yml",
35
39
  "README.md",
40
+ "ARCHITECTURE.md",
36
41
  "LICENSE"
37
42
  ],
38
43
  "dsh": {
@@ -62,6 +67,7 @@
62
67
  },
63
68
  "dependencies": {
64
69
  "@deepseek-ai/schemastery": "^3.18.1",
70
+ "basic-ftp": "6.2.1",
65
71
  "react-markdown": "^10.1.0",
66
72
  "remark-gfm": "^4.0.1",
67
73
  "ssh2": "^1.16.0"