@termaxjs/web-adapter 0.1.1

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.
@@ -0,0 +1,249 @@
1
+ export class InMemoryPtyAdapter {
2
+ nextId = 1;
3
+ listeners = new Map();
4
+ lineBuffers = new Map();
5
+ welcomeBanner;
6
+ prompt;
7
+ virtualFiles;
8
+ onCommand;
9
+ constructor(options) {
10
+ this.welcomeBanner =
11
+ options?.welcomeBanner ??
12
+ "\x1b[1;36mTermax Web Sandbox\x1b[0m\r\nType \x1b[33mhelp\x1b[0m to view available sandbox commands.\r\n\r\n";
13
+ this.prompt = options?.prompt ?? "$ ";
14
+ this.virtualFiles = options?.virtualFiles ?? {
15
+ "README.md": "# Welcome to Termax\r\nA lightweight, modern terminal & code editor ecosystem.\r\n",
16
+ "package.json": '{\r\n "name": "termax-sandbox",\r\n "version": "0.1.0"\r\n}\r\n',
17
+ };
18
+ this.onCommand = options?.onCommand;
19
+ }
20
+ async spawn(_options) {
21
+ const id = this.nextId++;
22
+ this.listeners.set(id, new Set());
23
+ this.lineBuffers.set(id, "");
24
+ setTimeout(() => {
25
+ this.emit(id, this.welcomeBanner + this.prompt);
26
+ }, 10);
27
+ return id;
28
+ }
29
+ async write(id, data) {
30
+ const text = typeof data === "string" ? data : new TextDecoder().decode(data);
31
+ let buf = this.lineBuffers.get(id) ?? "";
32
+ for (let i = 0; i < text.length; i++) {
33
+ const char = text[i];
34
+ if (char === "\r") {
35
+ this.emit(id, "\r\n");
36
+ const trimmed = buf.trim();
37
+ this.lineBuffers.set(id, "");
38
+ if (trimmed.length > 0) {
39
+ await this.executeCommand(id, trimmed);
40
+ }
41
+ else {
42
+ this.emit(id, this.prompt);
43
+ }
44
+ buf = "";
45
+ }
46
+ else if (char === "\x7f" || char === "\b") {
47
+ if (buf.length > 0) {
48
+ buf = buf.slice(0, -1);
49
+ this.lineBuffers.set(id, buf);
50
+ this.emit(id, "\b \b");
51
+ }
52
+ }
53
+ else if (char === "\x03") {
54
+ // Ctrl+C
55
+ this.emit(id, "^C\r\n" + this.prompt);
56
+ buf = "";
57
+ this.lineBuffers.set(id, "");
58
+ }
59
+ else if (char === "\x0c") {
60
+ // Ctrl+L
61
+ this.emit(id, "\x1b[2J\x1b[H" + this.prompt + buf);
62
+ }
63
+ else if (char >= " " || char === "\t") {
64
+ buf += char;
65
+ this.lineBuffers.set(id, buf);
66
+ this.emit(id, char);
67
+ }
68
+ }
69
+ }
70
+ async resize(_id, _cols, _rows) { }
71
+ async kill(id) {
72
+ this.listeners.delete(id);
73
+ this.lineBuffers.delete(id);
74
+ }
75
+ onData(id, callback) {
76
+ let set = this.listeners.get(id);
77
+ if (!set) {
78
+ set = new Set();
79
+ this.listeners.set(id, set);
80
+ }
81
+ set.add(callback);
82
+ return () => {
83
+ set?.delete(callback);
84
+ };
85
+ }
86
+ async executeCommand(id, rawLine) {
87
+ const parts = rawLine.split(/\s+/);
88
+ const cmd = parts[0];
89
+ const args = parts.slice(1);
90
+ if (cmd === "help") {
91
+ this.emit(id, "Available sandbox commands:\r\n" +
92
+ " help - Show this help message\r\n" +
93
+ " clear - Clear the terminal screen\r\n" +
94
+ " echo [text] - Echo text to stdout\r\n" +
95
+ " ls - List sandbox files\r\n" +
96
+ " cat [file] - Display content of a sandbox file\r\n" +
97
+ " whoami - Print current username\r\n" +
98
+ " date - Display current date and time\r\n" +
99
+ " version - Show Termax engine version\r\n");
100
+ }
101
+ else if (cmd === "clear") {
102
+ this.emit(id, "\x1b[2J\x1b[H");
103
+ }
104
+ else if (cmd === "echo") {
105
+ this.emit(id, args.join(" ") + "\r\n");
106
+ }
107
+ else if (cmd === "ls") {
108
+ const names = Object.keys(this.virtualFiles);
109
+ this.emit(id, names.join(" ") + "\r\n");
110
+ }
111
+ else if (cmd === "cat") {
112
+ const filename = args[0];
113
+ if (!filename) {
114
+ this.emit(id, "usage: cat <filename>\r\n");
115
+ }
116
+ else if (this.virtualFiles[filename] !== undefined) {
117
+ this.emit(id, this.virtualFiles[filename]);
118
+ }
119
+ else {
120
+ this.emit(id, `cat: ${filename}: No such file or directory\r\n`);
121
+ }
122
+ }
123
+ else if (cmd === "whoami") {
124
+ this.emit(id, "developer\r\n");
125
+ }
126
+ else if (cmd === "date") {
127
+ this.emit(id, new Date().toISOString() + "\r\n");
128
+ }
129
+ else if (cmd === "version") {
130
+ this.emit(id, "@termaxjs/web-ui v0.1.0 (Web Sandbox Engine)\r\n");
131
+ }
132
+ else if (this.onCommand) {
133
+ try {
134
+ const res = await this.onCommand(cmd, args);
135
+ this.emit(id, res + (res.endsWith("\r\n") ? "" : "\r\n"));
136
+ }
137
+ catch (err) {
138
+ this.emit(id, `\x1b[31merror: ${err?.message || String(err)}\x1b[0m\r\n`);
139
+ }
140
+ }
141
+ else {
142
+ this.emit(id, `\x1b[31mcommand not found: ${cmd}\x1b[0m\r\n`);
143
+ }
144
+ this.emit(id, this.prompt);
145
+ }
146
+ emit(id, data) {
147
+ const set = this.listeners.get(id);
148
+ if (set) {
149
+ for (const cb of set)
150
+ cb(data);
151
+ }
152
+ }
153
+ }
154
+ export class MockPtyAdapter extends InMemoryPtyAdapter {
155
+ constructor(options) {
156
+ super(options);
157
+ }
158
+ }
159
+ export class MockFsAdapter {
160
+ files = new Map([
161
+ ["/workspace/README.md", "# Welcome to Termax\n\nThis is a mock filesystem running in browser memory.\n"],
162
+ ["/workspace/index.ts", "console.log('Hello from Termax');\n"],
163
+ ]);
164
+ async readFile(path) {
165
+ if (!this.files.has(path))
166
+ throw new Error(`File not found: ${path}`);
167
+ return this.files.get(path);
168
+ }
169
+ async writeFile(path, content) {
170
+ this.files.set(path, content);
171
+ }
172
+ async readDir(path) {
173
+ const entries = [];
174
+ const prefix = path.endsWith("/") ? path : `${path}/`;
175
+ for (const k of this.files.keys()) {
176
+ if (k.startsWith(prefix)) {
177
+ const rest = k.slice(prefix.length);
178
+ const name = rest.split("/")[0];
179
+ if (name && !entries.some((e) => e.name === name)) {
180
+ entries.push({ name, path: `${prefix}${name}`, isDir: rest.includes("/") });
181
+ }
182
+ }
183
+ }
184
+ return entries;
185
+ }
186
+ async stat(path) {
187
+ const content = this.files.get(path);
188
+ return {
189
+ size: content ? content.length : 0,
190
+ modified: Date.now(),
191
+ isDir: !this.files.has(path),
192
+ };
193
+ }
194
+ }
195
+ export class MockGitAdapter {
196
+ async getStatus(_cwd) {
197
+ return "## main...origin/main\n M README.md\n";
198
+ }
199
+ async getLog(_cwd, _limit = 50) {
200
+ return [
201
+ {
202
+ sha: "a1b2c3d4e5f67890",
203
+ parents: [],
204
+ author: "Developer",
205
+ email: "dev@example.com",
206
+ timestamp: Math.floor(Date.now() / 1000),
207
+ message: "Initial mock commit",
208
+ },
209
+ ];
210
+ }
211
+ async getDiff(_cwd, _stagedOnly = false) {
212
+ return "diff --git a/README.md b/README.md\n--- a/README.md\n+++ b/README.md\n@@ -1,3 +1,3 @@\n-# Welcome\n+# Welcome to Termax!\n";
213
+ }
214
+ async stage(_cwd, _path) { }
215
+ async unstage(_cwd, _path) { }
216
+ async commit(_cwd, _message) {
217
+ return "f0e1d2c3b4a5";
218
+ }
219
+ }
220
+ export class MockShellAdapter {
221
+ async runCommand(command, _cwd, _timeoutMs = 10000) {
222
+ return {
223
+ stdout: `Mock execution of: ${command}\n`,
224
+ stderr: "",
225
+ exitCode: 0,
226
+ };
227
+ }
228
+ }
229
+ export class MockHostAdapter {
230
+ pty;
231
+ fs;
232
+ git;
233
+ shell;
234
+ capabilities;
235
+ constructor() {
236
+ this.pty = new MockPtyAdapter();
237
+ this.fs = new MockFsAdapter();
238
+ this.git = new MockGitAdapter();
239
+ this.shell = new MockShellAdapter();
240
+ this.capabilities = {
241
+ hasPersistentStorage: false,
242
+ hasNativePty: false,
243
+ hasDirectFsAccess: false,
244
+ hasLspBinaries: false,
245
+ platform: "web",
246
+ };
247
+ }
248
+ }
249
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import type { IPtyAdapter, IPtySpawnOptions, IFsAdapter, FsEntry, FsStat, IGitAdapter, GitLogRecord, IShellAdapter, ShellExecResult, IHostAdapter, HostCapabilities } from "../index.js";
2
+ export declare class JsonRpcWebSocketClient {
3
+ private url;
4
+ private ws;
5
+ private nextId;
6
+ private pending;
7
+ private notificationListeners;
8
+ constructor(url: string);
9
+ connect(): Promise<void>;
10
+ request<T = any>(method: string, params?: any): Promise<T>;
11
+ notify(method: string, params?: any): void;
12
+ on(event: string, callback: (params: any) => void): () => void;
13
+ private handleMessage;
14
+ close(): void;
15
+ }
16
+ export declare class RemotePtyAdapter implements IPtyAdapter {
17
+ private rpc;
18
+ constructor(rpc: JsonRpcWebSocketClient);
19
+ spawn(options: IPtySpawnOptions): Promise<number>;
20
+ write(id: number, data: string | Uint8Array): Promise<void>;
21
+ resize(id: number, cols: number, rows: number): Promise<void>;
22
+ kill(id: number): Promise<void>;
23
+ onData(id: number, callback: (data: string | Uint8Array) => void): () => void;
24
+ onExit(id: number, callback: (exitCode: number) => void): () => void;
25
+ }
26
+ export declare class RemoteFsAdapter implements IFsAdapter {
27
+ private rpc;
28
+ constructor(rpc: JsonRpcWebSocketClient);
29
+ readFile(path: string): Promise<string>;
30
+ writeFile(path: string, content: string): Promise<void>;
31
+ readDir(path: string): Promise<FsEntry[]>;
32
+ stat(path: string): Promise<FsStat>;
33
+ }
34
+ export declare class RemoteGitAdapter implements IGitAdapter {
35
+ private rpc;
36
+ constructor(rpc: JsonRpcWebSocketClient);
37
+ getStatus(cwd: string): Promise<string>;
38
+ getLog(cwd: string, limit?: number): Promise<GitLogRecord[]>;
39
+ getDiff(cwd: string, stagedOnly?: boolean): Promise<string>;
40
+ stage(cwd: string, path: string): Promise<void>;
41
+ unstage(cwd: string, path: string): Promise<void>;
42
+ commit(cwd: string, message: string): Promise<string>;
43
+ }
44
+ export declare class RemoteShellAdapter implements IShellAdapter {
45
+ private rpc;
46
+ constructor(rpc: JsonRpcWebSocketClient);
47
+ runCommand(command: string, cwd?: string, timeoutMs?: number): Promise<ShellExecResult>;
48
+ }
49
+ export declare class RemoteHostAdapter implements IHostAdapter {
50
+ readonly pty: RemotePtyAdapter;
51
+ readonly fs: RemoteFsAdapter;
52
+ readonly git: RemoteGitAdapter;
53
+ readonly shell: RemoteShellAdapter;
54
+ readonly capabilities: HostCapabilities;
55
+ readonly rpc: JsonRpcWebSocketClient;
56
+ constructor(serverUrl: string);
57
+ }
58
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remote/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ export class JsonRpcWebSocketClient {
2
+ url;
3
+ ws = null;
4
+ nextId = 1;
5
+ pending = new Map();
6
+ notificationListeners = new Map();
7
+ constructor(url) {
8
+ this.url = url;
9
+ }
10
+ async connect() {
11
+ if (this.ws && this.ws.readyState === WebSocket.OPEN)
12
+ return;
13
+ return new Promise((resolve, reject) => {
14
+ try {
15
+ this.ws = new WebSocket(this.url);
16
+ this.ws.onopen = () => resolve();
17
+ this.ws.onerror = (err) => reject(err);
18
+ this.ws.onmessage = (event) => this.handleMessage(event.data);
19
+ }
20
+ catch (err) {
21
+ reject(err);
22
+ }
23
+ });
24
+ }
25
+ async request(method, params) {
26
+ await this.connect();
27
+ const id = this.nextId++;
28
+ return new Promise((resolve, reject) => {
29
+ this.pending.set(id, { resolve, reject });
30
+ const payload = JSON.stringify({ jsonrpc: "2.0", id, method, params });
31
+ this.ws?.send(payload);
32
+ });
33
+ }
34
+ notify(method, params) {
35
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
36
+ this.ws.send(JSON.stringify({ jsonrpc: "2.0", method, params }));
37
+ }
38
+ }
39
+ on(event, callback) {
40
+ let set = this.notificationListeners.get(event);
41
+ if (!set) {
42
+ set = new Set();
43
+ this.notificationListeners.set(event, set);
44
+ }
45
+ set.add(callback);
46
+ return () => {
47
+ set?.delete(callback);
48
+ };
49
+ }
50
+ handleMessage(raw) {
51
+ try {
52
+ const msg = typeof raw === "string" ? JSON.parse(raw) : JSON.parse(new TextDecoder().decode(raw));
53
+ if (msg.id && this.pending.has(msg.id)) {
54
+ const handler = this.pending.get(msg.id);
55
+ this.pending.delete(msg.id);
56
+ if (msg.error)
57
+ handler.reject(new Error(msg.error.message || "RPC Error"));
58
+ else
59
+ handler.resolve(msg.result);
60
+ }
61
+ else if (msg.method && this.notificationListeners.has(msg.method)) {
62
+ const listeners = this.notificationListeners.get(msg.method);
63
+ for (const cb of listeners)
64
+ cb(msg.params);
65
+ }
66
+ }
67
+ catch (e) {
68
+ console.error("[RemoteAdapter] Invalid JSON-RPC message", e);
69
+ }
70
+ }
71
+ close() {
72
+ this.ws?.close();
73
+ this.ws = null;
74
+ }
75
+ }
76
+ export class RemotePtyAdapter {
77
+ rpc;
78
+ constructor(rpc) {
79
+ this.rpc = rpc;
80
+ }
81
+ async spawn(options) {
82
+ const res = await this.rpc.request("pty.spawn", options);
83
+ return res.id;
84
+ }
85
+ async write(id, data) {
86
+ const text = typeof data === "string" ? data : new TextDecoder().decode(data);
87
+ this.rpc.notify("pty.write", { id, data: text });
88
+ }
89
+ async resize(id, cols, rows) {
90
+ this.rpc.notify("pty.resize", { id, cols, rows });
91
+ }
92
+ async kill(id) {
93
+ await this.rpc.request("pty.kill", { id });
94
+ }
95
+ onData(id, callback) {
96
+ return this.rpc.on("pty.data", (params) => {
97
+ if (params.id === id)
98
+ callback(params.data);
99
+ });
100
+ }
101
+ onExit(id, callback) {
102
+ return this.rpc.on("pty.exit", (params) => {
103
+ if (params.id === id)
104
+ callback(params.exitCode);
105
+ });
106
+ }
107
+ }
108
+ export class RemoteFsAdapter {
109
+ rpc;
110
+ constructor(rpc) {
111
+ this.rpc = rpc;
112
+ }
113
+ async readFile(path) {
114
+ return this.rpc.request("fs.readFile", { path });
115
+ }
116
+ async writeFile(path, content) {
117
+ return this.rpc.request("fs.writeFile", { path, content });
118
+ }
119
+ async readDir(path) {
120
+ return this.rpc.request("fs.readDir", { path });
121
+ }
122
+ async stat(path) {
123
+ return this.rpc.request("fs.stat", { path });
124
+ }
125
+ }
126
+ export class RemoteGitAdapter {
127
+ rpc;
128
+ constructor(rpc) {
129
+ this.rpc = rpc;
130
+ }
131
+ async getStatus(cwd) {
132
+ return this.rpc.request("git.status", { cwd });
133
+ }
134
+ async getLog(cwd, limit = 50) {
135
+ return this.rpc.request("git.log", { cwd, limit });
136
+ }
137
+ async getDiff(cwd, stagedOnly = false) {
138
+ return this.rpc.request("git.diff", { cwd, stagedOnly });
139
+ }
140
+ async stage(cwd, path) {
141
+ return this.rpc.request("git.stage", { cwd, path });
142
+ }
143
+ async unstage(cwd, path) {
144
+ return this.rpc.request("git.unstage", { cwd, path });
145
+ }
146
+ async commit(cwd, message) {
147
+ return this.rpc.request("git.commit", { cwd, message });
148
+ }
149
+ }
150
+ export class RemoteShellAdapter {
151
+ rpc;
152
+ constructor(rpc) {
153
+ this.rpc = rpc;
154
+ }
155
+ async runCommand(command, cwd, timeoutMs = 10000) {
156
+ return this.rpc.request("shell.runCommand", { command, cwd, timeoutMs });
157
+ }
158
+ }
159
+ export class RemoteHostAdapter {
160
+ pty;
161
+ fs;
162
+ git;
163
+ shell;
164
+ capabilities;
165
+ rpc;
166
+ constructor(serverUrl) {
167
+ this.rpc = new JsonRpcWebSocketClient(serverUrl);
168
+ this.pty = new RemotePtyAdapter(this.rpc);
169
+ this.fs = new RemoteFsAdapter(this.rpc);
170
+ this.git = new RemoteGitAdapter(this.rpc);
171
+ this.shell = new RemoteShellAdapter(this.rpc);
172
+ this.capabilities = {
173
+ hasPersistentStorage: true,
174
+ hasNativePty: true,
175
+ hasDirectFsAccess: true,
176
+ hasLspBinaries: true,
177
+ platform: "linux",
178
+ };
179
+ }
180
+ }
181
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/remote/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { IPtyAdapter, IPtySpawnOptions, IFsAdapter, FsEntry, FsStat, IGitAdapter, GitLogRecord, IShellAdapter, ShellExecResult, IKeychainAdapter, IHostAdapter, HostCapabilities } from "../index.js";
2
+ type TauriInvoke = (cmd: string, args?: Record<string, unknown>) => Promise<any>;
3
+ export declare class TauriPtyAdapter implements IPtyAdapter {
4
+ private invoke;
5
+ constructor(customInvoke?: TauriInvoke);
6
+ spawn(options: IPtySpawnOptions): Promise<number>;
7
+ write(id: number, data: string | Uint8Array): Promise<void>;
8
+ resize(id: number, cols: number, rows: number): Promise<void>;
9
+ kill(id: number): Promise<void>;
10
+ onData(id: number, callback: (data: string | Uint8Array) => void): () => void;
11
+ onExit(id: number, callback: (exitCode: number) => void): () => void;
12
+ }
13
+ export declare class TauriFsAdapter implements IFsAdapter {
14
+ private invoke;
15
+ constructor(customInvoke?: TauriInvoke);
16
+ readFile(path: string): Promise<string>;
17
+ writeFile(path: string, content: string): Promise<void>;
18
+ readDir(path: string): Promise<FsEntry[]>;
19
+ stat(path: string): Promise<FsStat>;
20
+ }
21
+ export declare class TauriGitAdapter implements IGitAdapter {
22
+ private invoke;
23
+ constructor(customInvoke?: TauriInvoke);
24
+ getStatus(cwd: string): Promise<string>;
25
+ getLog(cwd: string, limit?: number): Promise<GitLogRecord[]>;
26
+ getDiff(cwd: string, stagedOnly?: boolean): Promise<string>;
27
+ stage(cwd: string, path: string): Promise<void>;
28
+ unstage(cwd: string, path: string): Promise<void>;
29
+ commit(cwd: string, message: string): Promise<string>;
30
+ }
31
+ export declare class TauriShellAdapter implements IShellAdapter {
32
+ private invoke;
33
+ constructor(customInvoke?: TauriInvoke);
34
+ runCommand(command: string, cwd?: string, timeoutMs?: number): Promise<ShellExecResult>;
35
+ }
36
+ export declare class TauriKeychainAdapter implements IKeychainAdapter {
37
+ private invoke;
38
+ constructor(customInvoke?: TauriInvoke);
39
+ getSecret(key: string): Promise<string | null>;
40
+ setSecret(key: string, value: string): Promise<void>;
41
+ deleteSecret(key: string): Promise<void>;
42
+ }
43
+ export declare class TauriHostAdapter implements IHostAdapter {
44
+ readonly pty: TauriPtyAdapter;
45
+ readonly fs: TauriFsAdapter;
46
+ readonly git: TauriGitAdapter;
47
+ readonly shell: TauriShellAdapter;
48
+ readonly keychain: TauriKeychainAdapter;
49
+ readonly capabilities: HostCapabilities;
50
+ constructor(customInvoke?: TauriInvoke);
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tauri/index.ts"],"names":[],"mappings":"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"}