@lemoncat7/dsh-ssh 1.10.1 → 1.10.4

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 (38) hide show
  1. package/README.md +2 -2
  2. package/docs/host-sftp-access.md +7 -0
  3. package/docs/releases/1.10.2.md +13 -0
  4. package/docs/releases/1.10.3.md +9 -0
  5. package/docs/releases/1.10.4.md +10 -0
  6. package/lib/api.js +6 -1
  7. package/lib/api.js.map +1 -1
  8. package/lib/client-api.d.ts +1 -0
  9. package/lib/client-api.d.ts.map +1 -1
  10. package/lib/client-api.js +1 -0
  11. package/lib/client-api.js.map +1 -1
  12. package/lib/client.js +99 -105
  13. package/lib/client.js.map +3 -3
  14. package/lib/current-session.d.ts +5 -0
  15. package/lib/current-session.d.ts.map +1 -1
  16. package/lib/current-session.js +4 -0
  17. package/lib/current-session.js.map +1 -1
  18. package/lib/file-access-policy.d.ts +6 -0
  19. package/lib/file-access-policy.d.ts.map +1 -0
  20. package/lib/file-access-policy.js +14 -0
  21. package/lib/file-access-policy.js.map +1 -0
  22. package/lib/file-transfer-manager.d.ts +1 -0
  23. package/lib/file-transfer-manager.d.ts.map +1 -1
  24. package/lib/file-transfer-manager.js +8 -0
  25. package/lib/file-transfer-manager.js.map +1 -1
  26. package/lib/file-transfer-tools.d.ts.map +1 -1
  27. package/lib/file-transfer-tools.js +17 -7
  28. package/lib/file-transfer-tools.js.map +1 -1
  29. package/lib/file-transfer-workspace.d.ts.map +1 -1
  30. package/lib/file-transfer-workspace.js +57 -35
  31. package/lib/file-transfer-workspace.js.map +1 -1
  32. package/lib/locales/messages.d.ts +12 -12
  33. package/lib/locales/messages.js +12 -12
  34. package/lib/locales/messages.js.map +1 -1
  35. package/lib/store.d.ts.map +1 -1
  36. package/lib/store.js +9 -1
  37. package/lib/store.js.map +1 -1
  38. package/package.json +2 -2
@@ -7,4 +7,9 @@ export declare function currentSession<K extends string>(state: {
7
7
  };
8
8
  }>>>;
9
9
  }): K | undefined;
10
+ /** Async access reads belong to one session; never reuse them after navigation. */
11
+ export declare function canSubscribeActivity(sessionId: string | undefined, injection: {
12
+ sessionId: string;
13
+ permission: string;
14
+ } | null): boolean;
10
15
  //# sourceMappingURL=current-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"current-session.d.ts","sourceRoot":"","sources":["../src/current-session.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;YAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC,CAAC,CAAA;CACtG,GAAG,CAAC,GAAG,SAAS,CAEhB"}
1
+ {"version":3,"file":"current-session.d.ts","sourceRoot":"","sources":["../src/current-session.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;YAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC,CAAC,CAAA;CACtG,GAAG,CAAC,GAAG,SAAS,CAEhB;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,OAAO,CAExI"}
@@ -2,4 +2,8 @@
2
2
  export function currentSession(state) {
3
3
  return Object.entries(state.byId ?? {}).find(([, row]) => (row?.retainedBy?.mainView ?? 0) > 0)?.[0] ?? state.current;
4
4
  }
5
+ /** Async access reads belong to one session; never reuse them after navigation. */
6
+ export function canSubscribeActivity(sessionId, injection) {
7
+ return sessionId !== undefined && injection?.sessionId === sessionId && injection.permission === 'terminal';
8
+ }
5
9
  //# sourceMappingURL=current-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"current-session.js","sourceRoot":"","sources":["../src/current-session.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAmB,KAGhD;IACC,OAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAE,GAA0D,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAmB,IAAI,KAAK,CAAC,OAAO,CAAA;AAClM,CAAC"}
1
+ {"version":3,"file":"current-session.js","sourceRoot":"","sources":["../src/current-session.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAmB,KAGhD;IACC,OAAQ,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAE,GAA0D,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAmB,IAAI,KAAK,CAAC,OAAO,CAAA;AAClM,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,oBAAoB,CAAC,SAA6B,EAAE,SAA2D;IAC7H,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,UAAU,KAAK,UAAU,CAAA;AAC7G,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { SessionInjection } from './domain.js';
2
+ /** SFTP access follows mounted hosts; standalone grants only apply to FTP/FTPS. */
3
+ export declare function fileEndpointIds(access: Pick<SessionInjection, 'profileIds' | 'fileEndpointIds'>): string[];
4
+ export declare function canTransferFiles(access: SessionInjection, endpointId: string): boolean;
5
+ export declare function requiresFileApproval(access: SessionInjection, endpointId: string): boolean;
6
+ //# sourceMappingURL=file-access-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access-policy.d.ts","sourceRoot":"","sources":["../src/file-access-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,iBAAiB,CAAC,GAAG,MAAM,EAAE,CAK1G;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAE1F"}
@@ -0,0 +1,14 @@
1
+ /** SFTP access follows mounted hosts; standalone grants only apply to FTP/FTPS. */
2
+ export function fileEndpointIds(access) {
3
+ return [...new Set([
4
+ ...(access.profileIds ?? []).map(id => `sftp:${id}`),
5
+ ...(access.fileEndpointIds ?? []).filter(id => id.startsWith('ftp:')),
6
+ ])];
7
+ }
8
+ export function canTransferFiles(access, endpointId) {
9
+ return fileEndpointIds(access).includes(endpointId) && (endpointId.startsWith('sftp:') || access.filePermission === 'transfer');
10
+ }
11
+ export function requiresFileApproval(access, endpointId) {
12
+ return endpointId.startsWith('sftp:') ? access.requireCommandApproval !== false : access.requireFileApproval !== false;
13
+ }
14
+ //# sourceMappingURL=file-access-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-access-policy.js","sourceRoot":"","sources":["../src/file-access-policy.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,MAAgE;IAC9F,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC;YACjB,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;YACpD,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;SACtE,CAAC,CAAC,CAAA;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAwB,EAAE,UAAkB;IAC3E,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,CAAA;AACjI,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAwB,EAAE,UAAkB;IAC/E,OAAO,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,sBAAsB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,KAAK,KAAK,CAAA;AACxH,CAAC"}
@@ -39,6 +39,7 @@ export declare class FileTransferManager {
39
39
  list(ownerId?: string): TransferJobView[];
40
40
  get(id: string, ownerId?: string): TransferJobView;
41
41
  cancel(id: string, ownerId?: string): boolean;
42
+ dismiss(id: string, ownerId?: string): boolean;
42
43
  subscribe(listener: (job: TransferJobView) => void): () => void;
43
44
  closeAll(): Promise<void>;
44
45
  private drain;
@@ -1 +1 @@
1
- {"version":3,"file":"file-transfer-manager.d.ts","sourceRoot":"","sources":["../src/file-transfer-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAG5D,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE5G,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,cAAc,EAAE,sBAAsB,CAAA;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,gBAAgB,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAKD,qBAAa,mBAAmB;IAQlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAqB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAAM,OAAO,CAAC,QAAQ,CAAC,YAAY;IAPtH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,MAAM,CAAQ;gBAEO,KAAK,EAAE,iBAAiB,EAAmB,WAAW,SAAI,EAAmB,YAAY,SAAM;IAE5H,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,eAAe;IAgBjE,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;IAKzC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe;IAMlD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IAc7C,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAEzD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/B,OAAO,CAAC,KAAK;YAaC,GAAG;IAyCjB,OAAO,CAAC,IAAI;IAEZ,OAAO,CAAC,YAAY;CAIrB"}
1
+ {"version":3,"file":"file-transfer-manager.d.ts","sourceRoot":"","sources":["../src/file-transfer-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAG5D,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE5G,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,cAAc,EAAE,sBAAsB,CAAA;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,gBAAgB,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAKD,qBAAa,mBAAmB;IAQlB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAqB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAAM,OAAO,CAAC,QAAQ,CAAC,YAAY;IAPtH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAgC;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,MAAM,CAAQ;gBAEO,KAAK,EAAE,iBAAiB,EAAmB,WAAW,SAAI,EAAmB,YAAY,SAAM;IAE5H,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,eAAe;IAgBjE,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;IAKzC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe;IAMlD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IAc7C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IAO9C,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAEzD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/B,OAAO,CAAC,KAAK;YAaC,GAAG;IAyCjB,OAAO,CAAC,IAAI;IAEZ,OAAO,CAAC,YAAY;CAIrB"}
@@ -58,6 +58,14 @@ export class FileTransferManager {
58
58
  }
59
59
  return true;
60
60
  }
61
+ dismiss(id, ownerId) {
62
+ const managed = this.jobs.get(id);
63
+ if (managed === undefined || ownerId !== undefined && managed.view.ownerId !== ownerId)
64
+ throw Object.assign(new Error('transfer job was not found'), { status: 404 });
65
+ if (!isTerminal(managed.view.state))
66
+ throw Object.assign(new Error('active transfer jobs cannot be dismissed'), { status: 409 });
67
+ return this.jobs.delete(id);
68
+ }
61
69
  subscribe(listener) { this.listeners.add(listener); return () => this.listeners.delete(listener); }
62
70
  async closeAll() {
63
71
  this.closed = true;
@@ -1 +1 @@
1
- {"version":3,"file":"file-transfer-manager.js","sourceRoot":"","sources":["../src/file-transfer-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-transfer-manager.js","sourceRoot":"","sources":["../src/file-transfer-manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-transfer-tools.d.ts","sourceRoot":"","sources":["../src/file-transfer-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAQrC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAa7I"}
1
+ {"version":3,"file":"file-transfer-tools.d.ts","sourceRoot":"","sources":["../src/file-transfer-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AASrC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,mBAAmB,GAAG,MAAM,IAAI,CAgB7I"}
@@ -1,6 +1,7 @@
1
1
  import { defineTool } from '@deepseek-ai/dsh-tools';
2
2
  import { SessionFileDownloads } from './session-file-download.js';
3
3
  import { SessionFileUploads } from './session-file-upload.js';
4
+ import { canTransferFiles, requiresFileApproval } from './file-access-policy.js';
4
5
  const FILE_TOOL_NAMES = new Set(['file_endpoint_list', 'file_directory_list', 'file_transfer_start', 'file_transfer_status', 'file_transfer_cancel', 'file_download_to_local', 'file_upload_from_local']);
5
6
  const TRANSFER_TOOL_NAMES = new Set(['file_transfer_start', 'file_transfer_cancel', 'file_download_to_local', 'file_upload_from_local']);
6
7
  const output = { schema: { type: 'string' }, render: (_args, value) => [{ type: 'text', text: String(value) }] };
@@ -13,7 +14,11 @@ export function registerFileTransferTools(ctx, store, files, transfers) {
13
14
  if (exec.name !== 'file_transfer_start' && exec.name !== 'file_download_to_local' && exec.name !== 'file_upload_from_local')
14
15
  return next();
15
16
  const injection = exec.agent === undefined ? undefined : store.injection(exec.agent.session.id);
16
- if (injection?.requireFileApproval !== true)
17
+ if (!injection)
18
+ return next();
19
+ const args = exec.arguments;
20
+ const ids = [args?.endpointId, args?.sourceEndpointId, args?.destinationEndpointId].filter((id) => typeof id === 'string');
21
+ if (ids.length ? !ids.some(id => requiresFileApproval(injection, id)) : injection.requireFileApproval !== true)
17
22
  return next();
18
23
  return { kind: 'ask', reason: exec.name === 'file_download_to_local' ? 'Download an authorized remote file into the current DSH session directory.' : exec.name === 'file_upload_from_local' ? 'Upload a file from the current DSH session directory to an authorized remote endpoint.' : 'The conversation requested a remote file transfer between authorized endpoints.' };
19
24
  });
@@ -64,7 +69,12 @@ function downloadTool(store, downloads) {
64
69
  function endpointListTool(store, files) {
65
70
  return tool('file_endpoint_list', 'List remote file endpoints explicitly authorized for this DSH conversation. Credentials and unauthorized endpoints are never returned.', {}, async (_raw, exec) => {
66
71
  const injection = requireFileInjection(store, exec);
67
- return json({ permission: injection.filePermission, allowLocalUpload: injection.filePermission === 'transfer', allowLocalDownload: injection.filePermission === 'transfer', endpoints: injection.fileEndpointIds.map(id => files.endpoint(id)).filter(Boolean) });
72
+ const endpoints = injection.fileEndpointIds.flatMap(id => {
73
+ const endpoint = files.endpoint(id);
74
+ return endpoint ? [{ ...endpoint, permission: canTransferFiles(injection, id) ? 'transfer' : 'browse', requireFileApproval: requiresFileApproval(injection, id) }] : [];
75
+ });
76
+ const transfer = endpoints.some(endpoint => endpoint.permission === 'transfer');
77
+ return json({ permission: endpoints.every(endpoint => endpoint.permission === 'transfer') ? 'transfer' : transfer ? 'mixed' : 'browse', allowLocalUpload: transfer, allowLocalDownload: transfer, endpoints });
68
78
  }, true);
69
79
  }
70
80
  function directoryListTool(store, files) {
@@ -118,7 +128,7 @@ function transferCancelTool(store, transfers) {
118
128
  jobId: { type: 'string', required: true },
119
129
  }, async (raw, exec) => {
120
130
  const injection = requireFileInjection(store, exec);
121
- if (injection.filePermission !== 'transfer')
131
+ if (!injection.fileEndpointIds.some(id => canTransferFiles(injection, id)))
122
132
  throw new Error('This session only permits remote file browsing');
123
133
  return json({ cancelled: transfers.cancel(text(object(raw).jobId, 'jobId', 200), injection.sessionId) });
124
134
  });
@@ -143,8 +153,8 @@ function requireEndpoint(store, exec, endpointId, transfer) {
143
153
  const injection = requireFileInjection(store, exec);
144
154
  if (!injection.fileEndpointIds.includes(endpointId))
145
155
  throw new Error('The requested file endpoint is not authorized for this DSH session');
146
- if (transfer && injection.filePermission !== 'transfer')
147
- throw new Error('This session only permits remote file browsing');
156
+ if (transfer && !canTransferFiles(injection, endpointId))
157
+ throw new Error('This session only permits remote file browsing for this endpoint');
148
158
  if (exec.agent === undefined)
149
159
  throw new Error('Remote file tools require an owning agent');
150
160
  return exec.agent;
@@ -172,11 +182,11 @@ function applyVisibility(assembly, injection) {
172
182
  assembly.tools = assembly.tools.filter(schema => !FILE_TOOL_NAMES.has(schema.name));
173
183
  return;
174
184
  }
175
- if (injection.filePermission === 'browse')
185
+ if (!injection.fileEndpointIds.some(id => canTransferFiles(injection, id)))
176
186
  assembly.tools = assembly.tools.filter(schema => !TRANSFER_TOOL_NAMES.has(schema.name));
177
187
  assembly.contexts.push({
178
188
  name: 'dsh-ssh:file-access',
179
- text: `Remote file access is limited to explicitly authorized endpoints. Permission: ${injection.filePermission}.
189
+ text: `Remote file access is limited to authorized endpoints. Mounted SSH hosts automatically authorize their SFTP endpoints for browsing and transfer, with the host command-approval policy. FTP/FTPS permission: ${injection.filePermission}. Use file_endpoint_list for each endpoint's effective permission; do not apply SFTP permissions to FTP endpoints.
180
190
  For any file listing or transfer request, use file_endpoint_list, file_directory_list, and the available file_transfer_* tools before considering SSH commands. Never guess endpoint ids or paths.
181
191
  For downloading a remote file for this conversation, use file_download_to_local. It defaults to the current DSH session directory; report its returned localPath. Do not invent a sandbox URL or claim it was saved to the browser's Downloads folder.
182
192
  Transfer permission includes file_upload_from_local and file_download_to_local within the current session directory. Endpoint restrictions and transfer approval still apply. Browser computer uploads must be selected by the user in 文件传输.
@@ -1 +1 @@
1
- {"version":3,"file":"file-transfer-tools.js","sourceRoot":"","sources":["../src/file-transfer-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-transfer-tools.js","sourceRoot":"","sources":["../src/file-transfer-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-transfer-workspace.d.ts","sourceRoot":"","sources":["../src/file-transfer-workspace.tsx"],"names":[],"mappings":"AAMA,OAAO,EAGkB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAoE,KAAK,cAAc,EACvJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAmB7D,wBAAgB,qBAAqB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE;IAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IAAC,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,iBAAiB,IAAI,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAyGnR"}
1
+ {"version":3,"file":"file-transfer-workspace.d.ts","sourceRoot":"","sources":["../src/file-transfer-workspace.tsx"],"names":[],"mappings":"AAMA,OAAO,EAGkB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAoE,KAAK,cAAc,EACvJ,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAmB7D,wBAAgB,qBAAqB,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE;IAAE,WAAW,EAAE,cAAc,EAAE,CAAC;IAAC,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAC;IAAC,iBAAiB,IAAI,IAAI,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAgInR"}
@@ -5,7 +5,7 @@ import { BrowserTransferTask, TransferTaskList, isBrowserTransferActive, useBrow
5
5
  import { t } from './i18n.js';
6
6
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
7
7
  import { IconChevronLeftOutlineRegular as IconChevronLeftOutline14, IconCloseOutlineRegular as IconCloseOutline16, IconDataOutlineRegular as IconDataOutline16, IconPlusOutlineRegular as IconPlusOutline16, IconTrashOutlineRegular as IconTrashOutline16 } from '@deepseek-ai/dsh-client-ui-primitives';
8
- import { uploadFileEndpointFile, inspectFileEndpointEntry, cancelFileTransfer, deleteFileEndpointEntries, fileEndpointDownloadUrl, loadFileEndpointDirectory, loadFileEndpoints, loadTransferJobs, startFileTransfer, } from './client-api.js';
8
+ import { uploadFileEndpointFile, inspectFileEndpointEntry, cancelFileTransfer, deleteFileEndpointEntries, dismissFileTransferJob, fileEndpointDownloadUrl, loadFileEndpointDirectory, loadFileEndpoints, loadTransferJobs, startFileTransfer, } from './client-api.js';
9
9
  import { Dialog, errorMessage } from './ui-components.js';
10
10
  import { FtpConnectionsDialog } from './ftp-profile-editor.js';
11
11
  import { REMOTE_FILES_DRAG_TYPE, canTransferIntoRemoteDirectory, isNavigableRemoteEntry, isSameRemoteTransferLocation, parseRemoteFilesDragPayload, } from './file-transfer-intent.js';
@@ -30,6 +30,8 @@ export function FileTransferWorkspace({ ftpProfiles, vaultEntries, proxyEntries,
30
30
  const [error, setError] = useState();
31
31
  const [directoryRevisions, setDirectoryRevisions] = useState({});
32
32
  const previousJobStatesRef = useRef(new Map());
33
+ const autoConflictJobIdsRef = useRef(new Set());
34
+ const dismissedJobIdsRef = useRef(new Set());
33
35
  const refreshEndpoints = useCallback(async () => {
34
36
  try {
35
37
  const next = await loadFileEndpoints();
@@ -71,7 +73,7 @@ export function FileTransferWorkspace({ ftpProfiles, vaultEntries, proxyEntries,
71
73
  try {
72
74
  const next = await loadTransferJobs();
73
75
  if (!stopped)
74
- setJobs(next);
76
+ setJobs(next.filter(job => !dismissedJobIdsRef.current.has(job.id)));
75
77
  }
76
78
  catch { }
77
79
  if (!stopped)
@@ -99,26 +101,14 @@ export function FileTransferWorkspace({ ftpProfiles, vaultEntries, proxyEntries,
99
101
  setActiveTabId(next[Math.max(0, index - 1)].id);
100
102
  };
101
103
  const setPaneCount = (count) => updateActive(tab => ({ ...tab, panes: Array.from({ length: count }, (_, index) => tab.panes[index] ?? createPane(`${tab.id}-pane-${index}`)) }));
102
- const transfer = async (sourceEndpointId, sourceDirectory, sourcePaths, destinationEndpointId, destinationDirectory) => {
103
- const source = { endpointId: sourceEndpointId, directory: sourceDirectory };
104
- const destination = { endpointId: destinationEndpointId, directory: destinationDirectory };
105
- if (isSameRemoteTransferLocation(source, destination) || !canTransferIntoRemoteDirectory(source, sourcePaths, destination))
106
- return;
107
- try {
108
- setError(undefined);
109
- const job = await startFileTransfer({ sourceEndpointId, sourcePaths, destinationEndpointId, destinationDirectory, conflictPolicy: 'fail' });
110
- setJobs(current => [job, ...current.filter(item => item.id !== job.id)]);
111
- }
112
- catch (reason) {
113
- setError(errorMessage(reason));
114
- }
115
- };
116
104
  const dropFiles = async (source, destination, destinationDirectory) => {
117
105
  try {
118
106
  setError(undefined);
119
107
  const result = await executeRemoteFileDrop(source, { paneId: destination.id, endpointId: destination.endpointId, directory: destinationDirectory });
120
- if (result.job !== undefined)
108
+ if (result.job !== undefined) {
109
+ autoConflictJobIdsRef.current.add(result.job.id);
121
110
  setJobs(current => [result.job, ...current.filter(item => item.id !== result.job.id)]);
111
+ }
122
112
  if (result.operation === 'move') {
123
113
  setDirectoryRevisions(current => {
124
114
  const next = { ...current };
@@ -132,26 +122,57 @@ export function FileTransferWorkspace({ ftpProfiles, vaultEntries, proxyEntries,
132
122
  setError(errorMessage(reason));
133
123
  }
134
124
  };
135
- return _jsxs("div", { className: "dsh-ssh-transfer-workspace", children: [_jsxs("header", { className: "dsh-ssh-transfer-header", children: [_jsxs("div", { children: [_jsx("h1", { children: t("client.fileTransfer") }), _jsx("p", { children: t("file-transfer-workspace.directStreamingTransfersBetweenFtpFtpsAndSftp") })] }), _jsxs("div", { className: "dsh-ssh-transfer-actions", children: [_jsxs("button", { type: "button", "data-ssh-interactive": "control", className: "dsh-ssh-secondary-button", onClick: () => setAccessOpen(true), children: [t("file-transfer-workspace.sessionAccess"), " ", access.value?.fileEndpointIds.length ?? 0] }), _jsx("button", { type: "button", "data-ssh-interactive": "control", className: "dsh-ssh-secondary-button", onClick: () => setConnectionsOpen(true), children: t("file-transfer-workspace.ftpManager") })] })] }), error && _jsxs("div", { className: "dsh-ssh-banner is-error", role: "alert", children: [_jsx("span", { children: error }), _jsx("button", { type: "button", onClick: () => setError(undefined), "aria-label": t("client.close"), children: _jsx(IconCloseOutline16, { size: 16 }) })] }), _jsxs("section", { ref: stageGlow.ref, onPointerMove: stageGlow.onPointerMove, onPointerLeave: stageGlow.onPointerLeave, className: "dsh-ssh-transfer-stage dsh-ssh-border-surface", children: [_jsxs("div", { className: "dsh-ssh-transfer-tabbar", role: "tablist", "aria-label": t("file-transfer-workspace.fileTransferTasksPage"), children: [_jsxs("div", { className: "dsh-ssh-transfer-tabs", children: [tabs.map(tab => _jsxs("span", { "data-ssh-interactive": "choice", className: `dsh-ssh-transfer-tab${tab.id === active?.id ? ' is-active' : ''}`, children: [_jsx("button", { type: "button", role: "tab", "aria-selected": tab.id === active?.id, onClick: () => setActiveTabId(tab.id), children: transferTabLabel(tab) }), tabs.length > 1 && _jsx("button", { type: "button", className: "is-close", "aria-label": t("file-transfer-workspace.close", [transferTabLabel(tab)]), onClick: () => closeTab(tab.id), children: _jsx(IconCloseOutline16, { size: 13 }) })] }, tab.id)), _jsx("button", { type: "button", "data-ssh-interactive": "control", className: "is-add", "aria-label": t("file-transfer-workspace.newTransferTasksPage"), onClick: addTab, children: _jsx(IconPlusOutline16, { size: 15 }) })] }), _jsx("div", { className: "dsh-ssh-pane-layout", "aria-label": t("file-transfer-workspace.panes"), children: [1, 2, 3, 4].map(count => _jsxs("button", { type: "button", "data-ssh-interactive": "choice", "aria-pressed": active?.panes.length === count, className: active?.panes.length === count ? 'is-active' : '', onClick: () => setPaneCount(count), children: [count, " ", t("file-transfer-workspace.panes2")] }, count)) })] }), endpoints.length === 0 ? _jsxs("div", { className: "dsh-ssh-transfer-empty", children: [_jsx(IconDataOutline16, { size: 24 }), _jsx("strong", { children: t("file-transfer-workspace.noFileConnectionsAvailableYet") }), _jsx("p", { children: t("file-transfer-workspace.createAnFtpFtpsConnectionOrAddAnSsh") }), _jsx("button", { type: "button", className: "dsh-ssh-primary-button", onClick: () => setConnectionsOpen(true), children: t("file-transfer-workspace.newFtpConnection") })] })
136
- : active && _jsx("div", { className: `dsh-ssh-transfer-panes has-${active.panes.length}`, children: active.panes.map((pane, index) => {
137
- const destination = active.panes.length > 1 ? active.panes[(index + 1) % active.panes.length] : undefined;
138
- return _jsx(FileTransferPane, { pane: pane, endpoints: endpoints, dragSource: dragSource, refreshRevision: directoryRevisions[directoryKey(pane.endpointId, pane.path)] ?? 0, ...destination === undefined ? {} : { destination }, onManageConnections: () => setConnectionsOpen(true), onDragSourceChange: setDragSource, onChange: patch => updateActive(tab => ({ ...tab, panes: tab.panes.map(item => item.id === pane.id ? { ...item, ...patch } : item) })), onTransfer: (paths, target) => { void transfer(pane.endpointId, pane.path, paths, target.endpointId, target.path); }, onExternalDrop: (source, destinationDirectory) => { void dropFiles(source, pane, destinationDirectory); } }, pane.id);
139
- }) }), _jsx("div", { className: "dsh-ssh-transfer-queues", children: _jsx(TransferQueue, { jobs: jobs, endpoints: endpoints, onCancel: async (id) => { try {
125
+ useEffect(() => {
126
+ if (conflictJob !== undefined)
127
+ return;
128
+ for (const job of jobs) {
129
+ if (!autoConflictJobIdsRef.current.has(job.id))
130
+ continue;
131
+ if (isTransferConflict(job)) {
132
+ autoConflictJobIdsRef.current.delete(job.id);
133
+ setConflictJob(job);
134
+ return;
135
+ }
136
+ if (isFinished(job.state))
137
+ autoConflictJobIdsRef.current.delete(job.id);
138
+ }
139
+ }, [jobs, conflictJob]);
140
+ const openConflict = (job) => {
141
+ autoConflictJobIdsRef.current.delete(job.id);
142
+ setConflictJob(job);
143
+ };
144
+ const retryConflict = async (conflictPolicy) => {
145
+ if (conflictJob === undefined)
146
+ return;
147
+ const previous = conflictJob;
148
+ let next;
149
+ try {
150
+ next = await startFileTransfer({ ...previous.request, conflictPolicy });
151
+ }
152
+ catch (reason) {
153
+ setError(errorMessage(reason));
154
+ return;
155
+ }
156
+ dismissedJobIdsRef.current.add(previous.id);
157
+ setJobs(current => [next, ...current.filter(job => job.id !== previous.id && job.id !== next.id)]);
158
+ setConflictJob(undefined);
159
+ try {
160
+ await dismissFileTransferJob(previous.id);
161
+ }
162
+ catch (reason) {
163
+ setError(errorMessage(reason));
164
+ }
165
+ };
166
+ return _jsxs("div", { className: "dsh-ssh-transfer-workspace", children: [_jsxs("header", { className: "dsh-ssh-transfer-header", children: [_jsxs("div", { children: [_jsx("h1", { children: t("client.fileTransfer") }), _jsx("p", { children: t("file-transfer-workspace.directStreamingTransfersBetweenFtpFtpsAndSftp") })] }), _jsxs("div", { className: "dsh-ssh-transfer-actions", children: [_jsxs("button", { type: "button", "data-ssh-interactive": "control", className: "dsh-ssh-secondary-button", onClick: () => setAccessOpen(true), children: [t("file-transfer-workspace.sessionAccess"), " ", access.value?.fileEndpointIds.filter(id => id.startsWith('ftp:')).length ?? 0] }), _jsx("button", { type: "button", "data-ssh-interactive": "control", className: "dsh-ssh-secondary-button", onClick: () => setConnectionsOpen(true), children: t("file-transfer-workspace.ftpManager") })] })] }), error && _jsxs("div", { className: "dsh-ssh-banner is-error", role: "alert", children: [_jsx("span", { children: error }), _jsx("button", { type: "button", onClick: () => setError(undefined), "aria-label": t("client.close"), children: _jsx(IconCloseOutline16, { size: 16 }) })] }), _jsxs("section", { ref: stageGlow.ref, onPointerMove: stageGlow.onPointerMove, onPointerLeave: stageGlow.onPointerLeave, className: "dsh-ssh-transfer-stage dsh-ssh-border-surface", children: [_jsxs("div", { className: "dsh-ssh-transfer-tabbar", role: "tablist", "aria-label": t("file-transfer-workspace.fileTransferTasksPage"), children: [_jsxs("div", { className: "dsh-ssh-transfer-tabs", children: [tabs.map(tab => _jsxs("span", { "data-ssh-interactive": "choice", className: `dsh-ssh-transfer-tab${tab.id === active?.id ? ' is-active' : ''}`, children: [_jsx("button", { type: "button", role: "tab", "aria-selected": tab.id === active?.id, onClick: () => setActiveTabId(tab.id), children: transferTabLabel(tab) }), tabs.length > 1 && _jsx("button", { type: "button", className: "is-close", "aria-label": t("file-transfer-workspace.close", [transferTabLabel(tab)]), onClick: () => closeTab(tab.id), children: _jsx(IconCloseOutline16, { size: 13 }) })] }, tab.id)), _jsx("button", { type: "button", "data-ssh-interactive": "control", className: "is-add", "aria-label": t("file-transfer-workspace.newTransferTasksPage"), onClick: addTab, children: _jsx(IconPlusOutline16, { size: 15 }) })] }), _jsx("div", { className: "dsh-ssh-pane-layout", "aria-label": t("file-transfer-workspace.panes"), children: [1, 2, 3, 4].map(count => _jsxs("button", { type: "button", "data-ssh-interactive": "choice", "aria-pressed": active?.panes.length === count, className: active?.panes.length === count ? 'is-active' : '', onClick: () => setPaneCount(count), children: [count, " ", t("file-transfer-workspace.panes2")] }, count)) })] }), endpoints.length === 0 ? _jsxs("div", { className: "dsh-ssh-transfer-empty", children: [_jsx(IconDataOutline16, { size: 24 }), _jsx("strong", { children: t("file-transfer-workspace.noFileConnectionsAvailableYet") }), _jsx("p", { children: t("file-transfer-workspace.createAnFtpFtpsConnectionOrAddAnSsh") }), _jsx("button", { type: "button", className: "dsh-ssh-primary-button", onClick: () => setConnectionsOpen(true), children: t("file-transfer-workspace.newFtpConnection") })] })
167
+ : active && _jsx("div", { className: `dsh-ssh-transfer-panes has-${active.panes.length}`, children: active.panes.map(pane => _jsx(FileTransferPane, { pane: pane, endpoints: endpoints, dragSource: dragSource, refreshRevision: directoryRevisions[directoryKey(pane.endpointId, pane.path)] ?? 0, onManageConnections: () => setConnectionsOpen(true), onDragSourceChange: setDragSource, onChange: patch => updateActive(tab => ({ ...tab, panes: tab.panes.map(item => item.id === pane.id ? { ...item, ...patch } : item) })), onExternalDrop: (source, destinationDirectory) => { void dropFiles(source, pane, destinationDirectory); } }, pane.id)) }), _jsx("div", { className: "dsh-ssh-transfer-queues", children: _jsx(TransferQueue, { jobs: jobs, endpoints: endpoints, onCancel: async (id) => { try {
140
168
  await cancelFileTransfer(id);
141
169
  setJobs(current => current.map(job => job.id === id ? { ...job, state: 'cancelled' } : job));
142
170
  }
143
171
  catch (reason) {
144
172
  setError(errorMessage(reason));
145
- } }, onConflict: setConflictJob }) })] }), connectionsOpen && _jsx(FtpConnectionsDialog, { profiles: ftpProfiles, vaultEntries: vaultEntries, proxyEntries: proxyEntries, onClose: () => setConnectionsOpen(false), onChanged: () => { onProfilesChanged(); void refreshEndpoints(); } }), accessOpen && _jsx(FileAccessDialog, { endpoints: endpoints, access: access, onClose: () => setAccessOpen(false) }), conflictJob && _jsx(ConflictDialog, { job: conflictJob, onClose: () => setConflictJob(undefined), onRetry: async (conflictPolicy) => { try {
146
- const next = await startFileTransfer({ ...conflictJob.request, conflictPolicy });
147
- setJobs(current => [next, ...current]);
148
- setConflictJob(undefined);
149
- }
150
- catch (reason) {
151
- setError(errorMessage(reason));
152
- } } })] });
173
+ } }, onConflict: openConflict }) })] }), connectionsOpen && _jsx(FtpConnectionsDialog, { profiles: ftpProfiles, vaultEntries: vaultEntries, proxyEntries: proxyEntries, onClose: () => setConnectionsOpen(false), onChanged: () => { onProfilesChanged(); void refreshEndpoints(); } }), accessOpen && _jsx(FileAccessDialog, { endpoints: endpoints, access: access, onClose: () => setAccessOpen(false) }), conflictJob && _jsx(ConflictDialog, { job: conflictJob, onClose: () => setConflictJob(undefined), onRetry: retryConflict })] });
153
174
  }
154
- function FileTransferPane({ pane, endpoints, destination, dragSource, refreshRevision, onChange, onTransfer, onExternalDrop, onDragSourceChange, onManageConnections }) {
175
+ function FileTransferPane({ pane, endpoints, dragSource, refreshRevision, onChange, onExternalDrop, onDragSourceChange, onManageConnections }) {
155
176
  const sshLocale = useSshLocale();
156
177
  const [openedFile, setOpenedFile] = useState();
157
178
  const uploadInput = useRef(null);
@@ -303,8 +324,7 @@ function FileTransferPane({ pane, endpoints, destination, dragSource, refreshRev
303
324
  setDirectoryDropTarget(undefined);
304
325
  } }, onDrop: drop, children: [_jsxs("header", { children: [_jsx("button", { type: "button", className: "dsh-ssh-pane-back", "aria-label": t("file-transfer-workspace.backToConnectionList"), onClick: showConnections, children: _jsx(IconChevronLeftOutline14, { size: 14 }) }), _jsxs("span", { className: "dsh-ssh-pane-endpoint", children: [_jsx("strong", { children: endpoint.name }), _jsx("small", { title: endpoint.address, children: endpoint.address })] }), _jsx("span", { className: `dsh-ssh-protocol-badge is-${endpoint.protocol}`, children: protocolShort(endpoint.protocol) })] }), _jsxs("form", { className: "dsh-ssh-file-pathbar", onSubmit: submitPath, children: [_jsx("button", { type: "button", "aria-label": t("file-transfer-workspace.parentDirectory"), disabled: view?.parent === null || loading, onClick: () => { if (view?.parent)
305
326
  void load(view.parent); }, children: _jsx(UpGlyph, {}) }), _jsx("button", { type: "button", "aria-label": t("file-transfer-workspace.refreshDirectory"), disabled: loading, onClick: () => { void load(); }, children: _jsx(RefreshGlyph, {}) }), _jsx("input", { "aria-label": t("file-transfer-workspace.remotePath"), value: draftPath, onChange: event => setDraftPath(event.target.value) }), _jsx("button", { type: "submit", disabled: loading, children: t("file-transfer-workspace.goTo") }), _jsx("button", { type: "button", disabled: loading || uploading || !view, "aria-label": t("local-transfer.uploadAction"), title: t("local-transfer.uploadAction"), onClick: () => uploadInput.current?.click(), children: uploading ? t("local-transfer.uploading") : t("browser-transfer.upload") }), _jsx("input", { ref: uploadInput, type: "file", multiple: true, hidden: true, onChange: event => { const files = Array.from(event.currentTarget.files ?? []); event.currentTarget.value = ''; void uploadFiles(files); } })] }), _jsxs("div", { className: "dsh-ssh-file-table", role: "grid", "aria-busy": loading, children: [_jsxs("div", { className: "dsh-ssh-file-table-head", role: "row", children: [_jsx(SortColumn, { label: t("client.name"), sortKey: "name", current: sort, onSort: changeSort }), _jsx(SortColumn, { label: t("file-transfer-workspace.size"), sortKey: "size", current: sort, onSort: changeSort }), _jsx(SortColumn, { label: t("file-transfer-workspace.modified"), sortKey: "modifiedAt", current: sort, onSort: changeSort }), _jsx("span", { role: "columnheader", "aria-label": t("file-transfer-workspace.actions") })] }), _jsx("div", { ref: bodyRef, className: "dsh-ssh-file-table-body", onScroll: event => { if (virtualized)
306
- setScrollTop(event.currentTarget.scrollTop); }, children: loading && !view ? _jsx("div", { className: "dsh-ssh-file-loading", children: t("file-transfer-workspace.readingDirectory") }) : error ? _jsxs("div", { className: "dsh-ssh-file-error", children: [_jsx("span", { children: error }), _jsx("button", { type: "button", onClick: () => { void load(); }, children: t("commands-panel.retry") })] }) : entries.length === 0 ? _jsx("div", { className: "dsh-ssh-table-empty", children: t("file-transfer-workspace.thisDirectoryIsEmpty") }) : _jsx("div", { className: virtualized ? 'dsh-ssh-file-virtual-list' : undefined, style: virtualized ? { height: `${entries.length * FILE_ROW_HEIGHT}px` } : undefined, children: visibleEntries.map((entry, offset) => _jsx(FileEntryRow, { entry: entry, paneId: pane.id, endpointId: endpoint.id, sourceDirectory: view?.path ?? pane.path, dragSource: dragSource, dropTarget: directoryDropTarget === entry.path, selected: selected.includes(entry.path), selectedPaths: selected, ...virtualized ? { style: { position: 'absolute', insetInline: 0, transform: `translateY(${(virtualStart + offset) * FILE_ROW_HEIGHT}px)` } } : {}, onDelete: () => setDeleteTarget([entry]), onDirectoryTarget: target => { setDragOver(false); setDirectoryDropTarget(target); }, onDropIntoDirectory: (payload, target) => { setDirectoryDropTarget(undefined); onDragSourceChange(undefined); onExternalDrop(payload, target); }, onDragSourceChange: onDragSourceChange, onSelect: additive => select(entry, additive), onOpen: () => { void openEntry(entry.path); } }, entry.path)) }) })] }), _jsxs("footer", { children: [_jsx("span", { children: selected.length > 0 ? t("file-transfer-workspace.selectedItems", [selected.length]) : t("file-transfer-workspace.items", [view?.entries.length ?? 0]) }), destination !== undefined && _jsx("span", { className: "dsh-ssh-file-pane-actions", children: _jsxs("button", { type: "button", "data-ssh-interactive": "control", className: "dsh-ssh-transfer-to-button", disabled: selected.length === 0 || !destination.endpointId || loading, onClick: () => { if (destination.endpointId)
307
- onTransfer(selected, destination); }, children: [t("file-transfer-workspace.sendToNextPane"), " ", _jsx("span", { "aria-hidden": "true", children: "\u2192" })] }) })] }), dragOver && _jsxs("div", { className: "dsh-ssh-file-drop-overlay", children: [_jsx("strong", { children: dragSource?.endpointId === pane.endpointId ? t("file-transfer-workspace.moveToThisDirectory") : t("file-transfer-workspace.copyToThisDirectory") }), _jsx("span", { children: view?.path ?? pane.path })] }), openedFile !== undefined && _jsx(Dialog, { variant: "confirmation", className: "dsh-ssh-file-download-dialog", title: openedFile.name, subtitle: openedFile.path, onClose: () => setOpenedFile(undefined), children: _jsx("div", { className: "dsh-ssh-dialog-actions", children: _jsxs("a", { onClick: trackDownloadClick, className: "dsh-ssh-secondary-button", href: fileEndpointDownloadUrl(endpoint.id, openedFile.path), download: true, children: [_jsx(DownloadGlyph, {}), _jsx("span", { children: t("file-transfer-workspace.download") })] }) }) }), deleteTarget !== undefined && _jsx(FileEntryDeleteDialog, { locationName: endpoint.name, locationKind: "remote", entries: deleteTarget, onClose: () => setDeleteTarget(undefined), onDelete: removeSelected })] });
327
+ setScrollTop(event.currentTarget.scrollTop); }, children: loading && !view ? _jsx("div", { className: "dsh-ssh-file-loading", children: t("file-transfer-workspace.readingDirectory") }) : error ? _jsxs("div", { className: "dsh-ssh-file-error", children: [_jsx("span", { children: error }), _jsx("button", { type: "button", onClick: () => { void load(); }, children: t("commands-panel.retry") })] }) : entries.length === 0 ? _jsx("div", { className: "dsh-ssh-table-empty", children: t("file-transfer-workspace.thisDirectoryIsEmpty") }) : _jsx("div", { className: virtualized ? 'dsh-ssh-file-virtual-list' : undefined, style: virtualized ? { height: `${entries.length * FILE_ROW_HEIGHT}px` } : undefined, children: visibleEntries.map((entry, offset) => _jsx(FileEntryRow, { entry: entry, paneId: pane.id, endpointId: endpoint.id, sourceDirectory: view?.path ?? pane.path, dragSource: dragSource, dropTarget: directoryDropTarget === entry.path, selected: selected.includes(entry.path), selectedPaths: selected, ...virtualized ? { style: { position: 'absolute', insetInline: 0, transform: `translateY(${(virtualStart + offset) * FILE_ROW_HEIGHT}px)` } } : {}, onDelete: () => setDeleteTarget([entry]), onDirectoryTarget: target => { setDragOver(false); setDirectoryDropTarget(target); }, onDropIntoDirectory: (payload, target) => { setDirectoryDropTarget(undefined); onDragSourceChange(undefined); onExternalDrop(payload, target); }, onDragSourceChange: onDragSourceChange, onSelect: additive => select(entry, additive), onOpen: () => { void openEntry(entry.path); } }, entry.path)) }) })] }), _jsx("footer", { children: _jsx("span", { children: selected.length > 0 ? t("file-transfer-workspace.selectedItems", [selected.length]) : t("file-transfer-workspace.items", [view?.entries.length ?? 0]) }) }), dragOver && _jsxs("div", { className: "dsh-ssh-file-drop-overlay", children: [_jsx("strong", { children: dragSource?.endpointId === pane.endpointId ? t("file-transfer-workspace.moveToThisDirectory") : t("file-transfer-workspace.copyToThisDirectory") }), _jsx("span", { children: view?.path ?? pane.path })] }), openedFile !== undefined && _jsx(Dialog, { variant: "confirmation", className: "dsh-ssh-file-download-dialog", title: openedFile.name, subtitle: openedFile.path, onClose: () => setOpenedFile(undefined), children: _jsx("div", { className: "dsh-ssh-dialog-actions", children: _jsxs("a", { onClick: trackDownloadClick, className: "dsh-ssh-secondary-button", href: fileEndpointDownloadUrl(endpoint.id, openedFile.path), download: true, children: [_jsx(DownloadGlyph, {}), _jsx("span", { children: t("file-transfer-workspace.download") })] }) }) }), deleteTarget !== undefined && _jsx(FileEntryDeleteDialog, { locationName: endpoint.name, locationKind: "remote", entries: deleteTarget, onClose: () => setDeleteTarget(undefined), onDelete: removeSelected })] });
308
328
  }
309
329
  function SortColumn({ label, sortKey, current, onSort }) {
310
330
  useSshLocale();
@@ -364,7 +384,7 @@ function TransferQueue({ jobs, endpoints, onCancel, onConflict }) {
364
384
  return _jsx(BrowserTransferTask, { job: item.job }, 'browser-' + item.job.id);
365
385
  const job = item.job;
366
386
  const progress = job.totalBytes > 0 ? Math.min(100, job.transferredBytes / job.totalBytes * 100) : job.state === 'completed' ? 100 : 0;
367
- return _jsxs("article", { children: [_jsx("span", { className: `dsh-ssh-transfer-state is-${job.state}`, "aria-hidden": "true" }), _jsxs("span", { className: "dsh-ssh-transfer-job-copy", children: [_jsxs("strong", { children: [remoteLabel(job.request.sourcePaths), " ", _jsx("i", { children: "\u2192" }), " ", endpointName(endpoints, job.request.destinationEndpointId)] }), _jsx("small", { children: job.error ?? jobLabel(job, progress) }), _jsx("span", { className: "dsh-ssh-transfer-job-time", children: jobTimeLabel(job) }), _jsx("span", { className: "dsh-ssh-transfer-progress", children: _jsx("i", { style: { transform: `scaleX(${progress / 100})` } }) })] }), (job.state === 'queued' || job.state === 'scanning' || job.state === 'transferring') ? _jsx("button", { type: "button", className: "dsh-ssh-icon-button", "aria-label": t("file-transfer-workspace.cancelTransfer"), onClick: () => { void onCancel(job.id); }, children: _jsx(IconCloseOutline16, { size: 15 }) }) : job.state === 'failed' && job.error?.includes('destination already contains') ? _jsx("button", { type: "button", className: "dsh-ssh-job-resolve", onClick: () => onConflict(job), children: t("file-transfer-workspace.handle") }) : null] }, job.id);
387
+ return _jsxs("article", { children: [_jsx("span", { className: `dsh-ssh-transfer-state is-${job.state}`, "aria-hidden": "true" }), _jsxs("span", { className: "dsh-ssh-transfer-job-copy", children: [_jsxs("strong", { children: [remoteLabel(job.request.sourcePaths), " ", _jsx("i", { children: "\u2192" }), " ", endpointName(endpoints, job.request.destinationEndpointId)] }), _jsx("small", { children: job.error ?? jobLabel(job, progress) }), _jsx("span", { className: "dsh-ssh-transfer-job-time", children: jobTimeLabel(job) }), _jsx("span", { className: "dsh-ssh-transfer-progress", children: _jsx("i", { style: { transform: `scaleX(${progress / 100})` } }) })] }), (job.state === 'queued' || job.state === 'scanning' || job.state === 'transferring') ? _jsx("button", { type: "button", className: "dsh-ssh-icon-button", "aria-label": t("file-transfer-workspace.cancelTransfer"), onClick: () => { void onCancel(job.id); }, children: _jsx(IconCloseOutline16, { size: 15 }) }) : isTransferConflict(job) ? _jsx("button", { type: "button", className: "dsh-ssh-job-resolve", onClick: () => onConflict(job), children: t("file-transfer-workspace.handle") }) : null] }, job.id);
368
388
  }) });
369
389
  }
370
390
  function ConflictDialog({ job, onClose, onRetry }) {
@@ -373,9 +393,10 @@ function ConflictDialog({ job, onClose, onRetry }) {
373
393
  const [saving, setSaving] = useState(false);
374
394
  return _jsxs(Dialog, { variant: "confirmation", className: "dsh-ssh-transfer-conflict-dialog", title: t("file-transfer-workspace.aFileWithTheSameNameExistsAtThe"), subtitle: t("file-transfer-workspace.chooseHowToHandleThisBatchOfTransfers"), onClose: onClose, children: [_jsxs("div", { className: "dsh-ssh-transfer-conflict-copy", children: [_jsx("strong", { children: remoteLabel(job.request.sourcePaths) }), _jsx("span", { children: job.request.destinationDirectory })] }), _jsx("div", { className: "dsh-ssh-conflict-options", children: [['rename', t("file-transfer-workspace.autoRename"), t("file-transfer-workspace.keepBothFilesAppendANumberToTheName")], ['skip', t("file-transfer-workspace.skipFilesWithTheSameName"), t("file-transfer-workspace.continueTransferringTheRemainingItems")], ['overwrite', t("file-transfer-workspace.overwriteTheTargetFiles"), t("file-transfer-workspace.replaceTheDestinationContentWithTheSourceContent")]].map(option => _jsxs("button", { type: "button", "data-ssh-interactive": "choice", "aria-pressed": policy === option[0], className: policy === option[0] ? 'is-active' : '', onClick: () => setPolicy(option[0]), children: [_jsx("i", { "aria-hidden": "true" }), _jsxs("span", { children: [_jsx("strong", { children: option[1] }), _jsx("small", { children: option[2] })] })] }, option[0])) }), _jsxs("div", { className: "dsh-ssh-dialog-actions", children: [_jsx("button", { type: "button", className: "dsh-ssh-secondary-button", "data-ssh-dialog-close": true, onClick: onClose, children: t("client.cancel") }), _jsx("button", { type: "button", className: "dsh-ssh-primary-button", disabled: saving, onClick: () => { setSaving(true); void onRetry(policy).finally(() => setSaving(false)); }, children: saving ? t("file-transfer-workspace.reQueuing") : t("file-transfer-workspace.continueTransfer") })] })] });
375
395
  }
376
- function FileAccessDialog({ endpoints, access, onClose }) {
396
+ function FileAccessDialog({ endpoints: allEndpoints, access, onClose }) {
377
397
  useSshLocale();
378
398
  const value = access.value;
399
+ const endpoints = allEndpoints.filter(endpoint => endpoint.kind === 'ftp');
379
400
  const mounted = endpoints.filter(endpoint => value?.fileEndpointIds.includes(endpoint.id)).length;
380
401
  const toggle = (id) => access.setFileEndpoints(value?.fileEndpointIds.includes(id) ? value.fileEndpointIds.filter(item => item !== id) : [...(value?.fileEndpointIds ?? []), id]);
381
402
  return _jsxs(Dialog, { className: "dsh-ssh-file-access-dialog", title: t("file-transfer-workspace.sessionAccess2"), subtitle: t("file-transfer-workspace.manageTheRemoteFileConnectionsAvailableToThisSession"), onClose: onClose, children: [_jsxs("div", { className: "dsh-ssh-file-access-body dsh-ssh-scroll-surface", children: [access.error && _jsx("p", { className: "dsh-ssh-inline-error", role: "alert", children: access.error }), _jsxs("section", { className: "dsh-ssh-file-access-section", "aria-labelledby": "dsh-ssh-file-access-connections", children: [_jsxs("header", { children: [_jsxs("span", { children: [_jsx("strong", { id: "dsh-ssh-file-access-connections", children: t("file-transfer-workspace.fileConnections") }), _jsx("small", { children: t("file-transfer-workspace.letTheCurrentSessionBrowseSelectedFtpFtpsOr") })] }), _jsxs("i", { children: [mounted.toString().padStart(2, '0'), " / ", endpoints.length.toString().padStart(2, '0')] })] }), _jsx("div", { className: "dsh-ssh-file-access-list", children: access.loading ? _jsx(FileAccessSkeleton, {}) : endpoints.length === 0 ? _jsxs("div", { className: "dsh-ssh-file-access-empty", children: [_jsx("strong", { children: t("file-transfer-workspace.noConnectionsAvailable") }), _jsx("small", { children: t("file-transfer-workspace.addAnFtpInFileTransferFirstOrAdd") })] }) : endpoints.map(endpoint => _jsx(FileAccessEndpoint, { endpoint: endpoint, enabled: value?.fileEndpointIds.includes(endpoint.id) ?? false, onToggle: () => toggle(endpoint.id) }, endpoint.id)) })] }), _jsxs("section", { className: "dsh-ssh-file-access-section is-options", "aria-labelledby": "dsh-ssh-file-access-policy", children: [_jsx("header", { children: _jsxs("span", { children: [_jsx("strong", { id: "dsh-ssh-file-access-policy", children: t("file-transfer-workspace.accessPolicy") }), _jsx("small", { children: t("file-transfer-workspace.filePermissionsAreSeparateFromSshCommandAndTerminal") })] }) }), _jsxs("div", { className: "dsh-ssh-file-access-options", children: [_jsxs("div", { className: "dsh-ssh-file-access-policy-row", children: [_jsxs("span", { children: [_jsx("strong", { children: t("file-transfer-workspace.fileOperationPermissions") }), _jsx("small", { children: t("file-transfer-workspace.browseModeDoesNotExposeCrossEndpointTransferTools") })] }), _jsx(FilePermissionPicker, { value: value?.filePermission ?? 'browse', onChange: access.setFilePermission })] }), _jsxs("div", { className: "dsh-ssh-file-access-policy-row", children: [_jsxs("span", { children: [_jsx("strong", { children: t("file-transfer-workspace.confirmBeforeTransfer") }), _jsx("small", { children: t("file-transfer-workspace.requireDshApprovalWhenTheAiStartsATransfer") })] }), _jsx(FileApprovalSwitch, { checked: value?.requireFileApproval ?? true, onChange: access.setRequireFileApproval })] })] })] })] }), _jsxs("footer", { className: "dsh-ssh-file-access-footer", children: [_jsxs("span", { className: access.saving ? 'is-saving' : 'is-saved', children: [_jsx("i", { "aria-hidden": "true" }), access.saving ? t("file-transfer-workspace.savingChanges") : t("file-transfer-workspace.autosaves", [mounted > 0 ? t("file-transfer-workspace.authorizedConnections", [mounted]) : t("file-transfer-workspace.noAuthorizedConnections")])] }), _jsx("button", { type: "button", className: "dsh-ssh-primary-button", "data-ssh-dialog-close": true, disabled: access.saving, onClick: onClose, children: access.saving ? t("client.saving2") : t("file-transfer-workspace.done") })] })] });
@@ -438,6 +459,7 @@ function protocolShort(protocol) { return protocol === 'sftp' ? 'SFTP' : protoco
438
459
  function directoryKey(endpointId, value) { return JSON.stringify([endpointId, value.replaceAll('\\', '/').replace(/\/+$/, '') || '/']); }
439
460
  function canDropIntoPane(source, pane) { return source === undefined || (source.paneId !== pane.id && !isSameRemoteTransferLocation(source, { endpointId: pane.endpointId, directory: pane.path })); }
440
461
  function isFinished(state) { return state === 'completed' || state === 'failed' || state === 'cancelled'; }
462
+ function isTransferConflict(job) { return job.state === 'failed' && job.error?.includes('destination already contains') === true; }
441
463
  function formatBytes(value) { if (value < 1024)
442
464
  return `${value} B`; if (value < 1024 ** 2)
443
465
  return `${(value / 1024).toFixed(1)} KB`; if (value < 1024 ** 3)