@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 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 proc = spawn('ttyd', args, { stdio: 'ignore', detached: false });
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":"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"}
1
+ {"version":3,"file":"ttyd-manager.js","sourceRoot":"","sources":["../../src/proxy/ttyd-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shadanai/openme",
3
- "version": "0.1.0",
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);