@opensumi/ide-terminal-next 3.7.2-next-1740052080.0 → 3.7.2-next-1740054042.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 (244) hide show
  1. package/LICENSE +21 -0
  2. package/lib/browser/component/resize.delegate.d.ts +14 -0
  3. package/lib/browser/component/resize.delegate.d.ts.map +1 -0
  4. package/lib/browser/component/resize.delegate.js +46 -0
  5. package/lib/browser/component/resize.delegate.js.map +1 -0
  6. package/lib/browser/component/resize.module.less +77 -0
  7. package/lib/browser/component/resize.view.d.ts +16 -0
  8. package/lib/browser/component/resize.view.d.ts.map +1 -0
  9. package/lib/browser/component/resize.view.js +55 -0
  10. package/lib/browser/component/resize.view.js.map +1 -0
  11. package/lib/browser/component/search.module.less +61 -0
  12. package/lib/browser/component/search.view.d.ts +3 -0
  13. package/lib/browser/component/search.view.d.ts.map +1 -0
  14. package/lib/browser/component/search.view.js +89 -0
  15. package/lib/browser/component/search.view.js.map +1 -0
  16. package/lib/browser/component/tab.item.d.ts +7 -0
  17. package/lib/browser/component/tab.item.d.ts.map +1 -0
  18. package/lib/browser/component/tab.item.js +121 -0
  19. package/lib/browser/component/tab.item.js.map +1 -0
  20. package/lib/browser/component/tab.module.less +174 -0
  21. package/lib/browser/component/tab.view.d.ts +4 -0
  22. package/lib/browser/component/tab.view.d.ts.map +1 -0
  23. package/lib/browser/component/tab.view.js +65 -0
  24. package/lib/browser/component/tab.view.js.map +1 -0
  25. package/lib/browser/component/terminal.module.less +50 -0
  26. package/lib/browser/component/terminal.variable.d.ts +8 -0
  27. package/lib/browser/component/terminal.variable.d.ts.map +1 -0
  28. package/lib/browser/component/terminal.variable.js +44 -0
  29. package/lib/browser/component/terminal.variable.js.map +1 -0
  30. package/lib/browser/component/terminal.view.d.ts +5 -0
  31. package/lib/browser/component/terminal.view.d.ts.map +1 -0
  32. package/lib/browser/component/terminal.view.js +63 -0
  33. package/lib/browser/component/terminal.view.js.map +1 -0
  34. package/lib/browser/component/terminal.widget.d.ts +10 -0
  35. package/lib/browser/component/terminal.widget.d.ts.map +1 -0
  36. package/lib/browser/component/terminal.widget.js +65 -0
  37. package/lib/browser/component/terminal.widget.js.map +1 -0
  38. package/lib/browser/component/variable.module.less +15 -0
  39. package/lib/browser/contribution/index.d.ts.map +1 -0
  40. package/lib/browser/contribution/index.js +11 -0
  41. package/lib/browser/contribution/index.js.map +1 -0
  42. package/lib/browser/contribution/terminal.command.js +328 -0
  43. package/lib/browser/contribution/terminal.keybinding.js +87 -0
  44. package/lib/browser/contribution/terminal.lifecycle.js +52 -0
  45. package/lib/browser/contribution/terminal.menu.js +168 -0
  46. package/lib/browser/contribution/terminal.network.js +44 -0
  47. package/lib/browser/contribution/terminal.preference.js +43 -0
  48. package/lib/browser/contribution/terminal.view.js +57 -0
  49. package/lib/browser/index.js +124 -0
  50. package/lib/browser/links/base.d.ts +8 -0
  51. package/lib/browser/links/base.d.ts.map +1 -0
  52. package/lib/browser/links/base.js +13 -0
  53. package/lib/browser/links/base.js.map +1 -0
  54. package/lib/browser/links/external-link-provider-adapter.d.ts +21 -0
  55. package/lib/browser/links/external-link-provider-adapter.d.ts.map +1 -0
  56. package/lib/browser/links/external-link-provider-adapter.js +74 -0
  57. package/lib/browser/links/external-link-provider-adapter.js.map +1 -0
  58. package/lib/browser/links/helpers.d.ts +7 -0
  59. package/lib/browser/links/helpers.d.ts.map +1 -0
  60. package/lib/browser/links/helpers.js +128 -0
  61. package/lib/browser/links/helpers.js.map +1 -0
  62. package/lib/browser/links/link-manager.d.ts +92 -0
  63. package/lib/browser/links/link-manager.d.ts.map +1 -0
  64. package/lib/browser/links/link-manager.js +342 -0
  65. package/lib/browser/links/link-manager.js.map +1 -0
  66. package/lib/browser/links/link.d.ts +31 -0
  67. package/lib/browser/links/link.d.ts.map +1 -0
  68. package/lib/browser/links/link.js +136 -0
  69. package/lib/browser/links/link.js.map +1 -0
  70. package/lib/browser/links/protocol-link-provider.d.ts +14 -0
  71. package/lib/browser/links/protocol-link-provider.d.ts.map +1 -0
  72. package/lib/browser/links/protocol-link-provider.js +71 -0
  73. package/lib/browser/links/protocol-link-provider.js.map +1 -0
  74. package/lib/browser/links/validated-local-link-provider.d.ts +41 -0
  75. package/lib/browser/links/validated-local-link-provider.d.ts.map +1 -0
  76. package/lib/browser/links/validated-local-link-provider.js +235 -0
  77. package/lib/browser/links/validated-local-link-provider.js.map +1 -0
  78. package/lib/browser/links/word-link-provider.d.ts +29 -0
  79. package/lib/browser/links/word-link-provider.d.ts.map +1 -0
  80. package/lib/browser/links/word-link-provider.js +153 -0
  81. package/lib/browser/links/word-link-provider.js.map +1 -0
  82. package/lib/browser/terminal.addon.js +83 -0
  83. package/lib/browser/terminal.api.js +162 -0
  84. package/lib/browser/terminal.client.js +680 -0
  85. package/lib/browser/terminal.color.js +240 -0
  86. package/lib/browser/terminal.context-key.js +29 -0
  87. package/lib/browser/terminal.context-menu.js +96 -0
  88. package/lib/browser/terminal.controller.js +669 -0
  89. package/lib/browser/terminal.environment.service.js +153 -0
  90. package/lib/browser/terminal.error.js +61 -0
  91. package/lib/browser/terminal.ext.host.proxy.js +108 -0
  92. package/lib/browser/terminal.hover.manager.js +85 -0
  93. package/lib/browser/terminal.input.js +32 -0
  94. package/lib/browser/terminal.internal.service.js +107 -0
  95. package/lib/browser/terminal.network.js +150 -0
  96. package/lib/browser/terminal.preference.js +136 -0
  97. package/lib/browser/terminal.profile.internal.js +104 -0
  98. package/lib/browser/terminal.profile.js +211 -0
  99. package/lib/browser/terminal.render.js +25 -0
  100. package/lib/browser/terminal.restore.js +49 -0
  101. package/lib/browser/terminal.search.js +109 -0
  102. package/lib/browser/terminal.service.js +163 -0
  103. package/lib/common/api.d.ts +22 -0
  104. package/lib/common/api.d.ts.map +1 -0
  105. package/lib/common/api.js +5 -0
  106. package/lib/common/api.js.map +1 -0
  107. package/lib/common/client.d.ts +199 -0
  108. package/lib/common/client.d.ts.map +1 -0
  109. package/lib/common/client.js +6 -0
  110. package/lib/common/client.js.map +1 -0
  111. package/lib/common/controller.d.ts +149 -0
  112. package/lib/common/controller.d.ts.map +1 -0
  113. package/lib/common/controller.js +8 -0
  114. package/lib/common/controller.js.map +1 -0
  115. package/lib/common/environmentVariable.d.ts +116 -0
  116. package/lib/common/environmentVariable.d.ts.map +1 -0
  117. package/lib/common/environmentVariable.js +30 -0
  118. package/lib/common/environmentVariable.js.map +1 -0
  119. package/lib/common/environmentVariableCollection.d.ts +9 -0
  120. package/lib/common/environmentVariableCollection.d.ts.map +1 -0
  121. package/lib/common/environmentVariableCollection.js +140 -0
  122. package/lib/common/environmentVariableCollection.js.map +1 -0
  123. package/lib/common/error.d.ts +41 -0
  124. package/lib/common/error.d.ts.map +1 -0
  125. package/lib/common/error.js +13 -0
  126. package/lib/common/error.js.map +1 -0
  127. package/lib/common/extension.d.ts +139 -0
  128. package/lib/common/extension.d.ts.map +1 -0
  129. package/lib/common/extension.js +57 -0
  130. package/lib/common/extension.js.map +1 -0
  131. package/lib/common/index.d.ts +17 -0
  132. package/lib/common/index.d.ts.map +1 -0
  133. package/lib/common/index.js +20 -0
  134. package/lib/common/index.js.map +1 -0
  135. package/lib/common/link-computer.d.ts +56 -0
  136. package/lib/common/link-computer.d.ts.map +1 -0
  137. package/lib/common/link-computer.js +282 -0
  138. package/lib/common/link-computer.js.map +1 -0
  139. package/lib/common/network.d.ts +48 -0
  140. package/lib/common/network.d.ts.map +1 -0
  141. package/lib/common/network.js +10 -0
  142. package/lib/common/network.js.map +1 -0
  143. package/lib/common/preference.d.ts +134 -0
  144. package/lib/common/preference.d.ts.map +1 -0
  145. package/lib/common/preference.js +199 -0
  146. package/lib/common/preference.js.map +1 -0
  147. package/lib/common/process.d.ts +8 -0
  148. package/lib/common/process.d.ts.map +1 -0
  149. package/lib/common/process.js +3 -0
  150. package/lib/common/process.js.map +1 -0
  151. package/lib/common/profile.d.ts +99 -0
  152. package/lib/common/profile.d.ts.map +1 -0
  153. package/lib/common/profile.js +27 -0
  154. package/lib/common/profile.js.map +1 -0
  155. package/lib/common/pty.d.ts +525 -0
  156. package/lib/common/pty.d.ts.map +1 -0
  157. package/lib/common/pty.js +28 -0
  158. package/lib/common/pty.js.map +1 -0
  159. package/lib/common/render.d.ts +29 -0
  160. package/lib/common/render.d.ts.map +1 -0
  161. package/lib/common/render.js +10 -0
  162. package/lib/common/render.js.map +1 -0
  163. package/lib/common/resize.d.ts +43 -0
  164. package/lib/common/resize.d.ts.map +1 -0
  165. package/lib/common/resize.js +3 -0
  166. package/lib/common/resize.js.map +1 -0
  167. package/lib/common/restore.d.ts +6 -0
  168. package/lib/common/restore.d.ts.map +1 -0
  169. package/lib/common/restore.js +5 -0
  170. package/lib/common/restore.js.map +1 -0
  171. package/lib/common/service.d.ts +96 -0
  172. package/lib/common/service.d.ts.map +1 -0
  173. package/lib/common/service.js +6 -0
  174. package/lib/common/service.js.map +1 -0
  175. package/lib/common/shell.d.ts +11 -0
  176. package/lib/common/shell.d.ts.map +1 -0
  177. package/lib/common/shell.js +14 -0
  178. package/lib/common/shell.js.map +1 -0
  179. package/lib/common/theme.d.ts +6 -0
  180. package/lib/common/theme.d.ts.map +1 -0
  181. package/lib/common/theme.js +5 -0
  182. package/lib/common/theme.js.map +1 -0
  183. package/lib/common/utils.d.ts +4 -0
  184. package/lib/common/utils.d.ts.map +1 -0
  185. package/lib/common/utils.js +15 -0
  186. package/lib/common/utils.js.map +1 -0
  187. package/lib/common/xterm.d.ts +27 -0
  188. package/lib/common/xterm.d.ts.map +1 -0
  189. package/lib/common/xterm.js +10 -0
  190. package/lib/common/xterm.js.map +1 -0
  191. package/lib/index.js +5 -0
  192. package/lib/node/data-store.d.ts +13 -0
  193. package/lib/node/data-store.d.ts.map +1 -0
  194. package/lib/node/data-store.js +6 -0
  195. package/lib/node/data-store.js.map +1 -0
  196. package/lib/node/index.d.ts +10 -0
  197. package/lib/node/index.d.ts.map +1 -0
  198. package/lib/node/index.js +64 -0
  199. package/lib/node/index.js.map +1 -0
  200. package/lib/node/pty.d.ts +42 -0
  201. package/lib/node/pty.d.ts.map +1 -0
  202. package/lib/node/pty.js +277 -0
  203. package/lib/node/pty.js.map +1 -0
  204. package/lib/node/pty.manager.d.ts +52 -0
  205. package/lib/node/pty.manager.d.ts.map +1 -0
  206. package/lib/node/pty.manager.js +157 -0
  207. package/lib/node/pty.manager.js.map +1 -0
  208. package/lib/node/pty.manager.remote.d.ts +23 -0
  209. package/lib/node/pty.manager.remote.d.ts.map +1 -0
  210. package/lib/node/pty.manager.remote.js +124 -0
  211. package/lib/node/pty.manager.remote.js.map +1 -0
  212. package/lib/node/pty.proxy.d.ts +45 -0
  213. package/lib/node/pty.proxy.d.ts.map +1 -0
  214. package/lib/node/pty.proxy.js +277 -0
  215. package/lib/node/pty.proxy.js.map +1 -0
  216. package/lib/node/pty.proxy.remote.exec.d.ts +2 -0
  217. package/lib/node/pty.proxy.remote.exec.d.ts.map +1 -0
  218. package/lib/node/pty.proxy.remote.exec.js +7 -0
  219. package/lib/node/pty.proxy.remote.exec.js.map +1 -0
  220. package/lib/node/shell-integration.service.d.ts +24 -0
  221. package/lib/node/shell-integration.service.d.ts.map +1 -0
  222. package/lib/node/shell-integration.service.js +187 -0
  223. package/lib/node/shell-integration.service.js.map +1 -0
  224. package/lib/node/shell.d.ts +20 -0
  225. package/lib/node/shell.d.ts.map +1 -0
  226. package/lib/node/shell.js +199 -0
  227. package/lib/node/shell.js.map +1 -0
  228. package/lib/node/terminal.process.service.d.ts +5 -0
  229. package/lib/node/terminal.process.service.d.ts.map +1 -0
  230. package/lib/node/terminal.process.service.js +15 -0
  231. package/lib/node/terminal.process.service.js.map +1 -0
  232. package/lib/node/terminal.profile.service.d.ts +19 -0
  233. package/lib/node/terminal.profile.service.d.ts.map +1 -0
  234. package/lib/node/terminal.profile.service.js +228 -0
  235. package/lib/node/terminal.profile.service.js.map +1 -0
  236. package/lib/node/terminal.service.client.d.ts +51 -0
  237. package/lib/node/terminal.service.client.d.ts.map +1 -0
  238. package/lib/node/terminal.service.client.js +159 -0
  239. package/lib/node/terminal.service.client.js.map +1 -0
  240. package/lib/node/terminal.service.d.ts +30 -0
  241. package/lib/node/terminal.service.d.ts.map +1 -0
  242. package/lib/node/terminal.service.js +246 -0
  243. package/lib/node/terminal.service.js.map +1 -0
  244. package/package.json +18 -18
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PtyServiceManagerRemote = exports.PtyServiceManagerRemoteOptions = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const net_1 = tslib_1.__importDefault(require("net"));
6
+ const di_1 = require("@opensumi/di");
7
+ const ide_connection_1 = require("@opensumi/ide-connection");
8
+ const connection_1 = require("@opensumi/ide-connection/lib/common/rpc/connection");
9
+ const ide_core_common_1 = require("@opensumi/ide-core-common");
10
+ const common_1 = require("../common");
11
+ const pty_manager_1 = require("./pty.manager");
12
+ exports.PtyServiceManagerRemoteOptions = Symbol('PtyServiceManagerRemoteOptions');
13
+ // 双容器架构 - 在IDE容器中远程运行,与DEV Server上的PtyService通信
14
+ // 继承自PtyServiceManager,覆写了创建PtyProxyService连接的方法,用于需要远程连接PtyService的场景
15
+ // 具体需要根据应用场景,通过DI注入覆盖PtyServiceManager使用
16
+ let PtyServiceManagerRemote = class PtyServiceManagerRemote extends pty_manager_1.PtyServiceManager {
17
+ // Pty运行在单独的容器上,通过Socket连接,可以自定义Socket连接参数
18
+ constructor(opts = { socketConnectOpts: { port: common_1.PTY_SERVICE_PROXY_SERVER_PORT } }) {
19
+ super();
20
+ this.initRemoteConnectionMode(opts);
21
+ }
22
+ initRPCService(socket) {
23
+ const clientCenter = new ide_connection_1.RPCServiceCenter();
24
+ const { getRPCService: clientGetRPCService, createRPCService } = (0, ide_connection_1.initRPCService)(clientCenter);
25
+ const getService = clientGetRPCService(common_1.PTY_SERVICE_PROXY_PROTOCOL);
26
+ this.ptyServiceProxy = getService;
27
+ this.ptyServiceProxyDeferred.resolve();
28
+ let callbackDisposed = false;
29
+ // 处理回调
30
+ createRPCService(common_1.PTY_SERVICE_PROXY_CALLBACK_PROTOCOL, {
31
+ $callback: async (callId, ...args) => {
32
+ if (callbackDisposed) {
33
+ // 在这里做一下Dispose的处理,在Dispose之后回调不再被执行
34
+ // TODO: 但是按照我的理解,在removeConnection之后这里就完全不应该被执行,但却被执行了,是为什么呢?
35
+ return;
36
+ }
37
+ const callback = this.callbackMap.get(callId);
38
+ if (!callback) {
39
+ // 这里callbackMap的callId对应的回调方法被注销,但是依然被调用了,这种情况不应该发生
40
+ this.logger.warn('PtyServiceManager not found callback:', callId);
41
+ }
42
+ else {
43
+ callback(...args);
44
+ }
45
+ },
46
+ });
47
+ const connection = connection_1.SumiConnection.forNetSocket(socket, {
48
+ logger: this.logger,
49
+ });
50
+ const remove = clientCenter.setSumiConnection(connection);
51
+ return ide_core_common_1.Disposable.create(() => {
52
+ callbackDisposed = true;
53
+ remove.dispose();
54
+ });
55
+ }
56
+ initRemoteConnectionMode(opts) {
57
+ const { socketTimeout, reconnectInterval, socketConnectOpts } = opts;
58
+ if (this.disposer) {
59
+ this.disposer.dispose();
60
+ }
61
+ this.disposer = new ide_core_common_1.Disposable();
62
+ const socket = new net_1.default.Socket();
63
+ if (socketTimeout) {
64
+ socket.setTimeout(socketTimeout);
65
+ }
66
+ let reconnectTimer = null;
67
+ const reconnect = () => {
68
+ if (reconnectTimer) {
69
+ return;
70
+ }
71
+ reconnectTimer = setTimeout(() => {
72
+ this.logger.log('PtyServiceManagerRemote reconnect');
73
+ socket.destroy();
74
+ this.initRemoteConnectionMode(opts);
75
+ }, reconnectInterval || 2000);
76
+ };
77
+ // UNIX Socket 连接监听,成功连接后再创建RPC服务
78
+ socket.once('connect', () => {
79
+ this.logger.log('PtyServiceManagerRemote connected');
80
+ if (socketTimeout) {
81
+ socket.setTimeout(0);
82
+ }
83
+ if (reconnectTimer) {
84
+ clearTimeout(reconnectTimer);
85
+ reconnectTimer = null;
86
+ }
87
+ this.disposer.addDispose(this.initRPCService(socket));
88
+ });
89
+ // UNIX Socket 连接失败或者断开,此时需要等待 1.5s 后重新连接
90
+ socket.on('close', (hadError) => {
91
+ this.logger.log('PtyServiceManagerRemote socket close, hadError:', hadError);
92
+ reconnect();
93
+ });
94
+ // 处理 Socket 异常
95
+ socket.on('error', (e) => {
96
+ this.logger.warn('PtyServiceManagerRemote socket error ', e);
97
+ });
98
+ socket.on('end', () => {
99
+ this.logger.log('PtyServiceManagerRemote socket end');
100
+ });
101
+ socket.on('timeout', () => {
102
+ this.logger.log('PtyServiceManagerRemote socket timeout');
103
+ reconnect();
104
+ });
105
+ try {
106
+ this.logger.log('PtyServiceManagerRemote socket start connect');
107
+ socket.connect(socketConnectOpts);
108
+ }
109
+ catch (e) {
110
+ // 连接错误的时候会抛出异常,此时自动重连,同时需要 catch 错误
111
+ this.logger.warn('PtyServiceManagerRemote socket connect error', e);
112
+ }
113
+ }
114
+ initLocal() {
115
+ // override 空置父类的方法,因为不需要LocalInit,使用RemoteInit替代
116
+ }
117
+ };
118
+ exports.PtyServiceManagerRemote = PtyServiceManagerRemote;
119
+ exports.PtyServiceManagerRemote = PtyServiceManagerRemote = tslib_1.__decorate([
120
+ (0, di_1.Injectable)(),
121
+ tslib_1.__param(0, (0, di_1.Optional)(exports.PtyServiceManagerRemoteOptions)),
122
+ tslib_1.__metadata("design:paramtypes", [Object])
123
+ ], PtyServiceManagerRemote);
124
+ //# sourceMappingURL=pty.manager.remote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.manager.remote.js","sourceRoot":"","sources":["../../src/node/pty.manager.remote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ListenOptions } from 'net';
2
+ import * as pty from 'node-pty';
3
+ import { IPtyProxyRPCService, IPtySpawnOptions } from '../common';
4
+ /**
5
+ * NOTE: 这里面的Session通常是短Session 也就是OpenSumi里面Session `${clientId}|${sessionId}` 的sessionId部分
6
+ * 因为ClientId在每次刷新都会变化,而SessionId可以被持久化保存,后续按照之前的SessionID连接Pty的时候就可以做到Terminal Resume
7
+ *
8
+ * PtyServiceProxy是真实运行的托管着NodePty的代理
9
+ */
10
+ export declare class PtyServiceProxy implements IPtyProxyRPCService {
11
+ private ptyInstanceMap;
12
+ private ptyDataCacheMap;
13
+ private ptySessionMap;
14
+ private ptyDisposableMap;
15
+ private readonly debugLogger;
16
+ private $callback;
17
+ constructor(callback: (callId: number, ...args: any[]) => void);
18
+ private checkProcess;
19
+ $checkSession(sessionId: string): boolean;
20
+ $spawn(file: string, args: string[] | string, options: pty.IPtyForkOptions | pty.IWindowsPtyForkOptions, longSessionId?: string, spawnOptions?: IPtySpawnOptions): any;
21
+ $onData(callId: number, pid: number): void;
22
+ $onExit(callId: number, pid: number): void;
23
+ $resize(pid: number, columns: number, rows: number): void;
24
+ $clear(pid: number): void;
25
+ $write(pid: number, data: string): void;
26
+ $kill(pid: number, signal?: string): void;
27
+ $pause(pid: number): void;
28
+ $resume(pid: number): void;
29
+ $getProcess(pid: number): string;
30
+ $getCwd(pid: number): Promise<string | undefined>;
31
+ }
32
+ export declare class PtyServiceProxyRPCProvider {
33
+ private ptyServiceProxy;
34
+ private readonly ptyServiceCenter;
35
+ private readonly logger;
36
+ private serverListenOptions;
37
+ private server;
38
+ constructor(listenOptions?: ListenOptions);
39
+ initServer(): void;
40
+ private createSocket;
41
+ private bindProcessHandler;
42
+ private setProxyConnection;
43
+ get $ptyServiceProxy(): PtyServiceProxy;
44
+ }
45
+ //# sourceMappingURL=pty.proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.proxy.d.ts","sourceRoot":"","sources":["../../src/node/pty.proxy.ts"],"names":[],"mappings":"AAEA,OAAY,EAAE,aAAa,EAAU,MAAM,KAAK,CAAC;AAGjD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAOhC,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAKjB,MAAM,WAAW,CAAC;AAqCnB;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IAEzD,OAAO,CAAC,cAAc,CAA4B;IAElD,OAAO,CAAC,eAAe,CAAoC;IAE3D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,gBAAgB,CAAwC;IAEhE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,SAAS,CAA+C;gBAEpD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,OAAA,KAAK,IAAI;IAKvD,OAAO,CAAC,YAAY;IASpB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IASzC,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EACvB,OAAO,EAAE,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,sBAAsB,EACzD,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,gBAAgB,GAC9B,GAAG;IAgEN,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAwB1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAW1C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAKzD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKzB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMvC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK1B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKhC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAGlD;AAGD,qBAAa,0BAA0B;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,MAAM,CAAS;gBAEX,aAAa,GAAE,aAAuD;IAa3E,UAAU;IAKjB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,kBAAkB;IAU1B,IAAW,gBAAgB,IAAI,eAAe,CAE7C;CACF"}
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PtyServiceProxyRPCProvider = exports.PtyServiceProxy = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const child_process_1 = tslib_1.__importDefault(require("child_process"));
6
+ const fs_1 = tslib_1.__importDefault(require("fs"));
7
+ const net_1 = tslib_1.__importDefault(require("net"));
8
+ const util_1 = require("util");
9
+ const pty = tslib_1.__importStar(require("node-pty"));
10
+ const ide_connection_1 = require("@opensumi/ide-connection");
11
+ const connection_1 = require("@opensumi/ide-connection/lib/common/rpc/connection");
12
+ const ide_core_node_1 = require("@opensumi/ide-core-node");
13
+ const platform_1 = require("@opensumi/ide-utils/lib/platform");
14
+ const common_1 = require("../common");
15
+ const readLinkAsync = (0, util_1.promisify)(fs_1.default.readlink);
16
+ const execAsync = (0, util_1.promisify)(child_process_1.default.exec);
17
+ const PTY_LINE_DATA_CACHE_DEFAULT_SIZE = 500;
18
+ // 存储Pty-onData返回的数据行,用于用户Resume场景下的数据恢复
19
+ class PtyLineDataCache {
20
+ constructor(size = PTY_LINE_DATA_CACHE_DEFAULT_SIZE) {
21
+ this.dataArray = [];
22
+ this.size = size;
23
+ }
24
+ get data() {
25
+ return this.dataArray;
26
+ }
27
+ add(data) {
28
+ if (this.dataArray.length >= this.size) {
29
+ this.dataArray.shift();
30
+ }
31
+ this.dataArray.push(data);
32
+ }
33
+ clear() {
34
+ this.dataArray = [];
35
+ }
36
+ }
37
+ /**
38
+ * NOTE: 这里面的Session通常是短Session 也就是OpenSumi里面Session `${clientId}|${sessionId}` 的sessionId部分
39
+ * 因为ClientId在每次刷新都会变化,而SessionId可以被持久化保存,后续按照之前的SessionID连接Pty的时候就可以做到Terminal Resume
40
+ *
41
+ * PtyServiceProxy是真实运行的托管着NodePty的代理
42
+ */
43
+ class PtyServiceProxy {
44
+ constructor(callback) {
45
+ // Map <pid, pty> 存放进程Pid和Pty实例的映射
46
+ this.ptyInstanceMap = new Map();
47
+ // 存放Pid和对应Pty产生数据的记录
48
+ this.ptyDataCacheMap = new Map();
49
+ // 存放Session和Pid的映射
50
+ this.ptySessionMap = new Map();
51
+ this.ptyDisposableMap = new Map();
52
+ this.debugLogger = (0, ide_core_node_1.getDebugLogger)('PtyServiceProxy');
53
+ this.$callback = () => { };
54
+ this.$callback = callback;
55
+ }
56
+ // 检查Pty的PID是否存活
57
+ checkProcess(pid) {
58
+ try {
59
+ process.kill(pid, 0);
60
+ return true;
61
+ }
62
+ catch (e) {
63
+ return false;
64
+ }
65
+ }
66
+ $checkSession(sessionId) {
67
+ const pid = this.ptySessionMap.get(sessionId);
68
+ if (pid) {
69
+ return this.checkProcess(pid);
70
+ }
71
+ else {
72
+ return false;
73
+ }
74
+ }
75
+ $spawn(file, args, options, longSessionId, spawnOptions) {
76
+ var _a, _b, _c;
77
+ // 切割sessionId到短Id
78
+ const sessionId = (_a = longSessionId === null || longSessionId === void 0 ? void 0 : longSessionId.split(common_1.TERMINAL_ID_SEPARATOR)) === null || _a === void 0 ? void 0 : _a[1];
79
+ this.debugLogger.log('ptyServiceProxy: spawn sessionId:', sessionId);
80
+ let ptyInstance;
81
+ if (sessionId) {
82
+ // 查询SessionId对应的Pid
83
+ const pid = this.ptySessionMap.get(sessionId) || -10;
84
+ // 查询Pid是否存活
85
+ const checkResult = pid > 0 ? this.checkProcess(pid) : false;
86
+ this.debugLogger.debug('ptyServiceProxy: check process result:', pid, checkResult);
87
+ if (checkResult) {
88
+ ptyInstance = this.ptyInstanceMap.get(pid);
89
+ }
90
+ else {
91
+ // 有Session ID 但是没有 Process,说明是被系统杀了,此时需要重新spawn一个Pty
92
+ this.ptyInstanceMap.delete(pid);
93
+ ptyInstance = pty.spawn(file, args, options);
94
+ if (spawnOptions === null || spawnOptions === void 0 ? void 0 : spawnOptions.preserveHistory) {
95
+ // 这种情况下,需要把之前的PtyCache给attach上去,方便用户查看记录
96
+ const oldLineCache = this.ptyDataCacheMap.get(pid);
97
+ if (oldLineCache) {
98
+ this.ptyDataCacheMap.set(ptyInstance.pid, oldLineCache);
99
+ this.ptyDataCacheMap.delete(pid);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ // 如果不存在ptyInstance的话,则重新创建一个,兜底用,理论上不会走到这里
105
+ if (!ptyInstance) {
106
+ ptyInstance = pty.spawn(file, args, options);
107
+ }
108
+ this.ptyInstanceMap.set(ptyInstance.pid, ptyInstance);
109
+ if (sessionId) {
110
+ this.ptySessionMap.set(sessionId, ptyInstance.pid);
111
+ }
112
+ const pid = ptyInstance.pid;
113
+ const cacheSize = (_b = spawnOptions === null || spawnOptions === void 0 ? void 0 : spawnOptions.ptyLineCacheSize) !== null && _b !== void 0 ? _b : PTY_LINE_DATA_CACHE_DEFAULT_SIZE;
114
+ // 初始化PtyLineCache
115
+ if (!this.ptyDataCacheMap.has(pid)) {
116
+ this.ptyDataCacheMap.set(pid, new PtyLineDataCache(cacheSize));
117
+ }
118
+ // 初始化ptyDisposableMap
119
+ if (!this.ptyDisposableMap.has(pid)) {
120
+ this.ptyDisposableMap.set(pid, new ide_core_node_1.DisposableCollection());
121
+ }
122
+ else {
123
+ // 如果已经存在DisposableCollection说明之前已经注册过,此时就需要取消注册,因为一会还要注册一遍
124
+ (_c = this.ptyDisposableMap.get(pid)) === null || _c === void 0 ? void 0 : _c.dispose();
125
+ }
126
+ // 走RPC序列化的部分,function不走序列化,走单独的RPC调用
127
+ const ptyInstanceSimple = {
128
+ pid: ptyInstance.pid,
129
+ cols: ptyInstance.cols,
130
+ rows: ptyInstance.rows,
131
+ process: ptyInstance.process,
132
+ handleFlowControl: ptyInstance.handleFlowControl,
133
+ };
134
+ this.debugLogger.log('ptyServiceProxy: spawn', ptyInstanceSimple);
135
+ return ptyInstanceSimple;
136
+ }
137
+ $onData(callId, pid) {
138
+ var _a;
139
+ this.debugLogger.debug('ptyServiceCenter $onData: callId: ', callId, ' pid: ', pid);
140
+ const ptyInstance = this.ptyInstanceMap.get(pid);
141
+ const cache = this.ptyDataCacheMap.get(pid);
142
+ cache === null || cache === void 0 ? void 0 : cache.data.forEach((value) => {
143
+ this.$callback(callId, value);
144
+ });
145
+ const onDataDisposable = ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.onData((e) => {
146
+ this.debugLogger.debug('ptyServiceCenter: onData', e, 'pid:', pid, 'callId', callId);
147
+ if (typeof e === 'string') {
148
+ // 缓存数据的时候只存放前1024个字符,因为正常情况下也不会超过1024个,如果超过的话,基本上是用户误操作导致的cat 二进制文件或者其他未知问题
149
+ // 比如说某个程序一直通过CSI转义命令来以用户不可见的方式增加终端输出内容
150
+ // 缓存限制在每行1024字符来避免潜在的内存泄漏问题
151
+ cache === null || cache === void 0 ? void 0 : cache.add(e.slice(0, 1024));
152
+ }
153
+ this.$callback(callId, e);
154
+ });
155
+ if (onDataDisposable) {
156
+ (_a = this.ptyDisposableMap.get(pid)) === null || _a === void 0 ? void 0 : _a.push(onDataDisposable);
157
+ }
158
+ }
159
+ $onExit(callId, pid) {
160
+ var _a;
161
+ const ptyInstance = this.ptyInstanceMap.get(pid);
162
+ const onExitDisposable = ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.onExit((e) => {
163
+ this.debugLogger.debug('ptyServiceCenter: onExit', 'pid:', pid, e);
164
+ this.$callback(callId, e);
165
+ });
166
+ if (onExitDisposable) {
167
+ (_a = this.ptyDisposableMap.get(pid)) === null || _a === void 0 ? void 0 : _a.push(onExitDisposable);
168
+ }
169
+ }
170
+ $resize(pid, columns, rows) {
171
+ const ptyInstance = this.ptyInstanceMap.get(pid);
172
+ ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.resize(columns, rows);
173
+ }
174
+ $clear(pid) {
175
+ const ptyInstance = this.ptyInstanceMap.get(pid);
176
+ ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.clear();
177
+ }
178
+ $write(pid, data) {
179
+ const ptyInstance = this.ptyInstanceMap.get(pid);
180
+ this.debugLogger.debug('ptyServiceCenter: write', JSON.stringify(data), 'pid:', pid);
181
+ ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.write(data);
182
+ }
183
+ $kill(pid, signal) {
184
+ this.debugLogger.debug('ptyServiceCenter: kill', 'pid:', pid);
185
+ const ptyInstance = this.ptyInstanceMap.get(pid);
186
+ ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.kill(signal);
187
+ this.ptyInstanceMap.delete(pid);
188
+ this.ptyDataCacheMap.delete(pid);
189
+ }
190
+ $pause(pid) {
191
+ const ptyInstance = this.ptyInstanceMap.get(pid);
192
+ ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.pause();
193
+ }
194
+ $resume(pid) {
195
+ const ptyInstance = this.ptyInstanceMap.get(pid);
196
+ ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.resume();
197
+ }
198
+ $getProcess(pid) {
199
+ const ptyInstance = this.ptyInstanceMap.get(pid);
200
+ return (ptyInstance === null || ptyInstance === void 0 ? void 0 : ptyInstance.process) || '';
201
+ }
202
+ $getCwd(pid) {
203
+ return getPidCwd(pid);
204
+ }
205
+ }
206
+ exports.PtyServiceProxy = PtyServiceProxy;
207
+ // 需要单独运行PtyServer的时候集成此Class然后运行initServer
208
+ class PtyServiceProxyRPCProvider {
209
+ constructor(listenOptions = { port: common_1.PTY_SERVICE_PROXY_SERVER_PORT }) {
210
+ this.logger = (0, ide_core_node_1.getDebugLogger)();
211
+ this.serverListenOptions = listenOptions;
212
+ this.ptyServiceCenter = new ide_connection_1.RPCServiceCenter();
213
+ const { createRPCService, getRPCService } = (0, ide_connection_1.initRPCService)(this.ptyServiceCenter);
214
+ const $callback = getRPCService(common_1.PTY_SERVICE_PROXY_CALLBACK_PROTOCOL).$callback;
215
+ this.ptyServiceProxy = new PtyServiceProxy($callback);
216
+ createRPCService(common_1.PTY_SERVICE_PROXY_PROTOCOL, this.ptyServiceProxy);
217
+ }
218
+ initServer() {
219
+ this.createSocket();
220
+ this.bindProcessHandler();
221
+ }
222
+ createSocket() {
223
+ this.server = net_1.default.createServer();
224
+ this.server.on('connection', (connection) => {
225
+ this.logger.log('ptyServiceCenter: new connections coming in');
226
+ this.setProxyConnection(connection);
227
+ });
228
+ // const ipcPath = normalizedIpcHandlerPath()
229
+ if (this.serverListenOptions.path && fs_1.default.existsSync(this.serverListenOptions.path)) {
230
+ // UNIX DOMAIN SOCKET
231
+ fs_1.default.unlinkSync(this.serverListenOptions.path); // 兜底逻辑,如果之前Server没有清除掉SOCK文件的话,那就先清除
232
+ }
233
+ this.server.listen(this.serverListenOptions);
234
+ this.logger.log('ptyServiceCenter: listening on', this.serverListenOptions);
235
+ }
236
+ // Close Server, release UNIX DOMAIN SOCKET
237
+ bindProcessHandler() {
238
+ // Handles normal process termination.
239
+ process.on('exit', () => {
240
+ this.server.close();
241
+ });
242
+ // Handles `Ctrl+C`.
243
+ process.on('SIGINT', async () => {
244
+ process.exit(0);
245
+ });
246
+ // Handles `kill pid`.
247
+ process.on('SIGTERM', async () => {
248
+ process.exit(0);
249
+ });
250
+ }
251
+ setProxyConnection(socket) {
252
+ const connection = connection_1.SumiConnection.forNetSocket(socket, {
253
+ logger: this.logger,
254
+ });
255
+ const remove = this.ptyServiceCenter.setSumiConnection(connection);
256
+ socket.on('close', () => {
257
+ remove.dispose();
258
+ });
259
+ }
260
+ get $ptyServiceProxy() {
261
+ return this.ptyServiceProxy;
262
+ }
263
+ }
264
+ exports.PtyServiceProxyRPCProvider = PtyServiceProxyRPCProvider;
265
+ async function getPidCwd(pid) {
266
+ if (platform_1.isLinux) {
267
+ return await readLinkAsync(`/proc/${pid}/cwd`);
268
+ }
269
+ if (platform_1.isMacintosh) {
270
+ const result = await execAsync(`lsof -a -d cwd -p ${pid} | tail -1 | awk '{print $9}'`);
271
+ if (result.stdout) {
272
+ return result.stdout.trim();
273
+ }
274
+ }
275
+ return undefined;
276
+ }
277
+ //# sourceMappingURL=pty.proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.proxy.js","sourceRoot":"","sources":["../../src/node/pty.proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pty.proxy.remote.exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.proxy.remote.exec.d.ts","sourceRoot":"","sources":["../../src/node/pty.proxy.remote.exec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const pty_proxy_1 = require("./pty.proxy");
4
+ // 双容器模式下,需要以本文件作为 entry 单独打包出一个可执行文件,运行在 DEV 容器中
5
+ const proxyProvider = new pty_proxy_1.PtyServiceProxyRPCProvider();
6
+ proxyProvider.initServer();
7
+ //# sourceMappingURL=pty.proxy.remote.exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.proxy.remote.exec.js","sourceRoot":"","sources":["../../src/node/pty.proxy.remote.exec.ts"],"names":[],"mappings":";;AAAA,2CAAyD;AAEzD,iDAAiD;AACjD,MAAM,aAAa,GAAG,IAAI,sCAA0B,EAAE,CAAC;AACvD,aAAa,CAAC,UAAU,EAAE,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface IShellIntegrationService {
2
+ initBashInitFile(): Promise<string>;
3
+ getBashIntegrationContent(): Promise<string>;
4
+ initZshDotFiles(): Promise<string>;
5
+ }
6
+ export declare const shellIntegrationDirPath: string;
7
+ export declare const bashIntegrationPath: string;
8
+ export declare const IShellIntegrationService: unique symbol;
9
+ /**
10
+ * 可通过重写此 Service 做到自定义的 Bash 注入
11
+ * 后续增加 ZSH 的支持
12
+ */
13
+ export declare class ShellIntegrationService implements IShellIntegrationService {
14
+ /**
15
+ 注入的 bash initFile,用于 ShellIntegration 功能的搭建
16
+ 可覆写此文件,实现自定义的注入
17
+ *注意*:要保持 prompt_start 和 prompt_end 的注入,否则会影响 IDE 的终端智能
18
+ */
19
+ getBashIntegrationContent(): Promise<string>;
20
+ initBashInitFile(): Promise<string>;
21
+ initZshDotFiles(): Promise<string>;
22
+ private writeZshConfigShellScripts;
23
+ }
24
+ //# sourceMappingURL=shell-integration.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-integration.service.d.ts","sourceRoot":"","sources":["../../src/node/shell-integration.service.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IAEvC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAGpC,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAG7C,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC;AAGD,eAAO,MAAM,uBAAuB,QAA6D,CAAC;AAElG,eAAO,MAAM,mBAAmB,QAA8D,CAAC;AAE/F,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAE3E;;;GAGG;AACH,qBACa,uBAAwB,YAAW,wBAAwB;IACtE;;;;MAIE;IACI,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC;IAsC5C,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAOnC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;YAM1B,0BAA0B;CAqHzC"}