nterminal 1.2.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 (197) hide show
  1. package/.env.example +12 -0
  2. package/LICENSE +674 -0
  3. package/README.md +181 -0
  4. package/assets/brand/app-icon-1024.png +0 -0
  5. package/assets/brand/app-icon-384.png +0 -0
  6. package/assets/brand/apple-touch-icon-360.png +0 -0
  7. package/assets/brand/favicon-32.png +0 -0
  8. package/assets/brand/favicon-64.png +0 -0
  9. package/assets/brand/favicon-96.png +0 -0
  10. package/assets/brand/favicon.svg +4 -0
  11. package/assets/brand/nterminal-mark-64.png +0 -0
  12. package/assets/brand/nterminal-mark.svg +4 -0
  13. package/assets/brand/nterminal-wordmark-486x68.png +0 -0
  14. package/assets/brand/nterminal-wordmark.svg +3 -0
  15. package/assets/screenshot/scr.png +0 -0
  16. package/bin/nterminal.js +114 -0
  17. package/dist/client/apple-touch-icon.png +0 -0
  18. package/dist/client/assets/MarkdownPreview-BeDi-V7k.js +29 -0
  19. package/dist/client/assets/MesloLGS-NF-Bold-Italic-DwFsXcwX.ttf +0 -0
  20. package/dist/client/assets/MesloLGS-NF-Bold-kN-HYz-g.ttf +0 -0
  21. package/dist/client/assets/MesloLGS-NF-Italic-CMg1T6-G.ttf +0 -0
  22. package/dist/client/assets/MesloLGS-NF-Regular-Cxr8pvCI.ttf +0 -0
  23. package/dist/client/assets/index-BQkKYjXb.js +33 -0
  24. package/dist/client/assets/index-WqeS39wU.css +1 -0
  25. package/dist/client/assets/notifications/character-2258.mp4 +0 -0
  26. package/dist/client/assets/notifications/character-2260.mp4 +0 -0
  27. package/dist/client/assets/notifications/character-2272.mp4 +0 -0
  28. package/dist/client/brand/nterminal-mark-64.png +0 -0
  29. package/dist/client/brand/nterminal-mark.svg +4 -0
  30. package/dist/client/brand/nterminal-wordmark-486x68.png +0 -0
  31. package/dist/client/brand/nterminal-wordmark.svg +3 -0
  32. package/dist/client/icons/app-icon-1024.png +0 -0
  33. package/dist/client/icons/app-icon-384.png +0 -0
  34. package/dist/client/icons/favicon-32.png +0 -0
  35. package/dist/client/icons/favicon-64.png +0 -0
  36. package/dist/client/icons/favicon-96.png +0 -0
  37. package/dist/client/icons/favicon.svg +4 -0
  38. package/dist/client/index.html +21 -0
  39. package/dist/client/manifest.webmanifest +24 -0
  40. package/dist/scripts/generate-secrets.js +3 -0
  41. package/dist/scripts/generate-secrets.js.map +1 -0
  42. package/dist/scripts/onboarding.js +814 -0
  43. package/dist/scripts/onboarding.js.map +1 -0
  44. package/dist/scripts/proxySetup.js +1007 -0
  45. package/dist/scripts/proxySetup.js.map +1 -0
  46. package/dist/server/agent/agentAuth.d.ts +6 -0
  47. package/dist/server/agent/agentAuth.js +35 -0
  48. package/dist/server/agent/agentAuth.js.map +1 -0
  49. package/dist/server/agent/agentProxy.d.ts +5 -0
  50. package/dist/server/agent/agentProxy.js +63 -0
  51. package/dist/server/agent/agentProxy.js.map +1 -0
  52. package/dist/server/agent/agentRoutes.d.ts +9 -0
  53. package/dist/server/agent/agentRoutes.js +327 -0
  54. package/dist/server/agent/agentRoutes.js.map +1 -0
  55. package/dist/server/agent/agentWebSocketProxy.d.ts +3 -0
  56. package/dist/server/agent/agentWebSocketProxy.js +65 -0
  57. package/dist/server/agent/agentWebSocketProxy.js.map +1 -0
  58. package/dist/server/auth/authService.d.ts +100 -0
  59. package/dist/server/auth/authService.js +415 -0
  60. package/dist/server/auth/authService.js.map +1 -0
  61. package/dist/server/auth/cookies.d.ts +11 -0
  62. package/dist/server/auth/cookies.js +39 -0
  63. package/dist/server/auth/cookies.js.map +1 -0
  64. package/dist/server/auth/ipMatch.d.ts +14 -0
  65. package/dist/server/auth/ipMatch.js +103 -0
  66. package/dist/server/auth/ipMatch.js.map +1 -0
  67. package/dist/server/auth/rateLimit.d.ts +17 -0
  68. package/dist/server/auth/rateLimit.js +25 -0
  69. package/dist/server/auth/rateLimit.js.map +1 -0
  70. package/dist/server/auth/totpService.d.ts +10 -0
  71. package/dist/server/auth/totpService.js +37 -0
  72. package/dist/server/auth/totpService.js.map +1 -0
  73. package/dist/server/config.d.ts +27 -0
  74. package/dist/server/config.js +138 -0
  75. package/dist/server/config.js.map +1 -0
  76. package/dist/server/files/fileExplorerService.d.ts +38 -0
  77. package/dist/server/files/fileExplorerService.js +551 -0
  78. package/dist/server/files/fileExplorerService.js.map +1 -0
  79. package/dist/server/files/rootToken.d.ts +51 -0
  80. package/dist/server/files/rootToken.js +139 -0
  81. package/dist/server/files/rootToken.js.map +1 -0
  82. package/dist/server/http.d.ts +13 -0
  83. package/dist/server/http.js +69 -0
  84. package/dist/server/http.js.map +1 -0
  85. package/dist/server/index.d.ts +1 -0
  86. package/dist/server/index.js +45 -0
  87. package/dist/server/index.js.map +1 -0
  88. package/dist/server/routes/agentManagementRoutes.d.ts +9 -0
  89. package/dist/server/routes/agentManagementRoutes.js +304 -0
  90. package/dist/server/routes/agentManagementRoutes.js.map +1 -0
  91. package/dist/server/routes/authRoutes.d.ts +10 -0
  92. package/dist/server/routes/authRoutes.js +95 -0
  93. package/dist/server/routes/authRoutes.js.map +1 -0
  94. package/dist/server/routes/fileRoutes.d.ts +11 -0
  95. package/dist/server/routes/fileRoutes.js +185 -0
  96. package/dist/server/routes/fileRoutes.js.map +1 -0
  97. package/dist/server/routes/notificationAssetRoutes.d.ts +9 -0
  98. package/dist/server/routes/notificationAssetRoutes.js +280 -0
  99. package/dist/server/routes/notificationAssetRoutes.js.map +1 -0
  100. package/dist/server/routes/securityRoutes.d.ts +7 -0
  101. package/dist/server/routes/securityRoutes.js +53 -0
  102. package/dist/server/routes/securityRoutes.js.map +1 -0
  103. package/dist/server/routes/socketBackpressure.d.ts +26 -0
  104. package/dist/server/routes/socketBackpressure.js +63 -0
  105. package/dist/server/routes/socketBackpressure.js.map +1 -0
  106. package/dist/server/routes/terminalLayoutRoutes.d.ts +9 -0
  107. package/dist/server/routes/terminalLayoutRoutes.js +108 -0
  108. package/dist/server/routes/terminalLayoutRoutes.js.map +1 -0
  109. package/dist/server/routes/terminalRoutes.d.ts +14 -0
  110. package/dist/server/routes/terminalRoutes.js +177 -0
  111. package/dist/server/routes/terminalRoutes.js.map +1 -0
  112. package/dist/server/routes/terminalWebSocket.d.ts +9 -0
  113. package/dist/server/routes/terminalWebSocket.js +129 -0
  114. package/dist/server/routes/terminalWebSocket.js.map +1 -0
  115. package/dist/server/routes/totpRoutes.d.ts +7 -0
  116. package/dist/server/routes/totpRoutes.js +46 -0
  117. package/dist/server/routes/totpRoutes.js.map +1 -0
  118. package/dist/server/routes/updateRoutes.d.ts +7 -0
  119. package/dist/server/routes/updateRoutes.js +24 -0
  120. package/dist/server/routes/updateRoutes.js.map +1 -0
  121. package/dist/server/routes/uploadRoutes.d.ts +9 -0
  122. package/dist/server/routes/uploadRoutes.js +95 -0
  123. package/dist/server/routes/uploadRoutes.js.map +1 -0
  124. package/dist/server/storage/fileStore.d.ts +90 -0
  125. package/dist/server/storage/fileStore.js +275 -0
  126. package/dist/server/storage/fileStore.js.map +1 -0
  127. package/dist/server/system/stats.d.ts +2 -0
  128. package/dist/server/system/stats.js +37 -0
  129. package/dist/server/system/stats.js.map +1 -0
  130. package/dist/server/terminal/NodePtyAdapter.d.ts +4 -0
  131. package/dist/server/terminal/NodePtyAdapter.js +14 -0
  132. package/dist/server/terminal/NodePtyAdapter.js.map +1 -0
  133. package/dist/server/terminal/PtyAdapter.d.ts +57 -0
  134. package/dist/server/terminal/PtyAdapter.js +2 -0
  135. package/dist/server/terminal/PtyAdapter.js.map +1 -0
  136. package/dist/server/terminal/TerminalManager.d.ts +74 -0
  137. package/dist/server/terminal/TerminalManager.js +561 -0
  138. package/dist/server/terminal/TerminalManager.js.map +1 -0
  139. package/dist/server/terminal/TmuxPtyAdapter.d.ts +25 -0
  140. package/dist/server/terminal/TmuxPtyAdapter.js +543 -0
  141. package/dist/server/terminal/TmuxPtyAdapter.js.map +1 -0
  142. package/dist/server/terminal/codexTranscriptSource.d.ts +9 -0
  143. package/dist/server/terminal/codexTranscriptSource.js +144 -0
  144. package/dist/server/terminal/codexTranscriptSource.js.map +1 -0
  145. package/dist/server/terminal/cwdResolver.d.ts +8 -0
  146. package/dist/server/terminal/cwdResolver.js +37 -0
  147. package/dist/server/terminal/cwdResolver.js.map +1 -0
  148. package/dist/server/terminal/outputBuffer.d.ts +7 -0
  149. package/dist/server/terminal/outputBuffer.js +17 -0
  150. package/dist/server/terminal/outputBuffer.js.map +1 -0
  151. package/dist/server/terminal/transcriptHistory.d.ts +7 -0
  152. package/dist/server/terminal/transcriptHistory.js +315 -0
  153. package/dist/server/terminal/transcriptHistory.js.map +1 -0
  154. package/dist/server/update/gitUpdate.d.ts +27 -0
  155. package/dist/server/update/gitUpdate.js +241 -0
  156. package/dist/server/update/gitUpdate.js.map +1 -0
  157. package/dist/server/uploads/uploadPaths.d.ts +18 -0
  158. package/dist/server/uploads/uploadPaths.js +116 -0
  159. package/dist/server/uploads/uploadPaths.js.map +1 -0
  160. package/dist/server/uploads/uploadService.d.ts +21 -0
  161. package/dist/server/uploads/uploadService.js +230 -0
  162. package/dist/server/uploads/uploadService.js.map +1 -0
  163. package/dist/shared/layoutState.d.ts +6 -0
  164. package/dist/shared/layoutState.js +115 -0
  165. package/dist/shared/layoutState.js.map +1 -0
  166. package/dist/shared/notificationAssets.d.ts +9 -0
  167. package/dist/shared/notificationAssets.js +27 -0
  168. package/dist/shared/notificationAssets.js.map +1 -0
  169. package/dist/shared/protocol.d.ts +308 -0
  170. package/dist/shared/protocol.js +29 -0
  171. package/dist/shared/protocol.js.map +1 -0
  172. package/dist/shared/types.d.ts +56 -0
  173. package/dist/shared/types.js +2 -0
  174. package/dist/shared/types.js.map +1 -0
  175. package/docs/assets/nterminal-workspace.png +0 -0
  176. package/docs/configuration.md +97 -0
  177. package/docs/features.md +126 -0
  178. package/docs/onboarding.md +122 -0
  179. package/docs/operations.md +112 -0
  180. package/docs/terminal-history.md +54 -0
  181. package/package.json +85 -0
  182. package/public/apple-touch-icon.png +0 -0
  183. package/public/assets/notifications/character-2258.mp4 +0 -0
  184. package/public/assets/notifications/character-2260.mp4 +0 -0
  185. package/public/assets/notifications/character-2272.mp4 +0 -0
  186. package/public/brand/nterminal-mark-64.png +0 -0
  187. package/public/brand/nterminal-mark.svg +4 -0
  188. package/public/brand/nterminal-wordmark-486x68.png +0 -0
  189. package/public/brand/nterminal-wordmark.svg +3 -0
  190. package/public/icons/app-icon-1024.png +0 -0
  191. package/public/icons/app-icon-384.png +0 -0
  192. package/public/icons/favicon-32.png +0 -0
  193. package/public/icons/favicon-64.png +0 -0
  194. package/public/icons/favicon-96.png +0 -0
  195. package/public/icons/favicon.svg +4 -0
  196. package/public/manifest.webmanifest +24 -0
  197. package/scripts/nterminalctl +588 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxySetup.js","sourceRoot":"","sources":["../../scripts/proxySetup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { FastifyRequest, FastifyReply } from 'fastify';
2
+ import type { AppConfig } from '../config.js';
3
+ export declare function requireAgentToken(config: AppConfig): (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
4
+ export declare function extractBearerHeader(request: FastifyRequest): string | null;
5
+ export declare function verifyAgentToken(config: AppConfig, token: string | null): boolean;
6
+ export declare function extractBearerToken(request: FastifyRequest): string | null;
@@ -0,0 +1,35 @@
1
+ import crypto from 'node:crypto';
2
+ export function requireAgentToken(config) {
3
+ return async (request, reply) => {
4
+ // Header-only for HTTP routes so the token never travels in a URL (logs/history).
5
+ // The query-param fallback exists solely for the WebSocket route, which checks inline.
6
+ const token = extractBearerHeader(request);
7
+ if (!verifyAgentToken(config, token)) {
8
+ await reply.code(401).send({ error: 'unauthorized' });
9
+ }
10
+ };
11
+ }
12
+ export function extractBearerHeader(request) {
13
+ const auth = request.headers.authorization;
14
+ return auth?.startsWith('Bearer ') ? auth.slice(7) : null;
15
+ }
16
+ export function verifyAgentToken(config, token) {
17
+ if (!token || !config.agentToken) {
18
+ return false;
19
+ }
20
+ const provided = Buffer.from(token);
21
+ const expected = Buffer.from(config.agentToken);
22
+ return provided.length === expected.length && crypto.timingSafeEqual(provided, expected);
23
+ }
24
+ export function extractBearerToken(request) {
25
+ const auth = request.headers.authorization;
26
+ if (auth?.startsWith('Bearer ')) {
27
+ return auth.slice(7);
28
+ }
29
+ const query = request.query;
30
+ if (typeof query.token === 'string') {
31
+ return query.token;
32
+ }
33
+ return null;
34
+ }
35
+ //# sourceMappingURL=agentAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentAuth.js","sourceRoot":"","sources":["../../../src/server/agent/agentAuth.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAIjC,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,OAAO,KAAK,EAAE,OAAuB,EAAE,KAAmB,EAAiB,EAAE;QAC3E,kFAAkF;QAClF,uFAAuF;QACvF,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAuB;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IAC3C,OAAO,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,KAAoB;IACtE,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;IAC3C,IAAI,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAgC,CAAC;IACvD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { FastifyReply, FastifyRequest } from 'fastify';
2
+ import type { StoredAgent } from '../storage/fileStore.js';
3
+ export declare function proxyAgentRequest(agent: StoredAgent, agentPath: string, request: FastifyRequest, reply: FastifyReply, options?: {
4
+ unavailableFallback?: unknown;
5
+ }): Promise<FastifyReply>;
@@ -0,0 +1,63 @@
1
+ export async function proxyAgentRequest(agent, agentPath, request, reply, options = {}) {
2
+ const targetUrl = `${agent.url}/api/agent${agentPath}`;
3
+ const headers = {
4
+ Authorization: `Bearer ${agent.token}`
5
+ };
6
+ const contentType = request.headers['content-type'];
7
+ if (contentType) {
8
+ headers['Content-Type'] = contentType;
9
+ }
10
+ let body = null;
11
+ if (request.method !== 'GET' && request.method !== 'DELETE' && request.body !== undefined) {
12
+ body = JSON.stringify(request.body);
13
+ headers['Content-Type'] = 'application/json';
14
+ }
15
+ let response;
16
+ try {
17
+ response = await fetch(targetUrl, {
18
+ method: request.method,
19
+ headers,
20
+ body,
21
+ redirect: 'manual',
22
+ signal: AbortSignal.timeout(30_000)
23
+ });
24
+ }
25
+ catch {
26
+ return reply.code(502).send({ error: 'agent_unreachable' });
27
+ }
28
+ const responseContentType = response.headers.get('content-type') ?? '';
29
+ if (responseContentType.includes('application/octet-stream') || responseContentType.includes('image/') || responseContentType.includes('application/pdf')) {
30
+ const buffer = await response.arrayBuffer();
31
+ const lengthHeader = response.headers.get('content-length');
32
+ if (lengthHeader)
33
+ reply.header('Content-Length', lengthHeader);
34
+ return reply.code(response.status).type(responseContentType).send(Buffer.from(buffer));
35
+ }
36
+ if (response.status === 204 || response.headers.get('content-length') === '0') {
37
+ return reply.code(response.status).send();
38
+ }
39
+ if (!responseContentType.includes('application/json')) {
40
+ return reply.code(502).send({ error: 'agent_unexpected_response' });
41
+ }
42
+ let json;
43
+ try {
44
+ json = await response.json();
45
+ }
46
+ catch {
47
+ return reply.code(502).send({ error: 'agent_invalid_json' });
48
+ }
49
+ if (response.status === 404 &&
50
+ options.unavailableFallback !== undefined &&
51
+ hasUnavailableTranscriptError(json)) {
52
+ return reply.code(200).send(options.unavailableFallback);
53
+ }
54
+ return reply.code(response.status).send(json);
55
+ }
56
+ function hasUnavailableTranscriptError(value) {
57
+ if (!value || typeof value !== 'object' || !('error' in value)) {
58
+ return false;
59
+ }
60
+ const error = value.error;
61
+ return error === 'terminal_transcript_source_unavailable' || error === 'terminal_transcript_history_unavailable';
62
+ }
63
+ //# sourceMappingURL=agentProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentProxy.js","sourceRoot":"","sources":["../../../src/server/agent/agentProxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { FastifyInstance } from 'fastify';
2
+ import type { AppConfig } from '../config.js';
3
+ import type { TerminalManager } from '../terminal/TerminalManager.js';
4
+ import type { FileExplorerService } from '../files/fileExplorerService.js';
5
+ export interface AgentRouteServices {
6
+ terminalManager: TerminalManager;
7
+ fileExplorerService?: FileExplorerService;
8
+ }
9
+ export declare function registerAgentRoutes(app: FastifyInstance, config: AppConfig, services: AgentRouteServices): Promise<void>;
@@ -0,0 +1,327 @@
1
+ import WebSocket from 'ws';
2
+ import { requireAgentToken, extractBearerToken, verifyAgentToken } from './agentAuth.js';
3
+ import { signFileRootToken, verifyFileRootToken, FileRootTokenError } from '../files/rootToken.js';
4
+ import { FileExplorerError } from '../files/fileExplorerService.js';
5
+ import { parseClientTerminalMessage } from '../../shared/protocol.js';
6
+ import { checkBehind, getVersionInfo, runUpdate } from '../update/gitUpdate.js';
7
+ import { collectSystemStats } from '../system/stats.js';
8
+ export async function registerAgentRoutes(app, config, services) {
9
+ const fileExplorerService = services.fileExplorerService ?? new (await import('../files/fileExplorerService.js')).FileExplorerService(config);
10
+ const authMiddleware = requireAgentToken(config);
11
+ // --- Terminal routes ---
12
+ app.get('/api/agent/terminals', { preHandler: authMiddleware }, async () => ({
13
+ terminals: services.terminalManager.listTerminals()
14
+ }));
15
+ app.get('/api/agent/terminals/:id/history', { preHandler: authMiddleware }, async (request, reply) => {
16
+ const beforeLine = parseOptionalInt(request.query.beforeLine, 'beforeLine', reply);
17
+ if (beforeLine === null)
18
+ return reply;
19
+ const limit = parseOptionalInt(request.query.limit, 'limit', reply);
20
+ if (limit === null)
21
+ return reply;
22
+ const history = services.terminalManager.getTerminalHistory(request.params.id, {
23
+ ...(beforeLine !== undefined ? { beforeLine } : {}),
24
+ ...(limit !== undefined ? { limit } : {})
25
+ });
26
+ if (!history) {
27
+ return reply.code(404).send({ error: 'terminal_history_unavailable' });
28
+ }
29
+ return history;
30
+ });
31
+ app.get('/api/agent/terminals/:id/transcript-history', { preHandler: authMiddleware }, async (request, reply) => {
32
+ const limit = parseOptionalInt(request.query.limit, 'limit', reply);
33
+ if (limit === null)
34
+ return reply;
35
+ const history = services.terminalManager.getTerminalTranscriptHistory(request.params.id, {
36
+ ...(typeof request.query.cursor === 'string' && request.query.cursor ? { cursor: request.query.cursor } : {}),
37
+ ...(limit !== undefined ? { limit } : {})
38
+ });
39
+ if (!history) {
40
+ if (!services.terminalManager.getTerminal(request.params.id)) {
41
+ return reply.code(404).send({ error: 'terminal_not_found' });
42
+ }
43
+ return {
44
+ terminalId: request.params.id,
45
+ source: null,
46
+ cursor: null,
47
+ hasMore: false,
48
+ output: []
49
+ };
50
+ }
51
+ return history;
52
+ });
53
+ app.get('/api/agent/terminals/:id/transcript-source', { preHandler: authMiddleware }, async (request, reply) => {
54
+ const source = services.terminalManager.getTerminalTranscriptSource(request.params.id);
55
+ if (!source) {
56
+ if (!services.terminalManager.getTerminal(request.params.id)) {
57
+ return reply.code(404).send({ error: 'terminal_not_found' });
58
+ }
59
+ return { terminalId: request.params.id, source: null };
60
+ }
61
+ return source;
62
+ });
63
+ // --- System stats ---
64
+ app.get('/api/agent/stats', { preHandler: authMiddleware }, async () => collectSystemStats());
65
+ // --- Self-update ---
66
+ app.get('/api/agent/version', { preHandler: authMiddleware }, async () => getVersionInfo());
67
+ app.post('/api/agent/update/check', { preHandler: authMiddleware }, async () => checkBehind());
68
+ app.post('/api/agent/update', { preHandler: authMiddleware }, async () => runUpdate());
69
+ app.post('/api/agent/terminals', { preHandler: authMiddleware }, async (request, reply) => {
70
+ const body = (request.body ?? {});
71
+ const terminal = await services.terminalManager.createTerminal({
72
+ ...(body.parentTerminalId !== undefined ? { parentTerminalId: body.parentTerminalId } : {}),
73
+ ...(body.cols !== undefined ? { cols: body.cols } : {}),
74
+ ...(body.rows !== undefined ? { rows: body.rows } : {})
75
+ });
76
+ return reply.code(201).send({ terminal });
77
+ });
78
+ app.delete('/api/agent/terminals/:id', { preHandler: authMiddleware }, async (request, reply) => {
79
+ if (!services.terminalManager.closeTerminal(request.params.id)) {
80
+ return reply.code(404).send({ error: 'terminal_not_found' });
81
+ }
82
+ return reply.code(204).send();
83
+ });
84
+ app.patch('/api/agent/terminals/:id', { preHandler: authMiddleware }, async (request, reply) => {
85
+ const titleField = (request.body ?? {}).title;
86
+ if (typeof titleField !== 'string' || !titleField.trim()) {
87
+ return reply.code(400).send({ error: 'title_required' });
88
+ }
89
+ const summary = services.terminalManager.renameTerminal(request.params.id, titleField);
90
+ if (!summary) {
91
+ return reply.code(404).send({ error: 'terminal_not_found' });
92
+ }
93
+ return { terminal: summary };
94
+ });
95
+ // --- Terminal WebSocket ---
96
+ app.get('/api/agent/terminals/:id/ws', { websocket: true }, async (socket, request) => {
97
+ if (!verifyAgentToken(config, extractBearerToken(request))) {
98
+ socket.close(1008, 'unauthorized');
99
+ return;
100
+ }
101
+ const terminalId = request.params.id;
102
+ let snapshotSent = false;
103
+ const pendingMessages = [];
104
+ const attachment = services.terminalManager.attachTerminal(terminalId, (message) => {
105
+ if (!snapshotSent) {
106
+ pendingMessages.push(message);
107
+ return;
108
+ }
109
+ sendJson(socket, message);
110
+ }, { replay: false });
111
+ if (!attachment) {
112
+ socket.close(1008, 'terminal not found');
113
+ return;
114
+ }
115
+ sendJson(socket, { type: 'snapshot', terminal: attachment.terminal, output: attachment.output, history: attachment.history });
116
+ snapshotSent = true;
117
+ for (const msg of pendingMessages)
118
+ sendJson(socket, msg);
119
+ pendingMessages.length = 0;
120
+ let isAlive = true;
121
+ const heartbeat = setInterval(() => {
122
+ if (socket.readyState !== WebSocket.OPEN)
123
+ return;
124
+ if (!isAlive) {
125
+ socket.terminate();
126
+ return;
127
+ }
128
+ isAlive = false;
129
+ socket.ping();
130
+ }, 30_000);
131
+ socket.on('pong', () => { isAlive = true; });
132
+ socket.on('message', (raw) => {
133
+ const message = parseClientTerminalMessage(raw.toString());
134
+ if (!message) {
135
+ sendJson(socket, { type: 'error', message: 'invalid terminal message' });
136
+ return;
137
+ }
138
+ if (message.type === 'ping') {
139
+ sendJson(socket, { type: 'pong', nonce: message.nonce });
140
+ return;
141
+ }
142
+ if (message.terminalId !== terminalId) {
143
+ sendJson(socket, { type: 'error', message: 'terminal id mismatch' });
144
+ return;
145
+ }
146
+ if (message.type === 'refresh_cwd') {
147
+ void services.terminalManager.refreshTerminalCwd(message.terminalId);
148
+ return;
149
+ }
150
+ if (message.type === 'input') {
151
+ if (!services.terminalManager.writeToTerminal(message.terminalId, message.data)) {
152
+ sendJson(socket, { type: 'error', message: 'terminal is not writable' });
153
+ }
154
+ return;
155
+ }
156
+ if (!services.terminalManager.resizeTerminal(message.terminalId, message.cols, message.rows)) {
157
+ sendJson(socket, { type: 'error', message: 'terminal is not resizable' });
158
+ }
159
+ });
160
+ socket.on('close', () => { clearInterval(heartbeat); attachment.dispose(); });
161
+ });
162
+ // --- File routes ---
163
+ app.post('/api/agent/files/root', { preHandler: authMiddleware }, async (request, reply) => {
164
+ const terminalId = request.body?.terminalId;
165
+ if (typeof terminalId !== 'string' || !terminalId.trim()) {
166
+ return reply.code(400).send({ error: 'invalid_file_root_request' });
167
+ }
168
+ if (!services.terminalManager.getTerminal(terminalId)) {
169
+ return reply.code(404).send({ error: 'terminal_not_found' });
170
+ }
171
+ const liveCwd = await services.terminalManager.resolveTerminalCwd(terminalId);
172
+ if (!liveCwd) {
173
+ return reply.code(409).send({ error: 'terminal_cwd_unavailable' });
174
+ }
175
+ try {
176
+ const rootPath = await fileExplorerService.resolveRootPath(liveCwd);
177
+ const signed = signFileRootToken(config, { terminalId, rootPath });
178
+ return { rootToken: signed.rootToken, terminalId, rootPath, issuedAt: signed.issuedAt };
179
+ }
180
+ catch (error) {
181
+ if (error instanceof FileExplorerError && error.code === 'root_unavailable') {
182
+ return reply.code(409).send({ error: 'terminal_cwd_unavailable' });
183
+ }
184
+ throw error;
185
+ }
186
+ });
187
+ app.post('/api/agent/files/list', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => fileExplorerService.list(root.rootPath, body.path)));
188
+ app.post('/api/agent/files/read', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => fileExplorerService.readText(root.rootPath, body.path)));
189
+ app.post('/api/agent/files/write', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => {
190
+ const b = body;
191
+ if (typeof b.content !== 'string' || !isFileVersion(b.expectedVersion)) {
192
+ return reply.code(400).send({ error: 'invalid_file_write_request' });
193
+ }
194
+ return fileExplorerService.writeText(root.rootPath, b.path, b.content, b.expectedVersion);
195
+ }));
196
+ app.post('/api/agent/files/create', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => {
197
+ const b = body;
198
+ if (b.kind !== 'file' && b.kind !== 'directory') {
199
+ return reply.code(400).send({ error: 'invalid_file_create_request' });
200
+ }
201
+ return { entry: await fileExplorerService.createEntry(root.rootPath, b.path, b.kind) };
202
+ }));
203
+ app.post('/api/agent/files/move', { preHandler: authMiddleware }, async (request, reply) => {
204
+ const body = request.body;
205
+ const root = await verifyAgentFileRoot(config, body, reply, services.terminalManager, fileExplorerService);
206
+ if (!root)
207
+ return reply;
208
+ if (typeof body.sourcePath !== 'string' || typeof body.destinationPath !== 'string') {
209
+ return reply.code(400).send({ error: 'invalid_file_move_request' });
210
+ }
211
+ return handleFileError(reply, async () => ({
212
+ entry: await fileExplorerService.moveEntry(root.rootPath, body.sourcePath, body.destinationPath)
213
+ }));
214
+ });
215
+ app.post('/api/agent/files/delete-preview', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => fileExplorerService.previewDelete(root.rootPath, body.path, body.rootToken)));
216
+ app.post('/api/agent/files/delete', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => {
217
+ const b = body;
218
+ if (typeof b.previewToken !== 'string') {
219
+ return reply.code(400).send({ error: 'invalid_file_delete_request' });
220
+ }
221
+ return fileExplorerService.deleteEntry(root.rootPath, b.path, b.previewToken, b.rootToken);
222
+ }));
223
+ app.post('/api/agent/files/open', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => {
224
+ const b = body;
225
+ const target = await fileExplorerService.resolveFileForTerminalOpen(root.rootPath, b.path);
226
+ const terminalId = b.terminalId === undefined ? root.terminalId : (typeof b.terminalId === 'string' && b.terminalId.trim() ? b.terminalId : (() => { throw new FileExplorerError(400, 'invalid_terminal_id'); })());
227
+ const opened = services.terminalManager.writeToTerminal(terminalId, terminalOpenCommand(target.absolutePath));
228
+ if (!opened)
229
+ return reply.code(404).send({ error: 'terminal_not_found' });
230
+ return { opened: true };
231
+ }));
232
+ app.post('/api/agent/files/preview', { preHandler: authMiddleware }, async (request, reply) => withAgentFileRoot(config, request, reply, services.terminalManager, fileExplorerService, async (root, body) => {
233
+ const preview = await fileExplorerService.previewFile(root.rootPath, body.path);
234
+ return reply.type(preview.contentType).header('Content-Length', preview.size).send(preview.stream);
235
+ }));
236
+ }
237
+ async function withAgentFileRoot(config, request, reply, terminalManager, fileExplorerService, handler) {
238
+ const body = request.body;
239
+ if (typeof body?.path !== 'string') {
240
+ return reply.code(400).send({ error: 'invalid_file_path' });
241
+ }
242
+ const root = await verifyAgentFileRoot(config, body, reply, terminalManager, fileExplorerService);
243
+ if (!root)
244
+ return reply;
245
+ return handleFileError(reply, () => handler(root, body));
246
+ }
247
+ async function verifyAgentFileRoot(config, body, reply, terminalManager, fileExplorerService) {
248
+ if (typeof body?.rootToken !== 'string') {
249
+ reply.code(401).send({ error: 'invalid_root_token' });
250
+ return null;
251
+ }
252
+ try {
253
+ const root = verifyFileRootToken(config, body.rootToken);
254
+ const terminal = terminalManager.getTerminal(root.terminalId);
255
+ if (!terminal) {
256
+ reply.code(404).send({ error: 'terminal_not_found' });
257
+ return null;
258
+ }
259
+ if (terminal.status !== 'running') {
260
+ reply.code(409).send({ error: 'terminal_cwd_unavailable' });
261
+ return null;
262
+ }
263
+ const liveCwd = await terminalManager.resolveTerminalCwd(root.terminalId);
264
+ if (!liveCwd) {
265
+ reply.code(409).send({ error: 'terminal_cwd_unavailable' });
266
+ return null;
267
+ }
268
+ const liveRootPath = await fileExplorerService.resolveRootPath(liveCwd);
269
+ if (liveRootPath !== root.rootPath) {
270
+ reply.code(409).send({ error: 'terminal_cwd_changed' });
271
+ return null;
272
+ }
273
+ return root;
274
+ }
275
+ catch (error) {
276
+ if (error instanceof FileRootTokenError) {
277
+ reply.code(401).send({ error: error.code });
278
+ return null;
279
+ }
280
+ if (error instanceof FileExplorerError && error.code === 'root_unavailable') {
281
+ reply.code(409).send({ error: 'terminal_cwd_unavailable' });
282
+ return null;
283
+ }
284
+ throw error;
285
+ }
286
+ }
287
+ async function handleFileError(reply, handler) {
288
+ try {
289
+ return await handler();
290
+ }
291
+ catch (error) {
292
+ if (error instanceof FileExplorerError) {
293
+ return reply.code(error.statusCode).send({ error: error.code });
294
+ }
295
+ throw error;
296
+ }
297
+ }
298
+ function sendJson(socket, payload) {
299
+ if (socket.readyState !== WebSocket.CLOSING && socket.readyState !== WebSocket.CLOSED) {
300
+ socket.send(JSON.stringify(payload));
301
+ }
302
+ }
303
+ function isFileVersion(value) {
304
+ if (!value || typeof value !== 'object')
305
+ return false;
306
+ const v = value;
307
+ return typeof v.size === 'number' && typeof v.mtimeMs === 'number';
308
+ }
309
+ function parseOptionalInt(value, name, reply) {
310
+ if (value === undefined || value === '') {
311
+ return undefined;
312
+ }
313
+ const parsed = Number(value);
314
+ if (!Number.isInteger(parsed)) {
315
+ reply.code(400).send({ error: `invalid_${name}` });
316
+ return null;
317
+ }
318
+ return parsed;
319
+ }
320
+ function terminalOpenCommand(absolutePath) {
321
+ const q = shellQuote(absolutePath);
322
+ return `nano -- ${q} || micro -- ${q} || nvim -- ${q} || vim -- ${q} || vi -- ${q}\r`;
323
+ }
324
+ function shellQuote(value) {
325
+ return `'${value.replace(/'/g, "'\\''")}'`;
326
+ }
327
+ //# sourceMappingURL=agentRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentRoutes.js","sourceRoot":"","sources":["../../../src/server/agent/agentRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import WebSocket from 'ws';
2
+ import type { StoredAgent } from '../storage/fileStore.js';
3
+ export declare function proxyAgentWebSocket(browserSocket: WebSocket, agent: StoredAgent, terminalId: string): void;