test fro node-pty

This commit is contained in:
2025-03-18 21:48:17 +08:00
parent b6e0b142d8
commit 27ac19a045
5 changed files with 45 additions and 51 deletions

View File

@@ -26,18 +26,19 @@
"@types/electron": "^1.6.12", "@types/electron": "^1.6.12",
"@types/node": "^22.13.9", "@types/node": "^22.13.9",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"typescript": "^5.8.2", "electron": "^35.0.0",
"electron-builder": "^25.1.8", "electron-builder": "^25.1.8",
"electron-log": "^5.3.2", "electron-log": "^5.3.2",
"typescript": "^5.8.2",
"vite": "^6.2.1", "vite": "^6.2.1",
"vite-plugin-electron": "^0.29.0", "vite-plugin-electron": "^0.29.0",
"electron": "^35.0.0",
"vite-plugin-static-copy": "^2.3.0" "vite-plugin-static-copy": "^2.3.0"
}, },
"dependencies": { "dependencies": {
"@kevisual/assistant-module": "^0.0.3", "@kevisual/assistant-module": "^0.0.3",
"@kevisual/use-config": "^1.0.9", "@kevisual/use-config": "^1.0.9",
"electron-updater": "^6.3.9" "electron-updater": "^6.3.9",
"node-pty": "^1.0.0"
}, },
"build": { "build": {
"appId": "cn.silkeyai.assistant", "appId": "cn.silkeyai.assistant",

64
pnpm-lock.yaml generated
View File

@@ -11,12 +11,15 @@ importers:
'@kevisual/assistant-module': '@kevisual/assistant-module':
specifier: ^0.0.3 specifier: ^0.0.3
version: 0.0.3 version: 0.0.3
'@kevisual/router':
specifier: ^0.0.9
version: 0.0.9
'@kevisual/use-config': '@kevisual/use-config':
specifier: ^1.0.9 specifier: ^1.0.9
version: 1.0.9 version: 1.0.9
electron-updater:
specifier: ^6.3.9
version: 6.3.9
node-pty:
specifier: ^1.0.0
version: 1.0.0
devDependencies: devDependencies:
'@rollup/plugin-commonjs': '@rollup/plugin-commonjs':
specifier: ^28.0.3 specifier: ^28.0.3
@@ -42,9 +45,6 @@ importers:
electron-log: electron-log:
specifier: ^5.3.2 specifier: ^5.3.2
version: 5.3.2 version: 5.3.2
electron-updater:
specifier: ^6.3.9
version: 6.3.9
typescript: typescript:
specifier: ^5.8.2 specifier: ^5.8.2
version: 5.8.2 version: 5.8.2
@@ -260,9 +260,6 @@ packages:
'@kevisual/load@0.0.4': '@kevisual/load@0.0.4':
resolution: {integrity: sha512-TJBieKsEoEPfP4+tDyhNZdMX2LMAGiDZ/IrAXPFWB4jeFP0Ywm1W5xDV52LhhHq4nwTmuhyTVmPxJYiEVYTHtA==} resolution: {integrity: sha512-TJBieKsEoEPfP4+tDyhNZdMX2LMAGiDZ/IrAXPFWB4jeFP0Ywm1W5xDV52LhhHq4nwTmuhyTVmPxJYiEVYTHtA==}
'@kevisual/router@0.0.9':
resolution: {integrity: sha512-qPyC2GVJ7iOIdJCCKNDsWMAKOQeSJW9HBpL5ZWKHTbi+t4jJBGTzIlXmjKeMHRd0lr/Qq1imQvlkSh4hlrbodA==}
'@kevisual/use-config@1.0.9': '@kevisual/use-config@1.0.9':
resolution: {integrity: sha512-lJz98WWL178QUaf/rkM9feMm0aUnYd6ikm3ma/9Zi/K2QNrxbTRAgMGkCggUalAES8IbUvEsg+Q+Y2RaPLxCmw==} resolution: {integrity: sha512-lJz98WWL178QUaf/rkM9feMm0aUnYd6ikm3ma/9Zi/K2QNrxbTRAgMGkCggUalAES8IbUvEsg+Q+Y2RaPLxCmw==}
@@ -468,9 +465,6 @@ packages:
'@types/ms@2.1.0': '@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/node-forge@1.3.11':
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
'@types/node@22.13.9': '@types/node@22.13.9':
resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==} resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==}
@@ -1446,6 +1440,9 @@ packages:
ms@2.1.3: ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
nan@2.22.2:
resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==}
nanoid@3.3.8: nanoid@3.3.8:
resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -1465,15 +1462,14 @@ packages:
node-api-version@0.2.0: node-api-version@0.2.0:
resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==} resolution: {integrity: sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==}
node-forge@1.3.1:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
node-gyp@9.4.1: node-gyp@9.4.1:
resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==}
engines: {node: ^12.13 || ^14.13 || >=16} engines: {node: ^12.13 || ^14.13 || >=16}
hasBin: true hasBin: true
node-pty@1.0.0:
resolution: {integrity: sha512-wtBMWWS7dFZm/VgqElrTvtfMq4GzJ6+edFI0Y0zyzygUSZMgZdraDUMUhCIvkjhJjme15qWmbyJbtAx4ot4uZA==}
nopt@6.0.0: nopt@6.0.0:
resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
@@ -1545,10 +1541,6 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'} engines: {node: '>=16 || 14 >=14.18'}
path-to-regexp@8.2.0:
resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
engines: {node: '>=16'}
pe-library@0.4.1: pe-library@0.4.1:
resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==} resolution: {integrity: sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==}
engines: {node: '>=12', npm: '>=6'} engines: {node: '>=12', npm: '>=6'}
@@ -1693,10 +1685,6 @@ packages:
sax@1.4.1: sax@1.4.1:
resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
selfsigned@2.4.1:
resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==}
engines: {node: '>=10'}
semver-compare@1.0.0: semver-compare@1.0.0:
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
@@ -2190,15 +2178,6 @@ snapshots:
dependencies: dependencies:
eventemitter3: 5.0.1 eventemitter3: 5.0.1
'@kevisual/router@0.0.9':
dependencies:
path-to-regexp: 8.2.0
selfsigned: 2.4.1
ws: 8.18.1
transitivePeerDependencies:
- bufferutil
- utf-8-validate
'@kevisual/use-config@1.0.9': '@kevisual/use-config@1.0.9':
dependencies: dependencies:
'@kevisual/load': 0.0.4 '@kevisual/load': 0.0.4
@@ -2367,10 +2346,6 @@ snapshots:
'@types/ms@2.1.0': {} '@types/ms@2.1.0': {}
'@types/node-forge@1.3.11':
dependencies:
'@types/node': 22.13.9
'@types/node@22.13.9': '@types/node@22.13.9':
dependencies: dependencies:
undici-types: 6.20.0 undici-types: 6.20.0
@@ -3533,6 +3508,8 @@ snapshots:
ms@2.1.3: {} ms@2.1.3: {}
nan@2.22.2: {}
nanoid@3.3.8: {} nanoid@3.3.8: {}
negotiator@0.6.4: {} negotiator@0.6.4: {}
@@ -3548,8 +3525,6 @@ snapshots:
dependencies: dependencies:
semver: 7.7.1 semver: 7.7.1
node-forge@1.3.1: {}
node-gyp@9.4.1: node-gyp@9.4.1:
dependencies: dependencies:
env-paths: 2.2.1 env-paths: 2.2.1
@@ -3567,6 +3542,10 @@ snapshots:
- bluebird - bluebird
- supports-color - supports-color
node-pty@1.0.0:
dependencies:
nan: 2.22.2
nopt@6.0.0: nopt@6.0.0:
dependencies: dependencies:
abbrev: 1.1.1 abbrev: 1.1.1
@@ -3634,8 +3613,6 @@ snapshots:
lru-cache: 10.4.3 lru-cache: 10.4.3
minipass: 7.1.2 minipass: 7.1.2
path-to-regexp@8.2.0: {}
pe-library@0.4.1: {} pe-library@0.4.1: {}
pend@1.2.0: {} pend@1.2.0: {}
@@ -3794,11 +3771,6 @@ snapshots:
sax@1.4.1: {} sax@1.4.1: {}
selfsigned@2.4.1:
dependencies:
'@types/node-forge': 1.3.11
node-forge: 1.3.1
semver-compare@1.0.0: semver-compare@1.0.0:
optional: true optional: true

View File

@@ -1,3 +1 @@
import { useContextKey } from '@kevisual/use-config/context';
export { log, getLogPath } from './logger.ts'; export { log, getLogPath } from './logger.ts';

View File

@@ -9,6 +9,8 @@ import { checkShowPage } from './window/page/index.ts';
import { closeProcess, createProcess } from './process/index.ts'; import { closeProcess, createProcess } from './process/index.ts';
import { getElectronResourcePath, isMac } from './system/env.ts'; import { getElectronResourcePath, isMac } from './system/env.ts';
import { checkForUpdates } from './updater/index.ts'; import { checkForUpdates } from './updater/index.ts';
// @ts-ignore
const __filename = fileURLToPath(import.meta.url); const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename); const __dirname = path.dirname(__filename);

21
src/main/terminal/pty.ts Normal file
View File

@@ -0,0 +1,21 @@
import * as pty from 'node-pty';
export function createPty(cmd: string) {
const ptyProcess = pty.spawn(cmd, [], {
name: 'xterm-color',
cols: 80,
rows: 30,
cwd: process.env.HOME,
env: process.env,
});
ptyProcess.onData((data) => {
process.stdout.write(data);
});
ptyProcess.write('ls\r');
ptyProcess.resize(100, 40);
ptyProcess.write('ls\r');
}
createPty('ls');