@desktalk/miniapp-terminal 0.1.0-alpha.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,6 @@
1
+ {
2
+ "packageName": "@desktalk/miniapp-terminal",
3
+ "packageScope": "terminal",
4
+ "locales": [],
5
+ "messages": []
6
+ }
package/dist/meta.json ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "iconFile": "icons/miniapp-terminal-icon.png"
3
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Command safety analyzer for the Terminal MiniApp.
3
+ *
4
+ * Tokenizes shell input, checks each segment against block/warn lists,
5
+ * and returns a safety classification. Runs on the backend so it cannot
6
+ * be bypassed by a modified frontend.
7
+ */
8
+ import type { SafetyAnalysisResult } from './types';
9
+ /**
10
+ * Split a shell command line into individual command segments by splitting
11
+ * on shell operators: ; && || | \n
12
+ *
13
+ * This is a simplified tokenizer — it does not handle quoted strings or
14
+ * escaped characters perfectly, but it covers the common cases for safety
15
+ * gating purposes.
16
+ */
17
+ export declare function tokenize(input: string): string[];
18
+ /**
19
+ * Extract the program name (first word) from a command segment.
20
+ * Handles env var assignments (e.g., `FOO=bar cmd`) and sudo/env prefixes.
21
+ */
22
+ export declare function extractProgram(segment: string): string;
23
+ /**
24
+ * Analyze a command string for safety.
25
+ *
26
+ * Returns a SafetyAnalysisResult with the overall level (worst of all segments)
27
+ * and per-segment details.
28
+ */
29
+ export declare function analyzeCommand(input: string): SafetyAnalysisResult;
30
+ //# sourceMappingURL=safety-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-analyzer.d.ts","sourceRoot":"","sources":["../src/safety-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAe,oBAAoB,EAAkB,MAAM,SAAS,CAAC;AAsDjF;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUtD;AAID;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAoDlE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=safety-analyzer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-analyzer.test.d.ts","sourceRoot":"","sources":["../src/safety-analyzer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ /** Shared data types for the Terminal MiniApp. */
2
+ export interface TerminalTab {
3
+ tabId: string;
4
+ label: string;
5
+ cwd: string;
6
+ pid: number;
7
+ running: boolean;
8
+ createdAt: string;
9
+ }
10
+ export type SafetyLevel = 'safe' | 'warn' | 'block';
11
+ export interface SafetyAnalysisResult {
12
+ level: SafetyLevel;
13
+ command: string;
14
+ reason?: string;
15
+ segments: CommandSegment[];
16
+ }
17
+ export interface CommandSegment {
18
+ raw: string;
19
+ program: string;
20
+ level: SafetyLevel;
21
+ reason?: string;
22
+ }
23
+ /** Payload for terminal.output events (backend → frontend). */
24
+ export interface TerminalOutputEvent {
25
+ tabId: string;
26
+ data: string;
27
+ }
28
+ /** Payload for terminal.exit events (backend → frontend). */
29
+ export interface TerminalExitEvent {
30
+ tabId: string;
31
+ exitCode: number;
32
+ }
33
+ /** Payload for terminal.confirm events (backend → frontend). */
34
+ export interface TerminalConfirmEvent {
35
+ tabId: string;
36
+ command: string;
37
+ risk: string;
38
+ requestId: string;
39
+ }
40
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB"}
Binary file
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@desktalk/miniapp-terminal",
3
+ "version": "0.1.0-alpha.1",
4
+ "description": "Terminal MiniApp for DeskTalk.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/vincentdchan/DeskTalk.git",
10
+ "directory": "packages/miniapp-terminal"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "icon": "./icons/miniapp-terminal-icon.png",
16
+ "files": [
17
+ "dist",
18
+ "icons"
19
+ ],
20
+ "exports": {
21
+ "./backend": {
22
+ "types": "./dist/backend.d.ts",
23
+ "import": "./dist/backend.js"
24
+ },
25
+ "./frontend": {
26
+ "types": "./dist/frontend.d.ts",
27
+ "import": "./dist/frontend.js"
28
+ }
29
+ },
30
+ "dependencies": {
31
+ "@xterm/xterm": "^5.5.0",
32
+ "@xterm/addon-fit": "^0.10.0",
33
+ "@xterm/addon-web-links": "^0.11.0",
34
+ "@xterm/addon-webgl": "^0.18.0",
35
+ "node-pty": "^1.0.0",
36
+ "react": "^19.0.0",
37
+ "react-dom": "^19.0.0",
38
+ "@desktalk/sdk": "0.1.0-alpha.1"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.7.0",
42
+ "@types/react": "^19.0.0",
43
+ "@types/react-dom": "^19.0.0",
44
+ "vitest": "^3.0.0"
45
+ },
46
+ "scripts": {
47
+ "build": "desktalk-build",
48
+ "clean": "rm -rf dist",
49
+ "unit:test": "vitest run"
50
+ }
51
+ }