@mmmbuto/nexuscrew 0.2.1 → 0.2.3

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.
Files changed (52) hide show
  1. package/README.md +122 -67
  2. package/bin/nexuscrew.js +194 -470
  3. package/frontend/dist/assets/{index-BG1N7bSL.js → index-BsldfYnr.js} +1704 -1711
  4. package/frontend/dist/assets/index-DcQGg3dp.css +1 -0
  5. package/frontend/dist/index.html +3 -11
  6. package/lib/server/routes/hosts.js +22 -12
  7. package/lib/server/routes/launchers.js +12 -0
  8. package/lib/server/routes/models.js +16 -63
  9. package/lib/server/routes/runtime.js +10 -0
  10. package/lib/server/routes/send.js +97 -258
  11. package/lib/server/routes/sessions.js +13 -42
  12. package/lib/server/routes/status.js +18 -22
  13. package/lib/server/routes/tmux.js +88 -0
  14. package/lib/server/server.js +60 -81
  15. package/lib/services/engine-discovery.js +192 -445
  16. package/lib/services/log-watcher.js +22 -40
  17. package/lib/services/session-store.js +88 -62
  18. package/lib/services/tmux-manager.js +111 -173
  19. package/package.json +6 -10
  20. package/frontend/dist/apple-touch-icon.png +0 -0
  21. package/frontend/dist/assets/index-CiAtinNP.css +0 -1
  22. package/frontend/dist/favicon.svg +0 -20
  23. package/frontend/dist/icon-192.png +0 -0
  24. package/frontend/dist/icon-512.png +0 -0
  25. package/frontend/dist/site.webmanifest +0 -29
  26. package/lib/config/hosts.js +0 -67
  27. package/lib/config/manager.js +0 -379
  28. package/lib/config/models.js +0 -408
  29. package/lib/server/db/adapter.js +0 -274
  30. package/lib/server/db/drivers/sql-js.js +0 -75
  31. package/lib/server/db/migrate.js +0 -174
  32. package/lib/server/db/migrations/001_base_schema.sql +0 -70
  33. package/lib/server/middleware/auth.js +0 -134
  34. package/lib/server/middleware/rate-limit.js +0 -63
  35. package/lib/server/models/User.js +0 -128
  36. package/lib/server/routes/auth.js +0 -168
  37. package/lib/server/routes/keys.js +0 -28
  38. package/lib/server/routes/runtimes.js +0 -34
  39. package/lib/server/routes/speech.js +0 -46
  40. package/lib/server/routes/upload.js +0 -135
  41. package/lib/server/routes/wake-lock.js +0 -95
  42. package/lib/server/routes/workspaces.js +0 -101
  43. package/lib/server/services/attachment-manager.js +0 -57
  44. package/lib/server/services/context-bridge.js +0 -425
  45. package/lib/server/services/runtime-manager.js +0 -462
  46. package/lib/server/services/speech-manager.js +0 -76
  47. package/lib/server/services/summary-generator.js +0 -309
  48. package/lib/server/services/workspace-manager.js +0 -79
  49. package/lib/services/remote-pane-watcher.js +0 -155
  50. package/lib/setup/postinstall.js +0 -38
  51. package/lib/utils/paths.js +0 -124
  52. package/lib/utils/termux.js +0 -182
@@ -1,182 +0,0 @@
1
- /**
2
- * Termux Detection and Utilities
3
- */
4
-
5
- const fs = require('fs');
6
- const path = require('path');
7
- const { execSync, spawn } = require('child_process');
8
-
9
- /**
10
- * Check if running in Termux environment
11
- */
12
- function isTermux() {
13
- return (
14
- process.platform === 'android' ||
15
- process.env.PREFIX?.includes('com.termux') ||
16
- process.env.TERMUX_VERSION !== undefined
17
- );
18
- }
19
-
20
- /**
21
- * Get Termux prefix path
22
- */
23
- function getPrefix() {
24
- return process.env.PREFIX || '/data/data/com.termux/files/usr';
25
- }
26
-
27
- function getServiceDir(serviceName = 'nexuscrew') {
28
- return path.join(getPrefix(), 'var', 'service', serviceName);
29
- }
30
-
31
- function getStartServicesScript() {
32
- return path.join(getPrefix(), 'etc', 'profile.d', 'start-services.sh');
33
- }
34
-
35
- /**
36
- * Check if a Termux package is installed
37
- */
38
- function isPackageInstalled(pkg) {
39
- try {
40
- execSync(`which ${pkg}`, { stdio: 'ignore' });
41
- return true;
42
- } catch {
43
- return false;
44
- }
45
- }
46
-
47
- /**
48
- * Install a Termux package
49
- */
50
- function installPackage(pkg) {
51
- try {
52
- execSync(`pkg install -y ${pkg}`, { stdio: 'inherit' });
53
- return true;
54
- } catch (error) {
55
- return false;
56
- }
57
- }
58
-
59
- /**
60
- * Check if Termux:API app is working
61
- */
62
- function isTermuxApiWorking() {
63
- try {
64
- execSync('termux-battery-status', { timeout: 5000, stdio: 'ignore' });
65
- return true;
66
- } catch {
67
- return false;
68
- }
69
- }
70
-
71
- /**
72
- * Check if Termux:Boot is available
73
- */
74
- function isTermuxBootAvailable() {
75
- const bootDir = path.join(process.env.HOME, '.termux', 'boot');
76
- return fs.existsSync(bootDir);
77
- }
78
-
79
- function isTermuxServicesAvailable() {
80
- return fs.existsSync(getStartServicesScript()) && isPackageInstalled('sv');
81
- }
82
-
83
- /**
84
- * Acquire Termux wake lock
85
- */
86
- function acquireWakeLock() {
87
- if (!isTermux()) return false;
88
- try {
89
- spawn('termux-wake-lock', [], { detached: true, stdio: 'ignore' }).unref();
90
- return true;
91
- } catch {
92
- return false;
93
- }
94
- }
95
-
96
- /**
97
- * Release Termux wake lock
98
- */
99
- function releaseWakeLock() {
100
- if (!isTermux()) return false;
101
- try {
102
- spawn('termux-wake-unlock', [], { detached: true, stdio: 'ignore' }).unref();
103
- return true;
104
- } catch {
105
- return false;
106
- }
107
- }
108
-
109
- /**
110
- * Send Termux notification
111
- */
112
- function sendNotification(title, content, id = 'nexuscrew') {
113
- if (!isTermux()) return false;
114
- try {
115
- execSync(`termux-notification --id ${id} --title "${title}" --content "${content}"`, {
116
- stdio: 'ignore'
117
- });
118
- return true;
119
- } catch {
120
- return false;
121
- }
122
- }
123
-
124
- /**
125
- * Get required Termux packages
126
- */
127
- function getRequiredPackages() {
128
- return ['termux-api', 'termux-tools'];
129
- }
130
-
131
- /**
132
- * Check all required packages
133
- */
134
- function checkRequiredPackages() {
135
- const packages = getRequiredPackages();
136
- const status = {};
137
-
138
- for (const pkg of packages) {
139
- status[pkg] = isPackageInstalled(pkg);
140
- }
141
-
142
- return status;
143
- }
144
-
145
- function openUrl(url) {
146
- try {
147
- if (isTermux() && isPackageInstalled('termux-open-url')) {
148
- spawn('termux-open-url', [url], { detached: true, stdio: 'ignore' }).unref();
149
- return true;
150
- }
151
-
152
- if (process.platform === 'darwin') {
153
- spawn('open', [url], { detached: true, stdio: 'ignore' }).unref();
154
- return true;
155
- }
156
-
157
- if (isPackageInstalled('xdg-open')) {
158
- spawn('xdg-open', [url], { detached: true, stdio: 'ignore' }).unref();
159
- return true;
160
- }
161
- } catch {}
162
-
163
- return false;
164
- }
165
-
166
- module.exports = {
167
- isTermux,
168
- getPrefix,
169
- getServiceDir,
170
- getStartServicesScript,
171
- isPackageInstalled,
172
- installPackage,
173
- isTermuxApiWorking,
174
- isTermuxBootAvailable,
175
- isTermuxServicesAvailable,
176
- acquireWakeLock,
177
- releaseWakeLock,
178
- sendNotification,
179
- getRequiredPackages,
180
- checkRequiredPackages,
181
- openUrl
182
- };