nterminal 1.2.78 → 1.2.80

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 (98) hide show
  1. package/SECURITY.md +6 -0
  2. package/dist/client/assets/MarkdownPreview-D2UZ6wJU.js +1 -0
  3. package/dist/client/assets/{TranscriptMarkdownBody-BkGu6YVq.js → TranscriptMarkdownBody-BFu2FzgT.js} +1 -1
  4. package/dist/client/assets/index-4MeJRcb6.js +57 -0
  5. package/dist/client/assets/{index-Bgqck-vt.js → index-BFs4imuQ.js} +1 -1
  6. package/dist/client/assets/index-rROkcwjD.css +1 -0
  7. package/dist/client/index.html +2 -2
  8. package/dist/scripts/onboarding.js +10 -1
  9. package/dist/scripts/onboarding.js.map +1 -1
  10. package/dist/server/agent/agentProxy.d.ts +7 -2
  11. package/dist/server/agent/agentProxy.js +75 -9
  12. package/dist/server/agent/agentProxy.js.map +1 -1
  13. package/dist/server/agent/agentRoutes.js +159 -33
  14. package/dist/server/agent/agentRoutes.js.map +1 -1
  15. package/dist/server/agent/agentWebSocketProxy.d.ts +10 -1
  16. package/dist/server/agent/agentWebSocketProxy.js +24 -4
  17. package/dist/server/agent/agentWebSocketProxy.js.map +1 -1
  18. package/dist/server/auth/authService.d.ts +18 -4
  19. package/dist/server/auth/authService.js +57 -6
  20. package/dist/server/auth/authService.js.map +1 -1
  21. package/dist/server/eventLoopDelayMonitor.d.ts +11 -0
  22. package/dist/server/eventLoopDelayMonitor.js +37 -0
  23. package/dist/server/eventLoopDelayMonitor.js.map +1 -0
  24. package/dist/server/http.js +11 -4
  25. package/dist/server/http.js.map +1 -1
  26. package/dist/server/index.js +18 -2
  27. package/dist/server/index.js.map +1 -1
  28. package/dist/server/routes/agentManagementRoutes.d.ts +2 -1
  29. package/dist/server/routes/agentManagementRoutes.js +91 -37
  30. package/dist/server/routes/agentManagementRoutes.js.map +1 -1
  31. package/dist/server/routes/authRoutes.js +4 -1
  32. package/dist/server/routes/authRoutes.js.map +1 -1
  33. package/dist/server/routes/authenticatedSocketRegistry.d.ts +25 -0
  34. package/dist/server/routes/authenticatedSocketRegistry.js +171 -0
  35. package/dist/server/routes/authenticatedSocketRegistry.js.map +1 -0
  36. package/dist/server/routes/codeServerRoutes.d.ts +3 -1
  37. package/dist/server/routes/codeServerRoutes.js +139 -26
  38. package/dist/server/routes/codeServerRoutes.js.map +1 -1
  39. package/dist/server/routes/fileRoutes.js +1 -1
  40. package/dist/server/routes/fileRoutes.js.map +1 -1
  41. package/dist/server/routes/httpProxyBody.d.ts +2 -1
  42. package/dist/server/routes/httpProxyBody.js +8 -1
  43. package/dist/server/routes/httpProxyBody.js.map +1 -1
  44. package/dist/server/routes/socketBackpressure.d.ts +2 -0
  45. package/dist/server/routes/socketBackpressure.js +21 -10
  46. package/dist/server/routes/socketBackpressure.js.map +1 -1
  47. package/dist/server/routes/terminalRoutes.d.ts +4 -3
  48. package/dist/server/routes/terminalRoutes.js +62 -14
  49. package/dist/server/routes/terminalRoutes.js.map +1 -1
  50. package/dist/server/routes/terminalSocketMessage.d.ts +34 -0
  51. package/dist/server/routes/terminalSocketMessage.js +188 -0
  52. package/dist/server/routes/terminalSocketMessage.js.map +1 -0
  53. package/dist/server/routes/terminalWebSocket.d.ts +3 -1
  54. package/dist/server/routes/terminalWebSocket.js +191 -116
  55. package/dist/server/routes/terminalWebSocket.js.map +1 -1
  56. package/dist/server/routes/webSocketRelay.d.ts +14 -0
  57. package/dist/server/routes/webSocketRelay.js +188 -18
  58. package/dist/server/routes/webSocketRelay.js.map +1 -1
  59. package/dist/server/routes/webSocketUpgradeAuth.d.ts +5 -0
  60. package/dist/server/routes/webSocketUpgradeAuth.js +21 -0
  61. package/dist/server/routes/webSocketUpgradeAuth.js.map +1 -0
  62. package/dist/server/system/stats.d.ts +1 -1
  63. package/dist/server/system/stats.js +11 -7
  64. package/dist/server/system/stats.js.map +1 -1
  65. package/dist/server/terminal/PtyAdapter.d.ts +25 -8
  66. package/dist/server/terminal/PtyAdapter.js +12 -1
  67. package/dist/server/terminal/PtyAdapter.js.map +1 -1
  68. package/dist/server/terminal/TerminalManager.d.ts +71 -13
  69. package/dist/server/terminal/TerminalManager.js +955 -163
  70. package/dist/server/terminal/TerminalManager.js.map +1 -1
  71. package/dist/server/terminal/TmuxPtyAdapter.d.ts +85 -15
  72. package/dist/server/terminal/TmuxPtyAdapter.js +1364 -403
  73. package/dist/server/terminal/TmuxPtyAdapter.js.map +1 -1
  74. package/dist/server/terminal/asyncCommand.d.ts +17 -0
  75. package/dist/server/terminal/asyncCommand.js +60 -0
  76. package/dist/server/terminal/asyncCommand.js.map +1 -0
  77. package/dist/server/terminal/codexTranscriptSource.d.ts +3 -3
  78. package/dist/server/terminal/codexTranscriptSource.js +90 -104
  79. package/dist/server/terminal/codexTranscriptSource.js.map +1 -1
  80. package/dist/server/terminal/outputBuffer.d.ts +5 -1
  81. package/dist/server/terminal/outputBuffer.js +29 -3
  82. package/dist/server/terminal/outputBuffer.js.map +1 -1
  83. package/dist/server/terminal/procfs.d.ts +7 -8
  84. package/dist/server/terminal/procfs.js +56 -47
  85. package/dist/server/terminal/procfs.js.map +1 -1
  86. package/dist/server/terminal/transcriptHistory.d.ts +1 -1
  87. package/dist/server/terminal/transcriptHistory.js +187 -38
  88. package/dist/server/terminal/transcriptHistory.js.map +1 -1
  89. package/dist/server/terminal/ttlCache.d.ts +1 -0
  90. package/dist/server/terminal/ttlCache.js +3 -0
  91. package/dist/server/terminal/ttlCache.js.map +1 -1
  92. package/dist/shared/protocol.d.ts +24 -0
  93. package/dist/shared/protocol.js +25 -2
  94. package/dist/shared/protocol.js.map +1 -1
  95. package/package.json +1 -1
  96. package/dist/client/assets/MarkdownPreview-D5NthhhG.js +0 -1
  97. package/dist/client/assets/index-B3_mYQzf.css +0 -1
  98. package/dist/client/assets/index-gSePR0Ob.js +0 -57
@@ -1,7 +1,7 @@
1
1
  import type { AppConfig } from '../config.js';
2
2
  import type { ServerTerminalMessage, TerminalHistoryCursor, TerminalHistoryResponse, TerminalTranscriptHistoryResponse, TerminalTranscriptSourceResponse } from '../../shared/protocol.js';
3
3
  import type { TerminalCompletionOutcome, TerminalId, TerminalSummary } from '../../shared/types.js';
4
- import type { PtyAdapter } from './PtyAdapter.js';
4
+ import { type PtyAdapter } from './PtyAdapter.js';
5
5
  export interface CreateTerminalOptions {
6
6
  parentTerminalId?: TerminalId;
7
7
  cwd?: string;
@@ -23,8 +23,12 @@ export interface TerminalManagerOptions {
23
23
  resolveCwd?: (pid: number) => Promise<string | null>;
24
24
  now?: () => Date;
25
25
  onCompletion?: (event: TerminalManagerCompletionEvent) => void | Promise<void>;
26
+ onDiagnostic?: (diagnostic: TerminalManagerDiagnostic) => void;
26
27
  }
27
- export interface WriteTerminalOptions {
28
+ export interface TerminalControlOptions {
29
+ canExecute?: () => boolean;
30
+ }
31
+ export interface WriteTerminalOptions extends TerminalControlOptions {
28
32
  cancelScrollbackMode?: boolean;
29
33
  }
30
34
  export interface TerminalManagerCompletionEvent {
@@ -35,6 +39,24 @@ export interface TerminalManagerCompletionEvent {
35
39
  commandName?: string | null;
36
40
  occurredAt: string;
37
41
  }
42
+ export interface TerminalManagerDiagnostic {
43
+ event: 'terminal.status_poll_failed' | 'terminal.process_snapshot_failed' | 'terminal.restore_failed' | 'terminal.transcript_poll_failed' | 'terminal.transcript_poll_slow' | 'terminal.destroy_failed' | 'terminal.close_failed';
44
+ terminalId?: TerminalId;
45
+ queueDepth?: number;
46
+ elapsedMs?: number;
47
+ error?: unknown;
48
+ }
49
+ export interface DestroyAllTerminalsResult {
50
+ requested: number;
51
+ destroyed: number;
52
+ failed: number;
53
+ }
54
+ export type RenameTerminalResult = {
55
+ status: 'renamed';
56
+ terminal: TerminalSummary;
57
+ } | {
58
+ status: 'not_found' | 'closing' | 'persistence_failed' | 'queue_full';
59
+ };
38
60
  type TerminalSubscriber = (message: ServerTerminalMessage) => void;
39
61
  export declare class TerminalManager {
40
62
  private readonly config;
@@ -43,46 +65,78 @@ export declare class TerminalManager {
43
65
  private readonly resolveCwd;
44
66
  private readonly now;
45
67
  private readonly onCompletion;
68
+ private readonly onDiagnostic;
46
69
  private readonly shellBasename;
47
70
  private readonly terminalCapabilities;
48
71
  private readonly agentTranscriptTracker;
72
+ private readonly transcriptQueue;
73
+ private readonly lastDiagnosticAt;
49
74
  private readonly completionStates;
50
75
  private statusPollTimer;
76
+ private restoreRetryTimer;
77
+ private restoreInflight;
51
78
  private statusPollInflight;
79
+ private activeTranscriptWorkers;
80
+ private readonly pendingInitializations;
81
+ private terminalResetBlockers;
82
+ private terminalMutationGeneration;
83
+ private shutdownRequested;
84
+ private disposed;
52
85
  constructor(config: AppConfig, ptyAdapter: PtyAdapter, options?: TerminalManagerOptions);
53
86
  private startStatusPoller;
87
+ private runStatusPoll;
54
88
  private pollOnce;
89
+ private applyProcessSnapshot;
90
+ private scheduleTranscriptRefresh;
91
+ private pumpTranscriptQueue;
92
+ private refreshAgentTranscript;
93
+ private refreshAgentTranscriptOnce;
55
94
  dispose(): void;
56
95
  createTerminal(options?: CreateTerminalOptions): Promise<TerminalSummary>;
96
+ private createTerminalUntracked;
57
97
  restoreSessions(): Promise<void>;
98
+ private restoreSessionsUntracked;
99
+ private scheduleRestoreRetry;
100
+ private clearRestoreRetryTimer;
58
101
  private wireUpPty;
102
+ private finishPtyExit;
103
+ private applyPtyExitState;
104
+ private persistentSessionState;
105
+ private markSessionUnavailable;
59
106
  private reattachToSession;
60
- private captureTerminalHistoryCursor;
61
107
  listTerminals(): TerminalSummary[];
62
108
  getTerminal(id: TerminalId): TerminalSummary | null;
63
109
  getOutputSnapshot(id: TerminalId): string[] | null;
64
110
  getTerminalHistory(id: TerminalId, options?: {
65
111
  beforeLine?: number;
112
+ snapshotHistorySize?: number;
113
+ snapshotHistoryLimit?: number;
114
+ snapshotHistoryToken?: string;
115
+ snapshotPaneWidth?: number;
66
116
  limit?: number;
67
- }): TerminalHistoryResponse | null;
117
+ }): Promise<TerminalHistoryResponse | null>;
68
118
  getTerminalTranscriptHistory(id: TerminalId, options?: {
69
119
  cursor?: string;
70
120
  limit?: number;
71
121
  maxLines?: number;
72
122
  includeTools?: boolean;
73
- }): TerminalTranscriptHistoryResponse | null;
74
- getTerminalTranscriptSource(id: TerminalId): TerminalTranscriptSourceResponse | null;
123
+ }): Promise<TerminalTranscriptHistoryResponse | null>;
124
+ getTerminalTranscriptSource(id: TerminalId): Promise<TerminalTranscriptSourceResponse | null>;
75
125
  resolveTerminalCwd(id: TerminalId): Promise<string | null>;
76
- renameTerminal(id: TerminalId, title: string): TerminalSummary | null;
126
+ renameTerminal(id: TerminalId, title: string): Promise<RenameTerminalResult>;
77
127
  refreshTerminalCwd(id: TerminalId): Promise<TerminalSummary | null>;
78
128
  attachTerminal(id: TerminalId, subscriber: TerminalSubscriber, options?: AttachTerminalOptions): TerminalAttachment | null;
79
- writeToTerminal(id: TerminalId, data: string, options?: WriteTerminalOptions): boolean;
80
- scrollTerminalScrollback(id: TerminalId, lines: number): boolean;
81
- cancelTerminalScrollbackMode(id: TerminalId): boolean;
129
+ writeToTerminal(id: TerminalId, data: string, options?: WriteTerminalOptions): Promise<boolean>;
130
+ scrollTerminalScrollback(id: TerminalId, lines: number, options?: TerminalControlOptions): Promise<boolean>;
131
+ cancelTerminalScrollbackMode(id: TerminalId, options?: TerminalControlOptions): Promise<boolean>;
82
132
  resizeTerminal(id: TerminalId, cols: number, rows: number): boolean;
83
- closeTerminal(id: TerminalId): boolean;
84
- closeAll(): void;
85
- destroyAllTerminals(): void;
133
+ closeTerminal(id: TerminalId): Promise<boolean>;
134
+ private sealPendingScroll;
135
+ private markClosing;
136
+ private recoverOrFinalizeFailedClose;
137
+ closeAll(): Promise<void>;
138
+ destroyAllTerminals(): Promise<DestroyAllTerminalsResult>;
139
+ private awaitPendingInitializations;
86
140
  private ensureAttached;
87
141
  private resolveInitialCwd;
88
142
  private safeResolveCwd;
@@ -93,6 +147,10 @@ export declare class TerminalManager {
93
147
  private resolveAgentTranscript;
94
148
  private disposeRecord;
95
149
  private createTitle;
150
+ private cancelQueuedTranscriptRefresh;
96
151
  private timestamp;
152
+ private reportDiagnostic;
153
+ private canEnqueueControl;
154
+ private enqueueControl;
97
155
  }
98
156
  export {};