codeloop-mcp-server 0.1.88 → 0.1.95
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 +30 -0
- package/dist/evidence/change_coverage.d.ts +41 -0
- package/dist/evidence/change_coverage.d.ts.map +1 -1
- package/dist/evidence/change_coverage.js +69 -2
- package/dist/evidence/change_coverage.js.map +1 -1
- package/dist/evidence/interaction_coverage.d.ts.map +1 -1
- package/dist/evidence/interaction_coverage.js +2 -0
- package/dist/evidence/interaction_coverage.js.map +1 -1
- package/dist/evidence/interaction_evidence.d.ts +38 -0
- package/dist/evidence/interaction_evidence.d.ts.map +1 -1
- package/dist/evidence/interaction_evidence.js +60 -0
- package/dist/evidence/interaction_evidence.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +311 -57
- package/dist/index.js.map +1 -1
- package/dist/runners/active_target.d.ts +31 -0
- package/dist/runners/active_target.d.ts.map +1 -0
- package/dist/runners/active_target.js +65 -0
- package/dist/runners/active_target.js.map +1 -0
- package/dist/runners/android_sdk.d.ts +50 -0
- package/dist/runners/android_sdk.d.ts.map +1 -0
- package/dist/runners/android_sdk.js +123 -0
- package/dist/runners/android_sdk.js.map +1 -0
- package/dist/runners/app_launcher.d.ts +59 -1
- package/dist/runners/app_launcher.d.ts.map +1 -1
- package/dist/runners/app_launcher.js +184 -33
- package/dist/runners/app_launcher.js.map +1 -1
- package/dist/runners/app_logger.d.ts +1 -1
- package/dist/runners/app_logger.d.ts.map +1 -1
- package/dist/runners/app_logger.js +9 -8
- package/dist/runners/app_logger.js.map +1 -1
- package/dist/runners/device_probe.d.ts +18 -0
- package/dist/runners/device_probe.d.ts.map +1 -1
- package/dist/runners/device_probe.js +52 -22
- package/dist/runners/device_probe.js.map +1 -1
- package/dist/runners/interaction_engine.d.ts +6 -0
- package/dist/runners/interaction_engine.d.ts.map +1 -1
- package/dist/runners/interaction_engine.js +71 -21
- package/dist/runners/interaction_engine.js.map +1 -1
- package/dist/runners/ios_sim_input.d.ts +106 -0
- package/dist/runners/ios_sim_input.d.ts.map +1 -0
- package/dist/runners/ios_sim_input.js +453 -0
- package/dist/runners/ios_sim_input.js.map +1 -0
- package/dist/runners/journey_to_maestro.d.ts +27 -0
- package/dist/runners/journey_to_maestro.d.ts.map +1 -1
- package/dist/runners/journey_to_maestro.js +54 -0
- package/dist/runners/journey_to_maestro.js.map +1 -1
- package/dist/runners/logging_readiness.d.ts.map +1 -1
- package/dist/runners/logging_readiness.js +38 -7
- package/dist/runners/logging_readiness.js.map +1 -1
- package/dist/runners/maestro.d.ts +27 -2
- package/dist/runners/maestro.d.ts.map +1 -1
- package/dist/runners/maestro.js +57 -7
- package/dist/runners/maestro.js.map +1 -1
- package/dist/runners/maestro_generator.d.ts +1 -1
- package/dist/runners/maestro_generator.d.ts.map +1 -1
- package/dist/runners/maestro_generator.js +3 -2
- package/dist/runners/maestro_generator.js.map +1 -1
- package/dist/runners/screenshot.d.ts +6 -0
- package/dist/runners/screenshot.d.ts.map +1 -1
- package/dist/runners/screenshot.js +20 -10
- package/dist/runners/screenshot.js.map +1 -1
- package/dist/runners/semantics_audit.d.ts +32 -0
- package/dist/runners/semantics_audit.d.ts.map +1 -0
- package/dist/runners/semantics_audit.js +140 -0
- package/dist/runners/semantics_audit.js.map +1 -0
- package/dist/runners/video_recorder.d.ts +3 -1
- package/dist/runners/video_recorder.d.ts.map +1 -1
- package/dist/runners/video_recorder.js +44 -12
- package/dist/runners/video_recorder.js.map +1 -1
- package/dist/runners/wayland.d.ts +32 -0
- package/dist/runners/wayland.d.ts.map +1 -0
- package/dist/runners/wayland.js +49 -0
- package/dist/runners/wayland.js.map +1 -0
- package/dist/runners/window_manager.d.ts +55 -25
- package/dist/runners/window_manager.d.ts.map +1 -1
- package/dist/runners/window_manager.js +171 -71
- package/dist/runners/window_manager.js.map +1 -1
- package/dist/tools/discover_interactions.d.ts +22 -0
- package/dist/tools/discover_interactions.d.ts.map +1 -1
- package/dist/tools/discover_interactions.js +283 -6
- package/dist/tools/discover_interactions.js.map +1 -1
- package/dist/tools/discover_screens.d.ts +2 -0
- package/dist/tools/discover_screens.d.ts.map +1 -1
- package/dist/tools/discover_screens.js +139 -1
- package/dist/tools/discover_screens.js.map +1 -1
- package/dist/tools/gate_check.d.ts.map +1 -1
- package/dist/tools/gate_check.js +16 -2
- package/dist/tools/gate_check.js.map +1 -1
- package/dist/tools/plan_change_journey.d.ts.map +1 -1
- package/dist/tools/plan_change_journey.js +15 -2
- package/dist/tools/plan_change_journey.js.map +1 -1
- package/dist/tools/plan_user_journey.d.ts.map +1 -1
- package/dist/tools/plan_user_journey.js +5 -2
- package/dist/tools/plan_user_journey.js.map +1 -1
- package/dist/tools/run_journey.d.ts +70 -0
- package/dist/tools/run_journey.d.ts.map +1 -1
- package/dist/tools/run_journey.js +209 -21
- package/dist/tools/run_journey.js.map +1 -1
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +55 -11
- package/dist/tools/verify.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
2
|
+
import { join, relative } from "path";
|
|
3
|
+
const SKIP_DIRS = new Set([
|
|
4
|
+
"node_modules", ".git", "build", ".dart_tool", ".codeloop", "artifacts",
|
|
5
|
+
"ios", "android", "macos", "windows", "linux", "web", "test", ".idea",
|
|
6
|
+
]);
|
|
7
|
+
const MAX_FILES = 400;
|
|
8
|
+
const WINDOW_CAP = 700;
|
|
9
|
+
const LOOKBACK = 200;
|
|
10
|
+
/**
|
|
11
|
+
* The widget's OWN argument span: from its opening paren to the balanced
|
|
12
|
+
* closing paren (capped). A fixed-width window would leak the NEXT widget's
|
|
13
|
+
* Text(...) into this widget's label check and silence real findings.
|
|
14
|
+
*/
|
|
15
|
+
function argSpan(content, openParenIdx) {
|
|
16
|
+
let depth = 0;
|
|
17
|
+
const end = Math.min(content.length, openParenIdx + WINDOW_CAP);
|
|
18
|
+
for (let i = openParenIdx; i < end; i++) {
|
|
19
|
+
const c = content[i];
|
|
20
|
+
if (c === "(")
|
|
21
|
+
depth++;
|
|
22
|
+
else if (c === ")") {
|
|
23
|
+
depth--;
|
|
24
|
+
if (depth === 0)
|
|
25
|
+
return content.substring(openParenIdx, i + 1);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return content.substring(openParenIdx, end);
|
|
29
|
+
}
|
|
30
|
+
function collectDartFiles(dir, depth, out) {
|
|
31
|
+
if (out.length >= MAX_FILES || depth > 8)
|
|
32
|
+
return;
|
|
33
|
+
let entries;
|
|
34
|
+
try {
|
|
35
|
+
entries = readdirSync(dir);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
for (const e of entries) {
|
|
41
|
+
if (out.length >= MAX_FILES)
|
|
42
|
+
return;
|
|
43
|
+
if (SKIP_DIRS.has(e) || e.startsWith("."))
|
|
44
|
+
continue;
|
|
45
|
+
const full = join(dir, e);
|
|
46
|
+
let st;
|
|
47
|
+
try {
|
|
48
|
+
st = statSync(full);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (st.isDirectory())
|
|
54
|
+
collectDartFiles(full, depth + 1, out);
|
|
55
|
+
else if (st.isFile() && e.endsWith(".dart") && !e.endsWith("_test.dart"))
|
|
56
|
+
out.push(full);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function lineOf(content, index) {
|
|
60
|
+
return content.slice(0, index).split("\n").length;
|
|
61
|
+
}
|
|
62
|
+
/** Any label source inside the widget's argument window? */
|
|
63
|
+
function hasLabelInWindow(window) {
|
|
64
|
+
return (/\bText\s*\(/.test(window) ||
|
|
65
|
+
/\btooltip\s*:/.test(window) ||
|
|
66
|
+
/\bsemanticLabel\s*:/.test(window) ||
|
|
67
|
+
/\bsemanticsLabel\s*:/.test(window) ||
|
|
68
|
+
/\blabel\s*:/.test(window) ||
|
|
69
|
+
/\bSemantics\s*\(/.test(window));
|
|
70
|
+
}
|
|
71
|
+
/** Wrapped in Semantics(/Tooltip(/MergeSemantics( just above the widget? */
|
|
72
|
+
function hasLabelWrapper(lookback) {
|
|
73
|
+
return /\b(Semantics|Tooltip|MergeSemantics)\s*\(\s*$|\b(Semantics|Tooltip|MergeSemantics)\s*\([^)]*$/.test(lookback);
|
|
74
|
+
}
|
|
75
|
+
function auditFile(file, cwd, findings) {
|
|
76
|
+
let content;
|
|
77
|
+
try {
|
|
78
|
+
content = readFileSync(file, "utf-8");
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const rel = relative(cwd, file);
|
|
84
|
+
const flag = (idx, widget, reason) => {
|
|
85
|
+
findings.push({ source_file: rel, line: lineOf(content, idx), widget, reason });
|
|
86
|
+
};
|
|
87
|
+
// Balanced span of the widget's own arguments (the regexes end on `\(`).
|
|
88
|
+
const spanFor = (m) => argSpan(content, (m.index ?? 0) + m[0].length - 1);
|
|
89
|
+
const lookbackAt = (idx) => content.substring(Math.max(0, idx - LOOKBACK), idx);
|
|
90
|
+
// Icon-only controls: IconButton / FloatingActionButton (the .extended
|
|
91
|
+
// constructor has a label: slot, which hasLabelInWindow already accepts).
|
|
92
|
+
for (const m of content.matchAll(/\b(IconButton|FloatingActionButton)\s*(?:\.\w+\s*)?\(/g)) {
|
|
93
|
+
const idx = m.index ?? 0;
|
|
94
|
+
if (hasLabelInWindow(spanFor(m)) || hasLabelWrapper(lookbackAt(idx)))
|
|
95
|
+
continue;
|
|
96
|
+
flag(idx, m[1], "icon-only control without tooltip:/semanticLabel:/Semantics wrapper");
|
|
97
|
+
}
|
|
98
|
+
// Button family: child is usually Text(...), but icon-only children slip
|
|
99
|
+
// through (e.g. TextButton(child: Icon(...))).
|
|
100
|
+
for (const m of content.matchAll(/\b(ElevatedButton|TextButton|OutlinedButton|FilledButton|CupertinoButton)\s*(?:\.\w+\s*)?\(/g)) {
|
|
101
|
+
const idx = m.index ?? 0;
|
|
102
|
+
if (hasLabelInWindow(spanFor(m)) || hasLabelWrapper(lookbackAt(idx)))
|
|
103
|
+
continue;
|
|
104
|
+
flag(idx, m[1], "button without child Text/label:/tooltip — not matchable by visible text");
|
|
105
|
+
}
|
|
106
|
+
// Bare tap regions: only flagged when they actually handle taps AND render
|
|
107
|
+
// no text in their own argument span.
|
|
108
|
+
for (const m of content.matchAll(/\b(GestureDetector|InkWell)\s*\(/g)) {
|
|
109
|
+
const idx = m.index ?? 0;
|
|
110
|
+
const span = spanFor(m);
|
|
111
|
+
if (!/\bonTap\s*:/.test(span))
|
|
112
|
+
continue;
|
|
113
|
+
if (hasLabelInWindow(span) || hasLabelWrapper(lookbackAt(idx)))
|
|
114
|
+
continue;
|
|
115
|
+
flag(idx, m[1], "tappable region with onTap: but no Text/Semantics in its subtree window");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Audit a Flutter project's lib/ for unlabeled interactive widgets.
|
|
120
|
+
* Non-Flutter projects (no pubspec.yaml) return applicable:false.
|
|
121
|
+
*/
|
|
122
|
+
export function auditFlutterSemantics(cwd) {
|
|
123
|
+
if (!existsSync(join(cwd, "pubspec.yaml"))) {
|
|
124
|
+
return { applicable: false, scanned_files: 0, findings: [], summary: "Not a Flutter project (no pubspec.yaml)." };
|
|
125
|
+
}
|
|
126
|
+
const files = [];
|
|
127
|
+
const libDir = join(cwd, "lib");
|
|
128
|
+
if (existsSync(libDir))
|
|
129
|
+
collectDartFiles(libDir, 0, files);
|
|
130
|
+
else
|
|
131
|
+
collectDartFiles(cwd, 0, files);
|
|
132
|
+
const findings = [];
|
|
133
|
+
for (const f of files)
|
|
134
|
+
auditFile(f, cwd, findings);
|
|
135
|
+
const summary = findings.length === 0
|
|
136
|
+
? `Semantics audit clean: all interactive widgets in ${files.length} Dart file(s) carry a text/tooltip/Semantics label.`
|
|
137
|
+
: `${findings.length} interactive widget(s) across ${files.length} Dart file(s) have NO visible text, tooltip, or Semantics label — they are invisible to label-based driving (Maestro) and to screen readers.`;
|
|
138
|
+
return { applicable: true, scanned_files: files.length, findings, summary };
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=semantics_audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantics_audit.js","sourceRoot":"","sources":["../../src/runners/semantics_audit.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export declare function recordVideo(outputDir: string, durationSeconds?: number,
|
|
|
33
33
|
* - "ios_simulator": xcrun simctl io booted recordVideo
|
|
34
34
|
* - "browser": ffmpeg or Playwright recordVideo
|
|
35
35
|
*/
|
|
36
|
-
export declare function startBackgroundRecording(outputDir: string, appName: string, maxDurationSeconds?: number, targetType?: TargetType): Promise<BackgroundRecordingHandle | {
|
|
36
|
+
export declare function startBackgroundRecording(outputDir: string, appName: string, maxDurationSeconds?: number, targetType?: TargetType, device?: string): Promise<BackgroundRecordingHandle | {
|
|
37
37
|
error: string;
|
|
38
38
|
}>;
|
|
39
39
|
/**
|
|
@@ -55,6 +55,8 @@ export declare function getActiveRecordingAppName(): string | null;
|
|
|
55
55
|
* Get the target type from any currently active recording.
|
|
56
56
|
*/
|
|
57
57
|
export declare function getActiveRecordingTargetType(): string | null;
|
|
58
|
+
/** Pinned device (adb serial / sim UDID) of any active recording. */
|
|
59
|
+
export declare function getActiveRecordingDevice(): string | null;
|
|
58
60
|
export declare function getActiveRecordingIds(): string[];
|
|
59
61
|
export declare function getActiveRecordingLogPath(recordingId: string): string | null;
|
|
60
62
|
//# sourceMappingURL=video_recorder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_recorder.d.ts","sourceRoot":"","sources":["../../src/runners/video_recorder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"video_recorder.d.ts","sourceRoot":"","sources":["../../src/runners/video_recorder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AA4GtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB;AAeD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,MAAW,EAC5B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoCpD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,kBAAkB,GAAE,MAAY,EAChC,UAAU,GAAE,UAAsB,EAClC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,yBAAyB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgOxD;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAsFpD;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAKzD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,GAAG,IAAI,CAK5D;AAED,qEAAqE;AACrE,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAKxD;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5E"}
|
|
@@ -5,6 +5,7 @@ import { spawn, execFile } from "child_process";
|
|
|
5
5
|
import { runCommand, checkToolAvailable } from "./base.js";
|
|
6
6
|
import { findWindowId, bringAppToFront, restorePreviousApp, getWindowBounds, checkDependency } from "./window_manager.js";
|
|
7
7
|
import { startLogCapture, stopLogCapture } from "./app_logger.js";
|
|
8
|
+
import { waylandDirective, x11Display } from "./wayland.js";
|
|
8
9
|
/**
|
|
9
10
|
* Parse all macOS avfoundation screen capture device indices.
|
|
10
11
|
* Returns a map of screen index → ffmpeg device index, e.g. { 0: "4", 1: "5" }.
|
|
@@ -145,7 +146,7 @@ export async function recordVideo(outputDir, durationSeconds = 10, appName) {
|
|
|
145
146
|
* - "ios_simulator": xcrun simctl io booted recordVideo
|
|
146
147
|
* - "browser": ffmpeg or Playwright recordVideo
|
|
147
148
|
*/
|
|
148
|
-
export async function startBackgroundRecording(outputDir, appName, maxDurationSeconds = 120, targetType = "desktop") {
|
|
149
|
+
export async function startBackgroundRecording(outputDir, appName, maxDurationSeconds = 120, targetType = "desktop", device) {
|
|
149
150
|
mkdirSync(outputDir, { recursive: true });
|
|
150
151
|
const os = platform();
|
|
151
152
|
const recordingId = `rec_${Date.now()}`;
|
|
@@ -158,7 +159,9 @@ export async function startBackgroundRecording(outputDir, appName, maxDurationSe
|
|
|
158
159
|
if (depErr)
|
|
159
160
|
return { error: depErr };
|
|
160
161
|
const devicePath = "/sdcard/codeloop_rec.mp4";
|
|
162
|
+
const sel = device ? ["-s", device] : [];
|
|
161
163
|
child = spawn("adb", [
|
|
164
|
+
...sel,
|
|
162
165
|
"shell", "screenrecord", "--time-limit", String(Math.min(maxDurationSeconds, 180)),
|
|
163
166
|
devicePath,
|
|
164
167
|
], { cwd: process.cwd(), stdio: "pipe", detached: false });
|
|
@@ -169,9 +172,10 @@ export async function startBackgroundRecording(outputDir, appName, maxDurationSe
|
|
|
169
172
|
previousApp: "",
|
|
170
173
|
startedAt: Date.now(),
|
|
171
174
|
targetType,
|
|
175
|
+
device,
|
|
172
176
|
});
|
|
173
177
|
child.on("exit", () => { });
|
|
174
|
-
const logResult = await startLogCapture(logsDir, appName, targetType);
|
|
178
|
+
const logResult = await startLogCapture(logsDir, appName, targetType, undefined, device);
|
|
175
179
|
const hasLog = !("error" in logResult);
|
|
176
180
|
if (hasLog) {
|
|
177
181
|
const rec = activeRecordings.get(recordingId);
|
|
@@ -199,7 +203,7 @@ export async function startBackgroundRecording(outputDir, appName, maxDurationSe
|
|
|
199
203
|
if (depErr)
|
|
200
204
|
return { error: depErr };
|
|
201
205
|
child = spawn("xcrun", [
|
|
202
|
-
"simctl", "io", "booted", "recordVideo", "--codec=h264", outputPath,
|
|
206
|
+
"simctl", "io", device || "booted", "recordVideo", "--codec=h264", outputPath,
|
|
203
207
|
], { cwd: process.cwd(), stdio: "pipe", detached: false });
|
|
204
208
|
activeRecordings.set(recordingId, {
|
|
205
209
|
process: child,
|
|
@@ -208,9 +212,10 @@ export async function startBackgroundRecording(outputDir, appName, maxDurationSe
|
|
|
208
212
|
previousApp: "",
|
|
209
213
|
startedAt: Date.now(),
|
|
210
214
|
targetType,
|
|
215
|
+
device,
|
|
211
216
|
});
|
|
212
217
|
child.on("exit", () => { });
|
|
213
|
-
const logResult = await startLogCapture(logsDir, appName, targetType);
|
|
218
|
+
const logResult = await startLogCapture(logsDir, appName, targetType, undefined, device);
|
|
214
219
|
const hasLog = !("error" in logResult);
|
|
215
220
|
if (hasLog) {
|
|
216
221
|
const rec = activeRecordings.get(recordingId);
|
|
@@ -246,7 +251,12 @@ export async function startBackgroundRecording(outputDir, appName, maxDurationSe
|
|
|
246
251
|
"-i", `${screenMatch.deviceIndex}:none`,
|
|
247
252
|
];
|
|
248
253
|
if (bounds && bounds.width > 0 && bounds.height > 0) {
|
|
249
|
-
|
|
254
|
+
// avfoundation captures PHYSICAL pixels while CGWindowList bounds
|
|
255
|
+
// are logical pts. Use the display's real backingScaleFactor
|
|
256
|
+
// (emitted by getWindowBoundsMacOS) instead of assuming Retina-2x —
|
|
257
|
+
// external 1x monitors and future 3x panels crop wrong otherwise.
|
|
258
|
+
const backing = bounds._backing_scale;
|
|
259
|
+
const scale = backing && backing > 0 ? backing : 2;
|
|
250
260
|
const cropW = bounds.width * scale;
|
|
251
261
|
const cropH = bounds.height * scale;
|
|
252
262
|
// Crop coordinates must be relative to the captured screen's origin,
|
|
@@ -297,15 +307,23 @@ export async function startBackgroundRecording(outputDir, appName, maxDurationSe
|
|
|
297
307
|
}
|
|
298
308
|
}
|
|
299
309
|
else {
|
|
310
|
+
// Wayland-only sessions can't be captured by x11grab — degrade with the
|
|
311
|
+
// structured remediation directive instead of a cryptic ffmpeg error.
|
|
312
|
+
const wayland = waylandDirective();
|
|
313
|
+
if (wayland) {
|
|
314
|
+
await restorePreviousApp(previousApp);
|
|
315
|
+
return { error: wayland };
|
|
316
|
+
}
|
|
300
317
|
// x11grab has the same BGRA pixel-format issue as gdigrab — encode to
|
|
301
318
|
// h264/yuv420p so downstream tools (interaction_replay, players) can
|
|
302
|
-
// decode the MP4 portably.
|
|
319
|
+
// decode the MP4 portably. Honour $DISPLAY for Xvfb / nested-X setups.
|
|
320
|
+
const display = x11Display();
|
|
303
321
|
const bounds = await getWindowBounds(appName);
|
|
304
322
|
if (bounds && bounds.width > 0 && bounds.height > 0) {
|
|
305
323
|
child = spawn("ffmpeg", [
|
|
306
324
|
"-f", "x11grab", "-framerate", "10",
|
|
307
325
|
"-video_size", `${bounds.width}x${bounds.height}`,
|
|
308
|
-
"-i",
|
|
326
|
+
"-i", `${display}+${bounds.x},${bounds.y}`,
|
|
309
327
|
"-c:v", "libx264", "-preset", "ultrafast", "-pix_fmt", "yuv420p",
|
|
310
328
|
"-t", String(maxDurationSeconds), "-y", outputPath,
|
|
311
329
|
], { cwd: process.cwd(), stdio: "pipe", detached: false });
|
|
@@ -313,7 +331,7 @@ export async function startBackgroundRecording(outputDir, appName, maxDurationSe
|
|
|
313
331
|
else {
|
|
314
332
|
child = spawn("ffmpeg", [
|
|
315
333
|
"-f", "x11grab", "-framerate", "10", "-video_size", "1920x1080",
|
|
316
|
-
"-i",
|
|
334
|
+
"-i", display,
|
|
317
335
|
"-c:v", "libx264", "-preset", "ultrafast", "-pix_fmt", "yuv420p",
|
|
318
336
|
"-t", String(maxDurationSeconds), "-y", outputPath,
|
|
319
337
|
], { cwd: process.cwd(), stdio: "pipe", detached: false });
|
|
@@ -390,8 +408,9 @@ export async function stopBackgroundRecording(recordingId) {
|
|
|
390
408
|
if (rec.targetType === "android_emulator") {
|
|
391
409
|
await new Promise(r => setTimeout(r, 1000));
|
|
392
410
|
const devicePath = "/sdcard/codeloop_rec.mp4";
|
|
393
|
-
|
|
394
|
-
await runCommand("adb", [
|
|
411
|
+
const sel = rec.device ? ["-s", rec.device] : [];
|
|
412
|
+
await runCommand("adb", [...sel, "pull", devicePath, rec.outputPath], process.cwd());
|
|
413
|
+
await runCommand("adb", [...sel, "shell", "rm", devicePath], process.cwd());
|
|
395
414
|
}
|
|
396
415
|
// Stop log capture if active
|
|
397
416
|
if (rec.logId) {
|
|
@@ -457,6 +476,14 @@ export function getActiveRecordingTargetType() {
|
|
|
457
476
|
}
|
|
458
477
|
return null;
|
|
459
478
|
}
|
|
479
|
+
/** Pinned device (adb serial / sim UDID) of any active recording. */
|
|
480
|
+
export function getActiveRecordingDevice() {
|
|
481
|
+
for (const rec of activeRecordings.values()) {
|
|
482
|
+
if (rec.device)
|
|
483
|
+
return rec.device;
|
|
484
|
+
}
|
|
485
|
+
return null;
|
|
486
|
+
}
|
|
460
487
|
export function getActiveRecordingIds() {
|
|
461
488
|
return Array.from(activeRecordings.keys());
|
|
462
489
|
}
|
|
@@ -526,14 +553,19 @@ async function recordLinux(outputDir, durationSeconds, appName) {
|
|
|
526
553
|
const depErr = await checkDependency("ffmpeg", "video recording");
|
|
527
554
|
return { recorded: false, path: "", duration_seconds: durationSeconds, method: "ffmpeg", error: depErr || "ffmpeg not found" };
|
|
528
555
|
}
|
|
556
|
+
const wayland = waylandDirective();
|
|
557
|
+
if (wayland) {
|
|
558
|
+
return { recorded: false, path: "", duration_seconds: durationSeconds, method: "wayland", error: wayland };
|
|
559
|
+
}
|
|
529
560
|
const outputPath = join(outputDir, `recording_${Date.now()}.mp4`);
|
|
561
|
+
const display = x11Display();
|
|
530
562
|
const bounds = appName ? await getWindowBounds(appName) : null;
|
|
531
563
|
const ffmpegArgs = ["-f", "x11grab", "-framerate", "10"];
|
|
532
564
|
if (bounds && bounds.width > 0 && bounds.height > 0) {
|
|
533
|
-
ffmpegArgs.push("-video_size", `${bounds.width}x${bounds.height}`, "-i",
|
|
565
|
+
ffmpegArgs.push("-video_size", `${bounds.width}x${bounds.height}`, "-i", `${display}+${bounds.x},${bounds.y}`);
|
|
534
566
|
}
|
|
535
567
|
else {
|
|
536
|
-
ffmpegArgs.push("-video_size", "1920x1080", "-i",
|
|
568
|
+
ffmpegArgs.push("-video_size", "1920x1080", "-i", display);
|
|
537
569
|
}
|
|
538
570
|
ffmpegArgs.push("-c:v", "libx264", "-preset", "ultrafast", "-pix_fmt", "yuv420p", "-t", String(durationSeconds), "-y", outputPath);
|
|
539
571
|
const result = await runCommand("ffmpeg", ffmpegArgs, process.cwd());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_recorder.js","sourceRoot":"","sources":["../../src/runners/video_recorder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video_recorder.js","sourceRoot":"","sources":["../../src/runners/video_recorder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAgB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE1H,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE5D;;;GAGG;AACH,KAAK,UAAU,sBAAsB;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE;YAC5E,OAAO,EAAE,IAAI;SACd,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC1C,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBAChE,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,oBAAoB;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,6EAA6E;QAC7E,oFAAoF;QACpF,kFAAkF;QAClF,MAAM,MAAM,GAAG;;;;;;;EAOjB,CAAC;QACC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACrE,MAAM,OAAO,GAAkF,EAAE,CAAC;YAClG,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YACD,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAQD;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,YAA6E;IAChH,MAAM,OAAO,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAgB;QAC5B,WAAW,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,GAAG;QACxF,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;KACjB,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAC;IAEzD,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE1C,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAM,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7G,CAAC;IAED,IAAI,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAC;IAEnC,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IACE,aAAa,IAAI,MAAM,CAAC,CAAC;YACzB,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK;YACvC,aAAa,IAAI,MAAM,CAAC,CAAC;YACzB,aAAa,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EACxC,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAoBD,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAW5B,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,kBAA0B,EAAE,EAC5B,OAAgB;IAEhB,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAEtB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,EAAE,CAAC;QACZ,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,iDAAiD;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/D,IAAI,MAAyB,CAAC;IAE9B,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED,mBAAmB;IACnB,IAAI,OAA2B,CAAC;IAChC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,EAAE;YAAE,OAAO,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,IAAI,WAAW,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC3C,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAiB,EACjB,OAAe,EACf,qBAA6B,GAAG,EAChC,aAAyB,SAAS,EAClC,MAAe;IAEf,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAEjD,IAAI,KAAmB,CAAC;IAExB,+CAA+C;IAC/C,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;QAChF,IAAI,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAErC,MAAM,UAAU,GAAG,0BAA0B,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE;YACnB,GAAG,GAAG;YACN,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YAClF,UAAU;SACX,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3D,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE;YAChC,OAAO,EAAE,KAAK;YACd,UAAU;YACV,OAAO;YACP,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,UAAU;YACV,MAAM;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAsB,CAAC,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,GAAG,EAAE,CAAC;gBAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;gBAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YAAC,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,uDAAuD;IACvD,IAAI,UAAU,KAAK,eAAe,EAAE,CAAC;QACnC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,OAAO,EAAE,KAAK,EAAE,qFAAqF,EAAE,CAAC;QAC1G,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;QAC/E,IAAI,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAErC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;YACrB,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU;SAC9E,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAE3D,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE;YAChC,OAAO,EAAE,KAAK;YACd,UAAU;YACV,OAAO;YACP,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,UAAU;YACV,MAAM;SACP,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAsB,CAAC,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,GAAG,EAAE,CAAC;gBAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;gBAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YAAC,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,YAAY,EAAE,WAAW;YACzB,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACtB,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAEnD,yDAAyD;IACzD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO,EAAE,KAAK,EAAE,6BAA6B,OAAO,kLAAkL,EAAE,CAAC;IAC3O,CAAC;IAED,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,IAAI,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,UAAU,GAAG;gBACjB,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG;gBAChE,IAAI,EAAE,GAAG,WAAW,CAAC,WAAW,OAAO;aACxC,CAAC;YACF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,kEAAkE;gBAClE,6DAA6D;gBAC7D,oEAAoE;gBACpE,kEAAkE;gBAClE,MAAM,OAAO,GAAI,MAAsC,CAAC,cAAc,CAAC;gBACvE,MAAM,KAAK,GAAG,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpC,qEAAqE;gBACrE,kEAAkE;gBAClE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;gBAC7D,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;gBAC7D,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAC/C,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACtD,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YAClE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,4CAA4C,EAAE,CAAC;QAC3E,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAClE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;IACjD,CAAC;SAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QAC1B,oEAAoE;QACpE,sEAAsE;QACtE,uDAAuD;QACvD,uEAAuE;QACvE,6DAA6D;QAC7D,oEAAoE;QACpE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;gBACtB,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI;gBACnC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC5D,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjD,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS;gBAChE,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU;aACnD,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,SAAS,OAAO,EAAE,CAAC;YACvC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;gBACtB,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW;gBACtD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS;gBAChE,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU;aACnD,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAC5B,CAAC;QACD,sEAAsE;QACtE,qEAAqE;QACrE,uEAAuE;QACvE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;gBACtB,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI;gBACnC,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjD,IAAI,EAAE,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE;gBAC1C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS;gBAChE,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU;aACnD,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;gBACtB,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW;gBAC/D,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS;gBAChE,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU;aACnD,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE;QAChC,OAAO,EAAE,KAAK;QACd,UAAU;QACV,OAAO;QACP,WAAW;QACX,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,UAAU;KACX,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,4CAA4C;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IACvC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,GAAG,EAAE,CAAC;YAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,WAAW;QACzB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,MAAM;KACpB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB;IAEnB,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,EAAE;YACR,gBAAgB,EAAE,CAAC;YACnB,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,sCAAsC,WAAW,EAAE;SAC3D,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC;IAE9C,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;QACtB,IAAI,EAAE,KAAK,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,IAAI,CAAC,CAAC;YACT,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC1B,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sDAAsD;IACtD,IAAI,GAAG,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;QAC1C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,0BAA0B,CAAC;QAC9C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACrF,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,OAAO;YAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACrC,CAAC;IAED,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAErC,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;QACvD,MAAM,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAE/C,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC;YACpB,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,GAAG,CAAC,UAAU;gBACpB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC/C,MAAM,EAAE,yBAAyB,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,UAAU,GAAG;gBAClE,KAAK,EAAE,qCAAqC,QAAQ,qNAAqN;gBACzQ,QAAQ,EAAE,GAAG,CAAC,OAAO;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,UAAU;YACpB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/C,MAAM,EAAE,yBAAyB,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,UAAU,GAAG;YAClE,QAAQ,EAAE,GAAG,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;QAC/C,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,yFAAyF,GAAG,CAAC,OAAO,yVAAyV;KACrc,CAAC;AACJ,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,oBAAoB;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC,UAAU,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,wBAAwB;IACtC,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC9C,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,SAAiB,EACjB,eAAuB,EACvB,OAAgB;IAEhB,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACrI,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;IAEzD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEtE,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,UAAU;YAChB,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,6BAA6B,OAAO,GAAG,CAAC,CAAC,CAAC,gCAAgC;SAC7F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,eAAe;QACjC,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,kCAAkC,MAAM,CAAC,SAAS,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,SAAiB,EACjB,eAAuB,EACvB,OAAgB;IAEhB,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;IAC7J,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7D,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,QAAQ,EACR;QACE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW;QACtD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS;QAChE,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU;KAChD,EACD,OAAO,CAAC,GAAG,EAAE,CACd,CAAC;IAEF,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,UAAU;YAChB,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,2BAA2B,OAAO,GAAG,CAAC,CAAC,CAAC,0BAA0B;SACrF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,eAAe;QACjC,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,2BAA2B,MAAM,CAAC,SAAS,EAAE;KACtE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,SAAiB,EACjB,eAAuB,EACvB,OAAgB;IAEhB,IAAI,CAAC,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAClE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;IACjI,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC7G,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,UAAU,GAAa,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAEnE,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,UAAU,CAAC,IAAI,CACb,aAAa,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EACjD,IAAI,EAAE,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAC3C,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,IAAI,CACb,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAChE,IAAI,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,UAAU,CAChD,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAErE,IAAI,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrD,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,UAAU;YAChB,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,2BAA2B,OAAO,GAAG,CAAC,CAAC,CAAC,8BAA8B;SACxF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,EAAE;QACR,gBAAgB,EAAE,eAAe;QACjC,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,2BAA2B,MAAM,CAAC,SAAS,EAAE;KACtE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wayland session detection (P2.2).
|
|
3
|
+
*
|
|
4
|
+
* CodeLoop's Linux desktop capture/input backends are X11-based today:
|
|
5
|
+
* ffmpeg x11grab (video), ImageMagick `import` / scrot (screenshots) and
|
|
6
|
+
* xdotool (clicks/keys). On a Wayland-ONLY session those tools either
|
|
7
|
+
* fail with cryptic errors ("Cannot open display") or silently capture
|
|
8
|
+
* nothing. When XWayland is available ($DISPLAY is set) the X11 tools
|
|
9
|
+
* keep working against the XWayland bridge, so we only degrade when the
|
|
10
|
+
* session is Wayland *without* an X display.
|
|
11
|
+
*
|
|
12
|
+
* Every capture/input entry point calls `waylandDirective()` first and
|
|
13
|
+
* returns the structured remediation text instead of the raw tool error.
|
|
14
|
+
*/
|
|
15
|
+
/** Human-readable remediation directive for Wayland-only sessions. */
|
|
16
|
+
export declare const WAYLAND_REMEDIATION: string;
|
|
17
|
+
/**
|
|
18
|
+
* Returns the remediation directive when the current session is
|
|
19
|
+
* Wayland-only, or null when capture/input can proceed.
|
|
20
|
+
*
|
|
21
|
+
* Detection: linux + (XDG_SESSION_TYPE=wayland OR WAYLAND_DISPLAY set)
|
|
22
|
+
* + no DISPLAY. A set DISPLAY means XWayland (or plain X11) is
|
|
23
|
+
* available, so the X11 toolchain still works.
|
|
24
|
+
*/
|
|
25
|
+
export declare function waylandDirective(env?: NodeJS.ProcessEnv, os?: string): string | null;
|
|
26
|
+
/**
|
|
27
|
+
* The X11 display string ffmpeg x11grab / xdotool should target.
|
|
28
|
+
* Honours $DISPLAY (multi-display / Xvfb / nested X setups) and falls
|
|
29
|
+
* back to the historical ":0.0" default when unset.
|
|
30
|
+
*/
|
|
31
|
+
export declare function x11Display(env?: NodeJS.ProcessEnv): string;
|
|
32
|
+
//# sourceMappingURL=wayland.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wayland.d.ts","sourceRoot":"","sources":["../../src/runners/wayland.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,QAM4F,CAAC;AAE7H;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,EAAE,GAAE,MAAmB,GACtB,MAAM,GAAG,IAAI,CAMf;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGvE"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wayland session detection (P2.2).
|
|
3
|
+
*
|
|
4
|
+
* CodeLoop's Linux desktop capture/input backends are X11-based today:
|
|
5
|
+
* ffmpeg x11grab (video), ImageMagick `import` / scrot (screenshots) and
|
|
6
|
+
* xdotool (clicks/keys). On a Wayland-ONLY session those tools either
|
|
7
|
+
* fail with cryptic errors ("Cannot open display") or silently capture
|
|
8
|
+
* nothing. When XWayland is available ($DISPLAY is set) the X11 tools
|
|
9
|
+
* keep working against the XWayland bridge, so we only degrade when the
|
|
10
|
+
* session is Wayland *without* an X display.
|
|
11
|
+
*
|
|
12
|
+
* Every capture/input entry point calls `waylandDirective()` first and
|
|
13
|
+
* returns the structured remediation text instead of the raw tool error.
|
|
14
|
+
*/
|
|
15
|
+
import { platform } from "os";
|
|
16
|
+
/** Human-readable remediation directive for Wayland-only sessions. */
|
|
17
|
+
export const WAYLAND_REMEDIATION = "This Linux session is Wayland-only (no X11 $DISPLAY), which CodeLoop's screen capture and input tools (ffmpeg x11grab, import/scrot, xdotool) cannot drive yet. " +
|
|
18
|
+
"Fix options, in order of preference: " +
|
|
19
|
+
"(1) log out and pick the X11/Xorg session variant on the login screen (e.g. \"Ubuntu on Xorg\"); " +
|
|
20
|
+
"(2) enable XWayland so $DISPLAY exists (most distros ship it — check that `echo $DISPLAY` prints something inside your terminal); " +
|
|
21
|
+
"(3) for headless CI, run the app under Xvfb: `xvfb-run -a <command>` and set DISPLAY accordingly. " +
|
|
22
|
+
"Native Wayland backends (grim/wf-recorder for capture, ydotool for input) are on the CodeLoop roadmap but not wired yet.";
|
|
23
|
+
/**
|
|
24
|
+
* Returns the remediation directive when the current session is
|
|
25
|
+
* Wayland-only, or null when capture/input can proceed.
|
|
26
|
+
*
|
|
27
|
+
* Detection: linux + (XDG_SESSION_TYPE=wayland OR WAYLAND_DISPLAY set)
|
|
28
|
+
* + no DISPLAY. A set DISPLAY means XWayland (or plain X11) is
|
|
29
|
+
* available, so the X11 toolchain still works.
|
|
30
|
+
*/
|
|
31
|
+
export function waylandDirective(env = process.env, os = platform()) {
|
|
32
|
+
if (os !== "linux")
|
|
33
|
+
return null;
|
|
34
|
+
if (env.DISPLAY && env.DISPLAY.trim() !== "")
|
|
35
|
+
return null;
|
|
36
|
+
const sessionType = (env.XDG_SESSION_TYPE || "").toLowerCase();
|
|
37
|
+
const isWayland = sessionType === "wayland" || Boolean(env.WAYLAND_DISPLAY);
|
|
38
|
+
return isWayland ? WAYLAND_REMEDIATION : null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The X11 display string ffmpeg x11grab / xdotool should target.
|
|
42
|
+
* Honours $DISPLAY (multi-display / Xvfb / nested X setups) and falls
|
|
43
|
+
* back to the historical ":0.0" default when unset.
|
|
44
|
+
*/
|
|
45
|
+
export function x11Display(env = process.env) {
|
|
46
|
+
const d = (env.DISPLAY || "").trim();
|
|
47
|
+
return d !== "" ? d : ":0.0";
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=wayland.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wayland.js","sourceRoot":"","sources":["../../src/runners/wayland.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAC9B,kKAAkK;IAClK,uCAAuC;IACvC,mGAAmG;IACnG,oIAAoI;IACpI,oGAAoG;IACpG,0HAA0H,CAAC;AAE7H;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAyB,OAAO,CAAC,GAAG,EACpC,KAAa,QAAQ,EAAE;IAEvB,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC1D,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/D,MAAM,SAAS,GAAG,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5E,OAAO,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/B,CAAC"}
|