@lemoncat7/dsh-ssh 0.1.0-alpha.15

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 (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +105 -0
  3. package/cordis.patch.yml +10 -0
  4. package/lib/api.d.ts +23 -0
  5. package/lib/api.d.ts.map +1 -0
  6. package/lib/api.js +571 -0
  7. package/lib/api.js.map +1 -0
  8. package/lib/client-api.d.ts +174 -0
  9. package/lib/client-api.d.ts.map +1 -0
  10. package/lib/client-api.js +88 -0
  11. package/lib/client-api.js.map +1 -0
  12. package/lib/client.d.ts +4 -0
  13. package/lib/client.d.ts.map +1 -0
  14. package/lib/client.js +8067 -0
  15. package/lib/client.js.map +7 -0
  16. package/lib/config.d.ts +14 -0
  17. package/lib/config.d.ts.map +1 -0
  18. package/lib/config.js +31 -0
  19. package/lib/config.js.map +1 -0
  20. package/lib/connector.d.ts +30 -0
  21. package/lib/connector.d.ts.map +1 -0
  22. package/lib/connector.js +216 -0
  23. package/lib/connector.js.map +1 -0
  24. package/lib/credentials.d.ts +25 -0
  25. package/lib/credentials.d.ts.map +1 -0
  26. package/lib/credentials.js +84 -0
  27. package/lib/credentials.js.map +1 -0
  28. package/lib/directory.d.ts +8 -0
  29. package/lib/directory.d.ts.map +1 -0
  30. package/lib/directory.js +45 -0
  31. package/lib/directory.js.map +1 -0
  32. package/lib/domain.d.ts +121 -0
  33. package/lib/domain.d.ts.map +1 -0
  34. package/lib/domain.js +136 -0
  35. package/lib/domain.js.map +1 -0
  36. package/lib/exec.d.ts +15 -0
  37. package/lib/exec.d.ts.map +1 -0
  38. package/lib/exec.js +82 -0
  39. package/lib/exec.js.map +1 -0
  40. package/lib/forwards.d.ts +26 -0
  41. package/lib/forwards.d.ts.map +1 -0
  42. package/lib/forwards.js +213 -0
  43. package/lib/forwards.js.map +1 -0
  44. package/lib/index.d.ts +9 -0
  45. package/lib/index.d.ts.map +1 -0
  46. package/lib/index.js +53 -0
  47. package/lib/index.js.map +1 -0
  48. package/lib/proxy.d.ts +9 -0
  49. package/lib/proxy.d.ts.map +1 -0
  50. package/lib/proxy.js +116 -0
  51. package/lib/proxy.js.map +1 -0
  52. package/lib/sftp-client.d.ts +12 -0
  53. package/lib/sftp-client.d.ts.map +1 -0
  54. package/lib/sftp-client.js +123 -0
  55. package/lib/sftp-client.js.map +1 -0
  56. package/lib/sftp.d.ts +43 -0
  57. package/lib/sftp.d.ts.map +1 -0
  58. package/lib/sftp.js +251 -0
  59. package/lib/sftp.js.map +1 -0
  60. package/lib/sidebar-anchor.d.ts +8 -0
  61. package/lib/sidebar-anchor.d.ts.map +1 -0
  62. package/lib/sidebar-anchor.js +50 -0
  63. package/lib/sidebar-anchor.js.map +1 -0
  64. package/lib/store.d.ts +20 -0
  65. package/lib/store.d.ts.map +1 -0
  66. package/lib/store.js +154 -0
  67. package/lib/store.js.map +1 -0
  68. package/lib/terminal.d.ts +108 -0
  69. package/lib/terminal.d.ts.map +1 -0
  70. package/lib/terminal.js +384 -0
  71. package/lib/terminal.js.map +1 -0
  72. package/lib/tools.d.ts +7 -0
  73. package/lib/tools.d.ts.map +1 -0
  74. package/lib/tools.js +237 -0
  75. package/lib/tools.js.map +1 -0
  76. package/package.json +107 -0
@@ -0,0 +1,174 @@
1
+ export declare const SSH_API = "/ssh-local/v1";
2
+ export interface CredentialView {
3
+ configured: boolean;
4
+ writable: boolean;
5
+ fields: string[];
6
+ source: 'profile' | 'vault';
7
+ entryId?: string;
8
+ entryName?: string;
9
+ }
10
+ export interface ProfileView {
11
+ id: string;
12
+ name: string;
13
+ host: string;
14
+ port: number;
15
+ username: string;
16
+ group?: string;
17
+ authType: 'password' | 'private-key' | 'agent';
18
+ hostFingerprint?: string;
19
+ credentialId?: string;
20
+ proxy: {
21
+ type: 'none';
22
+ } | {
23
+ type: 'http' | 'socks5';
24
+ host: string;
25
+ port: number;
26
+ username?: string;
27
+ } | {
28
+ type: 'jump';
29
+ profileIds: string[];
30
+ };
31
+ keepAliveIntervalMs: number;
32
+ connectTimeoutMs: number;
33
+ terminalType: string;
34
+ tags: string[];
35
+ credential: CredentialView;
36
+ }
37
+ export interface VaultEntryView {
38
+ id: string;
39
+ name: string;
40
+ username: string;
41
+ authType: 'password' | 'private-key';
42
+ createdAt: number;
43
+ updatedAt: number;
44
+ references: number;
45
+ credential: {
46
+ configured: boolean;
47
+ writable: boolean;
48
+ fields: string[];
49
+ };
50
+ }
51
+ export interface ForwardView {
52
+ id: string;
53
+ profileId: string;
54
+ name: string;
55
+ kind: 'local' | 'remote' | 'dynamic';
56
+ bindHost: string;
57
+ bindPort: number;
58
+ targetHost?: string;
59
+ targetPort?: number;
60
+ autoStart: boolean;
61
+ }
62
+ export interface ForwardStatus {
63
+ ruleId: string;
64
+ state: 'stopped' | 'starting' | 'running' | 'error';
65
+ bindHost: string;
66
+ bindPort: number;
67
+ connections: number;
68
+ error?: string;
69
+ }
70
+ export interface InjectionView {
71
+ sessionId: string;
72
+ profileIds: string[];
73
+ permission: 'exec' | 'terminal';
74
+ requireCommandApproval: boolean;
75
+ workingDirectories: Record<string, string>;
76
+ updatedAt: number;
77
+ }
78
+ export interface SettingsView {
79
+ allowPublicBind: boolean;
80
+ defaultCommandTimeoutMs: number;
81
+ maxOutputChars: number;
82
+ }
83
+ export interface ActivityProfileView {
84
+ id: string;
85
+ name: string;
86
+ host: string;
87
+ port: number;
88
+ username: string;
89
+ cwd: string;
90
+ }
91
+ export interface ActivityCommandView {
92
+ id: string;
93
+ command: string;
94
+ submitted: boolean;
95
+ startedAt: number;
96
+ completedAt: number;
97
+ output: string;
98
+ waitReason: string;
99
+ truncated: boolean;
100
+ }
101
+ export interface ActivityTerminalView {
102
+ terminalId: string;
103
+ profileId: string;
104
+ name: string;
105
+ cwd: string;
106
+ createdAt: number;
107
+ status: {
108
+ kind: 'running';
109
+ } | {
110
+ kind: 'exited';
111
+ exitCode: number | null;
112
+ signal: string | null;
113
+ };
114
+ scrollback: string;
115
+ commands: ActivityCommandView[];
116
+ }
117
+ export interface ActivityView {
118
+ injection: InjectionView | null;
119
+ profiles: ActivityProfileView[];
120
+ terminals: ActivityTerminalView[];
121
+ }
122
+ export interface SftpEntryView {
123
+ name: string;
124
+ path: string;
125
+ kind: 'directory' | 'file' | 'symlink' | 'other';
126
+ size: number;
127
+ modifiedAt: number;
128
+ }
129
+ export interface SftpDirectoryView {
130
+ path: string;
131
+ parent: string | null;
132
+ entries: SftpEntryView[];
133
+ }
134
+ export interface SftpFilePreviewView {
135
+ path: string;
136
+ name: string;
137
+ size: number;
138
+ mimeType: string;
139
+ kind: 'text' | 'image' | 'pdf' | 'binary';
140
+ text?: string;
141
+ truncated?: boolean;
142
+ }
143
+ export declare class ApiError extends Error {
144
+ readonly status: number;
145
+ readonly body?: Record<string, unknown> | undefined;
146
+ constructor(status: number, message: string, body?: Record<string, unknown> | undefined);
147
+ }
148
+ export declare function api<T>(path: string, init?: RequestInit): Promise<T>;
149
+ export declare function loadProfiles(): Promise<ProfileView[]>;
150
+ export declare function loadVaultEntries(): Promise<VaultEntryView[]>;
151
+ export declare function loadForwards(): Promise<{
152
+ rules: ForwardView[];
153
+ statuses: ForwardStatus[];
154
+ }>;
155
+ export declare function loadInjection(sessionId: string): Promise<InjectionView | null>;
156
+ export declare function loadActivity(sessionId: string): Promise<ActivityView>;
157
+ export declare function loadSftpDirectory(sessionId: string, profileId: string, path?: string): Promise<SftpDirectoryView>;
158
+ export declare function loadSftpFilePreview(sessionId: string, profileId: string, path: string): Promise<SftpFilePreviewView>;
159
+ export declare function sftpFileUrl(sessionId: string, profileId: string, path: string, inline?: boolean): string;
160
+ export declare function loadProfileSftpDirectory(profileId: string, path?: string): Promise<SftpDirectoryView>;
161
+ export declare function loadProfileSftpFilePreview(profileId: string, path: string): Promise<SftpFilePreviewView>;
162
+ export declare function profileSftpFileUrl(profileId: string, path: string, inline?: boolean): string;
163
+ export declare function uploadProfileSftpFile(profileId: string, directory: string, file: File, overwrite?: boolean): Promise<{
164
+ path: string;
165
+ name: string;
166
+ size: number;
167
+ }>;
168
+ export declare function sendActivityTerminalInput(sessionId: string, terminalId: string, text: string): Promise<void>;
169
+ export declare function resizeActivityTerminal(sessionId: string, terminalId: string, cols: number, rows: number): Promise<void>;
170
+ export declare function updateActivityDirectory(sessionId: string, profileId: string, cwd: string): Promise<{
171
+ cwd: string;
172
+ }>;
173
+ export declare function profileAddress(profile: ProfileView): string;
174
+ //# sourceMappingURL=client-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-api.d.ts","sourceRoot":"","sources":["../src/client-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ export const SSH_API = '/ssh-local/v1';
2
+ export class ApiError extends Error {
3
+ status;
4
+ body;
5
+ constructor(status, message, body) {
6
+ super(message);
7
+ this.status = status;
8
+ this.body = body;
9
+ this.name = 'ApiError';
10
+ }
11
+ }
12
+ export async function api(path, init = {}) {
13
+ const method = init.method ?? 'GET';
14
+ const response = await fetch(`${SSH_API}${path}`, {
15
+ ...init,
16
+ headers: {
17
+ Accept: 'application/json',
18
+ ...method === 'GET' ? {} : { 'Content-Type': 'application/json', 'X-DSH-SSH-Request': '1' },
19
+ ...init.headers,
20
+ },
21
+ });
22
+ if (response.status === 204)
23
+ return undefined;
24
+ const body = await response.json().catch(() => ({}));
25
+ if (!response.ok)
26
+ throw new ApiError(response.status, typeof body.error === 'string' ? body.error : `HTTP ${response.status}`, body);
27
+ return body;
28
+ }
29
+ export function loadProfiles() { return api('/profiles'); }
30
+ export function loadVaultEntries() { return api('/vault'); }
31
+ export function loadForwards() { return api('/forwards'); }
32
+ export function loadInjection(sessionId) { return api(`/injections?sessionId=${encodeURIComponent(sessionId)}`); }
33
+ export function loadActivity(sessionId) { return api(`/activity?sessionId=${encodeURIComponent(sessionId)}`); }
34
+ export function loadSftpDirectory(sessionId, profileId, path) {
35
+ const query = new URLSearchParams({ sessionId, profileId });
36
+ if (path !== undefined)
37
+ query.set('path', path);
38
+ return api(`/activity/files?${query.toString()}`);
39
+ }
40
+ export function loadSftpFilePreview(sessionId, profileId, path) {
41
+ const query = new URLSearchParams({ sessionId, profileId, path });
42
+ return api(`/activity/file?${query.toString()}`);
43
+ }
44
+ export function sftpFileUrl(sessionId, profileId, path, inline = false) {
45
+ const query = new URLSearchParams({ sessionId, profileId, path });
46
+ if (inline)
47
+ query.set('inline', '1');
48
+ return `${SSH_API}/activity/download?${query.toString()}`;
49
+ }
50
+ export function loadProfileSftpDirectory(profileId, path = '~') {
51
+ const query = new URLSearchParams({ path });
52
+ return api(`/profiles/${encodeURIComponent(profileId)}/sftp/directory?${query.toString()}`);
53
+ }
54
+ export function loadProfileSftpFilePreview(profileId, path) {
55
+ const query = new URLSearchParams({ path });
56
+ return api(`/profiles/${encodeURIComponent(profileId)}/sftp/file?${query.toString()}`);
57
+ }
58
+ export function profileSftpFileUrl(profileId, path, inline = false) {
59
+ const query = new URLSearchParams({ path });
60
+ if (inline)
61
+ query.set('inline', '1');
62
+ return `${SSH_API}/profiles/${encodeURIComponent(profileId)}/sftp/download?${query.toString()}`;
63
+ }
64
+ export async function uploadProfileSftpFile(profileId, directory, file, overwrite = false) {
65
+ const query = new URLSearchParams({ directory, name: file.name });
66
+ if (overwrite)
67
+ query.set('overwrite', '1');
68
+ const response = await fetch(`${SSH_API}/profiles/${encodeURIComponent(profileId)}/sftp/upload?${query.toString()}`, {
69
+ method: 'PUT',
70
+ headers: { Accept: 'application/json', 'Content-Type': 'application/octet-stream', 'X-DSH-SSH-Request': '1' },
71
+ body: file,
72
+ });
73
+ const body = await response.json().catch(() => ({}));
74
+ if (!response.ok)
75
+ throw new ApiError(response.status, typeof body.error === 'string' ? body.error : `HTTP ${response.status}`, body);
76
+ return body;
77
+ }
78
+ export function sendActivityTerminalInput(sessionId, terminalId, text) {
79
+ return api(`/activity/terminals/${encodeURIComponent(terminalId)}/input`, { method: 'POST', body: JSON.stringify({ sessionId, text }) });
80
+ }
81
+ export function resizeActivityTerminal(sessionId, terminalId, cols, rows) {
82
+ return api(`/activity/terminals/${encodeURIComponent(terminalId)}/resize`, { method: 'POST', body: JSON.stringify({ sessionId, cols, rows }) });
83
+ }
84
+ export function updateActivityDirectory(sessionId, profileId, cwd) {
85
+ return api('/activity/directory', { method: 'PUT', body: JSON.stringify({ sessionId, profileId, cwd }) });
86
+ }
87
+ export function profileAddress(profile) { return `${profile.username}@${profile.host}:${profile.port}`; }
88
+ //# sourceMappingURL=client-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-api.js","sourceRoot":"","sources":["../src/client-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
2
+ export declare const inject: string[];
3
+ export declare function apply(ctx: ClientContext): void;
4
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAoD3E,eAAO,MAAM,MAAM,UAAsB,CAAA;AAEzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAa9C"}