@ai-support-agent/cli 0.1.23 → 0.1.24-beta.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.
- package/dist/base-websocket.d.ts +26 -6
- package/dist/base-websocket.d.ts.map +1 -1
- package/dist/base-websocket.js +52 -19
- package/dist/base-websocket.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -4
- package/dist/constants.js.map +1 -1
- package/dist/logger.d.ts +15 -5
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +98 -12
- package/dist/logger.js.map +1 -1
- package/dist/terminal/constants.d.ts +7 -0
- package/dist/terminal/constants.d.ts.map +1 -1
- package/dist/terminal/constants.js +8 -1
- package/dist/terminal/constants.js.map +1 -1
- package/dist/terminal/terminal-session-manager.d.ts +18 -0
- package/dist/terminal/terminal-session-manager.d.ts.map +1 -1
- package/dist/terminal/terminal-session-manager.js +69 -1
- package/dist/terminal/terminal-session-manager.js.map +1 -1
- package/dist/terminal/terminal-session.d.ts +13 -0
- package/dist/terminal/terminal-session.d.ts.map +1 -1
- package/dist/terminal/terminal-session.js +21 -0
- package/dist/terminal/terminal-session.js.map +1 -1
- package/dist/terminal/terminal-websocket.d.ts +25 -1
- package/dist/terminal/terminal-websocket.d.ts.map +1 -1
- package/dist/terminal/terminal-websocket.js +28 -1
- package/dist/terminal/terminal-websocket.js.map +1 -1
- package/package.json +1 -1
package/dist/base-websocket.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ export interface BaseWebSocketOptions {
|
|
|
7
7
|
logPrefix: string;
|
|
8
8
|
/** ping 送信間隔 (ms)。省略時は WS_HEARTBEAT_INTERVAL_MS。0 以下で無効化。 */
|
|
9
9
|
heartbeatIntervalMs?: number;
|
|
10
|
-
/** pong
|
|
11
|
-
|
|
10
|
+
/** 連続未応答 pong の許容回数。省略時は WS_PONG_MAX_MISSED。 */
|
|
11
|
+
pongMaxMissed?: number;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* WebSocket 接続の共通ライフサイクル管理
|
|
@@ -24,7 +24,16 @@ export declare abstract class BaseWebSocketConnection<TMessage> {
|
|
|
24
24
|
};
|
|
25
25
|
protected readonly options: BaseWebSocketOptions;
|
|
26
26
|
private heartbeatTimer;
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Liveness state for the isAlive / missed-pong heartbeat method.
|
|
29
|
+
* - alive: set true on every 'pong'. Reset to false right after each ping so
|
|
30
|
+
* the next tick can tell whether a pong arrived in between.
|
|
31
|
+
* - missed: consecutive ticks without a pong. Reaching pongMaxMissed terminates.
|
|
32
|
+
* alive starts false (consistent with the API side): the very first ping tick
|
|
33
|
+
* counts as one missed unless a pong has already arrived.
|
|
34
|
+
*/
|
|
35
|
+
private heartbeatAlive;
|
|
36
|
+
private heartbeatMissed;
|
|
28
37
|
constructor(options: BaseWebSocketOptions);
|
|
29
38
|
connect(): Promise<void>;
|
|
30
39
|
disconnect(): void;
|
|
@@ -44,12 +53,23 @@ export declare abstract class BaseWebSocketConnection<TMessage> {
|
|
|
44
53
|
protected doConnect(): Promise<void>;
|
|
45
54
|
/**
|
|
46
55
|
* ハートビート (ping/pong) を開始する。
|
|
47
|
-
*
|
|
48
|
-
*
|
|
56
|
+
*
|
|
57
|
+
* ws 標準の「isAlive」単一インターバル方式を使う。各インターバルで:
|
|
58
|
+
* 1. 前回の tick 以降に pong を受信していなければ missed をインクリメントし、
|
|
59
|
+
* missed が pongMaxMissed に達したら接続を死んでいる(half-open /
|
|
60
|
+
* ロードバランサに切られた)とみなして terminate する。
|
|
61
|
+
* 2. pong を受信していれば missed を 0 にリセットする。
|
|
62
|
+
* 3. alive を false に戻し、次の ping を送信する。
|
|
63
|
+
*
|
|
64
|
+
* ただし最初の tick は ping を送るだけで miss 判定をしない(接続直後は相手に
|
|
65
|
+
* pong を返す機会がまだ無いため)。これにより健全な接続でも phantom miss を
|
|
66
|
+
* 数えず、pongMaxMissed 回の許容を接続直後からフルに使える(finding #6)。
|
|
67
|
+
*
|
|
49
68
|
* terminate は 'close' イベントを発火させ、既存の再接続ロジックを起動する。
|
|
69
|
+
* 1 回の未応答では terminate しないため、イベントループ stall による誤検知を防ぐ。
|
|
50
70
|
*/
|
|
51
71
|
private startHeartbeat;
|
|
52
|
-
/**
|
|
72
|
+
/** ハートビートを停止し、生存確認状態をリセットする。 */
|
|
53
73
|
private stopHeartbeat;
|
|
54
74
|
/** WebSocket close イベント時の追加処理(サブクラスでオーバーライド可能) */
|
|
55
75
|
protected onWebSocketClose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-websocket.d.ts","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAO1B,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,
|
|
1
|
+
{"version":3,"file":"base-websocket.d.ts","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAA;AAO1B,MAAM,WAAW,oBAAoB;IACnC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;GAKG;AACH,8BAAsB,uBAAuB,CAAC,QAAQ;IACpD,SAAS,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI,CAAO;IACrC,SAAS,CAAC,MAAM,UAAQ;IACxB,SAAS,CAAC,QAAQ,CAAC,oBAAoB;;MAAiB;IACxD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAA;IAChD,OAAO,CAAC,cAAc,CAA8C;IACpE;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,eAAe,CAAI;gBAEf,OAAO,EAAE,oBAAoB;IAIzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,UAAU,IAAI,IAAI;IAUlB,8BAA8B;IAC9B,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,SAAS;IAE/C,mDAAmD;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAE9E,uBAAuB;IACvB,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAExF,iCAAiC;IACjC,SAAS,CAAC,YAAY,IAAI,IAAI;IAI9B,sCAAsC;IACtC,SAAS,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAQ7C,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IASzC,qCAAqC;IACrC,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA8CpC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,cAAc;IAuCtB,gCAAgC;IAChC,OAAO,CAAC,aAAa;IASrB,kDAAkD;IAClD,SAAS,CAAC,gBAAgB,IAAI,IAAI;YAIpB,WAAW;CAW1B"}
|
package/dist/base-websocket.js
CHANGED
|
@@ -21,7 +21,16 @@ class BaseWebSocketConnection {
|
|
|
21
21
|
reconnectAttemptsRef = { current: 0 };
|
|
22
22
|
options;
|
|
23
23
|
heartbeatTimer = null;
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Liveness state for the isAlive / missed-pong heartbeat method.
|
|
26
|
+
* - alive: set true on every 'pong'. Reset to false right after each ping so
|
|
27
|
+
* the next tick can tell whether a pong arrived in between.
|
|
28
|
+
* - missed: consecutive ticks without a pong. Reaching pongMaxMissed terminates.
|
|
29
|
+
* alive starts false (consistent with the API side): the very first ping tick
|
|
30
|
+
* counts as one missed unless a pong has already arrived.
|
|
31
|
+
*/
|
|
32
|
+
heartbeatAlive = false;
|
|
33
|
+
heartbeatMissed = 0;
|
|
25
34
|
constructor(options) {
|
|
26
35
|
this.options = options;
|
|
27
36
|
}
|
|
@@ -74,11 +83,9 @@ class BaseWebSocketConnection {
|
|
|
74
83
|
this.onOpen(ws, resolve);
|
|
75
84
|
});
|
|
76
85
|
ws.on('pong', () => {
|
|
77
|
-
// pong
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.pongTimeoutTimer = null;
|
|
81
|
-
}
|
|
86
|
+
// A pong proves the peer is alive; the next heartbeat tick will reset
|
|
87
|
+
// the missed counter. Safe to receive even before the first ping.
|
|
88
|
+
this.heartbeatAlive = true;
|
|
82
89
|
});
|
|
83
90
|
ws.on('message', (data) => {
|
|
84
91
|
let msg;
|
|
@@ -110,24 +117,52 @@ class BaseWebSocketConnection {
|
|
|
110
117
|
}
|
|
111
118
|
/**
|
|
112
119
|
* ハートビート (ping/pong) を開始する。
|
|
113
|
-
*
|
|
114
|
-
*
|
|
120
|
+
*
|
|
121
|
+
* ws 標準の「isAlive」単一インターバル方式を使う。各インターバルで:
|
|
122
|
+
* 1. 前回の tick 以降に pong を受信していなければ missed をインクリメントし、
|
|
123
|
+
* missed が pongMaxMissed に達したら接続を死んでいる(half-open /
|
|
124
|
+
* ロードバランサに切られた)とみなして terminate する。
|
|
125
|
+
* 2. pong を受信していれば missed を 0 にリセットする。
|
|
126
|
+
* 3. alive を false に戻し、次の ping を送信する。
|
|
127
|
+
*
|
|
128
|
+
* ただし最初の tick は ping を送るだけで miss 判定をしない(接続直後は相手に
|
|
129
|
+
* pong を返す機会がまだ無いため)。これにより健全な接続でも phantom miss を
|
|
130
|
+
* 数えず、pongMaxMissed 回の許容を接続直後からフルに使える(finding #6)。
|
|
131
|
+
*
|
|
115
132
|
* terminate は 'close' イベントを発火させ、既存の再接続ロジックを起動する。
|
|
133
|
+
* 1 回の未応答では terminate しないため、イベントループ stall による誤検知を防ぐ。
|
|
116
134
|
*/
|
|
117
135
|
startHeartbeat(ws) {
|
|
118
136
|
const intervalMs = this.options.heartbeatIntervalMs ?? constants_1.WS_HEARTBEAT_INTERVAL_MS;
|
|
119
137
|
if (intervalMs <= 0)
|
|
120
138
|
return;
|
|
121
|
-
const
|
|
139
|
+
const maxMissed = this.options.pongMaxMissed ?? constants_1.WS_PONG_MAX_MISSED;
|
|
122
140
|
this.stopHeartbeat();
|
|
141
|
+
// Reset liveness state for this connection.
|
|
142
|
+
this.heartbeatAlive = false;
|
|
143
|
+
this.heartbeatMissed = 0;
|
|
144
|
+
// The first tick only sends a ping; miss evaluation starts on the next tick.
|
|
145
|
+
let firstTick = true;
|
|
123
146
|
this.heartbeatTimer = setInterval(() => {
|
|
124
147
|
if (ws.readyState !== ws_1.default.OPEN)
|
|
125
148
|
return;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
149
|
+
if (firstTick) {
|
|
150
|
+
// No prior ping was sent, so a missing pong here is not a real miss.
|
|
151
|
+
firstTick = false;
|
|
152
|
+
}
|
|
153
|
+
else if (!this.heartbeatAlive) {
|
|
154
|
+
this.heartbeatMissed++;
|
|
155
|
+
if (this.heartbeatMissed >= maxMissed) {
|
|
156
|
+
logger_1.logger.debug(`${this.options.logPrefix} No pong after ${this.heartbeatMissed} consecutive pings, terminating connection`);
|
|
157
|
+
ws.terminate();
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this.heartbeatMissed = 0;
|
|
163
|
+
}
|
|
164
|
+
// Expect a fresh pong before the next tick.
|
|
165
|
+
this.heartbeatAlive = false;
|
|
131
166
|
try {
|
|
132
167
|
ws.ping();
|
|
133
168
|
}
|
|
@@ -136,16 +171,14 @@ class BaseWebSocketConnection {
|
|
|
136
171
|
}
|
|
137
172
|
}, intervalMs);
|
|
138
173
|
}
|
|
139
|
-
/**
|
|
174
|
+
/** ハートビートを停止し、生存確認状態をリセットする。 */
|
|
140
175
|
stopHeartbeat() {
|
|
141
176
|
if (this.heartbeatTimer) {
|
|
142
177
|
clearInterval(this.heartbeatTimer);
|
|
143
178
|
this.heartbeatTimer = null;
|
|
144
179
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
this.pongTimeoutTimer = null;
|
|
148
|
-
}
|
|
180
|
+
this.heartbeatAlive = false;
|
|
181
|
+
this.heartbeatMissed = 0;
|
|
149
182
|
}
|
|
150
183
|
/** WebSocket close イベント時の追加処理(サブクラスでオーバーライド可能) */
|
|
151
184
|
onWebSocketClose() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-websocket.js","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":";;;;;;AAAA,4CAA0B;AAE1B,
|
|
1
|
+
{"version":3,"file":"base-websocket.js","sourceRoot":"","sources":["../src/base-websocket.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -132,7 +132,7 @@ export declare const APPSYNC_MAX_RECONNECT_RETRIES: number;
|
|
|
132
132
|
export declare const APPSYNC_RECONNECT_BASE_DELAY_MS = 1000;
|
|
133
133
|
export declare const WS_RECONNECT_MAX_DELAY_MS = 60000;
|
|
134
134
|
export declare const WS_HEARTBEAT_INTERVAL_MS = 30000;
|
|
135
|
-
export declare const
|
|
135
|
+
export declare const WS_PONG_MAX_MISSED = 3;
|
|
136
136
|
export declare const REGISTER_RETRY_BASE_DELAY_MS = 1000;
|
|
137
137
|
export declare const REGISTER_RETRY_MAX_DELAY_MS = 60000;
|
|
138
138
|
export declare const REGISTER_AUTH_ERROR_DELAY_MS: number;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -34,7 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.BROWSER_PROXY_REQUEST_TIMEOUT_MS = exports.CHUNK_LOG_LIMIT = exports.LOG_DEBUG_LIMIT = exports.LOG_RESULT_LIMIT = exports.LOG_PAYLOAD_LIMIT = exports.LOG_MESSAGE_LIMIT = exports.CHAT_MAX_ATTEMPTS = exports.CHAT_RETRY_DELAY_MS = exports.DEFAULT_APPSYNC_TIMEOUT_MS = exports.CLAUDE_DETECT_TIMEOUT_MS = exports.CHAT_SIGKILL_DELAY = exports.CHAT_TOOL_EXECUTION_TIMEOUT = exports.CHAT_TIMEOUT = exports.DEFAULT_MAX_TOKENS = exports.ANTHROPIC_API_URL = exports.ANTHROPIC_API_VERSION = exports.DEFAULT_ANTHROPIC_MODEL = exports.NPM_COMMAND = exports.NPM_INSTALL_TIMEOUT = exports.UPDATE_CHECK_INITIAL_DELAY = exports.UPDATE_CHECK_INTERVAL = exports.ALERT_STALE_PROCESSING_MINUTES = exports.ALERT_STALE_RECOVERY_INTERVAL_MS = exports.PROJECT_CODE_ENV_DEFAULT = exports.PROJECT_CODE_CLI_DIRECT = exports.PROJECT_CODE_DEFAULT = exports.DEFAULT_API_URL = exports.DEFAULT_LOGIN_URL = exports.LOCALHOST_ADDRESS = exports.HIDDEN_ENTRIES = exports.MAX_DIR_ENTRIES = exports.MAX_INTERVAL = exports.MIN_INTERVAL = exports.PROCESS_LIST_TIMEOUT = exports.MAX_FILE_WRITE_SIZE = exports.MAX_FILE_READ_SIZE = exports.MAX_CMD_TIMEOUT = exports.CMD_DEFAULT_TIMEOUT = exports.API_REQUEST_TIMEOUT = exports.API_BASE_DELAY_MS = exports.API_MAX_RETRIES = exports.MAX_AUTH_BODY_SIZE = exports.MAX_OUTPUT_SIZE = exports.AGENT_VERSION = exports.AUTH_TIMEOUT = exports.DEFAULT_HEARTBEAT_INTERVAL = exports.DEFAULT_POLL_INTERVAL = exports.CONFIG_FILE = exports.CONFIG_DIR = exports.ENV_VARS = void 0;
|
|
37
|
-
exports.DELAYED_RESTART_MS = exports.BUSY_QUERY_TIMEOUT_MS = exports.UPDATE_FORCED_BUSY_WAIT_TIMEOUT_MS = exports.UPDATE_BUSY_POLL_INTERVAL_MS = exports.UPDATE_BUSY_WAIT_TIMEOUT_MS = exports.DOCKER_RESTART_EXIT_CODE = exports.DOCKER_UPDATE_EXIT_CODE = exports.DOCKER_MARKER_REGISTERED_AGENT_ID = exports.DOCKER_MARKER_CUSTOMIZATION_HASH = exports.DOCKER_MARKER_REBUILD_NEEDED = exports.DOCKER_MARKER_BUILT_HASH = exports.REGISTER_AUTH_ERROR_DELAY_MS = exports.REGISTER_RETRY_MAX_DELAY_MS = exports.REGISTER_RETRY_BASE_DELAY_MS = exports.
|
|
37
|
+
exports.DELAYED_RESTART_MS = exports.BUSY_QUERY_TIMEOUT_MS = exports.UPDATE_FORCED_BUSY_WAIT_TIMEOUT_MS = exports.UPDATE_BUSY_POLL_INTERVAL_MS = exports.UPDATE_BUSY_WAIT_TIMEOUT_MS = exports.DOCKER_RESTART_EXIT_CODE = exports.DOCKER_UPDATE_EXIT_CODE = exports.DOCKER_MARKER_REGISTERED_AGENT_ID = exports.DOCKER_MARKER_CUSTOMIZATION_HASH = exports.DOCKER_MARKER_REBUILD_NEEDED = exports.DOCKER_MARKER_BUILT_HASH = exports.REGISTER_AUTH_ERROR_DELAY_MS = exports.REGISTER_RETRY_MAX_DELAY_MS = exports.REGISTER_RETRY_BASE_DELAY_MS = exports.WS_PONG_MAX_MISSED = exports.WS_HEARTBEAT_INTERVAL_MS = exports.WS_RECONNECT_MAX_DELAY_MS = exports.APPSYNC_RECONNECT_BASE_DELAY_MS = exports.APPSYNC_MAX_RECONNECT_RETRIES = exports.TOKEN_WATCH_INTERVAL_MS = exports.CHILD_PROCESS_STOP_TIMEOUT_MS = exports.CHILD_PROCESS_RESTART_DELAY_MS = exports.CHILD_PROCESS_MAX_RESTARTS = exports.GIT_CHECKOUT_TIMEOUT = exports.GIT_FETCH_TIMEOUT = exports.GIT_CLONE_TIMEOUT = exports.ANTHROPIC_CONTENT_TYPE = exports.SSE_EVENT = exports.SSE_DONE = exports.SSE_PREFIX = exports.INITIAL_CONFIG_SYNC_RETRY_DELAY_MS = exports.INITIAL_CONFIG_SYNC_MAX_RETRIES = exports.CONFIG_SYNC_DEBOUNCE_MS = exports.API_ENDPOINTS = exports.ERR_SYNC_REPOSITORY_REQUIRES_CALLBACK = exports.ERR_UPDATE_REQUIRES_CALLBACK = exports.ERR_REBOOT_REQUIRES_CALLBACK = exports.ERR_CONFIG_SYNC_REQUIRES_CALLBACK = exports.ERR_SETUP_REQUIRES_CALLBACK = exports.ERR_E2E_TEST_REQUIRES_CLIENT = exports.ERR_CHAT_REQUIRES_CLIENT = exports.ERR_CLAUDE_CLI_NOT_FOUND = exports.ERR_AUTH_SERVER_START_FAILED = exports.ERR_ANTHROPIC_API_KEY_NOT_SET = exports.ERR_INVALID_PID = exports.ERR_NO_FILE_PATH_SPECIFIED = exports.ERR_NO_CONTENT_SPECIFIED = exports.ERR_NO_COMMAND_SPECIFIED = exports.ERR_MESSAGE_REQUIRED = exports.ERR_AGENT_ID_REQUIRED = void 0;
|
|
38
38
|
exports.CLI_FLAG_NO_AUTO_UPDATE = exports.CLI_FLAG_NO_DOCKERFILE_SYNC = exports.CLI_FLAG_NO_DOCKER = exports.CLI_FLAG_VERBOSE = exports.NOTIFICATION_ACTION = void 0;
|
|
39
39
|
const os = __importStar(require("os"));
|
|
40
40
|
const path_1 = require("path");
|
|
@@ -222,11 +222,17 @@ exports.WS_RECONNECT_MAX_DELAY_MS = 60_000;
|
|
|
222
222
|
// Without an application-level ping, an idle WebSocket that is silently dropped by a
|
|
223
223
|
// load balancer (e.g. ALB idle timeout) never fires a 'close' event on the client, so
|
|
224
224
|
// the connection becomes a half-open "zombie" and the reconnect logic never runs.
|
|
225
|
-
//
|
|
226
|
-
//
|
|
225
|
+
//
|
|
226
|
+
// Dead-detection uses the ws-standard "isAlive" single-interval method (the same one
|
|
227
|
+
// used on the API gateway side): on each WS_HEARTBEAT_INTERVAL_MS tick, if no pong has
|
|
228
|
+
// been received since the previous tick the missed counter is incremented; once it
|
|
229
|
+
// reaches WS_PONG_MAX_MISSED consecutive misses the socket is terminated (which fires
|
|
230
|
+
// 'close' and triggers reconnect). A single missed pong therefore does NOT terminate,
|
|
231
|
+
// which removes the event-loop-stall false positive of the old per-ping setTimeout timer.
|
|
227
232
|
// The interval must be well below the ALB idle timeout (3600s in this deployment).
|
|
228
233
|
exports.WS_HEARTBEAT_INTERVAL_MS = 30_000;
|
|
229
|
-
|
|
234
|
+
// Number of consecutive missed pongs tolerated before the connection is considered dead.
|
|
235
|
+
exports.WS_PONG_MAX_MISSED = 3;
|
|
230
236
|
// Registration retry (persistent)
|
|
231
237
|
// register() failures used to leave the process in a silent zombie state.
|
|
232
238
|
// Retry forever with exponential backoff + jitter, capped at REGISTER_RETRY_MAX_DELAY_MS.
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -28,12 +28,22 @@ export declare function stripCursorCodes(text: string): string;
|
|
|
28
28
|
export declare function makeLinePrefixer(prefix: string, write: (s: string) => void): (chunk: string) => void;
|
|
29
29
|
/** Mask secrets in log messages */
|
|
30
30
|
export declare function maskSecrets(message: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Structured context fields attached to a log entry (e.g. tenantCode,
|
|
33
|
+
* projectCode, agentId). String values are masked for secrets; non-string
|
|
34
|
+
* values are passed through unchanged.
|
|
35
|
+
*/
|
|
36
|
+
export type LogContext = Record<string, unknown>;
|
|
37
|
+
/** Enable or disable JSON structured output at runtime. */
|
|
38
|
+
export declare function setJsonMode(enabled: boolean): void;
|
|
39
|
+
/** Whether JSON structured output is currently enabled. */
|
|
40
|
+
export declare function isJsonMode(): boolean;
|
|
31
41
|
export declare const logger: {
|
|
32
42
|
setVerbose(enabled: boolean): void;
|
|
33
|
-
info(message: string): void;
|
|
34
|
-
warn(message: string): void;
|
|
35
|
-
error(message: string): void;
|
|
36
|
-
debug(message: string): void;
|
|
37
|
-
success(message: string): void;
|
|
43
|
+
info(message: string, context?: LogContext): void;
|
|
44
|
+
warn(message: string, context?: LogContext): void;
|
|
45
|
+
error(message: string, context?: LogContext): void;
|
|
46
|
+
debug(message: string, context?: LogContext): void;
|
|
47
|
+
success(message: string, context?: LogContext): void;
|
|
38
48
|
};
|
|
39
49
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAiCA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAehE;AAkBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAYzB;AAiCD,mCAAmC;AACnC,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQnD;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAiCA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAehE;AAkBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GACzB,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAYzB;AAiCD,mCAAmC;AACnC,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAgBhD,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,2DAA2D;AAC3D,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AA2DD,eAAO,MAAM,MAAM;wBACG,OAAO,GAAG,IAAI;kBAIpB,MAAM,YAAY,UAAU,GAAG,IAAI;kBAQnC,MAAM,YAAY,UAAU,GAAG,IAAI;mBAQlC,MAAM,YAAY,UAAU,GAAG,IAAI;mBAQnC,MAAM,YAAY,UAAU,GAAG,IAAI;qBAUjC,MAAM,YAAY,UAAU,GAAG,IAAI;CAOrD,CAAA"}
|
package/dist/logger.js
CHANGED
|
@@ -7,6 +7,8 @@ exports.prefixLines = prefixLines;
|
|
|
7
7
|
exports.stripCursorCodes = stripCursorCodes;
|
|
8
8
|
exports.makeLinePrefixer = makeLinePrefixer;
|
|
9
9
|
exports.maskSecrets = maskSecrets;
|
|
10
|
+
exports.setJsonMode = setJsonMode;
|
|
11
|
+
exports.isJsonMode = isJsonMode;
|
|
10
12
|
const COLORS = {
|
|
11
13
|
reset: '\x1b[0m',
|
|
12
14
|
red: '\x1b[31m',
|
|
@@ -161,29 +163,113 @@ function maskSecrets(message) {
|
|
|
161
163
|
}
|
|
162
164
|
return masked;
|
|
163
165
|
}
|
|
164
|
-
|
|
165
|
-
|
|
166
|
+
/**
|
|
167
|
+
* Reserved top-level fields of a JSON log entry. Context keys colliding with
|
|
168
|
+
* these are ignored so callers cannot spoof the level/message/timestamp.
|
|
169
|
+
*/
|
|
170
|
+
const RESERVED_LOG_FIELDS = new Set(['level', 'message', 'timestamp']);
|
|
171
|
+
/**
|
|
172
|
+
* Opt-in JSON structured output. Defaults to the human-readable text format.
|
|
173
|
+
* Initialized from the AI_AGENT_LOG_FORMAT env var (`json` enables it) so
|
|
174
|
+
* daemonized/service operation can request JSON without code changes, while
|
|
175
|
+
* interactive use keeps the colored text format.
|
|
176
|
+
*/
|
|
177
|
+
let jsonModeEnabled = process.env.AI_AGENT_LOG_FORMAT === 'json';
|
|
178
|
+
/** Enable or disable JSON structured output at runtime. */
|
|
179
|
+
function setJsonMode(enabled) {
|
|
180
|
+
jsonModeEnabled = enabled;
|
|
181
|
+
}
|
|
182
|
+
/** Whether JSON structured output is currently enabled. */
|
|
183
|
+
function isJsonMode() {
|
|
184
|
+
return jsonModeEnabled;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Context keys whose values are considered sensitive and fully redacted
|
|
188
|
+
* regardless of their content (mirrors the key-value SECRET_PATTERNS keys).
|
|
189
|
+
*/
|
|
190
|
+
const SECRET_CONTEXT_KEY_RE = /^(?:password|secret|token|api_?key|access_?key|secret_?key|session_?token|authorization)$/i;
|
|
191
|
+
/**
|
|
192
|
+
* Mask secrets in a context object:
|
|
193
|
+
* - values under secret-like keys are fully redacted,
|
|
194
|
+
* - other string values are run through maskSecrets,
|
|
195
|
+
* - non-string values are passed through unchanged.
|
|
196
|
+
*/
|
|
197
|
+
function maskContext(context) {
|
|
198
|
+
const masked = {};
|
|
199
|
+
for (const [key, value] of Object.entries(context)) {
|
|
200
|
+
if (SECRET_CONTEXT_KEY_RE.test(key) && typeof value === 'string') {
|
|
201
|
+
masked[key] = '****';
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
masked[key] = typeof value === 'string' ? maskSecrets(value) : value;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return masked;
|
|
208
|
+
}
|
|
209
|
+
/** Render a context object as a readable ` key=value` suffix for text mode. */
|
|
210
|
+
function formatTextContext(context) {
|
|
211
|
+
if (!context)
|
|
212
|
+
return '';
|
|
213
|
+
const masked = maskContext(context);
|
|
214
|
+
const parts = Object.entries(masked).map(([key, value]) => {
|
|
215
|
+
const str = typeof value === 'string' ? value : JSON.stringify(value);
|
|
216
|
+
return `${key}=${str}`;
|
|
217
|
+
});
|
|
218
|
+
return parts.length > 0 ? ` ${parts.join(' ')}` : '';
|
|
219
|
+
}
|
|
220
|
+
function formatLog(level, color, message, context) {
|
|
221
|
+
return `${COLORS.gray}[${timestamp()}]${COLORS.reset} ${color}${level}${COLORS.reset} ${maskSecrets(message)}${formatTextContext(context)}`;
|
|
222
|
+
}
|
|
223
|
+
/** Build a JSON log line with reserved fields plus masked context fields. */
|
|
224
|
+
function formatJsonLog(level, message, context) {
|
|
225
|
+
const entry = {
|
|
226
|
+
level,
|
|
227
|
+
message: maskSecrets(message),
|
|
228
|
+
timestamp: new Date().toISOString(),
|
|
229
|
+
};
|
|
230
|
+
if (context) {
|
|
231
|
+
for (const [key, value] of Object.entries(maskContext(context))) {
|
|
232
|
+
// Reserved fields cannot be overridden by caller-supplied context.
|
|
233
|
+
if (!RESERVED_LOG_FIELDS.has(key)) {
|
|
234
|
+
entry[key] = value;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return JSON.stringify(entry);
|
|
166
239
|
}
|
|
167
240
|
exports.logger = {
|
|
168
241
|
setVerbose(enabled) {
|
|
169
242
|
verboseEnabled = enabled;
|
|
170
243
|
},
|
|
171
|
-
info(message) {
|
|
172
|
-
console.log(
|
|
244
|
+
info(message, context) {
|
|
245
|
+
console.log(jsonModeEnabled
|
|
246
|
+
? formatJsonLog('info', message, context)
|
|
247
|
+
: formatLog('INFO ', COLORS.green, message, context));
|
|
173
248
|
},
|
|
174
|
-
warn(message) {
|
|
175
|
-
console.log(
|
|
249
|
+
warn(message, context) {
|
|
250
|
+
console.log(jsonModeEnabled
|
|
251
|
+
? formatJsonLog('warn', message, context)
|
|
252
|
+
: formatLog('WARN ', COLORS.yellow, message, context));
|
|
176
253
|
},
|
|
177
|
-
error(message) {
|
|
178
|
-
console.error(
|
|
254
|
+
error(message, context) {
|
|
255
|
+
console.error(jsonModeEnabled
|
|
256
|
+
? formatJsonLog('error', message, context)
|
|
257
|
+
: formatLog('ERROR', COLORS.red, message, context));
|
|
179
258
|
},
|
|
180
|
-
debug(message) {
|
|
259
|
+
debug(message, context) {
|
|
181
260
|
if (verboseEnabled) {
|
|
182
|
-
console.log(
|
|
261
|
+
console.log(jsonModeEnabled
|
|
262
|
+
? formatJsonLog('debug', message, context)
|
|
263
|
+
: formatLog('DEBUG', COLORS.blue, message, context));
|
|
183
264
|
}
|
|
184
265
|
},
|
|
185
|
-
success(message) {
|
|
186
|
-
|
|
266
|
+
success(message, context) {
|
|
267
|
+
if (jsonModeEnabled) {
|
|
268
|
+
console.log(formatJsonLog('success', message, context));
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
console.log(`${COLORS.green}✓${COLORS.reset} ${message}${formatTextContext(context)}`);
|
|
272
|
+
}
|
|
187
273
|
},
|
|
188
274
|
};
|
|
189
275
|
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAqCA,0CAQC;AAGD,gDAGC;AAMD,kCAeC;AAsBD,4CAEC;AAYD,4CAeC;AAkCD,kCAQC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
export declare const SESSION_IDLE_TIMEOUT_MS: number;
|
|
2
|
+
/**
|
|
3
|
+
* Grace window kept after a transient WebSocket disconnect before the PTY is
|
|
4
|
+
* killed. A reconnect with the same sessionId within this window resumes the
|
|
5
|
+
* still-alive PTY instead of spawning a new one. This prevents an API heartbeat
|
|
6
|
+
* false-positive terminate from destroying the user's live shell.
|
|
7
|
+
*/
|
|
8
|
+
export declare const SESSION_GRACE_TIMEOUT_MS: number;
|
|
2
9
|
export declare const MAX_CONCURRENT_SESSIONS = 5;
|
|
3
10
|
export declare const TERMINAL_DEFAULT_COLS = 80;
|
|
4
11
|
export declare const TERMINAL_DEFAULT_ROWS = 24;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAiB,CAAA;AACrD,eAAO,MAAM,uBAAuB,IAAI,CAAA;AACxC,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,eAAO,MAAM,mCAAmC,OAAO,CAAA;AACvD,eAAO,MAAM,iCAAiC,QAA2B,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAiB,CAAA;AACrD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAa,CAAA;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAA;AACxC,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,eAAO,MAAM,mCAAmC,OAAO,CAAA;AACvD,eAAO,MAAM,iCAAiC,QAA2B,CAAA"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TERMINAL_WS_MAX_RECONNECT_RETRIES = exports.TERMINAL_WS_RECONNECT_BASE_DELAY_MS = exports.TERMINAL_DEFAULT_ROWS = exports.TERMINAL_DEFAULT_COLS = exports.MAX_CONCURRENT_SESSIONS = exports.SESSION_IDLE_TIMEOUT_MS = void 0;
|
|
3
|
+
exports.TERMINAL_WS_MAX_RECONNECT_RETRIES = exports.TERMINAL_WS_RECONNECT_BASE_DELAY_MS = exports.TERMINAL_DEFAULT_ROWS = exports.TERMINAL_DEFAULT_COLS = exports.MAX_CONCURRENT_SESSIONS = exports.SESSION_GRACE_TIMEOUT_MS = exports.SESSION_IDLE_TIMEOUT_MS = void 0;
|
|
4
4
|
exports.SESSION_IDLE_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
|
|
5
|
+
/**
|
|
6
|
+
* Grace window kept after a transient WebSocket disconnect before the PTY is
|
|
7
|
+
* killed. A reconnect with the same sessionId within this window resumes the
|
|
8
|
+
* still-alive PTY instead of spawning a new one. This prevents an API heartbeat
|
|
9
|
+
* false-positive terminate from destroying the user's live shell.
|
|
10
|
+
*/
|
|
11
|
+
exports.SESSION_GRACE_TIMEOUT_MS = 300 * 1000; // 5 minutes
|
|
5
12
|
exports.MAX_CONCURRENT_SESSIONS = 5;
|
|
6
13
|
exports.TERMINAL_DEFAULT_COLS = 80;
|
|
7
14
|
exports.TERMINAL_DEFAULT_ROWS = 24;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/terminal/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,aAAa;AACnE;;;;;GAKG;AACU,QAAA,wBAAwB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,YAAY;AAClD,QAAA,uBAAuB,GAAG,CAAC,CAAA;AAC3B,QAAA,qBAAqB,GAAG,EAAE,CAAA;AAC1B,QAAA,qBAAqB,GAAG,EAAE,CAAA;AAC1B,QAAA,mCAAmC,GAAG,IAAI,CAAA;AAC1C,QAAA,iCAAiC,GAAG,MAAM,CAAC,iBAAiB,CAAA"}
|
|
@@ -2,13 +2,31 @@ import { TerminalSession, TerminalSessionOptions } from './terminal-session';
|
|
|
2
2
|
import type { TerminalSessionInfo } from './terminal-session';
|
|
3
3
|
export declare class TerminalSessionManager {
|
|
4
4
|
private readonly sessions;
|
|
5
|
+
/**
|
|
6
|
+
* Per-session grace timers scheduled by closeAllGracefully(). A timer kills
|
|
7
|
+
* and removes its session when the grace window elapses without a reconnect.
|
|
8
|
+
*/
|
|
9
|
+
private readonly graceTimers;
|
|
5
10
|
private sessionCounter;
|
|
6
11
|
createSession(options?: TerminalSessionOptions): TerminalSession | null;
|
|
7
12
|
createSessionWithId(sessionId: string, options?: TerminalSessionOptions): TerminalSession | null;
|
|
8
13
|
getSession(sessionId: string): TerminalSession | undefined;
|
|
9
14
|
closeSession(sessionId: string): boolean;
|
|
10
15
|
listSessions(): TerminalSessionInfo[];
|
|
16
|
+
/**
|
|
17
|
+
* Genuine shutdown: kill every PTY immediately and drop all sessions.
|
|
18
|
+
* Use this on process exit, not on a transient WebSocket disconnect.
|
|
19
|
+
*/
|
|
11
20
|
closeAll(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Transient-disconnect handling: keep every PTY alive and schedule a grace
|
|
23
|
+
* timer per session. If no reconnect arrives within SESSION_GRACE_TIMEOUT_MS,
|
|
24
|
+
* the session is killed and removed. A reconnect with the same sessionId via
|
|
25
|
+
* createSessionWithId() cancels the timer and resumes the PTY.
|
|
26
|
+
*/
|
|
27
|
+
closeAllGracefully(): void;
|
|
28
|
+
private scheduleGraceTimer;
|
|
29
|
+
private clearGraceTimer;
|
|
12
30
|
get size(): number;
|
|
13
31
|
}
|
|
14
32
|
//# sourceMappingURL=terminal-session-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"terminal-session-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAE7D,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmD;IAC/E,OAAO,CAAC,cAAc,CAAI;IAE1B,aAAa,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,GAAG,IAAI;IAM3E,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,eAAe,GAAG,IAAI;IAsCpG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI1D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IASxC,YAAY,IAAI,mBAAmB,EAAE;IAIrC;;;OAGG;IACH,QAAQ,IAAI,IAAI;IAUhB;;;;;OAKG;IACH,kBAAkB,IAAI,IAAI;IAM1B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,eAAe;IAQvB,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
|
|
@@ -3,8 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TerminalSessionManager = void 0;
|
|
4
4
|
const terminal_session_1 = require("./terminal-session");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
|
+
const logger_1 = require("../logger");
|
|
6
7
|
class TerminalSessionManager {
|
|
7
8
|
sessions = new Map();
|
|
9
|
+
/**
|
|
10
|
+
* Per-session grace timers scheduled by closeAllGracefully(). A timer kills
|
|
11
|
+
* and removes its session when the grace window elapses without a reconnect.
|
|
12
|
+
*/
|
|
13
|
+
graceTimers = new Map();
|
|
8
14
|
sessionCounter = 0;
|
|
9
15
|
createSession(options = {}) {
|
|
10
16
|
this.sessionCounter++;
|
|
@@ -12,14 +18,30 @@ class TerminalSessionManager {
|
|
|
12
18
|
return this.createSessionWithId(sessionId, options);
|
|
13
19
|
}
|
|
14
20
|
createSessionWithId(sessionId, options = {}) {
|
|
21
|
+
// Any reconnect with this sessionId invalidates a pending grace timer: we
|
|
22
|
+
// either resume the existing PTY or replace it with a new one. Clearing
|
|
23
|
+
// unconditionally prevents an orphaned timer from later killing the
|
|
24
|
+
// freshly-created live session (see bug #1).
|
|
25
|
+
this.clearGraceTimer(sessionId);
|
|
26
|
+
// Resume path: a reconnect with the same sessionId within the grace window
|
|
27
|
+
// reuses the still-alive PTY and returns it instead of spawning a new one.
|
|
28
|
+
const existing = this.sessions.get(sessionId);
|
|
29
|
+
if (existing && existing.isAlive()) {
|
|
30
|
+
logger_1.logger.debug(`[terminal] Resuming session within grace window: ${sessionId}`);
|
|
31
|
+
return existing;
|
|
32
|
+
}
|
|
15
33
|
if (this.sessions.size >= constants_1.MAX_CONCURRENT_SESSIONS) {
|
|
16
34
|
return null;
|
|
17
35
|
}
|
|
18
36
|
const session = new terminal_session_1.TerminalSession(sessionId, options);
|
|
19
|
-
|
|
37
|
+
// Use the internal exit slot so the manager cleanup survives the websocket
|
|
38
|
+
// handler re-registering the public onExit (see bug #2).
|
|
39
|
+
session.setOnExitInternal(() => {
|
|
40
|
+
this.clearGraceTimer(sessionId);
|
|
20
41
|
this.sessions.delete(sessionId);
|
|
21
42
|
});
|
|
22
43
|
session.setOnIdleTimeout(() => {
|
|
44
|
+
this.clearGraceTimer(sessionId);
|
|
23
45
|
session.kill();
|
|
24
46
|
this.sessions.delete(sessionId);
|
|
25
47
|
});
|
|
@@ -33,6 +55,7 @@ class TerminalSessionManager {
|
|
|
33
55
|
const session = this.sessions.get(sessionId);
|
|
34
56
|
if (!session)
|
|
35
57
|
return false;
|
|
58
|
+
this.clearGraceTimer(sessionId);
|
|
36
59
|
session.kill();
|
|
37
60
|
this.sessions.delete(sessionId);
|
|
38
61
|
return true;
|
|
@@ -40,12 +63,57 @@ class TerminalSessionManager {
|
|
|
40
63
|
listSessions() {
|
|
41
64
|
return Array.from(this.sessions.values()).map((s) => s.getInfo());
|
|
42
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Genuine shutdown: kill every PTY immediately and drop all sessions.
|
|
68
|
+
* Use this on process exit, not on a transient WebSocket disconnect.
|
|
69
|
+
*/
|
|
43
70
|
closeAll() {
|
|
71
|
+
for (const sessionId of this.sessions.keys()) {
|
|
72
|
+
this.clearGraceTimer(sessionId);
|
|
73
|
+
}
|
|
44
74
|
for (const session of this.sessions.values()) {
|
|
45
75
|
session.kill();
|
|
46
76
|
}
|
|
47
77
|
this.sessions.clear();
|
|
48
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Transient-disconnect handling: keep every PTY alive and schedule a grace
|
|
81
|
+
* timer per session. If no reconnect arrives within SESSION_GRACE_TIMEOUT_MS,
|
|
82
|
+
* the session is killed and removed. A reconnect with the same sessionId via
|
|
83
|
+
* createSessionWithId() cancels the timer and resumes the PTY.
|
|
84
|
+
*/
|
|
85
|
+
closeAllGracefully() {
|
|
86
|
+
for (const sessionId of this.sessions.keys()) {
|
|
87
|
+
this.scheduleGraceTimer(sessionId);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
scheduleGraceTimer(sessionId) {
|
|
91
|
+
// Replace any existing grace timer so the window restarts on each disconnect.
|
|
92
|
+
this.clearGraceTimer(sessionId);
|
|
93
|
+
const timer = setTimeout(() => {
|
|
94
|
+
this.graceTimers.delete(sessionId);
|
|
95
|
+
const session = this.sessions.get(sessionId);
|
|
96
|
+
/* istanbul ignore else -- defensive: the timer is always cleared when the
|
|
97
|
+
session is removed (onExit/closeSession/closeAll/resume), so by the time
|
|
98
|
+
it fires the session is normally still present. */
|
|
99
|
+
if (session) {
|
|
100
|
+
logger_1.logger.debug(`[terminal] Grace window expired; killing session: ${sessionId}`);
|
|
101
|
+
session.kill();
|
|
102
|
+
this.sessions.delete(sessionId);
|
|
103
|
+
}
|
|
104
|
+
}, constants_1.SESSION_GRACE_TIMEOUT_MS);
|
|
105
|
+
// Do not keep the process alive solely for a pending grace timer.
|
|
106
|
+
/* istanbul ignore next -- unref is present on Node timers; guarded for envs that lack it */
|
|
107
|
+
timer.unref?.();
|
|
108
|
+
this.graceTimers.set(sessionId, timer);
|
|
109
|
+
}
|
|
110
|
+
clearGraceTimer(sessionId) {
|
|
111
|
+
const timer = this.graceTimers.get(sessionId);
|
|
112
|
+
if (timer) {
|
|
113
|
+
clearTimeout(timer);
|
|
114
|
+
this.graceTimers.delete(sessionId);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
49
117
|
get size() {
|
|
50
118
|
return this.sessions.size;
|
|
51
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":";;;AAAA,yDAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"terminal-session-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,14 @@ export declare class TerminalSession {
|
|
|
47
47
|
private sshKeyFile;
|
|
48
48
|
private dataCallback;
|
|
49
49
|
private exitCallback;
|
|
50
|
+
/**
|
|
51
|
+
* Internal exit callback owned by the session manager for its own cleanup
|
|
52
|
+
* (clear grace timer + remove from map). It is kept separate from the public
|
|
53
|
+
* `exitCallback` so that a later `onExit()` registration by the websocket
|
|
54
|
+
* handler (which sends the 'exit' frame) does NOT overwrite the manager's
|
|
55
|
+
* cleanup. Both fire on PTY exit.
|
|
56
|
+
*/
|
|
57
|
+
private internalExitCallback;
|
|
50
58
|
private exited;
|
|
51
59
|
private idleTimer;
|
|
52
60
|
private onIdleTimeout;
|
|
@@ -67,6 +75,11 @@ export declare class TerminalSession {
|
|
|
67
75
|
constructor(sessionId: string, options?: TerminalSessionOptions);
|
|
68
76
|
onData(callback: DataCallback): void;
|
|
69
77
|
onExit(callback: ExitCallback): void;
|
|
78
|
+
/**
|
|
79
|
+
* Register the manager-owned exit cleanup. Separate from the public onExit so
|
|
80
|
+
* it survives the websocket handler re-registering onExit on open/resume.
|
|
81
|
+
*/
|
|
82
|
+
setOnExitInternal(callback: () => void): void;
|
|
70
83
|
setOnIdleTimeout(callback: () => void): void;
|
|
71
84
|
write(data: string): void;
|
|
72
85
|
resize(cols: number, rows: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":"AAgEA;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAC1C,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,+BAA+B,CAAA;AAEhE,qBAAa,eAAe;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,aAAa,CAA4B;IAEjD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,GAAE,MAA4B,GAAG,MAAM;gBAyBhE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;
|
|
1
|
+
{"version":3,"file":"terminal-session.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":"AAgEA;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAC1C,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;AAEjD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,+BAA+B,CAAA;AAEhE,qBAAa,eAAe;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,YAAY,CAA4B;IAChD;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB,CAA4B;IACxD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,aAAa,CAA4B;IAEjD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,GAAE,MAA4B,GAAG,MAAM;gBAyBhE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;IAwHnE,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIpC,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIpC;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI5C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxC,IAAI,IAAI,IAAI;IAOZ,OAAO,CAAC,aAAa;IAmBrB,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,mBAAmB;IAY9B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,cAAc;CAMvB"}
|
|
@@ -84,6 +84,14 @@ class TerminalSession {
|
|
|
84
84
|
sshKeyFile = null;
|
|
85
85
|
dataCallback = null;
|
|
86
86
|
exitCallback = null;
|
|
87
|
+
/**
|
|
88
|
+
* Internal exit callback owned by the session manager for its own cleanup
|
|
89
|
+
* (clear grace timer + remove from map). It is kept separate from the public
|
|
90
|
+
* `exitCallback` so that a later `onExit()` registration by the websocket
|
|
91
|
+
* handler (which sends the 'exit' frame) does NOT overwrite the manager's
|
|
92
|
+
* cleanup. Both fire on PTY exit.
|
|
93
|
+
*/
|
|
94
|
+
internalExitCallback = null;
|
|
87
95
|
exited = false;
|
|
88
96
|
idleTimer = null;
|
|
89
97
|
onIdleTimeout = null;
|
|
@@ -222,6 +230,12 @@ class TerminalSession {
|
|
|
222
230
|
this.exited = true;
|
|
223
231
|
this.clearIdleTimer();
|
|
224
232
|
this.cleanupTmpDir();
|
|
233
|
+
// Manager cleanup runs first and unconditionally, then the public
|
|
234
|
+
// (websocket) listener. The internal slot cannot be overwritten by a
|
|
235
|
+
// later onExit() call, so map/grace-timer cleanup always happens.
|
|
236
|
+
if (this.internalExitCallback) {
|
|
237
|
+
this.internalExitCallback(exitCode);
|
|
238
|
+
}
|
|
225
239
|
if (this.exitCallback) {
|
|
226
240
|
this.exitCallback(exitCode);
|
|
227
241
|
}
|
|
@@ -234,6 +248,13 @@ class TerminalSession {
|
|
|
234
248
|
onExit(callback) {
|
|
235
249
|
this.exitCallback = callback;
|
|
236
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Register the manager-owned exit cleanup. Separate from the public onExit so
|
|
253
|
+
* it survives the websocket handler re-registering onExit on open/resume.
|
|
254
|
+
*/
|
|
255
|
+
setOnExitInternal(callback) {
|
|
256
|
+
this.internalExitCallback = callback;
|
|
257
|
+
}
|
|
237
258
|
setOnIdleTimeout(callback) {
|
|
238
259
|
this.onIdleTimeout = callback;
|
|
239
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-session.js","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA,gDAEC;AArED,uCAAwB;AACxB,uCAAwB;AACxB,2CAA4B;AAE5B,wDAA0D;AAC1D,sCAAkC;AAClC,0CAA0C;AAC1C,8EAA4E;AAC5E,4EAA8E;AAC9E,oCAA0C;AAC1C,2CAIoB;AACpB,+DAK8B;AAiC9B,8DAA8D;AAC9D,IAAI,GAAG,GAAqB,IAAI,CAAA;AAChC,IAAI,YAAY,GAAkB,IAAI,CAAA;AACtC,IAAI,CAAC;IACH,iEAAiE;IACjE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAc,CAAA;AACxC,CAAC;AAAC,OAAO,CAAU,EAAE,0DAA0D,CAAC,CAAC;IAC/E,YAAY,GAAG,IAAA,uBAAe,EAAC,CAAC,CAAC,CAAA;IACjC,eAAM,CAAC,KAAK,CAAC,yCAAyC,YAAY,EAAE,CAAC,CAAA;AACvE,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAChC,OAAO,GAAG,KAAK,IAAI,CAAA;AACrB,CAAC;AA6BD;;;;;;GAMG;AACU,QAAA,oBAAoB,GAAG,4BAA4B,CAAA;AAEhE,MAAa,eAAe;IACjB,SAAS,CAAQ;IACjB,GAAG,CAAQ;IACpB,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACH,GAAG,CAAQ;IACX,SAAS,CAAQ;IAClB,YAAY,CAAQ;IACX,UAAU,CAAM;IACzB,aAAa,GAAkB,IAAI,CAAA;IACnC,UAAU,GAAkB,IAAI,CAAA;IAChC,YAAY,GAAwB,IAAI,CAAA;IACxC,YAAY,GAAwB,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"terminal-session.js","sourceRoot":"","sources":["../../src/terminal/terminal-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,31 @@ export declare class TerminalWebSocket extends BaseWebSocketConnection<TerminalS
|
|
|
47
47
|
protected createWebSocket(): WebSocket;
|
|
48
48
|
protected onOpen(_ws: WebSocket, resolve: (value: void) => void): void;
|
|
49
49
|
protected onParsedMessage(msg: TerminalServerMessage): void;
|
|
50
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Transient WebSocket drop (ALB idle drop / heartbeat false-positive
|
|
52
|
+
* terminate / network blip). The base class fires this from the ws 'close'
|
|
53
|
+
* event, so this is where real transient disconnects land — NOT onDisconnect()
|
|
54
|
+
* (which is only invoked from the explicit disconnect() method).
|
|
55
|
+
*
|
|
56
|
+
* Keep every PTY alive within the grace window so a reconnect with the same
|
|
57
|
+
* sessionId can resume the user's live shell. If no reconnect arrives within
|
|
58
|
+
* SESSION_GRACE_TIMEOUT_MS the PTY is killed by the grace timer. A heartbeat
|
|
59
|
+
* false-positive terminate also fires 'close', so misdetected drops likewise
|
|
60
|
+
* preserve the PTY for resume.
|
|
61
|
+
*/
|
|
62
|
+
protected onWebSocketClose(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Explicit, user/agent-initiated shutdown. Unlike a transient drop, this is a
|
|
65
|
+
* genuine teardown so every PTY is killed immediately rather than being kept
|
|
66
|
+
* alive for the grace window.
|
|
67
|
+
*
|
|
68
|
+
* The base disconnect() calls onDisconnect() (left as the no-op default here,
|
|
69
|
+
* so it does NOT arm grace), then closes the socket. We follow up with
|
|
70
|
+
* closeAll() to kill every PTY. Because onDisconnect() does not schedule grace
|
|
71
|
+
* timers, there is nothing for closeAll() to undo — the two paths no longer
|
|
72
|
+
* fight (transient = grace via onWebSocketClose; explicit = closeAll here).
|
|
73
|
+
*/
|
|
74
|
+
disconnect(): void;
|
|
51
75
|
private handleOpen;
|
|
52
76
|
private handleStdin;
|
|
53
77
|
private handleResize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-websocket.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAgB3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,CAAA;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGzD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,qBAAa,iBAAkB,SAAQ,uBAAuB,CAAC,qBAAqB,CAAC;IAMjF,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IARnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAG5B,MAAM,EAAE,MAAM,EACG,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,eAAe,CAAC,EAAE,eAAe,YAAA;IAYpD,iBAAiB,IAAI,sBAAsB;IAI3C,SAAS,CAAC,eAAe,IAAI,SAAS;IAStC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAMtE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI;IA2B3D,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"terminal-websocket.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,IAAI,CAAA;AAE1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAgB3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,GAAG,OAAO,CAAA;IACtE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGzD,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,qBAAa,iBAAkB,SAAQ,uBAAuB,CAAC,qBAAqB,CAAC;IAMjF,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IARnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAG5B,MAAM,EAAE,MAAM,EACG,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,eAAe,CAAC,EAAE,eAAe,YAAA;IAYpD,iBAAiB,IAAI,sBAAsB;IAI3C,SAAS,CAAC,eAAe,IAAI,SAAS;IAStC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,GAAG,IAAI;IAMtE,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI;IA2B3D;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAIlC;;;;;;;;;;OAUG;IACH,UAAU,IAAI,IAAI;IAKlB,OAAO,CAAC,UAAU;IA4FlB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,IAAI;CAGb"}
|
|
@@ -113,7 +113,34 @@ class TerminalWebSocket extends base_websocket_1.BaseWebSocketConnection {
|
|
|
113
113
|
logger_1.logger.debug(`[terminal-ws] Unknown message type: ${msg.type}`);
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Transient WebSocket drop (ALB idle drop / heartbeat false-positive
|
|
118
|
+
* terminate / network blip). The base class fires this from the ws 'close'
|
|
119
|
+
* event, so this is where real transient disconnects land — NOT onDisconnect()
|
|
120
|
+
* (which is only invoked from the explicit disconnect() method).
|
|
121
|
+
*
|
|
122
|
+
* Keep every PTY alive within the grace window so a reconnect with the same
|
|
123
|
+
* sessionId can resume the user's live shell. If no reconnect arrives within
|
|
124
|
+
* SESSION_GRACE_TIMEOUT_MS the PTY is killed by the grace timer. A heartbeat
|
|
125
|
+
* false-positive terminate also fires 'close', so misdetected drops likewise
|
|
126
|
+
* preserve the PTY for resume.
|
|
127
|
+
*/
|
|
128
|
+
onWebSocketClose() {
|
|
129
|
+
this.manager.closeAllGracefully();
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Explicit, user/agent-initiated shutdown. Unlike a transient drop, this is a
|
|
133
|
+
* genuine teardown so every PTY is killed immediately rather than being kept
|
|
134
|
+
* alive for the grace window.
|
|
135
|
+
*
|
|
136
|
+
* The base disconnect() calls onDisconnect() (left as the no-op default here,
|
|
137
|
+
* so it does NOT arm grace), then closes the socket. We follow up with
|
|
138
|
+
* closeAll() to kill every PTY. Because onDisconnect() does not schedule grace
|
|
139
|
+
* timers, there is nothing for closeAll() to undo — the two paths no longer
|
|
140
|
+
* fight (transient = grace via onWebSocketClose; explicit = closeAll here).
|
|
141
|
+
*/
|
|
142
|
+
disconnect() {
|
|
143
|
+
super.disconnect();
|
|
117
144
|
this.manager.closeAll();
|
|
118
145
|
}
|
|
119
146
|
handleOpen(msg) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-websocket.js","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAE5B,4CAA0B;AAE1B,sDAA2D;AAC3D,4CAAwD;AACxD,sCAAkC;AAClC,oCAAsD;AAEtD,2CAGoB;AAEpB,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAC3B,MAAM,iBAAiB,GAAG,IAAI,CAAA;AAE9B,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,CAAA;AACpF,CAAC;AACD,yEAAmE;AAyCnE,MAAa,iBAAkB,SAAQ,wCAA8C;IAMhE;IACA;IACA;IACA;IARF,OAAO,CAAwB;IAC/B,KAAK,CAAQ;IAE9B,YACE,MAAc,EACG,KAAa,EACb,OAAe,EACf,UAAmB,EACnB,eAAiC;QAElD,KAAK,CAAC;YACJ,mBAAmB,EAAE,6CAAiC;YACtD,oBAAoB,EAAE,+CAAmC;YACzD,mBAAmB,EAAE,qCAAyB;YAC9C,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAA;QAVe,UAAK,GAAL,KAAK,CAAQ;QACb,YAAO,GAAP,OAAO,CAAQ;QACf,eAAU,GAAV,UAAU,CAAS;QACnB,oBAAe,GAAf,eAAe,CAAkB;QAQlD,IAAI,CAAC,OAAO,GAAG,IAAI,iDAAsB,EAAE,CAAA;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAA,kBAAU,EAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IACvD,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAES,eAAe;QACvB,OAAO,IAAI,YAAS,CAAC,IAAI,CAAC,KAAK,EAAE;YAC/B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;gBACrC,YAAY,EAAE,IAAI,CAAC,OAAO;aAC3B;SACF,CAAC,CAAA;IACJ,CAAC;IAES,MAAM,CAAC,GAAc,EAAE,OAA8B;QAC7D,eAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;QAC5D,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,CAAC,CAAA;QACrC,OAAO,EAAE,CAAA;IACX,CAAC;IAES,eAAe,CAAC,GAA0B;QAClD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,MAAM;gBACT,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;gBACpB,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACrB,MAAK;YACP,KAAK,QAAQ;gBACX,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;gBACtB,MAAK;YACP,KAAK,OAAO;gBACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;gBACrB,MAAK;YACP,KAAK,cAAc;gBACjB,wEAAwE;gBACxE,MAAK;YACP,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,MAAM,GAAI,GAA0C,CAAC,OAAO,IAAK,GAA0C,CAAC,KAAK,IAAI,SAAS,CAAA;gBACpI,eAAM,CAAC,IAAI,CAAC,uCAAuC,GAAG,CAAC,SAAS,IAAI,MAAM,MAAM,MAAM,EAAE,CAAC,CAAA;gBACzF,MAAK;YACP,CAAC;YACD;gBACE,eAAM,CAAC,KAAK,CAAC,uCAAwC,GAAwB,CAAC,IAAI,EAAE,CAAC,CAAA;QACzF,CAAC;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-websocket.js","sourceRoot":"","sources":["../../src/terminal/terminal-websocket.ts"],"names":[],"mappings":"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"}
|