dmux 2.2.0 → 3.0.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/DmuxApp.d.ts.map +1 -1
- package/dist/DmuxApp.js +412 -179
- package/dist/DmuxApp.js.map +1 -1
- package/dist/MergePane.d.ts.map +1 -1
- package/dist/MergePane.js +4 -15
- package/dist/MergePane.js.map +1 -1
- package/dist/PaneAnalyzer.d.ts +45 -0
- package/dist/PaneAnalyzer.d.ts.map +1 -0
- package/dist/PaneAnalyzer.js +278 -0
- package/dist/PaneAnalyzer.js.map +1 -0
- package/dist/_plugin-vue_export-helper.css +1 -0
- package/dist/actions/index.d.ts +19 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +54 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/paneActions.d.ts +45 -0
- package/dist/actions/paneActions.d.ts.map +1 -0
- package/dist/actions/paneActions.js +932 -0
- package/dist/actions/paneActions.js.map +1 -0
- package/dist/actions/types.d.ts +101 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/actions/types.js +129 -0
- package/dist/actions/types.js.map +1 -0
- package/dist/adapters/apiActionHandler.d.ts +64 -0
- package/dist/adapters/apiActionHandler.d.ts.map +1 -0
- package/dist/adapters/apiActionHandler.js +170 -0
- package/dist/adapters/apiActionHandler.js.map +1 -0
- package/dist/adapters/tuiActionHandler.d.ts +57 -0
- package/dist/adapters/tuiActionHandler.d.ts.map +1 -0
- package/dist/adapters/tuiActionHandler.js +152 -0
- package/dist/adapters/tuiActionHandler.js.map +1 -0
- package/dist/chunks/_plugin-vue_export-helper-Cvoq67hi.js +28 -0
- package/dist/components/ActionChoiceDialog.d.ts +16 -0
- package/dist/components/ActionChoiceDialog.d.ts.map +1 -0
- package/dist/components/ActionChoiceDialog.js +29 -0
- package/dist/components/ActionChoiceDialog.js.map +1 -0
- package/dist/components/ActionConfirmDialog.d.ts +16 -0
- package/dist/components/ActionConfirmDialog.d.ts.map +1 -0
- package/dist/components/ActionConfirmDialog.js +31 -0
- package/dist/components/ActionConfirmDialog.js.map +1 -0
- package/dist/components/ActionInputDialog.d.ts +16 -0
- package/dist/components/ActionInputDialog.d.ts.map +1 -0
- package/dist/components/ActionInputDialog.js +49 -0
- package/dist/components/ActionInputDialog.js.map +1 -0
- package/dist/components/ActionProgressDialog.d.ts +13 -0
- package/dist/components/ActionProgressDialog.d.ts.map +1 -0
- package/dist/components/ActionProgressDialog.js +20 -0
- package/dist/components/ActionProgressDialog.js.map +1 -0
- package/dist/components/FooterHelp.d.ts +2 -0
- package/dist/components/FooterHelp.d.ts.map +1 -1
- package/dist/components/FooterHelp.js +9 -2
- package/dist/components/FooterHelp.js.map +1 -1
- package/dist/components/KebabMenu.d.ts +10 -0
- package/dist/components/KebabMenu.d.ts.map +1 -0
- package/dist/components/KebabMenu.js +18 -0
- package/dist/components/KebabMenu.js.map +1 -0
- package/dist/components/LoadingIndicator.d.ts.map +1 -1
- package/dist/components/LoadingIndicator.js +5 -5
- package/dist/components/LoadingIndicator.js.map +1 -1
- package/dist/components/PaneCard.d.ts +1 -0
- package/dist/components/PaneCard.d.ts.map +1 -1
- package/dist/components/PaneCard.js +21 -20
- package/dist/components/PaneCard.js.map +1 -1
- package/dist/components/PanesGrid.d.ts +1 -0
- package/dist/components/PanesGrid.d.ts.map +1 -1
- package/dist/components/PanesGrid.js +5 -4
- package/dist/components/PanesGrid.js.map +1 -1
- package/dist/components/QRCode.d.ts +7 -0
- package/dist/components/QRCode.d.ts.map +1 -0
- package/dist/components/QRCode.js +19 -0
- package/dist/components/QRCode.js.map +1 -0
- package/dist/components/Spinner.d.ts +10 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +15 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/dashboard.html +14 -0
- package/dist/dashboard.js +2 -0
- package/dist/hooks/useActionSystem.d.ts +31 -0
- package/dist/hooks/useActionSystem.d.ts.map +1 -0
- package/dist/hooks/useActionSystem.js +95 -0
- package/dist/hooks/useActionSystem.js.map +1 -0
- package/dist/hooks/useAgentStatus.d.ts +4 -3
- package/dist/hooks/useAgentStatus.d.ts.map +1 -1
- package/dist/hooks/useAgentStatus.js +45 -194
- package/dist/hooks/useAgentStatus.js.map +1 -1
- package/dist/hooks/usePaneCreation.d.ts +2 -1
- package/dist/hooks/usePaneCreation.d.ts.map +1 -1
- package/dist/hooks/usePaneCreation.js +46 -100
- package/dist/hooks/usePaneCreation.js.map +1 -1
- package/dist/hooks/usePanes.d.ts.map +1 -1
- package/dist/hooks/usePanes.js +5 -3
- package/dist/hooks/usePanes.js.map +1 -1
- package/dist/hooks/useTerminalWidth.d.ts.map +1 -1
- package/dist/hooks/useTerminalWidth.js +18 -1
- package/dist/hooks/useTerminalWidth.js.map +1 -1
- package/dist/hooks/useWorktreeActions.d.ts.map +1 -1
- package/dist/hooks/useWorktreeActions.js +4 -0
- package/dist/hooks/useWorktreeActions.js.map +1 -1
- package/dist/index.js +43 -6
- package/dist/index.js.map +1 -1
- package/dist/server/actionsApi.d.ts +37 -0
- package/dist/server/actionsApi.d.ts.map +1 -0
- package/dist/server/actionsApi.js +256 -0
- package/dist/server/actionsApi.js.map +1 -0
- package/dist/server/embedded-assets.d.ts +13 -0
- package/dist/server/embedded-assets.d.ts.map +1 -0
- package/dist/server/embedded-assets.js +5012 -0
- package/dist/server/embedded-assets.js.map +1 -0
- package/dist/server/index.d.ts +21 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +99 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes.d.ts +3 -0
- package/dist/server/routes.d.ts.map +1 -0
- package/dist/server/routes.js +672 -0
- package/dist/server/routes.js.map +1 -0
- package/dist/server/static.d.ts +6 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +3040 -0
- package/dist/server/static.js.map +1 -0
- package/dist/services/ConfigWatcher.d.ts +20 -0
- package/dist/services/ConfigWatcher.d.ts.map +1 -0
- package/dist/services/ConfigWatcher.js +75 -0
- package/dist/services/ConfigWatcher.js.map +1 -0
- package/dist/services/PaneWorkerManager.d.ts +69 -0
- package/dist/services/PaneWorkerManager.d.ts.map +1 -0
- package/dist/services/PaneWorkerManager.js +272 -0
- package/dist/services/PaneWorkerManager.js.map +1 -0
- package/dist/services/StatusDetector.d.ts +87 -0
- package/dist/services/StatusDetector.d.ts.map +1 -0
- package/dist/services/StatusDetector.js +387 -0
- package/dist/services/StatusDetector.js.map +1 -0
- package/dist/services/TerminalDiffer.d.ts +85 -0
- package/dist/services/TerminalDiffer.d.ts.map +1 -0
- package/dist/services/TerminalDiffer.js +499 -0
- package/dist/services/TerminalDiffer.js.map +1 -0
- package/dist/services/TerminalStreamer.d.ts +80 -0
- package/dist/services/TerminalStreamer.d.ts.map +1 -0
- package/dist/services/TerminalStreamer.js +490 -0
- package/dist/services/TerminalStreamer.js.map +1 -0
- package/dist/services/TunnelService.d.ts +9 -0
- package/dist/services/TunnelService.d.ts.map +1 -0
- package/dist/services/TunnelService.js +34 -0
- package/dist/services/TunnelService.js.map +1 -0
- package/dist/services/WorkerMessageBus.d.ts +48 -0
- package/dist/services/WorkerMessageBus.d.ts.map +1 -0
- package/dist/services/WorkerMessageBus.js +120 -0
- package/dist/services/WorkerMessageBus.js.map +1 -0
- package/dist/shared/StateManager.d.ts +34 -0
- package/dist/shared/StateManager.d.ts.map +1 -0
- package/dist/shared/StateManager.js +108 -0
- package/dist/shared/StateManager.js.map +1 -0
- package/dist/shared/StreamProtocol.d.ts +75 -0
- package/dist/shared/StreamProtocol.d.ts.map +1 -0
- package/dist/shared/StreamProtocol.js +37 -0
- package/dist/shared/StreamProtocol.js.map +1 -0
- package/dist/terminal.html +17 -0
- package/dist/terminal.js +3 -0
- package/dist/types.d.ts +21 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/agentDetection.d.ts +18 -0
- package/dist/utils/agentDetection.d.ts.map +1 -0
- package/dist/utils/agentDetection.js +73 -0
- package/dist/utils/agentDetection.js.map +1 -0
- package/dist/utils/aiMerge.d.ts +35 -0
- package/dist/utils/aiMerge.d.ts.map +1 -0
- package/dist/utils/aiMerge.js +298 -0
- package/dist/utils/aiMerge.js.map +1 -0
- package/dist/utils/conflictResolutionPane.d.ts +19 -0
- package/dist/utils/conflictResolutionPane.d.ts.map +1 -0
- package/dist/utils/conflictResolutionPane.js +214 -0
- package/dist/utils/conflictResolutionPane.js.map +1 -0
- package/dist/utils/mergeExecution.d.ts +52 -0
- package/dist/utils/mergeExecution.d.ts.map +1 -0
- package/dist/utils/mergeExecution.js +192 -0
- package/dist/utils/mergeExecution.js.map +1 -0
- package/dist/utils/mergeValidation.d.ts +67 -0
- package/dist/utils/mergeValidation.d.ts.map +1 -0
- package/dist/utils/mergeValidation.js +213 -0
- package/dist/utils/mergeValidation.js.map +1 -0
- package/dist/utils/paneCreation.d.ts +17 -0
- package/dist/utils/paneCreation.d.ts.map +1 -0
- package/dist/utils/paneCreation.js +274 -0
- package/dist/utils/paneCreation.js.map +1 -0
- package/dist/utils/port.d.ts +5 -0
- package/dist/utils/port.d.ts.map +1 -0
- package/dist/utils/port.js +54 -0
- package/dist/utils/port.js.map +1 -0
- package/dist/workers/PaneWorker.d.ts +2 -0
- package/dist/workers/PaneWorker.d.ts.map +1 -0
- package/dist/workers/PaneWorker.js +362 -0
- package/dist/workers/PaneWorker.js.map +1 -0
- package/dist/workers/WorkerMessages.d.ts +36 -0
- package/dist/workers/WorkerMessages.d.ts.map +1 -0
- package/dist/workers/WorkerMessages.js +9 -0
- package/dist/workers/WorkerMessages.js.map +1 -0
- package/package.json +19 -5
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal state diffing and patch generation
|
|
3
|
+
* Tracks virtual terminal state and generates minimal change sets
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* ANSI escape sequence parser state
|
|
7
|
+
*/
|
|
8
|
+
var ParserState;
|
|
9
|
+
(function (ParserState) {
|
|
10
|
+
ParserState[ParserState["Normal"] = 0] = "Normal";
|
|
11
|
+
ParserState[ParserState["Escape"] = 1] = "Escape";
|
|
12
|
+
ParserState[ParserState["CSI"] = 2] = "CSI";
|
|
13
|
+
ParserState[ParserState["OSC"] = 3] = "OSC";
|
|
14
|
+
ParserState[ParserState["DCS"] = 4] = "DCS";
|
|
15
|
+
})(ParserState || (ParserState = {}));
|
|
16
|
+
/**
|
|
17
|
+
* Virtual terminal buffer that tracks state
|
|
18
|
+
*/
|
|
19
|
+
export class TerminalBuffer {
|
|
20
|
+
width;
|
|
21
|
+
height;
|
|
22
|
+
buffer;
|
|
23
|
+
cursor;
|
|
24
|
+
savedCursor;
|
|
25
|
+
scrollTop = 0;
|
|
26
|
+
scrollBottom;
|
|
27
|
+
// Current text attributes
|
|
28
|
+
currentAttrs = {};
|
|
29
|
+
constructor(width, height) {
|
|
30
|
+
this.width = width;
|
|
31
|
+
this.height = height;
|
|
32
|
+
this.buffer = this.createEmptyBuffer();
|
|
33
|
+
this.cursor = { row: 0, col: 0 };
|
|
34
|
+
this.scrollBottom = height - 1;
|
|
35
|
+
}
|
|
36
|
+
createEmptyBuffer() {
|
|
37
|
+
const buffer = [];
|
|
38
|
+
for (let row = 0; row < this.height; row++) {
|
|
39
|
+
buffer[row] = [];
|
|
40
|
+
for (let col = 0; col < this.width; col++) {
|
|
41
|
+
buffer[row][col] = { char: ' ' };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return buffer;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Apply raw terminal output to buffer
|
|
48
|
+
*/
|
|
49
|
+
applyOutput(output) {
|
|
50
|
+
let state = ParserState.Normal;
|
|
51
|
+
let escapeBuffer = '';
|
|
52
|
+
for (let i = 0; i < output.length; i++) {
|
|
53
|
+
const char = output[i];
|
|
54
|
+
switch (state) {
|
|
55
|
+
case ParserState.Normal:
|
|
56
|
+
if (char === '\x1b') {
|
|
57
|
+
state = ParserState.Escape;
|
|
58
|
+
}
|
|
59
|
+
else if (char === '\n') {
|
|
60
|
+
this.newLine();
|
|
61
|
+
}
|
|
62
|
+
else if (char === '\r') {
|
|
63
|
+
this.carriageReturn();
|
|
64
|
+
}
|
|
65
|
+
else if (char === '\b') {
|
|
66
|
+
this.backspace();
|
|
67
|
+
}
|
|
68
|
+
else if (char === '\t') {
|
|
69
|
+
this.tab();
|
|
70
|
+
}
|
|
71
|
+
else if (char >= ' ') {
|
|
72
|
+
this.writeChar(char);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
case ParserState.Escape:
|
|
76
|
+
if (char === '[') {
|
|
77
|
+
state = ParserState.CSI;
|
|
78
|
+
escapeBuffer = '';
|
|
79
|
+
}
|
|
80
|
+
else if (char === ']') {
|
|
81
|
+
state = ParserState.OSC;
|
|
82
|
+
escapeBuffer = '';
|
|
83
|
+
}
|
|
84
|
+
else if (char === 'P') {
|
|
85
|
+
state = ParserState.DCS;
|
|
86
|
+
escapeBuffer = '';
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// Single character escape sequence
|
|
90
|
+
this.handleEscapeChar(char);
|
|
91
|
+
state = ParserState.Normal;
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
case ParserState.CSI:
|
|
95
|
+
if (char >= '@' && char <= '~') {
|
|
96
|
+
// End of CSI sequence
|
|
97
|
+
this.handleCSI(escapeBuffer, char);
|
|
98
|
+
state = ParserState.Normal;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
escapeBuffer += char;
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
case ParserState.OSC:
|
|
105
|
+
if (char === '\x07' || (char === '\\' && escapeBuffer.endsWith('\x1b'))) {
|
|
106
|
+
// End of OSC sequence
|
|
107
|
+
this.handleOSC(escapeBuffer);
|
|
108
|
+
state = ParserState.Normal;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
escapeBuffer += char;
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
case ParserState.DCS:
|
|
115
|
+
if (char === '\\' && escapeBuffer.endsWith('\x1b')) {
|
|
116
|
+
// End of DCS sequence
|
|
117
|
+
state = ParserState.Normal;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
escapeBuffer += char;
|
|
121
|
+
}
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
writeChar(char) {
|
|
127
|
+
if (this.cursor.col >= this.width) {
|
|
128
|
+
this.cursor.col = 0;
|
|
129
|
+
this.newLine();
|
|
130
|
+
}
|
|
131
|
+
this.buffer[this.cursor.row][this.cursor.col] = {
|
|
132
|
+
char,
|
|
133
|
+
...this.currentAttrs
|
|
134
|
+
};
|
|
135
|
+
this.cursor.col++;
|
|
136
|
+
}
|
|
137
|
+
newLine() {
|
|
138
|
+
this.cursor.row++;
|
|
139
|
+
if (this.cursor.row >= this.height) {
|
|
140
|
+
// Scroll up
|
|
141
|
+
this.buffer.shift();
|
|
142
|
+
this.buffer.push(this.createEmptyRow());
|
|
143
|
+
this.cursor.row = this.height - 1;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
carriageReturn() {
|
|
147
|
+
this.cursor.col = 0;
|
|
148
|
+
}
|
|
149
|
+
backspace() {
|
|
150
|
+
if (this.cursor.col > 0) {
|
|
151
|
+
this.cursor.col--;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
tab() {
|
|
155
|
+
// Move to next tab stop (every 8 columns)
|
|
156
|
+
const nextTab = Math.floor((this.cursor.col + 8) / 8) * 8;
|
|
157
|
+
this.cursor.col = Math.min(nextTab, this.width - 1);
|
|
158
|
+
}
|
|
159
|
+
createEmptyRow() {
|
|
160
|
+
const row = [];
|
|
161
|
+
for (let col = 0; col < this.width; col++) {
|
|
162
|
+
row[col] = { char: ' ' };
|
|
163
|
+
}
|
|
164
|
+
return row;
|
|
165
|
+
}
|
|
166
|
+
handleEscapeChar(char) {
|
|
167
|
+
switch (char) {
|
|
168
|
+
case '7': // Save cursor
|
|
169
|
+
this.savedCursor = { ...this.cursor };
|
|
170
|
+
break;
|
|
171
|
+
case '8': // Restore cursor
|
|
172
|
+
if (this.savedCursor) {
|
|
173
|
+
this.cursor = { ...this.savedCursor };
|
|
174
|
+
}
|
|
175
|
+
break;
|
|
176
|
+
case 'D': // Index (move down)
|
|
177
|
+
this.newLine();
|
|
178
|
+
break;
|
|
179
|
+
case 'M': // Reverse index (move up)
|
|
180
|
+
if (this.cursor.row > 0) {
|
|
181
|
+
this.cursor.row--;
|
|
182
|
+
}
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
handleCSI(params, command) {
|
|
187
|
+
const args = params.split(';').map(p => parseInt(p) || 0);
|
|
188
|
+
switch (command) {
|
|
189
|
+
case 'H': // Cursor position
|
|
190
|
+
case 'f':
|
|
191
|
+
this.cursor.row = Math.min(Math.max((args[0] || 1) - 1, 0), this.height - 1);
|
|
192
|
+
this.cursor.col = Math.min(Math.max((args[1] || 1) - 1, 0), this.width - 1);
|
|
193
|
+
break;
|
|
194
|
+
case 'A': // Cursor up
|
|
195
|
+
this.cursor.row = Math.max(this.cursor.row - (args[0] || 1), 0);
|
|
196
|
+
break;
|
|
197
|
+
case 'B': // Cursor down
|
|
198
|
+
this.cursor.row = Math.min(this.cursor.row + (args[0] || 1), this.height - 1);
|
|
199
|
+
break;
|
|
200
|
+
case 'C': // Cursor forward
|
|
201
|
+
this.cursor.col = Math.min(this.cursor.col + (args[0] || 1), this.width - 1);
|
|
202
|
+
break;
|
|
203
|
+
case 'D': // Cursor back
|
|
204
|
+
this.cursor.col = Math.max(this.cursor.col - (args[0] || 1), 0);
|
|
205
|
+
break;
|
|
206
|
+
case 'J': // Erase display
|
|
207
|
+
this.handleEraseDisplay(args[0] || 0);
|
|
208
|
+
break;
|
|
209
|
+
case 'K': // Erase line
|
|
210
|
+
this.handleEraseLine(args[0] || 0);
|
|
211
|
+
break;
|
|
212
|
+
case 'm': // SGR (Select Graphic Rendition)
|
|
213
|
+
this.handleSGR(args);
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
handleOSC(params) {
|
|
218
|
+
// OSC sequences are typically used for setting window title
|
|
219
|
+
// We can ignore these for terminal display
|
|
220
|
+
}
|
|
221
|
+
handleEraseDisplay(mode) {
|
|
222
|
+
switch (mode) {
|
|
223
|
+
case 0: // Erase from cursor to end
|
|
224
|
+
// Erase rest of current line
|
|
225
|
+
for (let col = this.cursor.col; col < this.width; col++) {
|
|
226
|
+
this.buffer[this.cursor.row][col] = { char: ' ' };
|
|
227
|
+
}
|
|
228
|
+
// Erase lines below
|
|
229
|
+
for (let row = this.cursor.row + 1; row < this.height; row++) {
|
|
230
|
+
for (let col = 0; col < this.width; col++) {
|
|
231
|
+
this.buffer[row][col] = { char: ' ' };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
break;
|
|
235
|
+
case 1: // Erase from beginning to cursor
|
|
236
|
+
// Erase beginning of current line
|
|
237
|
+
for (let col = 0; col <= this.cursor.col; col++) {
|
|
238
|
+
this.buffer[this.cursor.row][col] = { char: ' ' };
|
|
239
|
+
}
|
|
240
|
+
// Erase lines above
|
|
241
|
+
for (let row = 0; row < this.cursor.row; row++) {
|
|
242
|
+
for (let col = 0; col < this.width; col++) {
|
|
243
|
+
this.buffer[row][col] = { char: ' ' };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
break;
|
|
247
|
+
case 2: // Erase entire display
|
|
248
|
+
case 3: // Erase entire display including scrollback
|
|
249
|
+
this.buffer = this.createEmptyBuffer();
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
handleEraseLine(mode) {
|
|
254
|
+
switch (mode) {
|
|
255
|
+
case 0: // Erase from cursor to end of line
|
|
256
|
+
for (let col = this.cursor.col; col < this.width; col++) {
|
|
257
|
+
this.buffer[this.cursor.row][col] = { char: ' ' };
|
|
258
|
+
}
|
|
259
|
+
break;
|
|
260
|
+
case 1: // Erase from beginning to cursor
|
|
261
|
+
for (let col = 0; col <= this.cursor.col; col++) {
|
|
262
|
+
this.buffer[this.cursor.row][col] = { char: ' ' };
|
|
263
|
+
}
|
|
264
|
+
break;
|
|
265
|
+
case 2: // Erase entire line
|
|
266
|
+
for (let col = 0; col < this.width; col++) {
|
|
267
|
+
this.buffer[this.cursor.row][col] = { char: ' ' };
|
|
268
|
+
}
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
handleSGR(args) {
|
|
273
|
+
if (args.length === 0 || args[0] === 0) {
|
|
274
|
+
// Reset all attributes
|
|
275
|
+
this.currentAttrs = {};
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
for (const arg of args) {
|
|
279
|
+
switch (arg) {
|
|
280
|
+
case 0: // Reset
|
|
281
|
+
this.currentAttrs = {};
|
|
282
|
+
break;
|
|
283
|
+
case 1: // Bold
|
|
284
|
+
this.currentAttrs.bold = true;
|
|
285
|
+
break;
|
|
286
|
+
case 2: // Dim
|
|
287
|
+
this.currentAttrs.dim = true;
|
|
288
|
+
break;
|
|
289
|
+
case 3: // Italic
|
|
290
|
+
this.currentAttrs.italic = true;
|
|
291
|
+
break;
|
|
292
|
+
case 4: // Underline
|
|
293
|
+
this.currentAttrs.underline = true;
|
|
294
|
+
break;
|
|
295
|
+
case 21: // Bold off
|
|
296
|
+
delete this.currentAttrs.bold;
|
|
297
|
+
break;
|
|
298
|
+
case 22: // Normal intensity
|
|
299
|
+
delete this.currentAttrs.bold;
|
|
300
|
+
delete this.currentAttrs.dim;
|
|
301
|
+
break;
|
|
302
|
+
case 23: // Italic off
|
|
303
|
+
delete this.currentAttrs.italic;
|
|
304
|
+
break;
|
|
305
|
+
case 24: // Underline off
|
|
306
|
+
delete this.currentAttrs.underline;
|
|
307
|
+
break;
|
|
308
|
+
// Foreground colors
|
|
309
|
+
case 30:
|
|
310
|
+
case 31:
|
|
311
|
+
case 32:
|
|
312
|
+
case 33:
|
|
313
|
+
case 34:
|
|
314
|
+
case 35:
|
|
315
|
+
case 36:
|
|
316
|
+
case 37:
|
|
317
|
+
this.currentAttrs.fg = this.getColorName(arg - 30);
|
|
318
|
+
break;
|
|
319
|
+
case 39: // Default foreground
|
|
320
|
+
delete this.currentAttrs.fg;
|
|
321
|
+
break;
|
|
322
|
+
// Background colors
|
|
323
|
+
case 40:
|
|
324
|
+
case 41:
|
|
325
|
+
case 42:
|
|
326
|
+
case 43:
|
|
327
|
+
case 44:
|
|
328
|
+
case 45:
|
|
329
|
+
case 46:
|
|
330
|
+
case 47:
|
|
331
|
+
this.currentAttrs.bg = this.getColorName(arg - 40);
|
|
332
|
+
break;
|
|
333
|
+
case 49: // Default background
|
|
334
|
+
delete this.currentAttrs.bg;
|
|
335
|
+
break;
|
|
336
|
+
// Bright foreground colors
|
|
337
|
+
case 90:
|
|
338
|
+
case 91:
|
|
339
|
+
case 92:
|
|
340
|
+
case 93:
|
|
341
|
+
case 94:
|
|
342
|
+
case 95:
|
|
343
|
+
case 96:
|
|
344
|
+
case 97:
|
|
345
|
+
this.currentAttrs.fg = this.getColorName(arg - 90, true);
|
|
346
|
+
break;
|
|
347
|
+
// Bright background colors
|
|
348
|
+
case 100:
|
|
349
|
+
case 101:
|
|
350
|
+
case 102:
|
|
351
|
+
case 103:
|
|
352
|
+
case 104:
|
|
353
|
+
case 105:
|
|
354
|
+
case 106:
|
|
355
|
+
case 107:
|
|
356
|
+
this.currentAttrs.bg = this.getColorName(arg - 100, true);
|
|
357
|
+
break;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
getColorName(index, bright = false) {
|
|
362
|
+
const colors = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'];
|
|
363
|
+
const color = colors[index] || 'black';
|
|
364
|
+
return bright ? `bright-${color}` : color;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Get current buffer as text
|
|
368
|
+
*/
|
|
369
|
+
getText() {
|
|
370
|
+
return this.buffer.map(row => row.map(cell => cell.char).join('')).join('\n');
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Get buffer for comparison
|
|
374
|
+
*/
|
|
375
|
+
getBuffer() {
|
|
376
|
+
return this.buffer;
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Resize buffer
|
|
380
|
+
*/
|
|
381
|
+
resize(width, height) {
|
|
382
|
+
const newBuffer = [];
|
|
383
|
+
for (let row = 0; row < height; row++) {
|
|
384
|
+
newBuffer[row] = [];
|
|
385
|
+
for (let col = 0; col < width; col++) {
|
|
386
|
+
if (row < this.height && col < this.width && this.buffer[row] && this.buffer[row][col]) {
|
|
387
|
+
newBuffer[row][col] = this.buffer[row][col];
|
|
388
|
+
}
|
|
389
|
+
else {
|
|
390
|
+
newBuffer[row][col] = { char: ' ' };
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
this.width = width;
|
|
395
|
+
this.height = height;
|
|
396
|
+
this.buffer = newBuffer;
|
|
397
|
+
this.scrollBottom = height - 1;
|
|
398
|
+
// Adjust cursor if needed
|
|
399
|
+
this.cursor.row = Math.min(this.cursor.row, height - 1);
|
|
400
|
+
this.cursor.col = Math.min(this.cursor.col, width - 1);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Generates diffs between terminal states
|
|
405
|
+
*/
|
|
406
|
+
export class TerminalDiffer {
|
|
407
|
+
buffer;
|
|
408
|
+
lastSentBuffer = null;
|
|
409
|
+
constructor(width, height) {
|
|
410
|
+
this.buffer = new TerminalBuffer(width, height);
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Apply output and generate patches
|
|
414
|
+
*/
|
|
415
|
+
applyAndDiff(output) {
|
|
416
|
+
// Apply output to virtual buffer
|
|
417
|
+
this.buffer.applyOutput(output);
|
|
418
|
+
// Get current buffer state
|
|
419
|
+
const currentBuffer = this.buffer.getBuffer();
|
|
420
|
+
// Generate patches if we have a previous state
|
|
421
|
+
const changes = [];
|
|
422
|
+
if (this.lastSentBuffer) {
|
|
423
|
+
// Compare buffers and find differences
|
|
424
|
+
for (let row = 0; row < currentBuffer.length; row++) {
|
|
425
|
+
for (let col = 0; col < currentBuffer[row].length; col++) {
|
|
426
|
+
const oldCell = this.lastSentBuffer[row]?.[col];
|
|
427
|
+
const newCell = currentBuffer[row][col];
|
|
428
|
+
if (!oldCell || !this.cellsEqual(oldCell, newCell)) {
|
|
429
|
+
// Find consecutive changed cells in this row
|
|
430
|
+
let length = 1;
|
|
431
|
+
let text = newCell.char;
|
|
432
|
+
while (col + length < currentBuffer[row].length) {
|
|
433
|
+
const nextOld = this.lastSentBuffer[row]?.[col + length];
|
|
434
|
+
const nextNew = currentBuffer[row][col + length];
|
|
435
|
+
if (!nextOld || !this.cellsEqual(nextOld, nextNew)) {
|
|
436
|
+
text += nextNew.char;
|
|
437
|
+
length++;
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
changes.push({
|
|
444
|
+
row,
|
|
445
|
+
col,
|
|
446
|
+
text,
|
|
447
|
+
length
|
|
448
|
+
});
|
|
449
|
+
// Skip the cells we just processed
|
|
450
|
+
col += length - 1;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
// First update - send everything as one big change
|
|
457
|
+
const text = currentBuffer.map(row => row.map(cell => cell.char).join('')).join('\n');
|
|
458
|
+
if (text.trim()) {
|
|
459
|
+
changes.push({
|
|
460
|
+
row: 0,
|
|
461
|
+
col: 0,
|
|
462
|
+
text
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
// Save current buffer for next diff
|
|
467
|
+
this.lastSentBuffer = currentBuffer.map(row => [...row]);
|
|
468
|
+
return changes;
|
|
469
|
+
}
|
|
470
|
+
cellsEqual(a, b) {
|
|
471
|
+
return a.char === b.char &&
|
|
472
|
+
a.fg === b.fg &&
|
|
473
|
+
a.bg === b.bg &&
|
|
474
|
+
a.bold === b.bold &&
|
|
475
|
+
a.dim === b.dim &&
|
|
476
|
+
a.italic === b.italic &&
|
|
477
|
+
a.underline === b.underline;
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get full buffer state
|
|
481
|
+
*/
|
|
482
|
+
getFullState() {
|
|
483
|
+
return this.buffer.getText();
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Reset differ state
|
|
487
|
+
*/
|
|
488
|
+
reset() {
|
|
489
|
+
this.lastSentBuffer = null;
|
|
490
|
+
}
|
|
491
|
+
/**
|
|
492
|
+
* Handle terminal resize
|
|
493
|
+
*/
|
|
494
|
+
resize(width, height) {
|
|
495
|
+
this.buffer.resize(width, height);
|
|
496
|
+
this.lastSentBuffer = null; // Force full update after resize
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
//# sourceMappingURL=TerminalDiffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerminalDiffer.js","sourceRoot":"","sources":["../../src/services/TerminalDiffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { Readable } from 'stream';
|
|
3
|
+
type StreamClient = Readable;
|
|
4
|
+
/**
|
|
5
|
+
* Manages real-time streaming of tmux panes to browser clients
|
|
6
|
+
* Uses Server-Sent Events for efficient one-way data flow
|
|
7
|
+
*/
|
|
8
|
+
export declare class TerminalStreamer extends EventEmitter {
|
|
9
|
+
private streams;
|
|
10
|
+
private isShuttingDown;
|
|
11
|
+
/**
|
|
12
|
+
* Start streaming a pane to a client
|
|
13
|
+
*/
|
|
14
|
+
startStream(paneId: string, tmuxPaneId: string, client: StreamClient): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Stop streaming to a specific client
|
|
17
|
+
*/
|
|
18
|
+
stopStream(paneId: string, client: StreamClient): void;
|
|
19
|
+
/**
|
|
20
|
+
* Initialize stream info for a pane
|
|
21
|
+
*/
|
|
22
|
+
private initializeStream;
|
|
23
|
+
/**
|
|
24
|
+
* Send initial state to a new client
|
|
25
|
+
*/
|
|
26
|
+
private sendInitialState;
|
|
27
|
+
/**
|
|
28
|
+
* Get cursor position from tmux
|
|
29
|
+
*/
|
|
30
|
+
private getCursorPosition;
|
|
31
|
+
/**
|
|
32
|
+
* Activate streaming for a pane (start piping and monitoring)
|
|
33
|
+
*/
|
|
34
|
+
private activateStream;
|
|
35
|
+
/**
|
|
36
|
+
* Deactivate streaming for a pane
|
|
37
|
+
*/
|
|
38
|
+
private deactivateStream;
|
|
39
|
+
/**
|
|
40
|
+
* Process output and send updates to clients
|
|
41
|
+
*/
|
|
42
|
+
private processAndSendUpdates;
|
|
43
|
+
/**
|
|
44
|
+
* Check if pane has been resized
|
|
45
|
+
*/
|
|
46
|
+
private checkForResize;
|
|
47
|
+
/**
|
|
48
|
+
* Restart piping after a resize
|
|
49
|
+
*/
|
|
50
|
+
private restartPiping;
|
|
51
|
+
/**
|
|
52
|
+
* Get pane dimensions from tmux
|
|
53
|
+
*/
|
|
54
|
+
private getPaneDimensions;
|
|
55
|
+
/**
|
|
56
|
+
* Capture current pane content with ANSI codes
|
|
57
|
+
* Only captures the visible area (no scrollback) so cursor position matches
|
|
58
|
+
*/
|
|
59
|
+
private capturePaneContent;
|
|
60
|
+
/**
|
|
61
|
+
* Get statistics about active streams
|
|
62
|
+
*/
|
|
63
|
+
getStats(): {
|
|
64
|
+
activeStreams: number;
|
|
65
|
+
totalClients: number;
|
|
66
|
+
streams: Array<{
|
|
67
|
+
paneId: string;
|
|
68
|
+
clients: number;
|
|
69
|
+
dimensions: string;
|
|
70
|
+
}>;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Shutdown all streams
|
|
74
|
+
*/
|
|
75
|
+
shutdown(): Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
export declare function getTerminalStreamer(): TerminalStreamer;
|
|
78
|
+
export declare function resetTerminalStreamer(): void;
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=TerminalStreamer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerminalStreamer.d.ts","sourceRoot":"","sources":["../../src/services/TerminalStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAMlC,KAAK,YAAY,GAAG,QAAQ,CAAC;AAqB7B;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,cAAc,CAAS;IAE/B;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC;IAwBhB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IActD;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;YACW,gBAAgB;IA0B9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;YACW,cAAc;IA0L5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwC7B;;OAEG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACH,OAAO,CAAC,aAAa;IA6BrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,QAAQ,IAAI;QACV,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,KAAK,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;YAChB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC,CAAC;KACJ;IAgBD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAWhC;AAKD,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C"}
|