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.
- package/.env.example +12 -0
- package/LICENSE +674 -0
- package/README.md +181 -0
- package/assets/brand/app-icon-1024.png +0 -0
- package/assets/brand/app-icon-384.png +0 -0
- package/assets/brand/apple-touch-icon-360.png +0 -0
- package/assets/brand/favicon-32.png +0 -0
- package/assets/brand/favicon-64.png +0 -0
- package/assets/brand/favicon-96.png +0 -0
- package/assets/brand/favicon.svg +4 -0
- package/assets/brand/nterminal-mark-64.png +0 -0
- package/assets/brand/nterminal-mark.svg +4 -0
- package/assets/brand/nterminal-wordmark-486x68.png +0 -0
- package/assets/brand/nterminal-wordmark.svg +3 -0
- package/assets/screenshot/scr.png +0 -0
- package/bin/nterminal.js +114 -0
- package/dist/client/apple-touch-icon.png +0 -0
- package/dist/client/assets/MarkdownPreview-BeDi-V7k.js +29 -0
- package/dist/client/assets/MesloLGS-NF-Bold-Italic-DwFsXcwX.ttf +0 -0
- package/dist/client/assets/MesloLGS-NF-Bold-kN-HYz-g.ttf +0 -0
- package/dist/client/assets/MesloLGS-NF-Italic-CMg1T6-G.ttf +0 -0
- package/dist/client/assets/MesloLGS-NF-Regular-Cxr8pvCI.ttf +0 -0
- package/dist/client/assets/index-BQkKYjXb.js +33 -0
- package/dist/client/assets/index-WqeS39wU.css +1 -0
- package/dist/client/assets/notifications/character-2258.mp4 +0 -0
- package/dist/client/assets/notifications/character-2260.mp4 +0 -0
- package/dist/client/assets/notifications/character-2272.mp4 +0 -0
- package/dist/client/brand/nterminal-mark-64.png +0 -0
- package/dist/client/brand/nterminal-mark.svg +4 -0
- package/dist/client/brand/nterminal-wordmark-486x68.png +0 -0
- package/dist/client/brand/nterminal-wordmark.svg +3 -0
- package/dist/client/icons/app-icon-1024.png +0 -0
- package/dist/client/icons/app-icon-384.png +0 -0
- package/dist/client/icons/favicon-32.png +0 -0
- package/dist/client/icons/favicon-64.png +0 -0
- package/dist/client/icons/favicon-96.png +0 -0
- package/dist/client/icons/favicon.svg +4 -0
- package/dist/client/index.html +21 -0
- package/dist/client/manifest.webmanifest +24 -0
- package/dist/scripts/generate-secrets.js +3 -0
- package/dist/scripts/generate-secrets.js.map +1 -0
- package/dist/scripts/onboarding.js +814 -0
- package/dist/scripts/onboarding.js.map +1 -0
- package/dist/scripts/proxySetup.js +1007 -0
- package/dist/scripts/proxySetup.js.map +1 -0
- package/dist/server/agent/agentAuth.d.ts +6 -0
- package/dist/server/agent/agentAuth.js +35 -0
- package/dist/server/agent/agentAuth.js.map +1 -0
- package/dist/server/agent/agentProxy.d.ts +5 -0
- package/dist/server/agent/agentProxy.js +63 -0
- package/dist/server/agent/agentProxy.js.map +1 -0
- package/dist/server/agent/agentRoutes.d.ts +9 -0
- package/dist/server/agent/agentRoutes.js +327 -0
- package/dist/server/agent/agentRoutes.js.map +1 -0
- package/dist/server/agent/agentWebSocketProxy.d.ts +3 -0
- package/dist/server/agent/agentWebSocketProxy.js +65 -0
- package/dist/server/agent/agentWebSocketProxy.js.map +1 -0
- package/dist/server/auth/authService.d.ts +100 -0
- package/dist/server/auth/authService.js +415 -0
- package/dist/server/auth/authService.js.map +1 -0
- package/dist/server/auth/cookies.d.ts +11 -0
- package/dist/server/auth/cookies.js +39 -0
- package/dist/server/auth/cookies.js.map +1 -0
- package/dist/server/auth/ipMatch.d.ts +14 -0
- package/dist/server/auth/ipMatch.js +103 -0
- package/dist/server/auth/ipMatch.js.map +1 -0
- package/dist/server/auth/rateLimit.d.ts +17 -0
- package/dist/server/auth/rateLimit.js +25 -0
- package/dist/server/auth/rateLimit.js.map +1 -0
- package/dist/server/auth/totpService.d.ts +10 -0
- package/dist/server/auth/totpService.js +37 -0
- package/dist/server/auth/totpService.js.map +1 -0
- package/dist/server/config.d.ts +27 -0
- package/dist/server/config.js +138 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/files/fileExplorerService.d.ts +38 -0
- package/dist/server/files/fileExplorerService.js +551 -0
- package/dist/server/files/fileExplorerService.js.map +1 -0
- package/dist/server/files/rootToken.d.ts +51 -0
- package/dist/server/files/rootToken.js +139 -0
- package/dist/server/files/rootToken.js.map +1 -0
- package/dist/server/http.d.ts +13 -0
- package/dist/server/http.js +69 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +45 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/routes/agentManagementRoutes.d.ts +9 -0
- package/dist/server/routes/agentManagementRoutes.js +304 -0
- package/dist/server/routes/agentManagementRoutes.js.map +1 -0
- package/dist/server/routes/authRoutes.d.ts +10 -0
- package/dist/server/routes/authRoutes.js +95 -0
- package/dist/server/routes/authRoutes.js.map +1 -0
- package/dist/server/routes/fileRoutes.d.ts +11 -0
- package/dist/server/routes/fileRoutes.js +185 -0
- package/dist/server/routes/fileRoutes.js.map +1 -0
- package/dist/server/routes/notificationAssetRoutes.d.ts +9 -0
- package/dist/server/routes/notificationAssetRoutes.js +280 -0
- package/dist/server/routes/notificationAssetRoutes.js.map +1 -0
- package/dist/server/routes/securityRoutes.d.ts +7 -0
- package/dist/server/routes/securityRoutes.js +53 -0
- package/dist/server/routes/securityRoutes.js.map +1 -0
- package/dist/server/routes/socketBackpressure.d.ts +26 -0
- package/dist/server/routes/socketBackpressure.js +63 -0
- package/dist/server/routes/socketBackpressure.js.map +1 -0
- package/dist/server/routes/terminalLayoutRoutes.d.ts +9 -0
- package/dist/server/routes/terminalLayoutRoutes.js +108 -0
- package/dist/server/routes/terminalLayoutRoutes.js.map +1 -0
- package/dist/server/routes/terminalRoutes.d.ts +14 -0
- package/dist/server/routes/terminalRoutes.js +177 -0
- package/dist/server/routes/terminalRoutes.js.map +1 -0
- package/dist/server/routes/terminalWebSocket.d.ts +9 -0
- package/dist/server/routes/terminalWebSocket.js +129 -0
- package/dist/server/routes/terminalWebSocket.js.map +1 -0
- package/dist/server/routes/totpRoutes.d.ts +7 -0
- package/dist/server/routes/totpRoutes.js +46 -0
- package/dist/server/routes/totpRoutes.js.map +1 -0
- package/dist/server/routes/updateRoutes.d.ts +7 -0
- package/dist/server/routes/updateRoutes.js +24 -0
- package/dist/server/routes/updateRoutes.js.map +1 -0
- package/dist/server/routes/uploadRoutes.d.ts +9 -0
- package/dist/server/routes/uploadRoutes.js +95 -0
- package/dist/server/routes/uploadRoutes.js.map +1 -0
- package/dist/server/storage/fileStore.d.ts +90 -0
- package/dist/server/storage/fileStore.js +275 -0
- package/dist/server/storage/fileStore.js.map +1 -0
- package/dist/server/system/stats.d.ts +2 -0
- package/dist/server/system/stats.js +37 -0
- package/dist/server/system/stats.js.map +1 -0
- package/dist/server/terminal/NodePtyAdapter.d.ts +4 -0
- package/dist/server/terminal/NodePtyAdapter.js +14 -0
- package/dist/server/terminal/NodePtyAdapter.js.map +1 -0
- package/dist/server/terminal/PtyAdapter.d.ts +57 -0
- package/dist/server/terminal/PtyAdapter.js +2 -0
- package/dist/server/terminal/PtyAdapter.js.map +1 -0
- package/dist/server/terminal/TerminalManager.d.ts +74 -0
- package/dist/server/terminal/TerminalManager.js +561 -0
- package/dist/server/terminal/TerminalManager.js.map +1 -0
- package/dist/server/terminal/TmuxPtyAdapter.d.ts +25 -0
- package/dist/server/terminal/TmuxPtyAdapter.js +543 -0
- package/dist/server/terminal/TmuxPtyAdapter.js.map +1 -0
- package/dist/server/terminal/codexTranscriptSource.d.ts +9 -0
- package/dist/server/terminal/codexTranscriptSource.js +144 -0
- package/dist/server/terminal/codexTranscriptSource.js.map +1 -0
- package/dist/server/terminal/cwdResolver.d.ts +8 -0
- package/dist/server/terminal/cwdResolver.js +37 -0
- package/dist/server/terminal/cwdResolver.js.map +1 -0
- package/dist/server/terminal/outputBuffer.d.ts +7 -0
- package/dist/server/terminal/outputBuffer.js +17 -0
- package/dist/server/terminal/outputBuffer.js.map +1 -0
- package/dist/server/terminal/transcriptHistory.d.ts +7 -0
- package/dist/server/terminal/transcriptHistory.js +315 -0
- package/dist/server/terminal/transcriptHistory.js.map +1 -0
- package/dist/server/update/gitUpdate.d.ts +27 -0
- package/dist/server/update/gitUpdate.js +241 -0
- package/dist/server/update/gitUpdate.js.map +1 -0
- package/dist/server/uploads/uploadPaths.d.ts +18 -0
- package/dist/server/uploads/uploadPaths.js +116 -0
- package/dist/server/uploads/uploadPaths.js.map +1 -0
- package/dist/server/uploads/uploadService.d.ts +21 -0
- package/dist/server/uploads/uploadService.js +230 -0
- package/dist/server/uploads/uploadService.js.map +1 -0
- package/dist/shared/layoutState.d.ts +6 -0
- package/dist/shared/layoutState.js +115 -0
- package/dist/shared/layoutState.js.map +1 -0
- package/dist/shared/notificationAssets.d.ts +9 -0
- package/dist/shared/notificationAssets.js +27 -0
- package/dist/shared/notificationAssets.js.map +1 -0
- package/dist/shared/protocol.d.ts +308 -0
- package/dist/shared/protocol.js +29 -0
- package/dist/shared/protocol.js.map +1 -0
- package/dist/shared/types.d.ts +56 -0
- package/dist/shared/types.js +2 -0
- package/dist/shared/types.js.map +1 -0
- package/docs/assets/nterminal-workspace.png +0 -0
- package/docs/configuration.md +97 -0
- package/docs/features.md +126 -0
- package/docs/onboarding.md +122 -0
- package/docs/operations.md +112 -0
- package/docs/terminal-history.md +54 -0
- package/package.json +85 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/assets/notifications/character-2258.mp4 +0 -0
- package/public/assets/notifications/character-2260.mp4 +0 -0
- package/public/assets/notifications/character-2272.mp4 +0 -0
- package/public/brand/nterminal-mark-64.png +0 -0
- package/public/brand/nterminal-mark.svg +4 -0
- package/public/brand/nterminal-wordmark-486x68.png +0 -0
- package/public/brand/nterminal-wordmark.svg +3 -0
- package/public/icons/app-icon-1024.png +0 -0
- package/public/icons/app-icon-384.png +0 -0
- package/public/icons/favicon-32.png +0 -0
- package/public/icons/favicon-64.png +0 -0
- package/public/icons/favicon-96.png +0 -0
- package/public/icons/favicon.svg +4 -0
- package/public/manifest.webmanifest +24 -0
- package/scripts/nterminalctl +588 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadService.js","sourceRoot":"","sources":["../../../src/server/uploads/uploadService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LayoutNode, TerminalLayoutState, TerminalTabLayout, TerminalWorkspaceLayout } from './types.js';
|
|
2
|
+
export declare function isTerminalLayoutState(value: unknown): value is TerminalLayoutState;
|
|
3
|
+
export declare function normalizeTerminalLayoutState(value: unknown): TerminalLayoutState | null;
|
|
4
|
+
export declare function isTerminalWorkspaceLayout(value: unknown): value is TerminalWorkspaceLayout;
|
|
5
|
+
export declare function isTerminalTabLayout(value: unknown): value is TerminalTabLayout;
|
|
6
|
+
export declare function isLayoutNode(value: unknown): value is LayoutNode;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
const maxWorkspaces = 128;
|
|
2
|
+
const maxTabsPerWorkspace = 512;
|
|
3
|
+
const maxLayoutNodeDepth = 64;
|
|
4
|
+
const maxLayoutNodes = 4_096;
|
|
5
|
+
export function isTerminalLayoutState(value) {
|
|
6
|
+
return normalizeTerminalLayoutState(value) !== null;
|
|
7
|
+
}
|
|
8
|
+
export function normalizeTerminalLayoutState(value) {
|
|
9
|
+
if (!value || typeof value !== 'object') {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const state = value;
|
|
13
|
+
if ((typeof state.activeWorkspaceId !== 'string' && state.activeWorkspaceId !== null) ||
|
|
14
|
+
!Array.isArray(state.workspaces) ||
|
|
15
|
+
state.workspaces.length > maxWorkspaces) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
const workspaces = state.workspaces.map(normalizeTerminalWorkspaceLayout);
|
|
19
|
+
if (workspaces.some((workspace) => workspace === null)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
activeWorkspaceId: state.activeWorkspaceId,
|
|
24
|
+
workspaces: workspaces
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function isTerminalWorkspaceLayout(value) {
|
|
28
|
+
return normalizeTerminalWorkspaceLayout(value) !== null;
|
|
29
|
+
}
|
|
30
|
+
function normalizeTerminalWorkspaceLayout(value) {
|
|
31
|
+
if (!value || typeof value !== 'object') {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const workspace = value;
|
|
35
|
+
if (typeof workspace.id !== 'string' ||
|
|
36
|
+
typeof workspace.title !== 'string' ||
|
|
37
|
+
(typeof workspace.activeTabId !== 'string' && workspace.activeTabId !== null) ||
|
|
38
|
+
!Array.isArray(workspace.tabs) ||
|
|
39
|
+
workspace.tabs.length > maxTabsPerWorkspace) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const tabs = workspace.tabs.map(normalizeTerminalTabLayout);
|
|
43
|
+
if (tabs.some((tab) => tab === null)) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
id: workspace.id,
|
|
48
|
+
title: workspace.title,
|
|
49
|
+
activeTabId: workspace.activeTabId,
|
|
50
|
+
tabs: tabs
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export function isTerminalTabLayout(value) {
|
|
54
|
+
return normalizeTerminalTabLayout(value) !== null;
|
|
55
|
+
}
|
|
56
|
+
function normalizeTerminalTabLayout(value) {
|
|
57
|
+
if (!value || typeof value !== 'object') {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const tab = value;
|
|
61
|
+
if (typeof tab.id !== 'string' || typeof tab.title !== 'string' || typeof tab.activeTerminalId !== 'string') {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const root = normalizeLayoutNode(tab.root);
|
|
65
|
+
if (!root) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
id: tab.id,
|
|
70
|
+
title: tab.title,
|
|
71
|
+
activeTerminalId: tab.activeTerminalId,
|
|
72
|
+
root
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function isLayoutNode(value) {
|
|
76
|
+
return normalizeLayoutNode(value) !== null;
|
|
77
|
+
}
|
|
78
|
+
function normalizeLayoutNode(value) {
|
|
79
|
+
if (!value || typeof value !== 'object') {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
let nodeCount = 0;
|
|
83
|
+
return normalizeLayoutNodeAtDepth(value, 1, () => {
|
|
84
|
+
nodeCount += 1;
|
|
85
|
+
return nodeCount <= maxLayoutNodes;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function normalizeLayoutNodeAtDepth(value, depth, consumeNode) {
|
|
89
|
+
if (!value || typeof value !== 'object' || depth > maxLayoutNodeDepth || !consumeNode()) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const node = value;
|
|
93
|
+
if (node.type === 'pane') {
|
|
94
|
+
return typeof node.terminalId === 'string' ? { type: 'pane', terminalId: node.terminalId } : null;
|
|
95
|
+
}
|
|
96
|
+
if (node.type !== 'split' || (node.direction !== 'horizontal' && node.direction !== 'vertical')) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const first = normalizeLayoutNodeAtDepth(node.first, depth + 1, consumeNode);
|
|
100
|
+
const second = normalizeLayoutNodeAtDepth(node.second, depth + 1, consumeNode);
|
|
101
|
+
if (!first || !second) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
type: 'split',
|
|
106
|
+
direction: node.direction,
|
|
107
|
+
ratio: normalizeRatio(node.ratio),
|
|
108
|
+
first,
|
|
109
|
+
second
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function normalizeRatio(value) {
|
|
113
|
+
return typeof value === 'number' && Number.isFinite(value) ? Math.min(0.9, Math.max(0.1, value)) : 0.5;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=layoutState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutState.js","sourceRoot":"","sources":["../../src/shared/layoutState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export const builtInNotificationAssets = [
|
|
2
|
+
{
|
|
3
|
+
id: 'builtin-character-2260',
|
|
4
|
+
filename: 'character-2260.mp4',
|
|
5
|
+
contentType: 'video/mp4',
|
|
6
|
+
size: 123_288,
|
|
7
|
+
createdAt: '2026-05-26T00:00:00.000Z',
|
|
8
|
+
url: '/assets/notifications/character-2260.mp4'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
id: 'builtin-character-2272',
|
|
12
|
+
filename: 'character-2272.mp4',
|
|
13
|
+
contentType: 'video/mp4',
|
|
14
|
+
size: 55_873,
|
|
15
|
+
createdAt: '2026-05-26T00:00:00.000Z',
|
|
16
|
+
url: '/assets/notifications/character-2272.mp4'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'builtin-character-2258',
|
|
20
|
+
filename: 'character-2258.mp4',
|
|
21
|
+
contentType: 'video/mp4',
|
|
22
|
+
size: 112_612,
|
|
23
|
+
createdAt: '2026-05-26T00:00:00.000Z',
|
|
24
|
+
url: '/assets/notifications/character-2258.mp4'
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
//# sourceMappingURL=notificationAssets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notificationAssets.js","sourceRoot":"","sources":["../../src/shared/notificationAssets.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,yBAAyB,GAAwC;IAC5E;QACE,EAAE,EAAE,wBAAwB;QAC5B,QAAQ,EAAE,oBAAoB;QAC9B,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,0BAA0B;QACrC,GAAG,EAAE,0CAA0C;KAChD;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,QAAQ,EAAE,oBAAoB;QAC9B,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,0BAA0B;QACrC,GAAG,EAAE,0CAA0C;KAChD;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,QAAQ,EAAE,oBAAoB;QAC9B,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,0BAA0B;QACrC,GAAG,EAAE,0CAA0C;KAChD;CACF,CAAC"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import type { TerminalId, TerminalLayoutState, TerminalSummary } from './types.js';
|
|
2
|
+
export interface PasswordRequest {
|
|
3
|
+
password: string;
|
|
4
|
+
rememberNetwork?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface LoginRequest {
|
|
7
|
+
password: string;
|
|
8
|
+
otp?: string;
|
|
9
|
+
rememberNetwork?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface ReauthRequest {
|
|
12
|
+
otp?: string;
|
|
13
|
+
rememberNetwork?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface TrustedDeviceSummary {
|
|
16
|
+
id: string;
|
|
17
|
+
label: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
lastSeenAt: string;
|
|
20
|
+
current: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface IpRuleSummary {
|
|
23
|
+
id: string;
|
|
24
|
+
value: string;
|
|
25
|
+
label: string;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
}
|
|
28
|
+
export interface TrustedDeviceListResponse {
|
|
29
|
+
devices: TrustedDeviceSummary[];
|
|
30
|
+
}
|
|
31
|
+
export interface IpRuleListResponse {
|
|
32
|
+
networks: IpRuleSummary[];
|
|
33
|
+
}
|
|
34
|
+
export interface AddIpRuleRequest {
|
|
35
|
+
value: string;
|
|
36
|
+
label?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface TotpSetupResponse {
|
|
39
|
+
secret: string;
|
|
40
|
+
qrDataUrl: string;
|
|
41
|
+
}
|
|
42
|
+
export interface TotpActivateRequest {
|
|
43
|
+
secret: string;
|
|
44
|
+
otp: string;
|
|
45
|
+
}
|
|
46
|
+
export interface AgentSummary {
|
|
47
|
+
id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
url: string;
|
|
50
|
+
}
|
|
51
|
+
export interface AgentListResponse {
|
|
52
|
+
agents: AgentSummary[];
|
|
53
|
+
}
|
|
54
|
+
export interface AddAgentRequest {
|
|
55
|
+
name: string;
|
|
56
|
+
url: string;
|
|
57
|
+
token: string;
|
|
58
|
+
}
|
|
59
|
+
export interface AgentPingResponse {
|
|
60
|
+
ok: boolean;
|
|
61
|
+
latencyMs: number;
|
|
62
|
+
}
|
|
63
|
+
export interface SystemStatsResponse {
|
|
64
|
+
cpuPercent: number | null;
|
|
65
|
+
memoryPercent: number;
|
|
66
|
+
memoryUsedBytes: number;
|
|
67
|
+
memoryTotalBytes: number;
|
|
68
|
+
cores: number;
|
|
69
|
+
}
|
|
70
|
+
export interface VersionInfo {
|
|
71
|
+
version: string;
|
|
72
|
+
runningVersion: string;
|
|
73
|
+
commit: string | null;
|
|
74
|
+
runningCommit: string | null;
|
|
75
|
+
branch: string | null;
|
|
76
|
+
dirty: boolean;
|
|
77
|
+
isGit: boolean;
|
|
78
|
+
installMode: 'git' | 'package';
|
|
79
|
+
}
|
|
80
|
+
export interface UpdateCheckResponse {
|
|
81
|
+
behind: number | null;
|
|
82
|
+
commit: string | null;
|
|
83
|
+
currentVersion?: string;
|
|
84
|
+
latestVersion?: string | null;
|
|
85
|
+
updateAvailable?: boolean | null;
|
|
86
|
+
error?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface UpdateResponse {
|
|
89
|
+
ok: boolean;
|
|
90
|
+
changed: boolean;
|
|
91
|
+
message: string;
|
|
92
|
+
restarting: boolean;
|
|
93
|
+
}
|
|
94
|
+
export interface CreateTerminalRequest {
|
|
95
|
+
parentTerminalId?: TerminalId;
|
|
96
|
+
cwd?: string;
|
|
97
|
+
cols?: number;
|
|
98
|
+
rows?: number;
|
|
99
|
+
}
|
|
100
|
+
export interface TerminalListResponse {
|
|
101
|
+
terminals: TerminalSummary[];
|
|
102
|
+
}
|
|
103
|
+
export interface TerminalResponse {
|
|
104
|
+
terminal: TerminalSummary;
|
|
105
|
+
}
|
|
106
|
+
export interface TerminalHistoryCursor {
|
|
107
|
+
startLine: number;
|
|
108
|
+
endLine: number;
|
|
109
|
+
hasMore: boolean;
|
|
110
|
+
}
|
|
111
|
+
export interface TerminalHistoryResponse extends TerminalHistoryCursor {
|
|
112
|
+
terminalId: TerminalId;
|
|
113
|
+
output: string[];
|
|
114
|
+
}
|
|
115
|
+
export type TerminalTranscriptProvider = 'codex' | 'claude';
|
|
116
|
+
export interface TerminalTranscriptSource {
|
|
117
|
+
provider: TerminalTranscriptProvider;
|
|
118
|
+
sessionId: string;
|
|
119
|
+
}
|
|
120
|
+
export interface TerminalTranscriptSourceResponse {
|
|
121
|
+
terminalId: TerminalId;
|
|
122
|
+
source: TerminalTranscriptSource | null;
|
|
123
|
+
}
|
|
124
|
+
export interface TerminalTranscriptHistoryResponse {
|
|
125
|
+
terminalId: TerminalId;
|
|
126
|
+
source: TerminalTranscriptSource | null;
|
|
127
|
+
cursor: string | null;
|
|
128
|
+
hasMore: boolean;
|
|
129
|
+
output: string[];
|
|
130
|
+
}
|
|
131
|
+
export interface TerminalLayoutResponse {
|
|
132
|
+
layout: TerminalLayoutState | null;
|
|
133
|
+
revision: number;
|
|
134
|
+
updatedAt: string | null;
|
|
135
|
+
}
|
|
136
|
+
export interface UpdateTerminalLayoutRequest {
|
|
137
|
+
layout: TerminalLayoutState;
|
|
138
|
+
baseRevision?: number;
|
|
139
|
+
}
|
|
140
|
+
export interface UploadManifestEntry {
|
|
141
|
+
fieldName: string;
|
|
142
|
+
relativePath: string;
|
|
143
|
+
size: number;
|
|
144
|
+
}
|
|
145
|
+
export interface UploadManifest {
|
|
146
|
+
terminalId: TerminalId;
|
|
147
|
+
entries: UploadManifestEntry[];
|
|
148
|
+
}
|
|
149
|
+
export interface UploadResultEntry {
|
|
150
|
+
relativePath: string;
|
|
151
|
+
savedRelativePath?: string;
|
|
152
|
+
status: 'uploaded' | 'failed';
|
|
153
|
+
size?: number;
|
|
154
|
+
error?: string;
|
|
155
|
+
}
|
|
156
|
+
export interface UploadResponse {
|
|
157
|
+
destinationCwd: string;
|
|
158
|
+
uploaded: number;
|
|
159
|
+
failed: number;
|
|
160
|
+
results: UploadResultEntry[];
|
|
161
|
+
}
|
|
162
|
+
export interface NotificationAssetSummary {
|
|
163
|
+
id: string;
|
|
164
|
+
filename: string;
|
|
165
|
+
source: 'built-in' | 'uploaded';
|
|
166
|
+
enabled: boolean;
|
|
167
|
+
contentType: 'video/mp4' | 'video/webm';
|
|
168
|
+
size: number;
|
|
169
|
+
createdAt: string;
|
|
170
|
+
url: string;
|
|
171
|
+
}
|
|
172
|
+
export interface NotificationAssetListResponse {
|
|
173
|
+
assets: NotificationAssetSummary[];
|
|
174
|
+
maxFileBytes: number;
|
|
175
|
+
}
|
|
176
|
+
export interface NotificationAssetResponse {
|
|
177
|
+
asset: NotificationAssetSummary;
|
|
178
|
+
}
|
|
179
|
+
export interface UpdateNotificationAssetSelectionRequest {
|
|
180
|
+
enabledAssetIds: string[];
|
|
181
|
+
}
|
|
182
|
+
export interface FileRootRequest {
|
|
183
|
+
terminalId: TerminalId;
|
|
184
|
+
}
|
|
185
|
+
export interface FileRootResponse {
|
|
186
|
+
rootToken: string;
|
|
187
|
+
terminalId: TerminalId;
|
|
188
|
+
rootPath: string;
|
|
189
|
+
issuedAt: string;
|
|
190
|
+
}
|
|
191
|
+
export interface FilePathRequest {
|
|
192
|
+
rootToken: string;
|
|
193
|
+
path: string;
|
|
194
|
+
}
|
|
195
|
+
export type FileEntryKind = 'file' | 'directory' | 'symlink' | 'other';
|
|
196
|
+
export type FilePreviewKind = 'image' | 'pdf' | 'none';
|
|
197
|
+
export interface FileEntry {
|
|
198
|
+
name: string;
|
|
199
|
+
path: string;
|
|
200
|
+
kind: FileEntryKind;
|
|
201
|
+
size: number | null;
|
|
202
|
+
mtime: string | null;
|
|
203
|
+
editable: boolean;
|
|
204
|
+
previewKind: FilePreviewKind;
|
|
205
|
+
}
|
|
206
|
+
export interface FileListRequest extends FilePathRequest {
|
|
207
|
+
}
|
|
208
|
+
export interface FileListResponse {
|
|
209
|
+
rootPath: string;
|
|
210
|
+
path: string;
|
|
211
|
+
entries: FileEntry[];
|
|
212
|
+
}
|
|
213
|
+
export interface FileVersion {
|
|
214
|
+
size: number;
|
|
215
|
+
mtimeMs: number;
|
|
216
|
+
ino?: number;
|
|
217
|
+
}
|
|
218
|
+
export interface FileReadRequest extends FilePathRequest {
|
|
219
|
+
}
|
|
220
|
+
export interface FileReadResponse {
|
|
221
|
+
path: string;
|
|
222
|
+
content: string;
|
|
223
|
+
language: 'text' | 'markdown';
|
|
224
|
+
version: FileVersion;
|
|
225
|
+
}
|
|
226
|
+
export interface FileWriteRequest extends FilePathRequest {
|
|
227
|
+
content: string;
|
|
228
|
+
expectedVersion: FileVersion;
|
|
229
|
+
}
|
|
230
|
+
export interface FileWriteResponse {
|
|
231
|
+
path: string;
|
|
232
|
+
version: FileVersion;
|
|
233
|
+
}
|
|
234
|
+
export interface FileOpenResponse {
|
|
235
|
+
opened: true;
|
|
236
|
+
}
|
|
237
|
+
export interface FileOpenRequest extends FilePathRequest {
|
|
238
|
+
terminalId?: TerminalId;
|
|
239
|
+
}
|
|
240
|
+
export interface FileCreateRequest extends FilePathRequest {
|
|
241
|
+
kind: 'file' | 'directory';
|
|
242
|
+
}
|
|
243
|
+
export interface FileCreateResponse {
|
|
244
|
+
entry: FileEntry;
|
|
245
|
+
}
|
|
246
|
+
export interface FileMoveRequest {
|
|
247
|
+
rootToken: string;
|
|
248
|
+
sourcePath: string;
|
|
249
|
+
destinationPath: string;
|
|
250
|
+
}
|
|
251
|
+
export interface FileMoveResponse {
|
|
252
|
+
entry: FileEntry;
|
|
253
|
+
}
|
|
254
|
+
export interface FileDeletePreviewRequest extends FilePathRequest {
|
|
255
|
+
}
|
|
256
|
+
export interface FileDeletePreviewResponse {
|
|
257
|
+
path: string;
|
|
258
|
+
kind: FileEntryKind;
|
|
259
|
+
descendantCount: number;
|
|
260
|
+
previewToken: string;
|
|
261
|
+
}
|
|
262
|
+
export interface FileDeleteRequest extends FilePathRequest {
|
|
263
|
+
previewToken: string;
|
|
264
|
+
}
|
|
265
|
+
export interface FileDeleteResponse {
|
|
266
|
+
path: string;
|
|
267
|
+
deleted: true;
|
|
268
|
+
}
|
|
269
|
+
export type ClientTerminalMessage = {
|
|
270
|
+
type: 'input';
|
|
271
|
+
terminalId: TerminalId;
|
|
272
|
+
data: string;
|
|
273
|
+
} | {
|
|
274
|
+
type: 'refresh_cwd';
|
|
275
|
+
terminalId: TerminalId;
|
|
276
|
+
} | {
|
|
277
|
+
type: 'resize';
|
|
278
|
+
terminalId: TerminalId;
|
|
279
|
+
cols: number;
|
|
280
|
+
rows: number;
|
|
281
|
+
} | {
|
|
282
|
+
type: 'ping';
|
|
283
|
+
nonce: string;
|
|
284
|
+
};
|
|
285
|
+
export type ServerTerminalMessage = {
|
|
286
|
+
type: 'snapshot';
|
|
287
|
+
terminal: TerminalSummary;
|
|
288
|
+
output: string[];
|
|
289
|
+
history?: TerminalHistoryCursor | null;
|
|
290
|
+
} | {
|
|
291
|
+
type: 'output';
|
|
292
|
+
terminalId: TerminalId;
|
|
293
|
+
data: string;
|
|
294
|
+
} | {
|
|
295
|
+
type: 'terminal_updated';
|
|
296
|
+
terminal: TerminalSummary;
|
|
297
|
+
} | {
|
|
298
|
+
type: 'exit';
|
|
299
|
+
terminalId: TerminalId;
|
|
300
|
+
exitCode: number | null;
|
|
301
|
+
} | {
|
|
302
|
+
type: 'error';
|
|
303
|
+
message: string;
|
|
304
|
+
} | {
|
|
305
|
+
type: 'pong';
|
|
306
|
+
nonce: string;
|
|
307
|
+
};
|
|
308
|
+
export declare function parseClientTerminalMessage(raw: string): ClientTerminalMessage | null;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function parseClientTerminalMessage(raw) {
|
|
2
|
+
try {
|
|
3
|
+
const parsed = JSON.parse(raw);
|
|
4
|
+
if (!parsed || typeof parsed !== 'object') {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const message = parsed;
|
|
8
|
+
if (message.type === 'input' && typeof message.terminalId === 'string' && typeof message.data === 'string') {
|
|
9
|
+
return message;
|
|
10
|
+
}
|
|
11
|
+
if (message.type === 'refresh_cwd' && typeof message.terminalId === 'string') {
|
|
12
|
+
return message;
|
|
13
|
+
}
|
|
14
|
+
if (message.type === 'resize' &&
|
|
15
|
+
typeof message.terminalId === 'string' &&
|
|
16
|
+
Number.isInteger(message.cols) &&
|
|
17
|
+
Number.isInteger(message.rows)) {
|
|
18
|
+
return message;
|
|
19
|
+
}
|
|
20
|
+
if (message.type === 'ping' && typeof message.nonce === 'string') {
|
|
21
|
+
return message;
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/shared/protocol.ts"],"names":[],"mappings":"AAmVA,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,MAAwC,CAAC;QACzD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3G,OAAO,OAAgC,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC7E,OAAO,OAAgC,CAAC;QAC1C,CAAC;QACD,IACE,OAAO,CAAC,IAAI,KAAK,QAAQ;YACzB,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ;YACtC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;YAC9B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAC9B,CAAC;YACD,OAAO,OAAgC,CAAC;QAC1C,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,OAAgC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export type TerminalId = string;
|
|
2
|
+
export interface TerminalSummary {
|
|
3
|
+
id: TerminalId;
|
|
4
|
+
title: string;
|
|
5
|
+
cwd: string;
|
|
6
|
+
pid: number | null;
|
|
7
|
+
cols: number;
|
|
8
|
+
rows: number;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
status: 'running' | 'exited';
|
|
12
|
+
exitCode: number | null;
|
|
13
|
+
activity?: 'idle' | 'busy';
|
|
14
|
+
currentCommand?: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface AuthSessionStatus {
|
|
17
|
+
passwordSet: boolean;
|
|
18
|
+
authenticated: boolean;
|
|
19
|
+
totpEnabled: boolean;
|
|
20
|
+
deviceTrusted: boolean;
|
|
21
|
+
currentIpWhitelisted: boolean;
|
|
22
|
+
expiresAt: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface SplitNode {
|
|
25
|
+
type: 'split';
|
|
26
|
+
direction: 'horizontal' | 'vertical';
|
|
27
|
+
ratio: number;
|
|
28
|
+
first: LayoutNode;
|
|
29
|
+
second: LayoutNode;
|
|
30
|
+
}
|
|
31
|
+
export interface PaneNode {
|
|
32
|
+
type: 'pane';
|
|
33
|
+
terminalId: TerminalId;
|
|
34
|
+
}
|
|
35
|
+
export interface EditorPaneNode {
|
|
36
|
+
type: 'editor';
|
|
37
|
+
editorId: string;
|
|
38
|
+
title: string;
|
|
39
|
+
}
|
|
40
|
+
export type LayoutNode = SplitNode | PaneNode | EditorPaneNode;
|
|
41
|
+
export interface TerminalTabLayout {
|
|
42
|
+
id: string;
|
|
43
|
+
title: string;
|
|
44
|
+
root: LayoutNode;
|
|
45
|
+
activeTerminalId: TerminalId;
|
|
46
|
+
}
|
|
47
|
+
export interface TerminalWorkspaceLayout {
|
|
48
|
+
id: string;
|
|
49
|
+
title: string;
|
|
50
|
+
tabs: TerminalTabLayout[];
|
|
51
|
+
activeTabId: string | null;
|
|
52
|
+
}
|
|
53
|
+
export interface TerminalLayoutState {
|
|
54
|
+
activeWorkspaceId: string | null;
|
|
55
|
+
workspaces: TerminalWorkspaceLayout[];
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":""}
|
|
Binary file
|