@shadanai/openme 0.1.0 → 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.
- package/README.md +53 -0
- package/dist/proxy/ttyd-manager.js +10 -1
- package/dist/proxy/ttyd-manager.js.map +1 -1
- package/package.json +6 -3
- package/scripts/install-ttyd.js +92 -0
package/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# OpenMe
|
|
2
|
+
|
|
3
|
+
Personal AI Data Runtime. Unified agent orchestration + personal data engine.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
# 组织
|
|
8
|
+
傻蛋AI,qupintu@gmail.com,shadanai
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install -g @shadanai/openme
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Requirements
|
|
15
|
+
|
|
16
|
+
- Node.js >= 22
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
openme --help
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Commands
|
|
25
|
+
|
|
26
|
+
- `openme init` - Initialize OpenMe workspace
|
|
27
|
+
- `openme start` - Start the OpenMe runtime
|
|
28
|
+
- `openme stop` - Stop the OpenMe runtime
|
|
29
|
+
- `openme status` - Check runtime status
|
|
30
|
+
- `openme agent` - Manage AI agents
|
|
31
|
+
- `openme datasource` - Manage data sources
|
|
32
|
+
- `openme workspace` - Manage workspace settings
|
|
33
|
+
- `openme install` - Install dependencies
|
|
34
|
+
|
|
35
|
+
## Development
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Install dependencies
|
|
39
|
+
npm install
|
|
40
|
+
|
|
41
|
+
# Build
|
|
42
|
+
npm run build
|
|
43
|
+
|
|
44
|
+
# Development mode
|
|
45
|
+
npm run dev
|
|
46
|
+
|
|
47
|
+
# Run locally
|
|
48
|
+
npm start
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## License
|
|
52
|
+
|
|
53
|
+
MIT
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import { spawn, execSync } from 'node:child_process';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { join, dirname } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
function getTtydPath() {
|
|
8
|
+
const localTtyd = join(__dirname, '..', '..', 'bin', 'ttyd', process.platform === 'win32' ? 'ttyd.exe' : 'ttyd');
|
|
9
|
+
return existsSync(localTtyd) ? localTtyd : 'ttyd';
|
|
10
|
+
}
|
|
3
11
|
export class TtydManager {
|
|
4
12
|
basePort;
|
|
5
13
|
maxSessions;
|
|
@@ -25,7 +33,8 @@ export class TtydManager {
|
|
|
25
33
|
'-t', 'theme={"background":"#0d1117","foreground":"#c9d1d9"}',
|
|
26
34
|
'-t', 'disableResizeOverlay=true',
|
|
27
35
|
...cmd.split(/\s+/)];
|
|
28
|
-
const
|
|
36
|
+
const ttydPath = getTtydPath();
|
|
37
|
+
const proc = spawn(ttydPath, args, { stdio: 'ignore', detached: false });
|
|
29
38
|
proc.on('exit', () => this.sessions.delete(id));
|
|
30
39
|
const meta = {
|
|
31
40
|
id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttyd-manager.js","sourceRoot":"","sources":["../../src/proxy/ttyd-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ttyd-manager.js","sourceRoot":"","sources":["../../src/proxy/ttyd-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAgB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,SAAS,WAAW;IAClB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjH,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AACpD,CAAC;AAUD,MAAM,OAAO,WAAW;IAKZ;IACA;IALF,QAAQ,GAAG,IAAI,GAAG,EAAqD,CAAC;IACxE,QAAQ,CAAS;IAEzB,YACU,WAAW,IAAI,EACf,cAAc,CAAC;QADf,aAAQ,GAAR,QAAQ,CAAO;QACf,gBAAW,GAAX,WAAW,CAAI;QAEvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,CAAC,WAAW,WAAW,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE7B,mCAAmC;QACnC,IAAI,CAAC;YACH,QAAQ,CAAC,YAAY,IAAI,8BAA8B,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa;YACzD,IAAI,EAAE,uDAAuD;YAC7D,IAAI,EAAE,2BAA2B;YACjC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAEvB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEhD,MAAM,IAAI,GAAgB;YACxB,EAAE;YACF,GAAG;YACH,IAAI;YACJ,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,EAAU;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrB,IAAI,CAAC;YAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;IAC1C,CAAC;IAED,OAAO;QACL,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shadanai/openme",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "OpenMe — Personal AI Data Runtime. Unified agent orchestration + personal data engine.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "tsc",
|
|
11
11
|
"dev": "tsc --watch",
|
|
12
|
-
"start": "node dist/cli/index.js"
|
|
12
|
+
"start": "node dist/cli/index.js",
|
|
13
|
+
"postinstall": "node scripts/install-ttyd.js"
|
|
13
14
|
},
|
|
14
15
|
"engines": {
|
|
15
16
|
"node": ">=22"
|
|
@@ -34,7 +35,9 @@
|
|
|
34
35
|
"files": [
|
|
35
36
|
"dist",
|
|
36
37
|
"bin",
|
|
37
|
-
"ui"
|
|
38
|
+
"ui",
|
|
39
|
+
"scripts",
|
|
40
|
+
"!bin/ttyd"
|
|
38
41
|
],
|
|
39
42
|
"license": "MIT"
|
|
40
43
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createWriteStream, chmodSync, existsSync, mkdirSync } from 'fs';
|
|
3
|
+
import { get } from 'https';
|
|
4
|
+
import { join, dirname } from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import { exec } from 'child_process';
|
|
7
|
+
import { promisify } from 'util';
|
|
8
|
+
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
|
|
12
|
+
const TTYD_VERSION = '1.7.7';
|
|
13
|
+
const BIN_DIR = join(__dirname, '..', 'bin', 'ttyd');
|
|
14
|
+
|
|
15
|
+
const PLATFORMS = {
|
|
16
|
+
'win32-x64': `https://github.com/tsl0922/ttyd/releases/download/${TTYD_VERSION}/ttyd.exe`,
|
|
17
|
+
'darwin-x64': `https://github.com/tsl0922/ttyd/releases/download/${TTYD_VERSION}/ttyd.x86_64`,
|
|
18
|
+
'darwin-arm64': `https://github.com/tsl0922/ttyd/releases/download/${TTYD_VERSION}/ttyd.arm64`,
|
|
19
|
+
'linux-x64': `https://github.com/tsl0922/ttyd/releases/download/${TTYD_VERSION}/ttyd.x86_64`,
|
|
20
|
+
'linux-arm64': `https://github.com/tsl0922/ttyd/releases/download/${TTYD_VERSION}/ttyd.arm64`,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
async function checkSystemTtyd() {
|
|
24
|
+
try {
|
|
25
|
+
await execAsync('ttyd --version');
|
|
26
|
+
console.log('✓ ttyd already installed on system');
|
|
27
|
+
return true;
|
|
28
|
+
} catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function download(url, dest) {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
const file = createWriteStream(dest);
|
|
36
|
+
get(url, (response) => {
|
|
37
|
+
if (response.statusCode === 302 || response.statusCode === 301) {
|
|
38
|
+
download(response.headers.location, dest).then(resolve).catch(reject);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
response.pipe(file);
|
|
42
|
+
file.on('finish', () => {
|
|
43
|
+
file.close();
|
|
44
|
+
resolve();
|
|
45
|
+
});
|
|
46
|
+
}).on('error', (err) => {
|
|
47
|
+
reject(err);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async function installTtyd() {
|
|
53
|
+
if (await checkSystemTtyd()) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const platform = process.platform;
|
|
58
|
+
const arch = process.arch;
|
|
59
|
+
const key = `${platform}-${arch}`;
|
|
60
|
+
const url = PLATFORMS[key];
|
|
61
|
+
|
|
62
|
+
if (!url) {
|
|
63
|
+
console.warn(`⚠ ttyd binary not available for ${platform}-${arch}`);
|
|
64
|
+
console.warn('Please install ttyd manually:');
|
|
65
|
+
console.warn(' macOS: brew install ttyd');
|
|
66
|
+
console.warn(' Linux: sudo apt-get install ttyd');
|
|
67
|
+
console.warn(' Windows: scoop install ttyd');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
console.log(`Downloading ttyd for ${platform}-${arch}...`);
|
|
72
|
+
|
|
73
|
+
if (!existsSync(BIN_DIR)) {
|
|
74
|
+
mkdirSync(BIN_DIR, { recursive: true });
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const filename = platform === 'win32' ? 'ttyd.exe' : 'ttyd';
|
|
78
|
+
const dest = join(BIN_DIR, filename);
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
await download(url, dest);
|
|
82
|
+
if (platform !== 'win32') {
|
|
83
|
+
chmodSync(dest, 0o755);
|
|
84
|
+
}
|
|
85
|
+
console.log('✓ ttyd installed successfully');
|
|
86
|
+
} catch (err) {
|
|
87
|
+
console.error('✗ Failed to download ttyd:', err.message);
|
|
88
|
+
console.warn('Please install ttyd manually');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
installTtyd().catch(console.error);
|