@floegence/floeterm-terminal-web 0.5.23 → 0.6.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 (62) hide show
  1. package/README.md +21 -1
  2. package/dist/core/PagedTerminalOutputCoordinator.js +3 -4
  3. package/dist/core/PagedTerminalOutputCoordinator.js.map +1 -1
  4. package/dist/core/TerminalCore.d.ts +3 -0
  5. package/dist/core/TerminalCore.d.ts.map +1 -1
  6. package/dist/core/TerminalCore.js +121 -35
  7. package/dist/core/TerminalCore.js.map +1 -1
  8. package/dist/core/TerminalInputBridge.d.ts +17 -7
  9. package/dist/core/TerminalInputBridge.d.ts.map +1 -1
  10. package/dist/core/TerminalInputBridge.js +78 -73
  11. package/dist/core/TerminalInputBridge.js.map +1 -1
  12. package/dist/core/TerminalOutputPipeline.js +2 -2
  13. package/dist/core/TerminalOutputPipeline.js.map +1 -1
  14. package/dist/entries/live.d.ts +7 -0
  15. package/dist/entries/live.d.ts.map +1 -0
  16. package/dist/entries/live.js +4 -0
  17. package/dist/entries/live.js.map +1 -0
  18. package/dist/fabric/BeamtermFabricRenderer.d.ts +11 -4
  19. package/dist/fabric/BeamtermFabricRenderer.d.ts.map +1 -1
  20. package/dist/fabric/BeamtermFabricRenderer.js +259 -47
  21. package/dist/fabric/BeamtermFabricRenderer.js.map +1 -1
  22. package/dist/fabric/TerminalFabricCoordinator.d.ts +1 -1
  23. package/dist/fabric/TerminalFabricCoordinator.d.ts.map +1 -1
  24. package/dist/fabric/TerminalFabricCoordinator.js +4 -7
  25. package/dist/fabric/TerminalFabricCoordinator.js.map +1 -1
  26. package/dist/fabric/TerminalLiveFabric.d.ts +3 -43
  27. package/dist/fabric/TerminalLiveFabric.d.ts.map +1 -1
  28. package/dist/fabric/TerminalLiveFabric.js +3 -97
  29. package/dist/fabric/TerminalLiveFabric.js.map +1 -1
  30. package/dist/fabric/types.d.ts +41 -3
  31. package/dist/fabric/types.d.ts.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/internal/BeamtermResourceLoader.d.ts +1 -1
  36. package/dist/internal/BeamtermResourceLoader.d.ts.map +1 -1
  37. package/dist/internal/BeamtermResourceLoader.js +1 -1
  38. package/dist/internal/BeamtermResourceLoader.js.map +1 -1
  39. package/dist/internal/SequenceBuffer.d.ts +7 -11
  40. package/dist/internal/SequenceBuffer.d.ts.map +1 -1
  41. package/dist/internal/SequenceBuffer.js +52 -103
  42. package/dist/internal/SequenceBuffer.js.map +1 -1
  43. package/dist/live/client.d.ts +62 -0
  44. package/dist/live/client.d.ts.map +1 -0
  45. package/dist/live/client.js +326 -0
  46. package/dist/live/client.js.map +1 -0
  47. package/dist/live/codec.d.ts +97 -0
  48. package/dist/live/codec.d.ts.map +1 -0
  49. package/dist/live/codec.js +386 -0
  50. package/dist/live/codec.js.map +1 -0
  51. package/dist/live/transport.d.ts +37 -0
  52. package/dist/live/transport.d.ts.map +1 -0
  53. package/dist/live/transport.js +194 -0
  54. package/dist/live/transport.js.map +1 -0
  55. package/dist/manager/TerminalInstanceController.d.ts +11 -0
  56. package/dist/manager/TerminalInstanceController.d.ts.map +1 -1
  57. package/dist/manager/TerminalInstanceController.js +265 -38
  58. package/dist/manager/TerminalInstanceController.js.map +1 -1
  59. package/dist/types.d.ts +41 -2
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/types.js.map +1 -1
  62. package/package.json +6 -2
@@ -1,45 +1,6 @@
1
1
  import type { Logger } from '../types.js';
2
- import type { TerminalFabricCell, TerminalFabricColor, TerminalFabricCursor, TerminalFabricDiagnostics, TerminalFabricFrameReason, TerminalFabricRenderer, TerminalFabricTheme } from './types.js';
3
- type GhosttyCellLike = {
4
- codepoint?: number;
5
- fg_r?: number;
6
- fg_g?: number;
7
- fg_b?: number;
8
- bg_r?: number;
9
- bg_g?: number;
10
- bg_b?: number;
11
- flags?: number;
12
- width?: number;
13
- grapheme_len?: number;
14
- hyperlink_id?: number;
15
- };
16
- type GhosttyRendererLike = {
17
- currentBuffer?: {
18
- getGraphemeString?: (row: number, col: number) => string;
19
- } | null;
20
- };
21
- type TerminalFabricSelectionRange = {
22
- startCol: number;
23
- startRow: number;
24
- endCol: number;
25
- endRow: number;
26
- };
27
- type TerminalFabricHoverRange = {
28
- startX: number;
29
- startY: number;
30
- endX: number;
31
- endY: number;
32
- };
33
- export type TerminalFabricRowRenderHints = {
34
- selection?: (TerminalFabricSelectionRange & {
35
- foreground: TerminalFabricColor;
36
- background: TerminalFabricColor;
37
- }) | null;
38
- hover?: {
39
- hyperlinkId?: number;
40
- range?: TerminalFabricHoverRange | null;
41
- } | null;
42
- };
2
+ import type { TerminalFabricCursor, TerminalFabricDiagnostics, TerminalFabricFrameReason, TerminalFabricRenderer, TerminalFabricTheme } from './types.js';
3
+ export type { TerminalFabricRowRenderHints } from './types.js';
43
4
  export type TerminalLiveFabricRendererFactory = (request: {
44
5
  viewId: string;
45
6
  }) => TerminalFabricRenderer;
@@ -54,6 +15,7 @@ export type TerminalLiveFabricAttachRequest = {
54
15
  getGhosttyCanvas: () => HTMLCanvasElement | null;
55
16
  focusInputSurface: () => void;
56
17
  forwardWheel: (event: WheelEvent) => void;
18
+ onRendererError?: (error: Error) => void;
57
19
  };
58
20
  export type TerminalLiveFabricOptions = {
59
21
  createRenderer?: TerminalLiveFabricRendererFactory;
@@ -76,9 +38,7 @@ export declare class TerminalLiveFabric {
76
38
  dispose(): void;
77
39
  }
78
40
  export declare const terminalLiveFabric: TerminalLiveFabric;
79
- export declare const mapGhosttyRowToFabricCells: (renderer: GhosttyRendererLike, row: number, cells: GhosttyCellLike[], cols: number, hints?: TerminalFabricRowRenderHints) => TerminalFabricCell[];
80
41
  export declare const themeToFabricTheme: (theme: Record<string, string>) => TerminalFabricTheme;
81
42
  export declare const cursorToFabricCursor: (value: unknown) => TerminalFabricCursor | null;
82
43
  export declare const renderReasonFromForce: (forceAll: boolean) => TerminalFabricFrameReason;
83
- export {};
84
44
  //# sourceMappingURL=TerminalLiveFabric.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalLiveFabric.d.ts","sourceRoot":"","sources":["../../src/fabric/TerminalLiveFabric.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TerminalLiveFabric.d.ts","sourceRoot":"","sources":["../../src/fabric/TerminalLiveFabric.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EAEtB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAa/D,MAAM,MAAM,iCAAiC,GAAG,CAAC,OAAO,EAAE;IACxD,MAAM,EAAE,MAAM,CAAC;CAChB,KAAK,sBAAsB,CAAC;AAE7B,MAAM,MAAM,+BAA+B,GAAG;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,gBAAgB,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,cAAc,CAAC,EAAE,iCAAiC,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IACzE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6C;IACnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAoC;gBAEvD,OAAO,GAAE,yBAA8B;IAI7C,UAAU,CAAC,OAAO,EAAE,+BAA+B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA6CjG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUhC,OAAO,CAAC,cAAc;IAWtB,cAAc,IAAI,yBAAyB;IAI3C,OAAO,IAAI,IAAI;CAMhB;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC;AAS3D,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAG,mBAGjE,CAAC;AAEH,eAAO,MAAM,oBAAoB,GAAI,OAAO,OAAO,KAAG,oBAAoB,GAAG,IAU5E,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,OAAO,KAAG,yBAEzD,CAAC"}
@@ -24,12 +24,13 @@ export class TerminalLiveFabric {
24
24
  getGhosttyCanvas: request.getGhosttyCanvas,
25
25
  focusInputSurface: request.focusInputSurface,
26
26
  forwardWheel: request.forwardWheel,
27
+ onRendererError: request.onRendererError ?? (() => undefined),
27
28
  });
28
29
  }
29
30
  catch (error) {
30
31
  this.releaseSession(session.sessionId);
31
- terminalFabricCoordinator.noteFallback(error);
32
- request.logger.warn('[TerminalLiveFabric] Beamterm renderer unavailable; keeping live canvas fallback', { error });
32
+ terminalFabricCoordinator.noteRendererError(error);
33
+ request.logger.error('[TerminalLiveFabric] Beamterm renderer initialization failed', { error });
33
34
  throw error;
34
35
  }
35
36
  const view = {
@@ -81,35 +82,6 @@ function defaultRendererFactory({ viewId }) {
81
82
  void viewId;
82
83
  return new BeamtermFabricRenderer();
83
84
  }
84
- export const mapGhosttyRowToFabricCells = (renderer, row, cells, cols, hints = {}) => {
85
- const mapped = [];
86
- for (let col = 0; col < cols; col += 1) {
87
- const cell = cells[col] ?? {};
88
- const selected = isCellInSelection(row, col, hints.selection);
89
- const hovered = isCellHovered(row, col, cell, hints.hover);
90
- const attrs = {
91
- bold: hasFlag(cell, 1),
92
- italic: hasFlag(cell, 2),
93
- underline: hasFlag(cell, 4) || hovered,
94
- strikethrough: hasFlag(cell, 8),
95
- inverse: selected ? false : hasFlag(cell, 16),
96
- invisible: hasFlag(cell, 32),
97
- faint: hasFlag(cell, 128),
98
- };
99
- mapped[col] = {
100
- symbol: resolveCellSymbol(renderer, cell, row, col),
101
- width: Number(cell.width ?? 1) || 1,
102
- fg: selected
103
- ? hints.selection.foreground
104
- : colorFromCell(cell, 'fg', { r: 255, g: 255, b: 255 }),
105
- bg: selected
106
- ? hints.selection.background
107
- : colorFromCell(cell, 'bg', { r: 0, g: 0, b: 0 }),
108
- attrs,
109
- };
110
- }
111
- return mapped;
112
- };
113
85
  export const themeToFabricTheme = (theme) => ({
114
86
  background: parseThemeColor(theme.background, 0x000000),
115
87
  foreground: parseThemeColor(theme.foreground, 0xffffff),
@@ -126,72 +98,6 @@ export const cursorToFabricCursor = (value) => {
126
98
  };
127
99
  };
128
100
  export const renderReasonFromForce = (forceAll) => (forceAll ? 'external' : 'write');
129
- const resolveCellSymbol = (renderer, cell, row, col) => {
130
- if ((cell.grapheme_len ?? 0) > 0) {
131
- const grapheme = renderer.currentBuffer?.getGraphemeString?.(row, col);
132
- if (grapheme) {
133
- return grapheme;
134
- }
135
- }
136
- const codepoint = Number(cell.codepoint ?? 32);
137
- if (!Number.isFinite(codepoint) || codepoint <= 0) {
138
- return ' ';
139
- }
140
- try {
141
- return String.fromCodePoint(codepoint);
142
- }
143
- catch {
144
- return ' ';
145
- }
146
- };
147
- const colorFromCell = (cell, prefix, fallback) => {
148
- const r = Number(cell[`${prefix}_r`]);
149
- const g = Number(cell[`${prefix}_g`]);
150
- const b = Number(cell[`${prefix}_b`]);
151
- if (![r, g, b].every(value => Number.isInteger(value) && value >= 0 && value <= 255)) {
152
- return fallback;
153
- }
154
- return { r, g, b };
155
- };
156
- const hasFlag = (cell, flag) => ((Number(cell.flags ?? 0) & flag) !== 0);
157
- const isCellInSelection = (row, col, selection) => {
158
- if (!selection) {
159
- return false;
160
- }
161
- if (selection.startRow === selection.endRow) {
162
- return row === selection.startRow && col >= selection.startCol && col <= selection.endCol;
163
- }
164
- if (row === selection.startRow) {
165
- return col >= selection.startCol;
166
- }
167
- if (row === selection.endRow) {
168
- return col <= selection.endCol;
169
- }
170
- return row > selection.startRow && row < selection.endRow;
171
- };
172
- const isCellHovered = (row, col, cell, hover) => {
173
- if (!hover) {
174
- return false;
175
- }
176
- const hoverId = Number(hover.hyperlinkId ?? 0);
177
- if (hoverId > 0 && Number(cell.hyperlink_id ?? 0) === hoverId) {
178
- return true;
179
- }
180
- const range = hover.range;
181
- if (!range) {
182
- return false;
183
- }
184
- if (row === range.startY && row === range.endY) {
185
- return col >= range.startX && col <= range.endX;
186
- }
187
- if (row === range.startY) {
188
- return col >= range.startX;
189
- }
190
- if (row === range.endY) {
191
- return col <= range.endX;
192
- }
193
- return row > range.startY && row < range.endY;
194
- };
195
101
  const parseThemeColor = (value, fallback) => {
196
102
  if (!value) {
197
103
  return fallback;
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalLiveFabric.js","sourceRoot":"","sources":["../../src/fabric/TerminalLiveFabric.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TerminalLiveFabric.js","sourceRoot":"","sources":["../../src/fabric/TerminalLiveFabric.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Logger } from '../types.js';
2
- export type TerminalFabricBackend = 'beamterm_webgl2' | 'main_thread_canvas_live';
3
- export type TerminalFabricRenderPath = 'main_thread_webgl2' | 'canvas_live_fallback';
2
+ export type TerminalFabricBackend = 'beamterm_webgl2';
3
+ export type TerminalFabricRenderPath = 'main_thread_webgl2';
4
4
  export type TerminalFabricVisibility = 'visible' | 'occluded' | 'offscreen';
5
5
  export type TerminalFabricColor = {
6
6
  r: number;
@@ -23,6 +23,43 @@ export type TerminalFabricCell = {
23
23
  bg: TerminalFabricColor;
24
24
  attrs: TerminalFabricCellAttrs;
25
25
  };
26
+ export type TerminalFabricSourceCell = {
27
+ codepoint?: number;
28
+ fg_r?: number;
29
+ fg_g?: number;
30
+ fg_b?: number;
31
+ bg_r?: number;
32
+ bg_g?: number;
33
+ bg_b?: number;
34
+ flags?: number;
35
+ width?: number;
36
+ grapheme_len?: number;
37
+ hyperlink_id?: number;
38
+ };
39
+ export type TerminalFabricSourceRenderer = {
40
+ currentBuffer?: {
41
+ getGraphemeString?: (row: number, col: number) => string;
42
+ } | null;
43
+ };
44
+ export type TerminalFabricRowRenderHints = {
45
+ selection?: {
46
+ startCol: number;
47
+ startRow: number;
48
+ endCol: number;
49
+ endRow: number;
50
+ foreground: TerminalFabricColor;
51
+ background: TerminalFabricColor;
52
+ } | null;
53
+ hover?: {
54
+ hyperlinkId?: number;
55
+ range?: {
56
+ startX: number;
57
+ startY: number;
58
+ endX: number;
59
+ endY: number;
60
+ } | null;
61
+ } | null;
62
+ };
26
63
  export type TerminalFabricCursor = {
27
64
  x: number;
28
65
  y: number;
@@ -84,6 +121,7 @@ export type TerminalFabricRendererTarget = {
84
121
  getGhosttyCanvas: () => HTMLCanvasElement | null;
85
122
  focusInputSurface: () => void;
86
123
  forwardWheel: (event: WheelEvent) => void;
124
+ onRendererError: (error: Error) => void;
87
125
  };
88
126
  export type TerminalFabricRenderer = {
89
127
  readonly backend: TerminalFabricBackend;
@@ -95,7 +133,7 @@ export type TerminalFabricRenderer = {
95
133
  rows: number;
96
134
  theme: TerminalFabricTheme;
97
135
  }): void;
98
- writeRow(row: number, cells: TerminalFabricCell[], cols: number): void;
136
+ writeRow(sourceRenderer: TerminalFabricSourceRenderer, row: number, cells: readonly TerminalFabricSourceCell[], cols: number, hints?: TerminalFabricRowRenderHints): void;
99
137
  finishFrame(cursor: TerminalFabricCursor | null): TerminalFabricFrameRenderResult;
100
138
  resize(width: number, height: number): void;
101
139
  getGeometry(): TerminalFabricGeometry | null;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fabric/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fabric/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -14,7 +14,7 @@ export type { TerminalInitializationSchedulerSnapshot } from './internal/Termina
14
14
  export type { TerminalOutputPipelineCatchUpReason, TerminalOutputPipelineCatchUpRequest, TerminalOutputPipelineChunk, TerminalOutputPipelineDrainState, TerminalOutputPipelineHandle, TerminalOutputPipelineOptions, TerminalOutputPipelinePolicy, TerminalOutputPipelineResetOptions, TerminalOutputPipelineScheduler, TerminalOutputPipelineStats, } from './core/TerminalOutputPipeline.js';
15
15
  export type { AtomicPagedTerminalOutputCoordinatorHandle, PagedTerminalCompleteAttachOptions, PagedTerminalHistoryPage, PagedTerminalHistoryRequest, PagedTerminalHistoryTruncationReason, PagedTerminalOutputFailure, PagedTerminalOutputFailureCode, PagedTerminalOutputCoordinatorHandle, PagedTerminalOutputCoordinatorOptions, PagedTerminalOutputPolicy, PagedTerminalOutputScheduler, PagedTerminalOutputSnapshot, PagedTerminalOutputState, PagedTerminalPreparedHistoryOutcome, PagedTerminalPreparedHistoryStatus, PreparedPagedTerminalHistory, PreparePagedTerminalHistoryOptions, } from './core/PagedTerminalOutputCoordinator.js';
16
16
  export type { TerminalFabricBackend, TerminalFabricDiagnostics, TerminalFabricRenderPath, TerminalFabricStats, } from './fabric/types.js';
17
- export type { Logger, TerminalBufferCellPosition, TerminalBufferRange, TerminalClipboardConfig, TerminalAppearance, TerminalConfig, TerminalCopySelectionResult, TerminalCopySelectionSource, TerminalResponsiveConfig, TerminalRuntimeLineSnapshot, TerminalRestorableSnapshot, TerminalRestorableSnapshotOptions, TerminalResourceEstimate, TerminalResourcePreloadOptions, TerminalEventHandlers, TerminalFocusOptions, TerminalInitializationOptions, TerminalInitializationPriority, TerminalInstanceController, TerminalInstanceListener, TerminalInstanceMutableOptions, TerminalInstanceOptions, TerminalInstanceScheduler, TerminalInstanceSnapshot, TerminalLoadingState, TerminalID, TerminalSessionInfo, TerminalDataChunk, TerminalDataEvent, TerminalNameUpdateEvent, TerminalTransport, TerminalEventSource, TerminalManagerOptions, TerminalManagerReturn, TerminalManagerActions, TerminalManagerAppearance, TerminalManagerState, TerminalError, TerminalLink, TerminalLinkProvider, TerminalSelectionSnapshot, TerminalTouchScrollRuntime, TerminalVisualSuspendHandle, TerminalVisualSuspendOptions, TerminalVisualSuspendReason, TerminalThemeName } from './types.js';
17
+ export type { Logger, TerminalBufferCellPosition, TerminalBufferRange, TerminalClipboardConfig, TerminalAppearance, TerminalConfig, TerminalCopySelectionResult, TerminalCopySelectionSource, TerminalResponsiveConfig, TerminalRuntimeLineSnapshot, TerminalRestorableSnapshot, TerminalRestorableSnapshotOptions, TerminalResourceEstimate, TerminalResourcePreloadOptions, TerminalEventHandlers, TerminalFocusOptions, TerminalInitializationOptions, TerminalInitializationPriority, TerminalInstanceController, TerminalInstanceListener, TerminalInstanceMutableOptions, TerminalInstanceOptions, TerminalInstanceScheduler, TerminalInstanceSnapshot, TerminalLoadingState, TerminalID, TerminalSessionInfo, TerminalDataChunk, TerminalDataEvent, TerminalHistoryPage, TerminalAtomicAttachResult, TerminalAtomicTransport, TerminalNameUpdateEvent, TerminalTransport, TerminalEventSource, TerminalManagerOptions, TerminalManagerReturn, TerminalManagerActions, TerminalManagerAppearance, TerminalManagerState, TerminalError, TerminalLink, TerminalLinkProvider, TerminalSelectionSnapshot, TerminalTouchScrollRuntime, TerminalVisualSuspendHandle, TerminalVisualSuspendOptions, TerminalVisualSuspendReason, TerminalThemeName } from './types.js';
18
18
  export { getThemeColors, getDefaultTerminalConfig } from './utils/config.js';
19
19
  export { filterXtermAutoResponses } from './utils/xtermAutoResponseFilter.js';
20
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0CAA0C,GAC3C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EACL,oCAAoC,EACpC,2BAA2B,GAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,YAAY,EAAE,kCAAkC,EAAE,MAAM,2CAA2C,CAAC;AACpG,YAAY,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACtF,YAAY,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AAC7G,YAAY,EACV,mCAAmC,EACnC,oCAAoC,EACpC,2BAA2B,EAC3B,gCAAgC,EAChC,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,kCAAkC,EAClC,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,0CAA0C,EAC1C,kCAAkC,EAClC,wBAAwB,EACxB,2BAA2B,EAC3B,oCAAoC,EACpC,0BAA0B,EAC1B,8BAA8B,EAC9B,oCAAoC,EACpC,qCAAqC,EACrC,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,mCAAmC,EACnC,kCAAkC,EAClC,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,MAAM,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0CAA0C,GAC3C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EACL,oCAAoC,EACpC,2BAA2B,GAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,YAAY,EAAE,kCAAkC,EAAE,MAAM,2CAA2C,CAAC;AACpG,YAAY,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACtF,YAAY,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AAC7G,YAAY,EACV,mCAAmC,EACnC,oCAAoC,EACpC,2BAA2B,EAC3B,gCAAgC,EAChC,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,kCAAkC,EAClC,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,0CAA0C,EAC1C,kCAAkC,EAClC,wBAAwB,EACxB,2BAA2B,EAC3B,oCAAoC,EACpC,0BAA0B,EAC1B,8BAA8B,EAC9B,oCAAoC,EACpC,qCAAqC,EACrC,yBAAyB,EACzB,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,mCAAmC,EACnC,kCAAkC,EAClC,4BAA4B,EAC5B,kCAAkC,GACnC,MAAM,0CAA0C,CAAC;AAClD,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,MAAM,EACN,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,wBAAwB,EACxB,8BAA8B,EAC9B,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,8BAA8B,EAC9B,0BAA0B,EAC1B,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0CAA0C,GAC3C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EACL,oCAAoC,EACpC,2BAA2B,GAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AA2FxF,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EACL,sBAAsB,EACtB,0CAA0C,GAC3C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,GAClC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EACL,oCAAoC,EACpC,2BAA2B,GAC5B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AA8FxF,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -1,3 +1,3 @@
1
- export type BeamtermModule = typeof import('@beamterm/renderer');
1
+ export type BeamtermModule = typeof import('@floegence/beamterm-renderer');
2
2
  export declare const loadBeamtermModule: () => Promise<BeamtermModule>;
3
3
  //# sourceMappingURL=BeamtermResourceLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BeamtermResourceLoader.d.ts","sourceRoot":"","sources":["../../src/internal/BeamtermResourceLoader.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,cAAc,oBAAoB,CAAC,CAAC;AAIjE,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,cAAc,CAWjE,CAAC"}
1
+ {"version":3,"file":"BeamtermResourceLoader.d.ts","sourceRoot":"","sources":["../../src/internal/BeamtermResourceLoader.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,cAAc,8BAA8B,CAAC,CAAC;AAI3E,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,cAAc,CAWjE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  let beamtermModulePromise = null;
2
2
  export const loadBeamtermModule = async () => {
3
3
  if (!beamtermModulePromise) {
4
- beamtermModulePromise = import('@beamterm/renderer').then(async (module) => {
4
+ beamtermModulePromise = import('@floegence/beamterm-renderer').then(async (module) => {
5
5
  await module.main();
6
6
  return module;
7
7
  }).catch((error) => {
@@ -1 +1 @@
1
- {"version":3,"file":"BeamtermResourceLoader.js","sourceRoot":"","sources":["../../src/internal/BeamtermResourceLoader.ts"],"names":[],"mappings":"AAEA,IAAI,qBAAqB,GAAmC,IAAI,CAAC;AAEjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAA6B,EAAE;IACpE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACvE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC1B,qBAAqB,GAAG,IAAI,CAAC;YAC7B,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"BeamtermResourceLoader.js","sourceRoot":"","sources":["../../src/internal/BeamtermResourceLoader.ts"],"names":[],"mappings":"AAEA,IAAI,qBAAqB,GAAmC,IAAI,CAAC;AAEjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAA6B,EAAE;IACpE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC3B,qBAAqB,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACjF,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAC1B,qBAAqB,GAAG,IAAI,CAAC;YAC7B,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,qBAAqB,CAAC;AAC/B,CAAC,CAAC"}
@@ -1,23 +1,19 @@
1
1
  import type { TerminalDataChunk } from '../types.js';
2
2
  interface SequenceBufferConfig {
3
3
  maxPendingChunks: number;
4
- maxSequenceGap: number;
5
- cleanupIntervalMs: number;
6
- forceCleanupThreshold: number;
7
- maxStallMs: number;
4
+ maxPendingBytes: number;
8
5
  }
9
6
  export declare class SequenceBuffer {
10
7
  private expectedSequence;
11
- private pending;
12
- private pendingInsertedAt;
13
- private lastCleanupMs;
14
- private config;
8
+ private readonly pending;
9
+ private pendingBytes;
10
+ private readonly config;
15
11
  constructor(config?: Partial<SequenceBufferConfig>);
16
12
  reset(startSequence: number): void;
17
13
  flushPending(): TerminalDataChunk[];
18
- push(chunk: TerminalDataChunk, now?: number): TerminalDataChunk[];
19
- private flushIfStalled;
20
- private cleanupIfNeeded;
14
+ push(chunk: TerminalDataChunk, _now?: number): TerminalDataChunk[];
15
+ assertCoveredThrough(sequence: number): void;
16
+ coverThrough(sequence: number): TerminalDataChunk[];
21
17
  }
22
18
  export {};
23
19
  //# sourceMappingURL=SequenceBuffer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SequenceBuffer.d.ts","sourceRoot":"","sources":["../../src/internal/SequenceBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB;AAaD,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAItD,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAOlC,YAAY,IAAI,iBAAiB,EAAE;IAsBnC,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,SAAa,GAAG,iBAAiB,EAAE;IAgDrE,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,eAAe;CAsBxB"}
1
+ {"version":3,"file":"SequenceBuffer.d.ts","sourceRoot":"","sources":["../../src/internal/SequenceBuffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,UAAU,oBAAoB;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAaD,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAChE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM;IAOtD,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAQlC,YAAY,IAAI,iBAAiB,EAAE;IAYnC,IAAI,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,SAAa,GAAG,iBAAiB,EAAE;IAwBtE,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS5C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,EAAE;CAmBpD"}
@@ -1,134 +1,83 @@
1
1
  const defaultConfig = {
2
- maxPendingChunks: 40,
3
- maxSequenceGap: 32,
4
- cleanupIntervalMs: 5000,
5
- forceCleanupThreshold: 60,
6
- // If we keep seeing chunks ahead of the expected sequence for too long, assume a missing
7
- // chunk was dropped (e.g. transient websocket loss) and advance to keep the UI responsive.
8
- maxStallMs: 500
2
+ maxPendingChunks: 4096,
3
+ maxPendingBytes: 8 * 1024 * 1024,
9
4
  };
10
- // SequenceBuffer reorders chunks based on sequence numbers while limiting memory growth.
5
+ const normalizePositiveInteger = (value, fallback) => (typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : fallback);
6
+ // Reliable transports may reorder delivery across the history/live handoff, but
7
+ // they must never infer or skip a missing sequence. Recovery owns gap resolution.
11
8
  export class SequenceBuffer {
12
9
  constructor(config = {}) {
13
10
  this.expectedSequence = 1;
14
11
  this.pending = new Map();
15
- this.pendingInsertedAt = new Map();
16
- this.lastCleanupMs = Date.now();
17
- this.config = { ...defaultConfig, ...config };
12
+ this.pendingBytes = 0;
13
+ this.config = {
14
+ maxPendingChunks: normalizePositiveInteger(config.maxPendingChunks, defaultConfig.maxPendingChunks),
15
+ maxPendingBytes: normalizePositiveInteger(config.maxPendingBytes, defaultConfig.maxPendingBytes),
16
+ };
18
17
  }
19
18
  reset(startSequence) {
20
- this.expectedSequence = Math.max(1, startSequence);
19
+ this.expectedSequence = Number.isSafeInteger(startSequence) && startSequence > 0
20
+ ? startSequence
21
+ : 1;
21
22
  this.pending.clear();
22
- this.pendingInsertedAt.clear();
23
- this.lastCleanupMs = Date.now();
23
+ this.pendingBytes = 0;
24
24
  }
25
25
  flushPending() {
26
- if (this.pending.size === 0) {
27
- return [];
28
- }
29
26
  const ready = [];
30
- const sequences = Array.from(this.pending.keys()).sort((a, b) => a - b);
31
- for (const sequence of sequences) {
32
- const chunk = this.pending.get(sequence);
33
- this.pending.delete(sequence);
34
- this.pendingInsertedAt.delete(sequence);
35
- if (!chunk || sequence < this.expectedSequence) {
36
- continue;
37
- }
27
+ while (this.pending.has(this.expectedSequence)) {
28
+ const chunk = this.pending.get(this.expectedSequence);
29
+ this.pending.delete(this.expectedSequence);
30
+ this.pendingBytes -= chunk.data.byteLength;
38
31
  ready.push(chunk);
39
- this.expectedSequence = sequence + 1;
32
+ this.expectedSequence += 1;
40
33
  }
41
34
  return ready;
42
35
  }
43
- push(chunk, now = Date.now()) {
36
+ push(chunk, _now = Date.now()) {
44
37
  const sequence = chunk.sequence;
45
- const ready = [];
46
- if (!Number.isInteger(sequence) || sequence < 1) {
47
- ready.push(chunk);
48
- return ready;
38
+ if (!Number.isSafeInteger(sequence) || sequence < 1) {
39
+ return [chunk];
40
+ }
41
+ if (sequence < this.expectedSequence || this.pending.has(sequence)) {
42
+ return [];
49
43
  }
50
- this.cleanupIfNeeded(now);
51
- ready.push(...this.flushIfStalled(now));
52
44
  if (sequence === this.expectedSequence) {
53
- ready.push(chunk);
54
45
  this.expectedSequence += 1;
55
- while (this.pending.has(this.expectedSequence)) {
56
- const next = this.pending.get(this.expectedSequence);
57
- if (next) {
58
- ready.push(next);
59
- }
60
- this.pending.delete(this.expectedSequence);
61
- this.pendingInsertedAt.delete(this.expectedSequence);
62
- this.expectedSequence += 1;
63
- }
64
- return ready;
46
+ return [chunk, ...this.flushPending()];
65
47
  }
66
- const withinGap = sequence > this.expectedSequence && sequence <= this.expectedSequence + this.config.maxSequenceGap;
67
- if (withinGap && this.pending.size < this.config.maxPendingChunks) {
68
- this.pending.set(sequence, chunk);
69
- if (!this.pendingInsertedAt.has(sequence)) {
70
- this.pendingInsertedAt.set(sequence, now);
71
- }
72
- return ready;
48
+ if (this.pending.size + 1 > this.config.maxPendingChunks
49
+ || this.pendingBytes + chunk.data.byteLength > this.config.maxPendingBytes) {
50
+ throw new Error('terminal output reorder queue limit exceeded');
73
51
  }
74
- if (sequence > this.expectedSequence) {
75
- this.expectedSequence = sequence + 1;
76
- this.pending.clear();
77
- this.pendingInsertedAt.clear();
78
- }
79
- ready.push(chunk);
80
- return ready;
52
+ this.pending.set(sequence, chunk);
53
+ this.pendingBytes += chunk.data.byteLength;
54
+ return [];
81
55
  }
82
- flushIfStalled(now) {
83
- if (this.pending.size === 0) {
84
- return [];
56
+ assertCoveredThrough(sequence) {
57
+ if (!Number.isSafeInteger(sequence) || sequence < 0) {
58
+ throw new Error('terminal output replay boundary is invalid');
85
59
  }
86
- let minPendingSeq = Number.POSITIVE_INFINITY;
87
- let minPendingInsertedAt = Number.POSITIVE_INFINITY;
88
- for (const seq of this.pending.keys()) {
89
- if (seq < minPendingSeq) {
90
- minPendingSeq = seq;
91
- minPendingInsertedAt = this.pendingInsertedAt.get(seq) ?? now;
92
- }
60
+ if (this.expectedSequence <= sequence) {
61
+ throw new Error(`missing terminal output sequence ${this.expectedSequence} before replay boundary ${sequence}`);
93
62
  }
94
- if (!Number.isFinite(minPendingSeq) || minPendingSeq <= this.expectedSequence) {
95
- return [];
96
- }
97
- const ageMs = now - minPendingInsertedAt;
98
- if (ageMs < this.config.maxStallMs) {
99
- return [];
100
- }
101
- this.expectedSequence = minPendingSeq;
102
- const ready = [];
103
- while (this.pending.has(this.expectedSequence)) {
104
- const next = this.pending.get(this.expectedSequence);
105
- if (next) {
106
- ready.push(next);
107
- }
108
- this.pending.delete(this.expectedSequence);
109
- this.pendingInsertedAt.delete(this.expectedSequence);
110
- this.expectedSequence += 1;
111
- }
112
- return ready;
113
63
  }
114
- cleanupIfNeeded(now) {
115
- if (this.pending.size >= this.config.forceCleanupThreshold) {
116
- this.pending.clear();
117
- this.pendingInsertedAt.clear();
118
- this.lastCleanupMs = now;
119
- return;
120
- }
121
- if (now - this.lastCleanupMs < this.config.cleanupIntervalMs) {
122
- return;
64
+ coverThrough(sequence) {
65
+ if (!Number.isSafeInteger(sequence) || sequence < 0) {
66
+ throw new Error('terminal output replay coverage is invalid');
123
67
  }
124
- const cutoff = this.expectedSequence + this.config.maxSequenceGap;
125
- for (const seq of this.pending.keys()) {
126
- if (seq < this.expectedSequence || seq > cutoff) {
127
- this.pending.delete(seq);
128
- this.pendingInsertedAt.delete(seq);
129
- }
68
+ if (sequence < this.expectedSequence - 1) {
69
+ return [];
130
70
  }
131
- this.lastCleanupMs = now;
71
+ const covered = [...this.pending.entries()]
72
+ .filter(([pendingSequence]) => pendingSequence <= sequence)
73
+ .sort(([left], [right]) => left - right)
74
+ .map(([pendingSequence, chunk]) => {
75
+ this.pending.delete(pendingSequence);
76
+ this.pendingBytes -= chunk.data.byteLength;
77
+ return chunk;
78
+ });
79
+ this.expectedSequence = sequence + 1;
80
+ return [...covered, ...this.flushPending()];
132
81
  }
133
82
  }
134
83
  //# sourceMappingURL=SequenceBuffer.js.map