@myerscarpenter/quest-dev 1.4.1 → 2.0.0
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/.claude/settings.local.json +7 -0
- package/.github/workflows/docs.yml +45 -0
- package/.github/workflows/publish.yml +11 -1
- package/README.md +27 -0
- package/build/cast/decoder.d.ts +48 -0
- package/build/cast/decoder.d.ts.map +1 -0
- package/build/cast/decoder.js +152 -0
- package/build/cast/decoder.js.map +1 -0
- package/build/cast/session.d.ts +87 -0
- package/build/cast/session.d.ts.map +1 -0
- package/build/cast/session.js +565 -0
- package/build/cast/session.js.map +1 -0
- package/build/commands/logcat.d.ts.map +1 -1
- package/build/commands/logcat.js +7 -6
- package/build/commands/logcat.js.map +1 -1
- package/build/commands/screenshot.d.ts.map +1 -1
- package/build/commands/screenshot.js +17 -20
- package/build/commands/screenshot.js.map +1 -1
- package/build/commands/stay-awake.d.ts +2 -15
- package/build/commands/stay-awake.d.ts.map +1 -1
- package/build/commands/stay-awake.js +14 -77
- package/build/commands/stay-awake.js.map +1 -1
- package/build/daemon/cast-manager.d.ts +42 -0
- package/build/daemon/cast-manager.d.ts.map +1 -0
- package/build/daemon/cast-manager.js +243 -0
- package/build/daemon/cast-manager.js.map +1 -0
- package/build/daemon/client.d.ts +40 -0
- package/build/daemon/client.d.ts.map +1 -0
- package/build/daemon/client.js +133 -0
- package/build/daemon/client.js.map +1 -0
- package/build/daemon/daemon.d.ts +20 -0
- package/build/daemon/daemon.d.ts.map +1 -0
- package/build/daemon/daemon.js +130 -0
- package/build/daemon/daemon.js.map +1 -0
- package/build/daemon/deploy.d.ts +44 -0
- package/build/daemon/deploy.d.ts.map +1 -0
- package/build/daemon/deploy.js +230 -0
- package/build/daemon/deploy.js.map +1 -0
- package/build/daemon/logcat-manager.d.ts +39 -0
- package/build/daemon/logcat-manager.d.ts.map +1 -0
- package/build/daemon/logcat-manager.js +194 -0
- package/build/daemon/logcat-manager.js.map +1 -0
- package/build/daemon/server.d.ts +19 -0
- package/build/daemon/server.d.ts.map +1 -0
- package/build/daemon/server.js +482 -0
- package/build/daemon/server.js.map +1 -0
- package/build/daemon/stay-awake-manager.d.ts +22 -0
- package/build/daemon/stay-awake-manager.d.ts.map +1 -0
- package/build/daemon/stay-awake-manager.js +74 -0
- package/build/daemon/stay-awake-manager.js.map +1 -0
- package/build/index.js +272 -45
- package/build/index.js.map +1 -1
- package/build/public/dashboard.js +749 -0
- package/build/public/index.html +12 -0
- package/build/public/style.css +106 -0
- package/build/utils/adb.d.ts +6 -0
- package/build/utils/adb.d.ts.map +1 -1
- package/build/utils/adb.js +62 -66
- package/build/utils/adb.js.map +1 -1
- package/build/utils/casting-apk.d.ts +40 -0
- package/build/utils/casting-apk.d.ts.map +1 -0
- package/build/utils/casting-apk.js +252 -0
- package/build/utils/casting-apk.js.map +1 -0
- package/build/utils/config.d.ts +5 -3
- package/build/utils/config.d.ts.map +1 -1
- package/build/utils/config.js +18 -38
- package/build/utils/config.js.map +1 -1
- package/build/utils/exec.d.ts +5 -0
- package/build/utils/exec.d.ts.map +1 -1
- package/build/utils/exec.js +17 -0
- package/build/utils/exec.js.map +1 -1
- package/build/utils/filename.d.ts +7 -1
- package/build/utils/filename.d.ts.map +1 -1
- package/build/utils/filename.js +17 -2
- package/build/utils/filename.js.map +1 -1
- package/build/utils/filename.test.js +33 -1
- package/build/utils/filename.test.js.map +1 -1
- package/build/utils/jpeg-comment.d.ts +14 -0
- package/build/utils/jpeg-comment.d.ts.map +1 -0
- package/build/utils/jpeg-comment.js +28 -0
- package/build/utils/jpeg-comment.js.map +1 -0
- package/build/utils/test-properties.d.ts +34 -0
- package/build/utils/test-properties.d.ts.map +1 -0
- package/build/utils/test-properties.js +73 -0
- package/build/utils/test-properties.js.map +1 -0
- package/package.json +11 -5
- package/packages/cast2-protocol/README.md +86 -0
- package/packages/cast2-protocol/docs/_config.yml +4 -0
- package/packages/cast2-protocol/docs/feature-flags.md +102 -0
- package/packages/cast2-protocol/docs/index.md +24 -0
- package/packages/cast2-protocol/docs/open-investigations.md +149 -0
- package/packages/cast2-protocol/docs/protocol.md +602 -0
- package/packages/cast2-protocol/package.json +46 -0
- package/packages/cast2-protocol/src/constants.ts +65 -0
- package/packages/cast2-protocol/src/index.ts +7 -0
- package/packages/cast2-protocol/src/mgik.ts +69 -0
- package/packages/cast2-protocol/src/mud.ts +294 -0
- package/packages/cast2-protocol/src/pose.ts +99 -0
- package/packages/cast2-protocol/src/resolutions.ts +34 -0
- package/packages/cast2-protocol/src/types.ts +64 -0
- package/packages/cast2-protocol/src/xrsp.ts +73 -0
- package/packages/cast2-protocol/tests/mgik.test.ts +80 -0
- package/packages/cast2-protocol/tests/mud.test.ts +295 -0
- package/packages/cast2-protocol/tests/pose.test.ts +173 -0
- package/packages/cast2-protocol/tests/xrsp.test.ts +90 -0
- package/packages/cast2-protocol/tsconfig.json +20 -0
- package/pnpm-workspace.yaml +2 -0
- package/src/cast/decoder.ts +178 -0
- package/src/cast/session.ts +708 -0
- package/src/commands/logcat.ts +6 -5
- package/src/commands/screenshot.ts +19 -13
- package/src/commands/stay-awake.ts +22 -91
- package/src/daemon/adbkit-apkreader.d.ts +14 -0
- package/src/daemon/cast-manager.ts +282 -0
- package/src/daemon/client.ts +166 -0
- package/src/daemon/daemon.ts +169 -0
- package/src/daemon/deploy.ts +307 -0
- package/src/daemon/logcat-manager.ts +229 -0
- package/src/daemon/server.ts +595 -0
- package/src/daemon/stay-awake-manager.ts +83 -0
- package/src/index.ts +326 -56
- package/src/public/dashboard.js +288 -0
- package/src/public/index.html +12 -0
- package/src/public/style.css +106 -0
- package/src/utils/adb.ts +70 -57
- package/src/utils/casting-apk.ts +276 -0
- package/src/utils/config.ts +18 -36
- package/src/utils/exec.ts +20 -0
- package/src/utils/filename.test.ts +41 -1
- package/src/utils/filename.ts +18 -2
- package/src/utils/jpeg-comment.ts +30 -0
- package/src/utils/test-properties.ts +94 -0
- package/tests/cast/auto-layer.test.ts +87 -0
- package/tests/cast/decoder.test.ts +82 -0
- package/tests/cast/session-restart.test.ts +107 -0
- package/tests/config.test.ts +17 -22
- package/tests/daemon/api-status.test.ts +82 -0
- package/tests/daemon/cast-manager.test.ts +69 -0
- package/tests/daemon/mjpeg-stream.test.ts +144 -0
- package/tests/daemon/pose-endpoint.test.ts +63 -0
- package/tests/daemon/start-guard.test.ts +77 -0
- package/vitest.config.ts +10 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Quest Cast</title>
|
|
7
|
+
<link rel="stylesheet" href="/style.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<script src="/dashboard.js"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--bg: #0e0e10; --surface: #18181b; --border: #2d2d33;
|
|
3
|
+
--text: #efeff1; --dim: #898991; --accent: #6d5bff;
|
|
4
|
+
--accent2: #9147ff; --green: #00c853; --red: #f44;
|
|
5
|
+
}
|
|
6
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
7
|
+
body {
|
|
8
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
9
|
+
background: var(--bg); color: var(--text);
|
|
10
|
+
display: flex; flex-direction: column; height: 100vh; overflow: hidden;
|
|
11
|
+
user-select: none;
|
|
12
|
+
}
|
|
13
|
+
header {
|
|
14
|
+
display: flex; align-items: center; gap: 12px;
|
|
15
|
+
padding: 8px 16px; background: var(--surface); border-bottom: 1px solid var(--border);
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
}
|
|
18
|
+
header h1 { font-size: 16px; font-weight: 600; }
|
|
19
|
+
#header-cast-btn { margin-left: auto; }
|
|
20
|
+
#status-bar {
|
|
21
|
+
display: flex; align-items: center; gap: 16px; margin-left: auto; font-size: 12px; color: var(--dim);
|
|
22
|
+
}
|
|
23
|
+
#status-bar .val { color: var(--text); font-variant-numeric: tabular-nums; }
|
|
24
|
+
#header-stop-btn { margin-left: 8px; padding: 4px 14px; font-size: 12px; }
|
|
25
|
+
#status-dot {
|
|
26
|
+
width: 8px; height: 8px; border-radius: 50%; background: var(--red);
|
|
27
|
+
align-self: center;
|
|
28
|
+
}
|
|
29
|
+
#status-dot.ok { background: var(--green); }
|
|
30
|
+
.main { display: flex; flex: 1; overflow: hidden; }
|
|
31
|
+
.video-pane {
|
|
32
|
+
flex: 1; display: flex; align-items: center; justify-content: center;
|
|
33
|
+
background: #000; position: relative; min-width: 0;
|
|
34
|
+
}
|
|
35
|
+
#live-frame {
|
|
36
|
+
max-width: 100%; max-height: 100%; object-fit: contain;
|
|
37
|
+
image-rendering: auto;
|
|
38
|
+
}
|
|
39
|
+
#crosshair {
|
|
40
|
+
position: absolute; pointer-events: none;
|
|
41
|
+
width: 24px; height: 24px;
|
|
42
|
+
border: 2px solid rgba(255,255,255,0.4); border-radius: 50%;
|
|
43
|
+
top: 50%; left: 50%; transform: translate(-50%,-50%);
|
|
44
|
+
display: none;
|
|
45
|
+
}
|
|
46
|
+
#crosshair::before, #crosshair::after {
|
|
47
|
+
content: ''; position: absolute; background: rgba(255,255,255,0.4);
|
|
48
|
+
}
|
|
49
|
+
#crosshair::before { width: 1px; height: 8px; top: 50%; left: 50%; transform: translate(-50%,-50%); }
|
|
50
|
+
#crosshair::after { width: 8px; height: 1px; top: 50%; left: 50%; transform: translate(-50%,-50%); }
|
|
51
|
+
.sidebar {
|
|
52
|
+
width: 260px; flex-shrink: 0; background: var(--surface);
|
|
53
|
+
border-left: 1px solid var(--border); display: flex; flex-direction: column;
|
|
54
|
+
overflow-y: auto;
|
|
55
|
+
}
|
|
56
|
+
.panel { padding: 10px 12px; border-bottom: 1px solid var(--border); }
|
|
57
|
+
.panel h2 {
|
|
58
|
+
font-size: 10px; text-transform: uppercase; letter-spacing: .08em;
|
|
59
|
+
color: var(--dim); margin-bottom: 6px;
|
|
60
|
+
}
|
|
61
|
+
button {
|
|
62
|
+
background: var(--accent); color: #fff; border: none; border-radius: 6px;
|
|
63
|
+
padding: 5px 10px; font-size: 11px; cursor: pointer; font-weight: 500;
|
|
64
|
+
transition: opacity .15s;
|
|
65
|
+
}
|
|
66
|
+
button:hover { opacity: .85; }
|
|
67
|
+
button:active { opacity: .7; }
|
|
68
|
+
button.secondary { background: var(--border); }
|
|
69
|
+
button.danger { background: var(--red); }
|
|
70
|
+
.btn-row { display: flex; gap: 4px; }
|
|
71
|
+
.speed-row {
|
|
72
|
+
display: flex; align-items: center; gap: 6px; margin-top: 6px;
|
|
73
|
+
font-size: 10px; color: var(--dim);
|
|
74
|
+
}
|
|
75
|
+
.speed-row input {
|
|
76
|
+
width: 44px; background: var(--bg); color: var(--text);
|
|
77
|
+
border: 1px solid var(--border); border-radius: 4px; padding: 2px 4px;
|
|
78
|
+
font-size: 10px; text-align: center;
|
|
79
|
+
}
|
|
80
|
+
.pose-readout {
|
|
81
|
+
font-size: 10px; font-family: monospace; line-height: 1.5; color: var(--dim);
|
|
82
|
+
margin-bottom: 6px;
|
|
83
|
+
}
|
|
84
|
+
.pose-readout span { display: block; }
|
|
85
|
+
.pose-readout .val { color: var(--text); }
|
|
86
|
+
.keybind-hint {
|
|
87
|
+
font-size: 10px; color: var(--dim); line-height: 1.6;
|
|
88
|
+
}
|
|
89
|
+
.toast {
|
|
90
|
+
position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%);
|
|
91
|
+
background: var(--surface); border: 1px solid var(--border); border-radius: 8px;
|
|
92
|
+
padding: 8px 16px; font-size: 13px; opacity: 0; transition: opacity .3s;
|
|
93
|
+
pointer-events: none; z-index: 100;
|
|
94
|
+
}
|
|
95
|
+
.toast.show { opacity: 1; }
|
|
96
|
+
#drag-overlay {
|
|
97
|
+
position: absolute; inset: 0; cursor: grab; z-index: 2;
|
|
98
|
+
}
|
|
99
|
+
#drag-overlay:active { cursor: grabbing; }
|
|
100
|
+
.video-placeholder {
|
|
101
|
+
display: flex; align-items: center; justify-content: center;
|
|
102
|
+
width: 100%; height: 100%;
|
|
103
|
+
}
|
|
104
|
+
.video-placeholder button {
|
|
105
|
+
font-size: 16px; padding: 12px 28px; border-radius: 8px;
|
|
106
|
+
}
|
package/build/utils/adb.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ADB utilities for Quest device communication
|
|
3
3
|
*/
|
|
4
|
+
/** Set the global ADB device target (IP:port or serial). */
|
|
5
|
+
export declare function setAdbDevice(device: string | undefined): void;
|
|
6
|
+
/** Get the global ADB device target. */
|
|
7
|
+
export declare function getAdbDevice(): string | undefined;
|
|
8
|
+
/** Build ADB args with -s <device> prefix when a target device is set. */
|
|
9
|
+
export declare function adbArgs(...args: string[]): string[];
|
|
4
10
|
/**
|
|
5
11
|
* Check if ADB is available on PATH
|
|
6
12
|
*/
|
package/build/utils/adb.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../../src/utils/adb.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../../src/utils/adb.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,4DAA4D;AAC5D,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE7D;AAED,wCAAwC;AACxC,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,0EAA0E;AAC1E,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAKnD;AA+DD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAiBrC;AAoBD;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAoDtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiB9D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,MAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,CAU/F;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBzG;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,MAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,MAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,MAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAe1D;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAUrD;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,GAAG,UAAU,GAAG,cAAc,CAAC;CACtD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAkC3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAE3D"}
|
package/build/utils/adb.js
CHANGED
|
@@ -6,40 +6,46 @@ import net from 'net';
|
|
|
6
6
|
import { execCommand, execCommandFull } from './exec.js';
|
|
7
7
|
import { verbose } from './verbose.js';
|
|
8
8
|
const CDP_PORT = 9223; // Chrome DevTools Protocol port (Quest browser default)
|
|
9
|
+
/** Escape a string for safe use in adb shell commands. */
|
|
10
|
+
function shellEscape(s) {
|
|
11
|
+
return "'" + s.replace(/'/g, "'\\''") + "'";
|
|
12
|
+
}
|
|
13
|
+
/** Global ADB device target. When set, all adb commands use -s <device>. */
|
|
14
|
+
let targetDevice;
|
|
15
|
+
/** Set the global ADB device target (IP:port or serial). */
|
|
16
|
+
export function setAdbDevice(device) {
|
|
17
|
+
targetDevice = device;
|
|
18
|
+
}
|
|
19
|
+
/** Get the global ADB device target. */
|
|
20
|
+
export function getAdbDevice() {
|
|
21
|
+
return targetDevice;
|
|
22
|
+
}
|
|
23
|
+
/** Build ADB args with -s <device> prefix when a target device is set. */
|
|
24
|
+
export function adbArgs(...args) {
|
|
25
|
+
if (targetDevice) {
|
|
26
|
+
return ["-s", targetDevice, ...args];
|
|
27
|
+
}
|
|
28
|
+
return args;
|
|
29
|
+
}
|
|
9
30
|
/**
|
|
10
31
|
* Get browser process PID
|
|
11
32
|
*/
|
|
12
33
|
async function getBrowserPID(packageName) {
|
|
13
34
|
try {
|
|
14
|
-
const result = await execCommandFull('adb',
|
|
15
|
-
verbose('getBrowserPID
|
|
16
|
-
if (!result.stdout)
|
|
35
|
+
const result = await execCommandFull('adb', adbArgs('shell', 'pidof', shellEscape(packageName)));
|
|
36
|
+
verbose('getBrowserPID pidof output:', result.stdout?.trim());
|
|
37
|
+
if (!result.stdout?.trim())
|
|
17
38
|
return null;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (line.includes('grep'))
|
|
24
|
-
continue; // Skip grep itself
|
|
25
|
-
const parts = line.trim().split(/\s+/);
|
|
26
|
-
if (parts.length >= 2) {
|
|
27
|
-
// Check that the process name is exactly the package (last column)
|
|
28
|
-
const processName = parts[parts.length - 1];
|
|
29
|
-
if (processName === packageName) {
|
|
30
|
-
const pid = parseInt(parts[1], 10);
|
|
31
|
-
verbose('getBrowserPID found PID:', pid, 'for', packageName);
|
|
32
|
-
return pid;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
verbose('getBrowserPID: no exact match for', packageName);
|
|
39
|
+
const pid = parseInt(result.stdout.trim().split(/\s+/)[0], 10);
|
|
40
|
+
if (isNaN(pid))
|
|
41
|
+
return null;
|
|
42
|
+
verbose('getBrowserPID found PID:', pid, 'for', packageName);
|
|
43
|
+
return pid;
|
|
37
44
|
}
|
|
38
45
|
catch (e) {
|
|
39
46
|
verbose('getBrowserPID error:', e);
|
|
40
47
|
return null;
|
|
41
48
|
}
|
|
42
|
-
return null;
|
|
43
49
|
}
|
|
44
50
|
/**
|
|
45
51
|
* Detect CDP socket for a browser
|
|
@@ -52,10 +58,7 @@ async function detectCDPSocket(packageName) {
|
|
|
52
58
|
const socketName = `chrome_devtools_remote_${pid}`;
|
|
53
59
|
for (let attempt = 0; attempt < 5; attempt++) {
|
|
54
60
|
try {
|
|
55
|
-
const result = await execCommandFull('adb',
|
|
56
|
-
'shell',
|
|
57
|
-
`cat /proc/net/unix | grep ${socketName}`
|
|
58
|
-
]);
|
|
61
|
+
const result = await execCommandFull('adb', adbArgs('shell', 'cat', '/proc/net/unix'));
|
|
59
62
|
if (result.stdout.includes(socketName)) {
|
|
60
63
|
verbose('detectCDPSocket: found PID-specific socket:', socketName, `(attempt ${attempt + 1})`);
|
|
61
64
|
return socketName;
|
|
@@ -127,9 +130,23 @@ async function restartADBServer() {
|
|
|
127
130
|
*/
|
|
128
131
|
export async function checkADBDevices(retryCount = 0) {
|
|
129
132
|
try {
|
|
133
|
+
const target = getAdbDevice();
|
|
130
134
|
const output = await execCommand('adb', ['devices']);
|
|
131
135
|
const lines = output.trim().split('\n').slice(1); // Skip header
|
|
132
|
-
|
|
136
|
+
let devices = lines.filter(line => line.trim() && !line.includes('List of devices'));
|
|
137
|
+
// If a target device is configured, check it's in the list
|
|
138
|
+
if (target) {
|
|
139
|
+
const targetOnline = devices.some(line => line.includes(target) && line.includes('device'));
|
|
140
|
+
if (!targetOnline) {
|
|
141
|
+
console.error(`Error: Configured device ${target} not found or offline`);
|
|
142
|
+
console.error('');
|
|
143
|
+
console.error('Check connection: adb connect ' + target);
|
|
144
|
+
console.error('');
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
// Filter to just the target device for the count
|
|
148
|
+
devices = devices.filter(line => line.includes(target));
|
|
149
|
+
}
|
|
133
150
|
if (devices.length === 0) {
|
|
134
151
|
console.error('Error: No ADB devices connected');
|
|
135
152
|
console.error('');
|
|
@@ -190,18 +207,18 @@ export async function ensurePortForwarding(port, browser = 'com.oculus.browser')
|
|
|
190
207
|
const cdpSocket = await detectCDPSocket(browser);
|
|
191
208
|
const cdpPort = getCDPPortForSocket(cdpSocket);
|
|
192
209
|
// Check reverse forwarding (Quest -> Host for dev server)
|
|
193
|
-
const reverseList = await execCommand('adb',
|
|
210
|
+
const reverseList = await execCommand('adb', adbArgs('reverse', '--list'));
|
|
194
211
|
const reverseExists = reverseList.includes(`tcp:${port}`);
|
|
195
212
|
if (reverseExists) {
|
|
196
213
|
console.log(`ADB reverse port forwarding already set up: Quest:${port} -> Host:${port}`);
|
|
197
214
|
}
|
|
198
215
|
else {
|
|
199
|
-
await execCommand('adb',
|
|
216
|
+
await execCommand('adb', adbArgs('reverse', `tcp:${port}`, `tcp:${port}`));
|
|
200
217
|
console.log(`ADB reverse port forwarding set up: Quest:${port} -> Host:${port}`);
|
|
201
218
|
}
|
|
202
219
|
// Check forward forwarding (Host -> Quest for CDP)
|
|
203
220
|
// First check if ADB already has this forwarding set up
|
|
204
|
-
const forwardList = await execCommand('adb',
|
|
221
|
+
const forwardList = await execCommand('adb', adbArgs('forward', '--list'));
|
|
205
222
|
const forwardExists = forwardList.includes(`tcp:${cdpPort}`) && forwardList.includes(cdpSocket);
|
|
206
223
|
if (forwardExists) {
|
|
207
224
|
console.log(`CDP port ${cdpPort} forwarding already set up`);
|
|
@@ -220,7 +237,7 @@ export async function ensurePortForwarding(port, browser = 'com.oculus.browser')
|
|
|
220
237
|
console.error('');
|
|
221
238
|
process.exit(1);
|
|
222
239
|
}
|
|
223
|
-
await execCommand('adb',
|
|
240
|
+
await execCommand('adb', adbArgs('forward', `tcp:${cdpPort}`, `localabstract:${cdpSocket}`));
|
|
224
241
|
console.log(`ADB forward port forwarding set up: Host:${cdpPort} -> Quest:${cdpSocket} (CDP)`);
|
|
225
242
|
}
|
|
226
243
|
}
|
|
@@ -234,22 +251,10 @@ export async function ensurePortForwarding(port, browser = 'com.oculus.browser')
|
|
|
234
251
|
*/
|
|
235
252
|
export async function isBrowserRunning(browser = 'com.oculus.browser') {
|
|
236
253
|
try {
|
|
237
|
-
const result = await execCommandFull('adb',
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
for (const line of lines) {
|
|
242
|
-
if (line.includes('grep'))
|
|
243
|
-
continue;
|
|
244
|
-
const parts = line.trim().split(/\s+/);
|
|
245
|
-
const processName = parts[parts.length - 1];
|
|
246
|
-
if (processName === browser) {
|
|
247
|
-
verbose('isBrowserRunning:', browser, 'YES (PID', parts[1] + ')');
|
|
248
|
-
return true;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
verbose('isBrowserRunning:', browser, 'NO (zygote/child only)');
|
|
252
|
-
return false;
|
|
254
|
+
const result = await execCommandFull('adb', adbArgs('shell', 'pidof', shellEscape(browser)));
|
|
255
|
+
const running = result.code === 0 && result.stdout.trim().length > 0;
|
|
256
|
+
verbose('isBrowserRunning:', browser, running ? 'YES' : 'NO');
|
|
257
|
+
return running;
|
|
253
258
|
}
|
|
254
259
|
catch (error) {
|
|
255
260
|
verbose('isBrowserRunning error:', error);
|
|
@@ -262,16 +267,7 @@ export async function isBrowserRunning(browser = 'com.oculus.browser') {
|
|
|
262
267
|
export async function launchBrowser(url, browser = 'com.oculus.browser') {
|
|
263
268
|
console.log('Launching browser...');
|
|
264
269
|
try {
|
|
265
|
-
await execCommand('adb',
|
|
266
|
-
'shell',
|
|
267
|
-
'am',
|
|
268
|
-
'start',
|
|
269
|
-
'-a',
|
|
270
|
-
'android.intent.action.VIEW',
|
|
271
|
-
'-d',
|
|
272
|
-
url,
|
|
273
|
-
browser
|
|
274
|
-
]);
|
|
270
|
+
await execCommand('adb', adbArgs('shell', 'am', 'start', '-a', 'android.intent.action.VIEW', '-d', url, browser));
|
|
275
271
|
console.log(`Browser launched with URL: ${url}`);
|
|
276
272
|
return true;
|
|
277
273
|
}
|
|
@@ -296,7 +292,7 @@ export async function ensureCDPForwarding(browser = 'com.oculus.browser') {
|
|
|
296
292
|
const cdpSocket = await detectCDPSocket(browser);
|
|
297
293
|
const cdpPort = getCDPPortForSocket(cdpSocket);
|
|
298
294
|
// Check forward forwarding (Host -> Quest for CDP)
|
|
299
|
-
const forwardList = await execCommand('adb',
|
|
295
|
+
const forwardList = await execCommand('adb', adbArgs('forward', '--list'));
|
|
300
296
|
const forwardExists = forwardList.includes(`tcp:${cdpPort}`) && forwardList.includes(cdpSocket);
|
|
301
297
|
if (forwardExists) {
|
|
302
298
|
console.log(`CDP port ${cdpPort} forwarding already set up`);
|
|
@@ -315,7 +311,7 @@ export async function ensureCDPForwarding(browser = 'com.oculus.browser') {
|
|
|
315
311
|
console.error('');
|
|
316
312
|
process.exit(1);
|
|
317
313
|
}
|
|
318
|
-
await execCommand('adb',
|
|
314
|
+
await execCommand('adb', adbArgs('forward', `tcp:${cdpPort}`, `localabstract:${cdpSocket}`));
|
|
319
315
|
console.log(`ADB forward port forwarding set up: Host:${cdpPort} -> Quest:${cdpSocket} (CDP)`);
|
|
320
316
|
}
|
|
321
317
|
}
|
|
@@ -334,7 +330,7 @@ export async function refreshCDPForwarding(browser = 'com.oculus.browser') {
|
|
|
334
330
|
const cdpSocket = await detectCDPSocket(browser);
|
|
335
331
|
const cdpPort = getCDPPortForSocket(cdpSocket);
|
|
336
332
|
// Check if forwarding already points to the correct socket
|
|
337
|
-
const forwardList = await execCommand('adb',
|
|
333
|
+
const forwardList = await execCommand('adb', adbArgs('forward', '--list'));
|
|
338
334
|
verbose('refreshCDPForwarding: detected socket:', cdpSocket, 'port:', cdpPort);
|
|
339
335
|
verbose('refreshCDPForwarding: current forwards:', forwardList.trim());
|
|
340
336
|
// Check exact match: the forward line must end with the exact socket name
|
|
@@ -346,9 +342,9 @@ export async function refreshCDPForwarding(browser = 'com.oculus.browser') {
|
|
|
346
342
|
// Remove existing forwarding on CDP port and re-create with correct socket
|
|
347
343
|
if (forwardList.includes(`tcp:${cdpPort}`)) {
|
|
348
344
|
verbose('refreshCDPForwarding: removing stale forwarding on port', cdpPort);
|
|
349
|
-
await execCommandFull('adb',
|
|
345
|
+
await execCommandFull('adb', adbArgs('forward', '--remove', `tcp:${cdpPort}`));
|
|
350
346
|
}
|
|
351
|
-
await execCommand('adb',
|
|
347
|
+
await execCommand('adb', adbArgs('forward', `tcp:${cdpPort}`, `localabstract:${cdpSocket}`));
|
|
352
348
|
console.log(`CDP forwarding updated: Host:${cdpPort} -> Quest:${cdpSocket}`);
|
|
353
349
|
}
|
|
354
350
|
catch (error) {
|
|
@@ -361,7 +357,7 @@ export async function refreshCDPForwarding(browser = 'com.oculus.browser') {
|
|
|
361
357
|
* After reboot, user must click notification to allow file access
|
|
362
358
|
*/
|
|
363
359
|
export async function checkUSBFileTransfer() {
|
|
364
|
-
const result = await execCommandFull('adb',
|
|
360
|
+
const result = await execCommandFull('adb', adbArgs('shell', 'ls', '/sdcard/'));
|
|
365
361
|
if (result.code !== 0 ||
|
|
366
362
|
result.stdout.includes('Permission denied') ||
|
|
367
363
|
result.stderr.includes('Permission denied')) {
|
|
@@ -380,7 +376,7 @@ export async function checkUSBFileTransfer() {
|
|
|
380
376
|
* Screenshots cannot be taken when the display is off
|
|
381
377
|
*/
|
|
382
378
|
export async function checkQuestAwake() {
|
|
383
|
-
const result = await execCommandFull('adb',
|
|
379
|
+
const result = await execCommandFull('adb', adbArgs('shell', 'dumpsys', 'power'));
|
|
384
380
|
if (result.stdout.includes('mWakefulness=Asleep')) {
|
|
385
381
|
console.error('Error: Quest display is off');
|
|
386
382
|
console.error('');
|
|
@@ -393,7 +389,7 @@ export async function checkQuestAwake() {
|
|
|
393
389
|
* Get Quest battery info as structured data
|
|
394
390
|
*/
|
|
395
391
|
export async function getBatteryInfo() {
|
|
396
|
-
const result = await execCommandFull('adb',
|
|
392
|
+
const result = await execCommandFull('adb', adbArgs('shell', 'dumpsys', 'battery'));
|
|
397
393
|
if (result.code !== 0) {
|
|
398
394
|
throw new Error('Failed to get battery status');
|
|
399
395
|
}
|
package/build/utils/adb.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../../src/utils/adb.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adb.js","sourceRoot":"","sources":["../../src/utils/adb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Casting APK extraction and installation utilities.
|
|
3
|
+
*
|
|
4
|
+
* The casting service APK ships inside Meta Quest Developer Hub (MQDH).
|
|
5
|
+
*
|
|
6
|
+
* Supported MQDH sources:
|
|
7
|
+
* - macOS: /Applications/Meta Quest Developer Hub.app (or any .app bundle)
|
|
8
|
+
* - macOS: .dmg file (mounted, APKs extracted from the .app inside)
|
|
9
|
+
* - Windows: .exe.zip or .exe (NSIS installer, extracted via 7z)
|
|
10
|
+
* - Any platform: pre-extracted directory containing the APK files
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Try to find MQDH on this machine without user input.
|
|
14
|
+
* Returns the path if found, null otherwise.
|
|
15
|
+
*/
|
|
16
|
+
export declare function findInstalledMqdh(): string | null;
|
|
17
|
+
/**
|
|
18
|
+
* Extract the casting APK from a MQDH source.
|
|
19
|
+
*
|
|
20
|
+
* Accepts:
|
|
21
|
+
* - macOS .app bundle (e.g. /Applications/Meta Quest Developer Hub.app)
|
|
22
|
+
* - macOS .dmg disk image
|
|
23
|
+
* - Windows .exe.zip or .exe (requires 7z)
|
|
24
|
+
* - Any directory containing the APK file
|
|
25
|
+
*/
|
|
26
|
+
export declare function extractCastingApk(source: string): Promise<string>;
|
|
27
|
+
/** Check whether the casting APK has been extracted locally */
|
|
28
|
+
export declare function hasCastingApk(): boolean;
|
|
29
|
+
/** Check if casting service is installed on the connected Quest device */
|
|
30
|
+
export declare function isCastingInstalled(device: string): Promise<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Install the casting APK onto the Quest device.
|
|
33
|
+
*
|
|
34
|
+
* Uses the release APK which matches the system app's signing certificate.
|
|
35
|
+
* This installs as UPDATED_SYSTEM_APP, preserving privileged permissions.
|
|
36
|
+
*/
|
|
37
|
+
export declare function installCastingApk(device: string): Promise<void>;
|
|
38
|
+
/** Ensure casting service is installed, installing if needed. */
|
|
39
|
+
export declare function ensureCastingInstalled(device: string): Promise<boolean>;
|
|
40
|
+
//# sourceMappingURL=casting-apk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"casting-apk.d.ts","sourceRoot":"","sources":["../../src/utils/casting-apk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuBH;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAWjD;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+CvE;AAuGD,+DAA+D;AAC/D,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,0EAA0E;AAC1E,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASzE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAerE;AAED,iEAAiE;AACjE,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB7E"}
|