nterminal 1.2.73 → 1.2.75

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 (44) hide show
  1. package/assets/brand/vscode.png +0 -0
  2. package/dist/client/assets/MarkdownPreview-CStdB1d5.js +1 -0
  3. package/dist/client/assets/{TranscriptMarkdownBody-DVi2ZXX_.js → TranscriptMarkdownBody-B-RKybd7.js} +1 -1
  4. package/dist/client/assets/{index--B5U92vq.js → index-CH_JmAuw.js} +1 -1
  5. package/dist/client/assets/index-DwmyYdjx.css +1 -0
  6. package/dist/client/assets/index-idJa2lVq.js +57 -0
  7. package/dist/client/brand/vscode.png +0 -0
  8. package/dist/client/index.html +2 -2
  9. package/dist/server/agent/agentProxy.d.ts +1 -0
  10. package/dist/server/agent/agentProxy.js +3 -2
  11. package/dist/server/agent/agentProxy.js.map +1 -1
  12. package/dist/server/agent/agentWebSocketProxy.js +6 -58
  13. package/dist/server/agent/agentWebSocketProxy.js.map +1 -1
  14. package/dist/server/code/codeServerManager.d.ts +83 -0
  15. package/dist/server/code/codeServerManager.js +782 -0
  16. package/dist/server/code/codeServerManager.js.map +1 -0
  17. package/dist/server/http.d.ts +2 -0
  18. package/dist/server/http.js +12 -0
  19. package/dist/server/http.js.map +1 -1
  20. package/dist/server/index.js +4 -0
  21. package/dist/server/index.js.map +1 -1
  22. package/dist/server/routes/agentManagementRoutes.js +412 -0
  23. package/dist/server/routes/agentManagementRoutes.js.map +1 -1
  24. package/dist/server/routes/codeServerRoutes.d.ts +13 -0
  25. package/dist/server/routes/codeServerRoutes.js +552 -0
  26. package/dist/server/routes/codeServerRoutes.js.map +1 -0
  27. package/dist/server/routes/webSocketRelay.d.ts +12 -0
  28. package/dist/server/routes/webSocketRelay.js +174 -0
  29. package/dist/server/routes/webSocketRelay.js.map +1 -0
  30. package/dist/server/terminal/TmuxPtyAdapter.d.ts +1 -0
  31. package/dist/server/terminal/TmuxPtyAdapter.js +68 -21
  32. package/dist/server/terminal/TmuxPtyAdapter.js.map +1 -1
  33. package/dist/server/terminal/transcriptHistory.js +9 -4
  34. package/dist/server/terminal/transcriptHistory.js.map +1 -1
  35. package/dist/server/update/packageUpdate.d.ts +8 -0
  36. package/dist/server/update/packageUpdate.js +42 -2
  37. package/dist/server/update/packageUpdate.js.map +1 -1
  38. package/dist/shared/protocol.d.ts +49 -0
  39. package/dist/shared/protocol.js.map +1 -1
  40. package/package.json +1 -1
  41. package/public/brand/vscode.png +0 -0
  42. package/dist/client/assets/MarkdownPreview-CXveD-XH.js +0 -1
  43. package/dist/client/assets/index-BW6hHU75.js +0 -55
  44. package/dist/client/assets/index-BsAHXRGw.css +0 -1
Binary file
@@ -12,8 +12,8 @@
12
12
  <link rel="icon" type="image/png" sizes="64x64" href="/icons/favicon-64.png" />
13
13
  <link rel="icon" type="image/png" sizes="96x96" href="/icons/favicon-96.png" />
14
14
  <title>NTerminal</title>
15
- <script type="module" crossorigin src="/assets/index-BW6hHU75.js"></script>
16
- <link rel="stylesheet" crossorigin href="/assets/index-BsAHXRGw.css">
15
+ <script type="module" crossorigin src="/assets/index-idJa2lVq.js"></script>
16
+ <link rel="stylesheet" crossorigin href="/assets/index-DwmyYdjx.css">
17
17
  </head>
18
18
  <body>
19
19
  <div id="root"></div>
@@ -5,4 +5,5 @@ export declare function proxyAgentRequest(agent: StoredAgent, agentPath: string,
5
5
  transformJson?: (json: unknown, status: number) => unknown | Promise<unknown>;
6
6
  mapStatus?: (status: number, json: unknown) => number;
7
7
  timeoutMs?: number;
8
+ bodyOverride?: unknown;
8
9
  }): Promise<FastifyReply>;
@@ -8,8 +8,9 @@ export async function proxyAgentRequest(agent, agentPath, request, reply, option
8
8
  headers['Content-Type'] = contentType;
9
9
  }
10
10
  let body = null;
11
- if (request.method !== 'GET' && request.method !== 'DELETE' && request.body !== undefined) {
12
- body = JSON.stringify(request.body);
11
+ const requestBody = options.bodyOverride !== undefined ? options.bodyOverride : request.body;
12
+ if (request.method !== 'GET' && request.method !== 'DELETE' && requestBody !== undefined) {
13
+ body = JSON.stringify(requestBody);
13
14
  headers['Content-Type'] = 'application/json';
14
15
  }
15
16
  let response;
@@ -1 +1 @@
1
- {"version":3,"file":"agentProxy.js","sourceRoot":"","sources":["../../../src/server/agent/agentProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentProxy.js","sourceRoot":"","sources":["../../../src/server/agent/agentProxy.ts"],"names":[],"mappings":"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"}
@@ -1,65 +1,13 @@
1
1
  import WebSocket from 'ws';
2
+ import { relayWebSocketPair } from '../routes/webSocketRelay.js';
2
3
  export function proxyAgentWebSocket(browserSocket, agent, terminalId) {
3
4
  const agentUrl = `${agent.url.replace(/^http/, 'ws')}/api/agent/terminals/${encodeURIComponent(terminalId)}/ws`;
4
5
  const agentSocket = new WebSocket(agentUrl, { headers: { Authorization: `Bearer ${agent.token}` } });
5
- // Pending entries hold both the raw data and the frame type so the relay
6
- // never silently changes a text frame into a binary one — the browser's
7
- // ws handler ignores non-string data, which manifests as "agent terminal
8
- // pane opens but has no output and no input ever takes effect".
9
- const pendingFromBrowser = [];
10
- agentSocket.on('open', () => {
11
- for (const entry of pendingFromBrowser) {
12
- agentSocket.send(entry.data, { binary: entry.binary });
13
- }
14
- pendingFromBrowser.length = 0;
15
- });
16
- agentSocket.on('message', (data, isBinary) => {
17
- if (browserSocket.readyState === WebSocket.OPEN) {
18
- browserSocket.send(data, { binary: isBinary });
19
- }
20
- });
21
- browserSocket.on('message', (data, isBinary) => {
22
- if (agentSocket.readyState === WebSocket.OPEN) {
23
- agentSocket.send(data, { binary: isBinary });
24
- }
25
- else if (agentSocket.readyState === WebSocket.CONNECTING) {
26
- pendingFromBrowser.push({ data, binary: isBinary });
27
- }
28
- });
29
- agentSocket.on('close', (code, reason) => {
30
- if (browserSocket.readyState === WebSocket.OPEN) {
31
- // Reserved codes 1005/1006/1015 (and anything <1000) cannot be sent
32
- // back over the wire — ws throws synchronously on close() if we try.
33
- // Map them to 1011 (internal error) so an agent that goes away
34
- // mid-update doesn't bring the main process down.
35
- const safeCode = code >= 1000 && code !== 1005 && code !== 1006 && code !== 1015 ? code : 1011;
36
- const safeReason = Buffer.isBuffer(reason) && reason.length <= 123 ? reason : undefined;
37
- try {
38
- browserSocket.close(safeCode, safeReason);
39
- }
40
- catch {
41
- // Last-resort: give up cleanly so a malformed reason can't crash us.
42
- try {
43
- browserSocket.terminate();
44
- }
45
- catch { /* swallow */ }
46
- }
47
- }
48
- });
49
- browserSocket.on('close', () => {
50
- if (agentSocket.readyState === WebSocket.OPEN || agentSocket.readyState === WebSocket.CONNECTING) {
51
- agentSocket.close();
52
- }
53
- });
54
- agentSocket.on('error', () => {
55
- if (browserSocket.readyState === WebSocket.OPEN) {
56
- browserSocket.close(1011, 'agent error');
57
- }
58
- });
59
- browserSocket.on('error', () => {
60
- if (agentSocket.readyState === WebSocket.OPEN || agentSocket.readyState === WebSocket.CONNECTING) {
61
- agentSocket.close();
62
- }
6
+ // The shared relay preserves frame types (a text frame silently turned
7
+ // binary would leave the pane without output), bounds the pre-open queue,
8
+ // and applies backpressure between the browser and the agent.
9
+ relayWebSocketPair(browserSocket, agentSocket, {
10
+ pendingOverflowReason: 'agent connection not ready'
63
11
  });
64
12
  }
65
13
  //# sourceMappingURL=agentWebSocketProxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentWebSocketProxy.js","sourceRoot":"","sources":["../../../src/server/agent/agentWebSocketProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentWebSocketProxy.js","sourceRoot":"","sources":["../../../src/server/agent/agentWebSocketProxy.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CACjC,aAAwB,EACxB,KAAkB,EAClB,UAAkB;IAElB,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC;IAChH,MAAM,WAAW,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACrG,uEAAuE;IACvE,0EAA0E;IAC1E,8DAA8D;IAC9D,kBAAkB,CAAC,aAAa,EAAE,WAAW,EAAE;QAC7C,qBAAqB,EAAE,4BAA4B;KACpD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,83 @@
1
+ import type { CodeServerInstanceSummary, CodeServerJobAction, CodeServerJobSummary, CodeServerStatusResponse } from '../../shared/protocol.js';
2
+ import type { TerminalId } from '../../shared/types.js';
3
+ import type { AppConfig } from '../config.js';
4
+ import type { TerminalManager } from '../terminal/TerminalManager.js';
5
+ export declare class CodeServerError extends Error {
6
+ readonly statusCode: number;
7
+ readonly code: string;
8
+ constructor(statusCode: number, code: string, message?: string);
9
+ }
10
+ interface StartJobOptions {
11
+ action: CodeServerJobAction;
12
+ force?: boolean;
13
+ }
14
+ export declare class CodeServerManager {
15
+ private readonly config;
16
+ private readonly terminalManager;
17
+ private readonly addonRoot;
18
+ private readonly versionsDir;
19
+ private readonly tmpDir;
20
+ private readonly currentPath;
21
+ private readonly extensionsDir;
22
+ private readonly userDataRoot;
23
+ private readonly instances;
24
+ private readonly titleLocks;
25
+ private readonly idleSweepTimer;
26
+ private readonly latestReleaseCache;
27
+ private job;
28
+ constructor(config: AppConfig, terminalManager: TerminalManager);
29
+ status(options?: {
30
+ checkLatest?: boolean;
31
+ }): Promise<CodeServerStatusResponse>;
32
+ startInstall(options?: StartJobOptions): Promise<{
33
+ job: CodeServerJobSummary;
34
+ status: CodeServerStatusResponse;
35
+ }>;
36
+ openForTerminal(terminalId: TerminalId, options?: {
37
+ serverName?: string;
38
+ tabName?: string;
39
+ publicBasePathTemplate?: string;
40
+ }): Promise<{
41
+ url: string;
42
+ instance: CodeServerInstanceSummary;
43
+ status: CodeServerStatusResponse;
44
+ }>;
45
+ getInstance(id: string): CodeServerInstanceSummary | null;
46
+ getTitleForInstance(instanceId: string, titleToken?: string): string | null;
47
+ touchInstance(id: string): void;
48
+ stop(instanceId?: string): Promise<CodeServerStatusResponse>;
49
+ startUninstall(): Promise<{
50
+ job: CodeServerJobSummary;
51
+ status: CodeServerStatusResponse;
52
+ }>;
53
+ dispose(): void;
54
+ private ensureInstance;
55
+ private runInstall;
56
+ private runUninstall;
57
+ private latestVersion;
58
+ private latestReleaseAsset;
59
+ private latestRelease;
60
+ private fetchLatestRelease;
61
+ private installedVersion;
62
+ private executablePath;
63
+ private pointCurrentAt;
64
+ private createJob;
65
+ private appendJobLog;
66
+ private completeJob;
67
+ private failJob;
68
+ private instanceSummaries;
69
+ private instanceSummary;
70
+ private stopIdleInstances;
71
+ private createTitleLock;
72
+ private pruneExpiredTitleLocks;
73
+ private deleteTitleLocksForInstance;
74
+ }
75
+ export declare function instanceUrl(instanceId: string, options?: {
76
+ titleToken?: string;
77
+ }): string;
78
+ export declare function instanceUrlPrefix(instanceId: string): string;
79
+ export declare function instanceUrlForBasePath(basePath: string, options?: {
80
+ titleToken?: string;
81
+ }): string;
82
+ export declare function buildCodeServerProcessEnv(baseEnv?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
83
+ export {};