nterminal 1.2.79 → 1.2.81

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 (101) hide show
  1. package/SECURITY.md +6 -0
  2. package/dist/client/assets/MarkdownPreview-Dq1fT9EP.js +1 -0
  3. package/dist/client/assets/{TranscriptMarkdownBody-9-cPRj-d.js → TranscriptMarkdownBody-DDFnUWuE.js} +1 -1
  4. package/dist/client/assets/{index-bffyLU7T.js → index-D7w92nCI.js} +1 -1
  5. package/dist/client/assets/index-Di6LPXrS.js +57 -0
  6. package/dist/client/assets/index-hoeidjW4.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 +199 -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 +120 -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 +113 -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 +87 -14
  69. package/dist/server/terminal/TerminalManager.js +1049 -168
  70. package/dist/server/terminal/TerminalManager.js.map +1 -1
  71. package/dist/server/terminal/TmuxPtyAdapter.d.ts +91 -15
  72. package/dist/server/terminal/TmuxPtyAdapter.js +1392 -404
  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 +4 -4
  78. package/dist/server/terminal/codexTranscriptSource.js +91 -105
  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/subagentSources.d.ts +15 -0
  87. package/dist/server/terminal/subagentSources.js +801 -0
  88. package/dist/server/terminal/subagentSources.js.map +1 -0
  89. package/dist/server/terminal/transcriptHistory.d.ts +2 -1
  90. package/dist/server/terminal/transcriptHistory.js +207 -49
  91. package/dist/server/terminal/transcriptHistory.js.map +1 -1
  92. package/dist/server/terminal/ttlCache.d.ts +1 -0
  93. package/dist/server/terminal/ttlCache.js +3 -0
  94. package/dist/server/terminal/ttlCache.js.map +1 -1
  95. package/dist/shared/protocol.d.ts +42 -0
  96. package/dist/shared/protocol.js +25 -2
  97. package/dist/shared/protocol.js.map +1 -1
  98. package/package.json +1 -1
  99. package/dist/client/assets/MarkdownPreview-BBppqaO6.js +0 -1
  100. package/dist/client/assets/index-B3_mYQzf.css +0 -1
  101. package/dist/client/assets/index-DAjEhbeV.js +0 -57
@@ -1,7 +1,7 @@
1
1
  import type { AppConfig } from '../config.js';
2
- import type { ServerTerminalMessage, TerminalHistoryCursor, TerminalHistoryResponse, TerminalTranscriptHistoryResponse, TerminalTranscriptSourceResponse } from '../../shared/protocol.js';
2
+ import type { ServerTerminalMessage, TerminalHistoryCursor, TerminalHistoryResponse, TerminalSubagentsResponse, 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.reattach_failed' | '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,47 +65,94 @@ 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 readonly reattachInflight;
82
+ private terminalResetBlockers;
83
+ private terminalMutationGeneration;
84
+ private shutdownRequested;
85
+ private disposed;
52
86
  constructor(config: AppConfig, ptyAdapter: PtyAdapter, options?: TerminalManagerOptions);
53
87
  private startStatusPoller;
88
+ private runStatusPoll;
54
89
  private pollOnce;
90
+ private applyProcessSnapshot;
91
+ private scheduleTranscriptRefresh;
92
+ private pumpTranscriptQueue;
93
+ private refreshAgentTranscript;
94
+ private refreshAgentTranscriptOnce;
55
95
  dispose(): void;
56
96
  createTerminal(options?: CreateTerminalOptions): Promise<TerminalSummary>;
97
+ private createTerminalUntracked;
57
98
  restoreSessions(): Promise<void>;
99
+ private restoreSessionsUntracked;
100
+ private scheduleRestoreRetry;
101
+ private clearRestoreRetryTimer;
58
102
  private wireUpPty;
103
+ private finishPtyExit;
104
+ private applyPtyExitState;
105
+ private persistentSessionState;
106
+ private markSessionUnavailable;
59
107
  private reattachToSession;
60
- private captureTerminalHistoryCursor;
61
108
  listTerminals(): TerminalSummary[];
62
109
  getTerminal(id: TerminalId): TerminalSummary | null;
63
110
  getOutputSnapshot(id: TerminalId): string[] | null;
64
111
  getTerminalHistory(id: TerminalId, options?: {
65
112
  beforeLine?: number;
113
+ snapshotHistorySize?: number;
114
+ snapshotHistoryLimit?: number;
115
+ snapshotHistoryToken?: string;
116
+ snapshotPaneWidth?: number;
66
117
  limit?: number;
67
- }): TerminalHistoryResponse | null;
118
+ }): Promise<TerminalHistoryResponse | null>;
119
+ private resolveLiveTranscriptSource;
120
+ private transcriptRequestStillLive;
68
121
  getTerminalTranscriptHistory(id: TerminalId, options?: {
69
122
  cursor?: string;
70
123
  limit?: number;
71
124
  maxLines?: number;
72
125
  includeTools?: boolean;
73
- }): TerminalTranscriptHistoryResponse | null;
74
- getTerminalTranscriptSource(id: TerminalId): TerminalTranscriptSourceResponse | null;
126
+ }): Promise<TerminalTranscriptHistoryResponse | null>;
127
+ getTerminalTranscriptSource(id: TerminalId): Promise<TerminalTranscriptSourceResponse | null>;
128
+ getTerminalSubagents(id: TerminalId): Promise<TerminalSubagentsResponse | null>;
129
+ getTerminalSubagentTranscript(id: TerminalId, subagentId: string, options?: {
130
+ cursor?: string;
131
+ limit?: number;
132
+ maxLines?: number;
133
+ includeTools?: boolean;
134
+ }): Promise<TerminalTranscriptHistoryResponse | null>;
75
135
  resolveTerminalCwd(id: TerminalId): Promise<string | null>;
76
- renameTerminal(id: TerminalId, title: string): TerminalSummary | null;
136
+ renameTerminal(id: TerminalId, title: string): Promise<RenameTerminalResult>;
77
137
  refreshTerminalCwd(id: TerminalId): Promise<TerminalSummary | null>;
78
138
  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;
139
+ attachTerminalAsync(id: TerminalId, subscriber: TerminalSubscriber, options?: AttachTerminalOptions): Promise<TerminalAttachment | null>;
140
+ private createAttachment;
141
+ writeToTerminal(id: TerminalId, data: string, options?: WriteTerminalOptions): Promise<boolean>;
142
+ scrollTerminalScrollback(id: TerminalId, lines: number, options?: TerminalControlOptions): Promise<boolean>;
143
+ cancelTerminalScrollbackMode(id: TerminalId, options?: TerminalControlOptions): Promise<boolean>;
82
144
  resizeTerminal(id: TerminalId, cols: number, rows: number): boolean;
83
- closeTerminal(id: TerminalId): boolean;
84
- closeAll(): void;
85
- destroyAllTerminals(): void;
145
+ closeTerminal(id: TerminalId): Promise<boolean>;
146
+ private sealPendingScroll;
147
+ private markClosing;
148
+ private recoverOrFinalizeFailedClose;
149
+ closeAll(): Promise<void>;
150
+ destroyAllTerminals(): Promise<DestroyAllTerminalsResult>;
151
+ private awaitPendingInitializations;
86
152
  private ensureAttached;
153
+ private ensureAttachedAsync;
154
+ private attachOrRefresh;
155
+ private refreshAndAttach;
87
156
  private resolveInitialCwd;
88
157
  private safeResolveCwd;
89
158
  private refreshCwd;
@@ -93,6 +162,10 @@ export declare class TerminalManager {
93
162
  private resolveAgentTranscript;
94
163
  private disposeRecord;
95
164
  private createTitle;
165
+ private cancelQueuedTranscriptRefresh;
96
166
  private timestamp;
167
+ private reportDiagnostic;
168
+ private canEnqueueControl;
169
+ private enqueueControl;
97
170
  }
98
171
  export {};