@opendatalabs/connect 0.8.1 → 0.9.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.
Files changed (151) hide show
  1. package/README.md +58 -0
  2. package/dist/cli/bin.d.ts +3 -0
  3. package/dist/cli/bin.d.ts.map +1 -0
  4. package/dist/cli/bin.js +15 -0
  5. package/dist/cli/bin.js.map +1 -0
  6. package/dist/cli/index.d.ts +89 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +3844 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/cli/main.d.ts +2 -0
  11. package/dist/cli/main.d.ts.map +1 -0
  12. package/dist/cli/main.js +10 -0
  13. package/dist/cli/main.js.map +1 -0
  14. package/dist/cli/mcp-server.d.ts +15 -0
  15. package/dist/cli/mcp-server.d.ts.map +1 -0
  16. package/dist/cli/mcp-server.js +199 -0
  17. package/dist/cli/mcp-server.js.map +1 -0
  18. package/dist/cli/queries.d.ts +128 -0
  19. package/dist/cli/queries.d.ts.map +1 -0
  20. package/dist/cli/queries.js +415 -0
  21. package/dist/cli/queries.js.map +1 -0
  22. package/dist/cli/render/capabilities.d.ts +9 -0
  23. package/dist/cli/render/capabilities.d.ts.map +1 -0
  24. package/dist/cli/render/capabilities.js +24 -0
  25. package/dist/cli/render/capabilities.js.map +1 -0
  26. package/dist/cli/render/connect-renderer.d.ts +18 -0
  27. package/dist/cli/render/connect-renderer.d.ts.map +1 -0
  28. package/dist/cli/render/connect-renderer.js +255 -0
  29. package/dist/cli/render/connect-renderer.js.map +1 -0
  30. package/dist/cli/render/format.d.ts +27 -0
  31. package/dist/cli/render/format.d.ts.map +1 -0
  32. package/dist/cli/render/format.js +111 -0
  33. package/dist/cli/render/format.js.map +1 -0
  34. package/dist/cli/render/index.d.ts +7 -0
  35. package/dist/cli/render/index.d.ts.map +1 -0
  36. package/dist/cli/render/index.js +7 -0
  37. package/dist/cli/render/index.js.map +1 -0
  38. package/dist/cli/render/progress.d.ts +11 -0
  39. package/dist/cli/render/progress.d.ts.map +1 -0
  40. package/dist/cli/render/progress.js +56 -0
  41. package/dist/cli/render/progress.js.map +1 -0
  42. package/dist/cli/render/symbols.d.ts +11 -0
  43. package/dist/cli/render/symbols.d.ts.map +1 -0
  44. package/dist/cli/render/symbols.js +21 -0
  45. package/dist/cli/render/symbols.js.map +1 -0
  46. package/dist/cli/render/theme.d.ts +15 -0
  47. package/dist/cli/render/theme.d.ts.map +1 -0
  48. package/dist/cli/render/theme.js +41 -0
  49. package/dist/cli/render/theme.js.map +1 -0
  50. package/dist/cli/search-select.d.ts +17 -0
  51. package/dist/cli/search-select.d.ts.map +1 -0
  52. package/dist/cli/search-select.js +29 -0
  53. package/dist/cli/search-select.js.map +1 -0
  54. package/dist/cli/update-check-worker.d.ts +2 -0
  55. package/dist/cli/update-check-worker.d.ts.map +1 -0
  56. package/dist/cli/update-check-worker.js +55 -0
  57. package/dist/cli/update-check-worker.js.map +1 -0
  58. package/dist/cli/update-check.d.ts +21 -0
  59. package/dist/cli/update-check.d.ts.map +1 -0
  60. package/dist/cli/update-check.js +52 -0
  61. package/dist/cli/update-check.js.map +1 -0
  62. package/dist/connectors/index.d.ts +2 -0
  63. package/dist/connectors/index.d.ts.map +1 -0
  64. package/dist/connectors/index.js +2 -0
  65. package/dist/connectors/index.js.map +1 -0
  66. package/dist/connectors/registry.d.ts +55 -0
  67. package/dist/connectors/registry.d.ts.map +1 -0
  68. package/dist/connectors/registry.js +298 -0
  69. package/dist/connectors/registry.js.map +1 -0
  70. package/dist/core/cli-types.d.ts +692 -0
  71. package/dist/core/cli-types.d.ts.map +1 -0
  72. package/dist/core/cli-types.js +322 -0
  73. package/dist/core/cli-types.js.map +1 -0
  74. package/dist/core/index.d.ts +4 -0
  75. package/dist/core/index.d.ts.map +1 -1
  76. package/dist/core/index.js +3 -0
  77. package/dist/core/index.js.map +1 -1
  78. package/dist/core/paths.d.ts +28 -0
  79. package/dist/core/paths.d.ts.map +1 -0
  80. package/dist/core/paths.js +89 -0
  81. package/dist/core/paths.js.map +1 -0
  82. package/dist/core/state-store.d.ts +39 -0
  83. package/dist/core/state-store.d.ts.map +1 -0
  84. package/dist/core/state-store.js +101 -0
  85. package/dist/core/state-store.js.map +1 -0
  86. package/dist/core/types.d.ts +2 -0
  87. package/dist/core/types.d.ts.map +1 -1
  88. package/dist/personal-server/client.d.ts +34 -0
  89. package/dist/personal-server/client.d.ts.map +1 -0
  90. package/dist/personal-server/client.js +94 -0
  91. package/dist/personal-server/client.js.map +1 -0
  92. package/dist/personal-server/index.d.ts +18 -0
  93. package/dist/personal-server/index.d.ts.map +1 -0
  94. package/dist/personal-server/index.js +123 -0
  95. package/dist/personal-server/index.js.map +1 -0
  96. package/dist/personal-server/scope-resolver.d.ts +22 -0
  97. package/dist/personal-server/scope-resolver.d.ts.map +1 -0
  98. package/dist/personal-server/scope-resolver.js +68 -0
  99. package/dist/personal-server/scope-resolver.js.map +1 -0
  100. package/dist/runtime/core/contracts.d.ts +84 -0
  101. package/dist/runtime/core/contracts.d.ts.map +1 -0
  102. package/dist/runtime/core/contracts.js +2 -0
  103. package/dist/runtime/core/contracts.js.map +1 -0
  104. package/dist/runtime/core/index.d.ts +2 -0
  105. package/dist/runtime/core/index.d.ts.map +1 -0
  106. package/dist/runtime/core/index.js +2 -0
  107. package/dist/runtime/core/index.js.map +1 -0
  108. package/dist/runtime/index.d.ts +4 -0
  109. package/dist/runtime/index.d.ts.map +1 -0
  110. package/dist/runtime/index.js +3 -0
  111. package/dist/runtime/index.js.map +1 -0
  112. package/dist/runtime/managed-playwright.d.ts +42 -0
  113. package/dist/runtime/managed-playwright.d.ts.map +1 -0
  114. package/dist/runtime/managed-playwright.js +178 -0
  115. package/dist/runtime/managed-playwright.js.map +1 -0
  116. package/dist/runtime/playwright/browser.d.ts +12 -0
  117. package/dist/runtime/playwright/browser.d.ts.map +1 -0
  118. package/dist/runtime/playwright/browser.js +229 -0
  119. package/dist/runtime/playwright/browser.js.map +1 -0
  120. package/dist/runtime/playwright/in-process-run.d.ts +6 -0
  121. package/dist/runtime/playwright/in-process-run.d.ts.map +1 -0
  122. package/dist/runtime/playwright/in-process-run.js +628 -0
  123. package/dist/runtime/playwright/in-process-run.js.map +1 -0
  124. package/dist/runtime/playwright/index.d.ts +3 -0
  125. package/dist/runtime/playwright/index.d.ts.map +1 -0
  126. package/dist/runtime/playwright/index.js +3 -0
  127. package/dist/runtime/playwright/index.js.map +1 -0
  128. package/dist/runtime/repo-paths.d.ts +2 -0
  129. package/dist/runtime/repo-paths.d.ts.map +1 -0
  130. package/dist/runtime/repo-paths.js +36 -0
  131. package/dist/runtime/repo-paths.js.map +1 -0
  132. package/dist/server/config.d.ts +2 -0
  133. package/dist/server/config.d.ts.map +1 -1
  134. package/dist/server/config.js +1 -0
  135. package/dist/server/config.js.map +1 -1
  136. package/dist/server/connect.d.ts.map +1 -1
  137. package/dist/server/connect.js +4 -0
  138. package/dist/server/connect.js.map +1 -1
  139. package/dist/skills/index.d.ts +4 -0
  140. package/dist/skills/index.d.ts.map +1 -0
  141. package/dist/skills/index.js +3 -0
  142. package/dist/skills/index.js.map +1 -0
  143. package/dist/skills/paths.d.ts +33 -0
  144. package/dist/skills/paths.d.ts.map +1 -0
  145. package/dist/skills/paths.js +81 -0
  146. package/dist/skills/paths.js.map +1 -0
  147. package/dist/skills/registry.d.ts +48 -0
  148. package/dist/skills/registry.d.ts.map +1 -0
  149. package/dist/skills/registry.js +173 -0
  150. package/dist/skills/registry.js.map +1 -0
  151. package/package.json +51 -4
@@ -0,0 +1,628 @@
1
+ import fs from "node:fs";
2
+ import fsp from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { ensureParentDir, getSourceResultPath, rotateResult, } from "../../core/index.js";
6
+ import { getDefaultUserDataDir, importChromeCookies, isSystemChrome, launchPersistentContext, resolveBrowserPath, } from "./browser.js";
7
+ class NeedsInputError extends Error {
8
+ constructor() {
9
+ super("Connector requires additional input.");
10
+ }
11
+ }
12
+ class LegacyAuthError extends Error {
13
+ constructor(method) {
14
+ super(`${method} is not supported by the in-process runtime.`);
15
+ }
16
+ }
17
+ function setupNetworkCapture(page, networkCaptures, capturedResponses, writeLog) {
18
+ page.on("response", async (response) => {
19
+ const url = response.url();
20
+ for (const [key, config] of networkCaptures.entries()) {
21
+ if (config.urlPattern && !url.includes(config.urlPattern)) {
22
+ continue;
23
+ }
24
+ try {
25
+ const request = response.request();
26
+ const postData = request.postData() || "";
27
+ if (config.bodyPattern) {
28
+ const patterns = config.bodyPattern.split("|");
29
+ if (!patterns.some((pattern) => postData.includes(pattern))) {
30
+ continue;
31
+ }
32
+ }
33
+ const body = await response.json().catch(() => null);
34
+ if (body) {
35
+ capturedResponses.set(key, {
36
+ url,
37
+ data: body,
38
+ timestamp: Date.now(),
39
+ });
40
+ writeLog(`[network] captured ${key} from ${url}`);
41
+ }
42
+ }
43
+ catch {
44
+ // Ignore non-JSON responses.
45
+ }
46
+ }
47
+ });
48
+ }
49
+ async function reopenContext(runState, networkCaptures, capturedResponses, headless, writeLog, pushEvent, source, logPath) {
50
+ if (runState.context && !runState.browserClosed) {
51
+ runState.browserClosedByConnector = true;
52
+ await runState.context.close().catch(() => { });
53
+ runState.context = null;
54
+ runState.page = null;
55
+ }
56
+ runState.browserClosed = false;
57
+ runState.browserClosedByConnector = false;
58
+ runState.headless = headless;
59
+ runState.context = await launchPersistentContext(runState.userDataDir, headless, runState.browserPath);
60
+ runState.page =
61
+ runState.context.pages()[0] || (await runState.context.newPage());
62
+ runState.context.browser()?.on("disconnected", () => {
63
+ runState.browserClosed = true;
64
+ runState.context = null;
65
+ runState.page = null;
66
+ if (!runState.connectorCompleted && !runState.browserClosedByConnector) {
67
+ pushEvent({
68
+ type: "runtime-error",
69
+ source,
70
+ message: "Browser session ended before the connector completed.",
71
+ logPath,
72
+ });
73
+ }
74
+ });
75
+ if (runState.page) {
76
+ setupNetworkCapture(runState.page, networkCaptures, capturedResponses, writeLog);
77
+ }
78
+ writeLog(`[browser] launched ${headless ? "headless" : "headed"} context at ${runState.userDataDir}`);
79
+ }
80
+ async function ensureHeadedBrowser(runState, source, logPath, pushEvent, writeLog, networkCaptures, capturedResponses, url) {
81
+ if (!runState.allowHeaded) {
82
+ writeLog("[browser] headed interaction requested but prompting is disabled");
83
+ throw new LegacyAuthError(url ? "showBrowser" : "promptUser");
84
+ }
85
+ if (process.platform === "linux" &&
86
+ !process.env.DISPLAY &&
87
+ !process.env.WAYLAND_DISPLAY) {
88
+ throw new Error("This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run.");
89
+ }
90
+ if (runState.headless || runState.browserClosed || !runState.context) {
91
+ pushEvent({
92
+ type: "headed-required",
93
+ source,
94
+ message: "This source needs a manual browser step. Opening a local browser session on this machine.",
95
+ logPath,
96
+ url,
97
+ });
98
+ await reopenContext(runState, networkCaptures, capturedResponses, false, writeLog, pushEvent, source, logPath);
99
+ }
100
+ if (url && runState.page) {
101
+ await runState.page.goto(url, { waitUntil: "domcontentloaded" });
102
+ }
103
+ return true;
104
+ }
105
+ export function startInProcessConnectorRun({ request, logPath, }) {
106
+ const runId = `${path.basename(request.connectorPath, path.extname(request.connectorPath))}-${Date.now()}`;
107
+ const pendingInputPath = path.join(os.homedir(), ".vana", `pending-input-${runId}.json`);
108
+ const responseInputPath = path.join(os.homedir(), ".vana", `input-response-${runId}.json`);
109
+ const logStream = fs.createWriteStream(logPath);
110
+ const queue = [];
111
+ let resolveQueue = null;
112
+ let settled = false;
113
+ let activeContext = null;
114
+ let activeRunState = null;
115
+ const flushQueue = () => {
116
+ resolveQueue?.();
117
+ resolveQueue = null;
118
+ };
119
+ const pushEvent = (event) => {
120
+ queue.push(event);
121
+ flushQueue();
122
+ };
123
+ const writeLog = (message) => {
124
+ logStream.write(`${message}\n`);
125
+ };
126
+ const runPromise = (async () => {
127
+ pushEvent({
128
+ type: "run-started",
129
+ source: request.source,
130
+ logPath,
131
+ });
132
+ const slug = path.basename(request.connectorPath, path.extname(request.connectorPath));
133
+ const runState = {
134
+ context: null,
135
+ page: null,
136
+ userDataDir: getDefaultUserDataDir(slug),
137
+ browserPath: null,
138
+ browserClosed: false,
139
+ browserClosedByConnector: false,
140
+ connectorCompleted: false,
141
+ headless: true,
142
+ allowHeaded: !request.noInput,
143
+ hasResult: false,
144
+ resultPath: null,
145
+ cookies: [],
146
+ legacyAuthTriggered: false,
147
+ };
148
+ activeRunState = runState;
149
+ if (request.signal) {
150
+ request.signal.addEventListener("abort", () => {
151
+ void runState.context?.close().catch(() => { });
152
+ });
153
+ }
154
+ try {
155
+ const connectorCode = await fsp.readFile(request.connectorPath, "utf8");
156
+ // Skip browser launch for demo/fixture connectors that don't need it.
157
+ // VANA_DEMO_FAST_SUCCESS connectors only use page.setData/setProgress/return.
158
+ const skipBrowser = process.env.VANA_DEMO_FAST_SUCCESS === "1";
159
+ if (!skipBrowser) {
160
+ runState.browserPath = resolveBrowserPath();
161
+ writeLog(`[runtime] Using browser: ${runState.browserPath}`);
162
+ const markerFile = path.join(runState.userDataDir, ".cookies-imported");
163
+ if (isSystemChrome(runState.browserPath) &&
164
+ !fs.existsSync(markerFile)) {
165
+ writeLog("[runtime] Initializing browser profile before cookie import");
166
+ const tempContext = await launchPersistentContext(runState.userDataDir, true, runState.browserPath);
167
+ await tempContext.close();
168
+ importChromeCookies(runState.userDataDir, runState.browserPath);
169
+ }
170
+ await reopenContext(runState, new Map(), new Map(), true, writeLog, pushEvent, request.source, logPath);
171
+ activeContext = runState.context;
172
+ }
173
+ const pageApi = createPageApi({
174
+ request,
175
+ runState,
176
+ logPath,
177
+ pendingInputPath,
178
+ responseInputPath,
179
+ pushEvent,
180
+ writeLog,
181
+ });
182
+ if (!skipBrowser) {
183
+ await runState.page?.goto("about:blank", {
184
+ waitUntil: "domcontentloaded",
185
+ });
186
+ }
187
+ const connectorFunction = buildConnectorFunction(connectorCode);
188
+ const result = await connectorFunction.call(null, pageApi);
189
+ if (runState.legacyAuthTriggered) {
190
+ return;
191
+ }
192
+ if (!runState.hasResult && result != null) {
193
+ const exportData = result &&
194
+ typeof result === "object" &&
195
+ "success" in result &&
196
+ "data" in result
197
+ ? result.data
198
+ : result;
199
+ const resultPath = getSourceResultPath(request.source);
200
+ await ensureParentDir(resultPath);
201
+ await rotateResult(request.source);
202
+ await fsp.writeFile(resultPath, `${JSON.stringify(exportData, null, 2)}\n`, "utf8");
203
+ pushEvent({
204
+ type: "collection-complete",
205
+ source: request.source,
206
+ resultPath,
207
+ logPath,
208
+ });
209
+ runState.hasResult = true;
210
+ runState.resultPath = resultPath;
211
+ }
212
+ runState.connectorCompleted = true;
213
+ if (!runState.browserClosed && runState.context) {
214
+ await runState.context.close().catch(() => { });
215
+ }
216
+ }
217
+ catch (error) {
218
+ if (error instanceof NeedsInputError) {
219
+ return;
220
+ }
221
+ pushEvent(classifyRuntimeError(error, request.source, logPath));
222
+ }
223
+ finally {
224
+ settled = true;
225
+ activeContext = runState.context;
226
+ await activeContext?.close().catch(() => { });
227
+ logStream.end();
228
+ flushQueue();
229
+ }
230
+ })();
231
+ return {
232
+ source: request.source,
233
+ logPath,
234
+ async *events() {
235
+ try {
236
+ while (!settled || queue.length > 0) {
237
+ if (queue.length === 0) {
238
+ await new Promise((resolve) => {
239
+ resolveQueue = resolve;
240
+ });
241
+ continue;
242
+ }
243
+ yield queue.shift();
244
+ }
245
+ }
246
+ finally {
247
+ await runPromise.catch(() => { });
248
+ }
249
+ },
250
+ stop() {
251
+ void (activeRunState?.context ?? activeContext)?.close().catch(() => { });
252
+ if (!settled) {
253
+ pushEvent({
254
+ type: "runtime-error",
255
+ source: request.source,
256
+ message: "Connector run stopped.",
257
+ logPath,
258
+ });
259
+ }
260
+ },
261
+ };
262
+ }
263
+ function buildConnectorFunction(connectorCode) {
264
+ let modifiedCode = connectorCode;
265
+ const iifePattern = /\n\(async\s*\(\)\s*=>\s*\{/g;
266
+ const matches = [...modifiedCode.matchAll(iifePattern)];
267
+ if (matches.length > 0) {
268
+ const lastMatch = matches[matches.length - 1];
269
+ modifiedCode =
270
+ modifiedCode.slice(0, lastMatch.index) +
271
+ "\nreturn (async () => {" +
272
+ modifiedCode.slice(lastMatch.index + lastMatch[0].length);
273
+ }
274
+ const AsyncFunction = Object.getPrototypeOf(async function () { })
275
+ .constructor;
276
+ return new AsyncFunction("page", modifiedCode);
277
+ }
278
+ function createPageApi({ request, runState, logPath, pendingInputPath, responseInputPath, pushEvent, writeLog, }) {
279
+ const networkCaptures = new Map();
280
+ const capturedResponses = new Map();
281
+ function requirePage() {
282
+ if (runState.browserClosed || !runState.page) {
283
+ throw new Error("Browser is closed. Use page.httpFetch() for HTTP requests.");
284
+ }
285
+ return runState.page;
286
+ }
287
+ if (runState.page) {
288
+ setupNetworkCapture(runState.page, networkCaptures, capturedResponses, writeLog);
289
+ }
290
+ return {
291
+ goto: async (url, options = {}) => {
292
+ const page = requirePage();
293
+ const gotoOptions = {
294
+ waitUntil: options.waitUntil ?? "domcontentloaded",
295
+ };
296
+ if (options.timeout != null) {
297
+ gotoOptions.timeout = options.timeout;
298
+ }
299
+ writeLog(`[page] goto ${url}`);
300
+ await page.goto(url, gotoOptions);
301
+ },
302
+ evaluate: async (script) => {
303
+ return requirePage().evaluate(script);
304
+ },
305
+ screenshot: async () => {
306
+ const buffer = await requirePage().screenshot({
307
+ type: "jpeg",
308
+ quality: 70,
309
+ timeout: 5000,
310
+ });
311
+ return buffer.toString("base64");
312
+ },
313
+ requestInput: async (payload) => {
314
+ const fields = Object.keys(payload.schema?.properties ?? {});
315
+ const inputRequest = {
316
+ message: payload.message ?? "Additional input is required.",
317
+ schema: payload.schema,
318
+ fields,
319
+ responseInputPath,
320
+ };
321
+ if (request.noInput) {
322
+ // --no-input mode: fail immediately
323
+ await writePendingInput({
324
+ pendingInputPath,
325
+ responseInputPath,
326
+ message: inputRequest.message ?? "Additional input is required.",
327
+ schema: inputRequest.schema,
328
+ });
329
+ pushEvent({
330
+ type: "needs-input",
331
+ source: request.source,
332
+ message: inputRequest.message ?? "Additional input is required.",
333
+ fields: inputRequest.fields,
334
+ schema: inputRequest.schema,
335
+ pendingInputPath,
336
+ responseInputPath,
337
+ logPath,
338
+ });
339
+ throw new NeedsInputError();
340
+ }
341
+ if (!request.onNeedInput) {
342
+ // IPC mode: write question file, emit event, poll for answer.
343
+ // An external agent reads the pending file, collects input from
344
+ // the user, and writes the response file.
345
+ await writePendingInput({
346
+ pendingInputPath,
347
+ responseInputPath,
348
+ message: inputRequest.message ?? "Additional input is required.",
349
+ schema: inputRequest.schema,
350
+ });
351
+ pushEvent({
352
+ type: "needs-input",
353
+ source: request.source,
354
+ message: inputRequest.message ?? "Additional input is required.",
355
+ fields: inputRequest.fields,
356
+ schema: inputRequest.schema,
357
+ pendingInputPath,
358
+ responseInputPath,
359
+ logPath,
360
+ });
361
+ const response = await pollForInputResponse(responseInputPath, 1_800_000); // 30 min timeout
362
+ await fsp.rm(pendingInputPath, { force: true });
363
+ return response;
364
+ }
365
+ const input = await request.onNeedInput(inputRequest);
366
+ await ensureParentDir(responseInputPath);
367
+ await fsp.writeFile(responseInputPath, `${JSON.stringify(input)}\n`, "utf8");
368
+ await fsp.rm(pendingInputPath, { force: true });
369
+ return input;
370
+ },
371
+ sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
372
+ setData: async (key, value) => {
373
+ if (key === "status" && typeof value === "string") {
374
+ pushEvent({
375
+ type: "status-update",
376
+ source: request.source,
377
+ logPath,
378
+ message: value,
379
+ });
380
+ }
381
+ if (key === "result") {
382
+ if (!runState.hasResult) {
383
+ const resultPath = getSourceResultPath(request.source);
384
+ await ensureParentDir(resultPath);
385
+ await rotateResult(request.source);
386
+ await fsp.writeFile(resultPath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
387
+ runState.hasResult = true;
388
+ runState.resultPath = resultPath;
389
+ pushEvent({
390
+ type: "collection-complete",
391
+ source: request.source,
392
+ resultPath,
393
+ logPath,
394
+ });
395
+ }
396
+ }
397
+ writeLog(`[data] ${key}=${typeof value === "string" ? value : JSON.stringify(value)}`);
398
+ },
399
+ setProgress: async ({ phase, message, count, }) => {
400
+ pushEvent({
401
+ type: "progress-update",
402
+ source: request.source,
403
+ logPath,
404
+ phase,
405
+ message,
406
+ count,
407
+ });
408
+ writeLog(`[progress] ${JSON.stringify({
409
+ phase,
410
+ message,
411
+ count,
412
+ })}`);
413
+ },
414
+ promptUser: async (message, checkFn, interval = 2000) => {
415
+ writeLog(`[prompt] ${message}`);
416
+ if (request.noInput) {
417
+ if (!runState.legacyAuthTriggered) {
418
+ pushEvent({
419
+ type: "legacy-auth",
420
+ source: request.source,
421
+ message: "This source needs a manual browser step, but prompting is disabled in --no-input mode.",
422
+ logPath,
423
+ });
424
+ }
425
+ runState.legacyAuthTriggered = true;
426
+ return;
427
+ }
428
+ await ensureHeadedBrowser(runState, request.source, logPath, pushEvent, writeLog, networkCaptures, capturedResponses, runState.page?.url());
429
+ pushEvent({
430
+ type: "headed-required",
431
+ source: request.source,
432
+ message,
433
+ logPath,
434
+ url: runState.page?.url(),
435
+ });
436
+ while (true) {
437
+ await new Promise((resolve) => setTimeout(resolve, interval));
438
+ if (request.signal?.aborted ||
439
+ runState.browserClosed ||
440
+ !runState.page) {
441
+ throw new Error("Browser session ended before manual interaction completed.");
442
+ }
443
+ try {
444
+ const result = await checkFn();
445
+ if (result) {
446
+ writeLog("[prompt] User action completed");
447
+ return;
448
+ }
449
+ }
450
+ catch {
451
+ // Keep waiting until the connector's condition passes.
452
+ }
453
+ }
454
+ },
455
+ captureNetwork: async (config) => {
456
+ networkCaptures.set(config.key, {
457
+ urlPattern: config.urlPattern || "",
458
+ bodyPattern: config.bodyPattern || "",
459
+ });
460
+ },
461
+ getCapturedResponse: async (key) => {
462
+ return capturedResponses.get(key) ?? null;
463
+ },
464
+ clearNetworkCaptures: async () => {
465
+ networkCaptures.clear();
466
+ capturedResponses.clear();
467
+ },
468
+ hasCapturedResponse: (key) => capturedResponses.has(key),
469
+ closeBrowser: async () => {
470
+ if (runState.browserClosed) {
471
+ return;
472
+ }
473
+ if (runState.context) {
474
+ try {
475
+ runState.cookies = await runState.context.cookies();
476
+ }
477
+ catch {
478
+ runState.cookies = [];
479
+ }
480
+ }
481
+ runState.browserClosed = true;
482
+ runState.browserClosedByConnector = true;
483
+ await runState.context?.close().catch(() => { });
484
+ runState.context = null;
485
+ runState.page = null;
486
+ writeLog("[browser] closed by connector");
487
+ },
488
+ showBrowser: async (url) => {
489
+ if (request.noInput) {
490
+ if (!runState.legacyAuthTriggered) {
491
+ pushEvent({
492
+ type: "legacy-auth",
493
+ source: request.source,
494
+ message: "This source needs a manual browser step, but prompting is disabled in --no-input mode.",
495
+ logPath,
496
+ });
497
+ }
498
+ runState.legacyAuthTriggered = true;
499
+ return { headed: false };
500
+ }
501
+ await ensureHeadedBrowser(runState, request.source, logPath, pushEvent, writeLog, networkCaptures, capturedResponses, url);
502
+ return { headed: true };
503
+ },
504
+ goHeadless: async () => {
505
+ await reopenContext(runState, networkCaptures, capturedResponses, true, writeLog, pushEvent, request.source, logPath);
506
+ if (runState.page) {
507
+ await runState.page.goto("https://chatgpt.com/", {
508
+ waitUntil: "domcontentloaded",
509
+ });
510
+ }
511
+ },
512
+ httpFetch: async (url, options = {}) => {
513
+ const { timeout = 30000, ...fetchOptions } = options;
514
+ if (runState.cookies.length > 0) {
515
+ try {
516
+ const urlObject = new URL(url);
517
+ const relevantCookies = runState.cookies
518
+ .filter((cookie) => {
519
+ const cookieDomain = cookie.domain.startsWith(".")
520
+ ? cookie.domain.slice(1)
521
+ : cookie.domain;
522
+ return (urlObject.hostname === cookieDomain ||
523
+ urlObject.hostname.endsWith(`.${cookieDomain}`));
524
+ })
525
+ .map((cookie) => `${cookie.name}=${cookie.value}`)
526
+ .join("; ");
527
+ if (relevantCookies) {
528
+ fetchOptions.headers = {
529
+ ...(fetchOptions.headers || {}),
530
+ cookie: relevantCookies,
531
+ };
532
+ }
533
+ }
534
+ catch {
535
+ // Ignore cookie injection failures.
536
+ }
537
+ }
538
+ const controller = new AbortController();
539
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
540
+ try {
541
+ const response = await fetch(url, {
542
+ ...fetchOptions,
543
+ signal: controller.signal,
544
+ });
545
+ clearTimeout(timeoutId);
546
+ const text = await response.text();
547
+ let json = null;
548
+ try {
549
+ json = JSON.parse(text);
550
+ }
551
+ catch {
552
+ json = null;
553
+ }
554
+ return {
555
+ ok: response.ok,
556
+ status: response.status,
557
+ headers: Object.fromEntries(response.headers.entries()),
558
+ text,
559
+ json,
560
+ error: null,
561
+ };
562
+ }
563
+ catch (error) {
564
+ clearTimeout(timeoutId);
565
+ return {
566
+ ok: false,
567
+ status: 0,
568
+ headers: {},
569
+ text: "",
570
+ json: null,
571
+ error: error instanceof Error ? error.message : String(error),
572
+ };
573
+ }
574
+ },
575
+ };
576
+ }
577
+ function classifyRuntimeError(error, source, logPath) {
578
+ const message = error instanceof Error ? error.message : String(error);
579
+ if (message.includes("showBrowser") || message.includes("promptUser")) {
580
+ return {
581
+ type: "legacy-auth",
582
+ source,
583
+ message: "This source needs a manual browser step, but prompting is disabled in --no-input mode.",
584
+ logPath,
585
+ };
586
+ }
587
+ if (message.includes("Missing X server or $DISPLAY") ||
588
+ message.includes("headed browser without having a XServer running")) {
589
+ return {
590
+ type: "runtime-error",
591
+ source,
592
+ message: "This source needs a manual browser step, but no local display server is available. Run this command in a desktop session or use xvfb-run.",
593
+ logPath,
594
+ };
595
+ }
596
+ return {
597
+ type: "runtime-error",
598
+ source,
599
+ message,
600
+ logPath,
601
+ };
602
+ }
603
+ async function pollForInputResponse(responsePath, timeoutMs) {
604
+ const start = Date.now();
605
+ while (Date.now() - start < timeoutMs) {
606
+ try {
607
+ const content = await fsp.readFile(responsePath, "utf8");
608
+ const parsed = JSON.parse(content);
609
+ await fsp.rm(responsePath, { force: true });
610
+ return parsed;
611
+ }
612
+ catch {
613
+ // File doesn't exist yet, keep polling.
614
+ }
615
+ await new Promise((resolve) => setTimeout(resolve, 500));
616
+ }
617
+ throw new NeedsInputError();
618
+ }
619
+ async function writePendingInput({ pendingInputPath, responseInputPath, message, schema, }) {
620
+ await ensureParentDir(pendingInputPath);
621
+ await fsp.writeFile(pendingInputPath, `${JSON.stringify({
622
+ message,
623
+ schema: schema ?? {},
624
+ responseInputPath,
625
+ timestamp: new Date().toISOString(),
626
+ }, null, 2)}\n`, "utf8");
627
+ }
628
+ //# sourceMappingURL=in-process-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-process-run.js","sourceRoot":"","sources":["../../../src/runtime/playwright/in-process-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AA8BtB,MAAM,eAAgB,SAAQ,KAAK;IACjC;QACE,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,eAAgB,SAAQ,KAAK;IACjC,YAAY,MAAoC;QAC9C,KAAK,CAAC,GAAG,MAAM,8CAA8C,CAAC,CAAC;IACjE,CAAC;CACF;AAED,SAAS,mBAAmB,CAC1B,IAAU,EACV,eAAkD,EAClD,iBAGC,EACD,QAAmC;IAEnC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1D,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;wBAC5D,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,IAAI,EAAE,CAAC;oBACT,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE;wBACzB,GAAG;wBACH,IAAI,EAAE,IAAI;wBACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;qBACtB,CAAC,CAAC;oBACH,QAAQ,CAAC,sBAAsB,GAAG,SAAS,GAAG,EAAE,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,QAAkB,EAClB,eAAkD,EAClD,iBAGC,EACD,QAAiB,EACjB,QAAmC,EACnC,SAAwC,EACxC,MAAc,EACd,OAAe;IAEf,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAChD,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACzC,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/C,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,QAAQ,CAAC,wBAAwB,GAAG,KAAK,CAAC;IAC1C,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,QAAQ,CAAC,OAAO,GAAG,MAAM,uBAAuB,CAC9C,QAAQ,CAAC,WAAW,EACpB,QAAQ,EACR,QAAQ,CAAC,WAAW,CACrB,CAAC;IACF,QAAQ,CAAC,IAAI;QACX,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEpE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QAClD,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC;YACvE,SAAS,CAAC;gBACR,IAAI,EAAE,eAAe;gBACrB,MAAM;gBACN,OAAO,EAAE,uDAAuD;gBAChE,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,mBAAmB,CACjB,QAAQ,CAAC,IAAI,EACb,eAAe,EACf,iBAAiB,EACjB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,QAAQ,CACN,sBAAsB,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,eAAe,QAAQ,CAAC,WAAW,EAAE,CAC5F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,QAAkB,EAClB,MAAc,EACd,OAAe,EACf,SAAwC,EACxC,QAAmC,EACnC,eAAkD,EAClD,iBAGC,EACD,GAAY;IAEZ,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1B,QAAQ,CACN,kEAAkE,CACnE,CAAC;QACF,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;IAED,IACE,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC5B,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;QACpB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAC5B,CAAC;QACD,MAAM,IAAI,KAAK,CACb,2IAA2I,CAC5I,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrE,SAAS,CAAC;YACR,IAAI,EAAE,iBAAiB;YACvB,MAAM;YACN,OAAO,EACL,2FAA2F;YAC7F,OAAO;YACP,GAAG;SACJ,CAAC,CAAC;QACH,MAAM,aAAa,CACjB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,EACzC,OAAO,EACP,OAAO,GAIR;IACC,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC3G,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAChC,EAAE,CAAC,OAAO,EAAE,EACZ,OAAO,EACP,iBAAiB,KAAK,OAAO,CAC9B,CAAC;IACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,EAAE,CAAC,OAAO,EAAE,EACZ,OAAO,EACP,kBAAkB,KAAK,OAAO,CAC/B,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,YAAY,GAAwB,IAAI,CAAC;IAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,aAAa,GAA0B,IAAI,CAAC;IAChD,IAAI,cAAc,GAAoB,IAAI,CAAC;IAE3C,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,YAAY,EAAE,EAAE,CAAC;QACjB,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;QACxC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,EAAE;QACnC,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE;QAC7B,SAAS,CAAC;YACR,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CACxB,OAAO,CAAC,aAAa,EACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CACpC,CAAC;QACF,MAAM,QAAQ,GAAa;YACzB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,qBAAqB,CAAC,IAAI,CAAC;YACxC,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,KAAK;YACpB,wBAAwB,EAAE,KAAK;YAC/B,kBAAkB,EAAE,KAAK;YACzB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO;YAC7B,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,EAAE;YACX,mBAAmB,EAAE,KAAK;SAC3B,CAAC;QACF,cAAc,GAAG,QAAQ,CAAC;QAE1B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC5C,KAAK,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAExE,sEAAsE;YACtE,8EAA8E;YAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG,CAAC;YAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,QAAQ,CAAC,WAAW,GAAG,kBAAkB,EAAE,CAAC;gBAC5C,QAAQ,CAAC,4BAA4B,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAE7D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;gBACxE,IACE,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;oBACpC,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAC1B,CAAC;oBACD,QAAQ,CACN,6DAA6D,CAC9D,CAAC;oBACF,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAC/C,QAAQ,CAAC,WAAW,EACpB,IAAI,EACJ,QAAQ,CAAC,WAAW,CACrB,CAAC;oBACF,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;oBAC1B,mBAAmB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAClE,CAAC;gBAED,MAAM,aAAa,CACjB,QAAQ,EACR,IAAI,GAAG,EAAgC,EACvC,IAAI,GAAG,EAA6D,EACpE,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,CAAC,MAAM,EACd,OAAO,CACR,CAAC;gBACF,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;YACnC,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAC;gBAC5B,OAAO;gBACP,QAAQ;gBACR,OAAO;gBACP,gBAAgB;gBAChB,iBAAiB;gBACjB,SAAS;gBACT,QAAQ;aACT,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE;oBACvC,SAAS,EAAE,kBAAkB;iBAC9B,CAAC,CAAC;YACL,CAAC;YACD,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC1C,MAAM,UAAU,GACd,MAAM;oBACN,OAAO,MAAM,KAAK,QAAQ;oBAC1B,SAAS,IAAI,MAAM;oBACnB,MAAM,IAAI,MAAM;oBACd,CAAC,CAAE,MAA4B,CAAC,IAAI;oBACpC,CAAC,CAAC,MAAM,CAAC;gBACb,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvD,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;gBAClC,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,GAAG,CAAC,SAAS,CACjB,UAAU,EACV,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAC1C,MAAM,CACP,CAAC;gBACF,SAAS,CAAC;oBACR,IAAI,EAAE,qBAAqB;oBAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU;oBACV,OAAO;iBACR,CAAC,CAAC;gBACH,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC1B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;YACnC,CAAC;YAED,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAChD,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC7C,SAAS,CAAC,GAAG,EAAE,CAAC;YAChB,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,KAAK,CAAC,CAAC,MAAM;YACX,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;4BAClC,YAAY,GAAG,OAAO,CAAC;wBACzB,CAAC,CAAC,CAAC;wBACH,SAAS;oBACX,CAAC;oBAED,MAAM,KAAK,CAAC,KAAK,EAAkB,CAAC;gBACtC,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,IAAI;YACF,KAAK,CAAC,cAAc,EAAE,OAAO,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS,CAAC;oBACR,IAAI,EAAE,eAAe;oBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,wBAAwB;oBACjC,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,aAAqB;IAErB,IAAI,YAAY,GAAG,aAAa,CAAC;IACjC,MAAM,WAAW,GAAG,6BAA6B,CAAC;IAClD,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAExD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9C,YAAY;YACV,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC;gBACtC,yBAAyB;gBACzB,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,eAAc,CAAC,CAAC;SAC9D,WAEqC,CAAC;IACzC,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,QAAQ,GAST;IACC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAgC,CAAC;IAChE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAG9B,CAAC;IAEJ,SAAS,WAAW;QAClB,IAAI,QAAQ,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,mBAAmB,CACjB,QAAQ,CAAC,IAAI,EACb,eAAe,EACf,iBAAiB,EACjB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,EACT,GAAW,EACX,UAGI,EAAE,EACN,EAAE;YACF,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAgC;gBAC/C,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,kBAAkB;aACnD,CAAC;YACF,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC5B,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YACxC,CAAC;YACD,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACpC,CAAC;QAED,QAAQ,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;YACjC,OAAO,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC,UAAU,CAAC;gBAC5C,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,YAAY,EAAE,KAAK,EAAE,OAA4B,EAAE,EAAE;YACnD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;YAC7D,MAAM,YAAY,GAAwB;gBACxC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,+BAA+B;gBAC3D,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM;gBACN,iBAAiB;aAClB,CAAC;YAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,oCAAoC;gBACpC,MAAM,iBAAiB,CAAC;oBACtB,gBAAgB;oBAChB,iBAAiB;oBACjB,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,+BAA+B;oBAChE,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC5B,CAAC,CAAC;gBACH,SAAS,CAAC;oBACR,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,+BAA+B;oBAChE,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,gBAAgB;oBAChB,iBAAiB;oBACjB,OAAO;iBACR,CAAC,CAAC;gBACH,MAAM,IAAI,eAAe,EAAE,CAAC;YAC9B,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACzB,8DAA8D;gBAC9D,gEAAgE;gBAChE,0CAA0C;gBAC1C,MAAM,iBAAiB,CAAC;oBACtB,gBAAgB;oBAChB,iBAAiB;oBACjB,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,+BAA+B;oBAChE,MAAM,EAAE,YAAY,CAAC,MAAM;iBAC5B,CAAC,CAAC;gBACH,SAAS,CAAC;oBACR,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,+BAA+B;oBAChE,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,MAAM,EAAE,YAAY,CAAC,MAAM;oBAC3B,gBAAgB;oBAChB,iBAAiB;oBACjB,OAAO;iBACR,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CACzC,iBAAiB,EACjB,SAAS,CACV,CAAC,CAAC,iBAAiB;gBACpB,MAAM,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,OAAO,QAAQ,CAAC;YAClB,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACtD,MAAM,eAAe,CAAC,iBAAiB,CAAC,CAAC;YACzC,MAAM,GAAG,CAAC,SAAS,CACjB,iBAAiB,EACjB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAC5B,MAAM,CACP,CAAC;YACF,MAAM,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAExE,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,KAAc,EAAE,EAAE;YAC7C,IAAI,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAClD,SAAS,CAAC;oBACR,IAAI,EAAE,eAAe;oBACrB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,OAAO;oBACP,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;YACL,CAAC;YACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBACrB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACxB,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACvD,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;oBAClC,MAAM,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACnC,MAAM,GAAG,CAAC,SAAS,CACjB,UAAU,EACV,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACrC,MAAM,CACP,CAAC;oBACF,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;oBAC1B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;oBACjC,SAAS,CAAC;wBACR,IAAI,EAAE,qBAAqB;wBAC3B,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,UAAU;wBACV,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,QAAQ,CACN,UAAU,GAAG,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAC7E,CAAC;QACJ,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,EAClB,KAAK,EACL,OAAO,EACP,KAAK,GAKN,EAAE,EAAE;YACH,SAAS,CAAC;gBACR,IAAI,EAAE,iBAAiB;gBACvB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO;gBACP,KAAK;gBACL,OAAO;gBACP,KAAK;aACN,CAAC,CAAC;YACH,QAAQ,CACN,cAAc,IAAI,CAAC,SAAS,CAAC;gBAC3B,KAAK;gBACL,OAAO;gBACP,KAAK;aACN,CAAC,EAAE,CACL,CAAC;QACJ,CAAC;QAED,UAAU,EAAE,KAAK,EACf,OAAe,EACf,OAA+B,EAC/B,QAAQ,GAAG,IAAI,EACf,EAAE;YACF,QAAQ,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YAChC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;oBAClC,SAAS,CAAC;wBACR,IAAI,EAAE,aAAa;wBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,OAAO,EACL,wFAAwF;wBAC1F,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;gBACD,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,MAAM,mBAAmB,CACvB,QAAQ,EACR,OAAO,CAAC,MAAM,EACd,OAAO,EACP,SAAS,EACT,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CACrB,CAAC;YACF,SAAS,CAAC;gBACR,IAAI,EAAE,iBAAiB;gBACvB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,OAAO;gBACP,OAAO;gBACP,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE;aAC1B,CAAC,CAAC;YAEH,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC9D,IACE,OAAO,CAAC,MAAM,EAAE,OAAO;oBACvB,QAAQ,CAAC,aAAa;oBACtB,CAAC,QAAQ,CAAC,IAAI,EACd,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;oBAC/B,IAAI,MAAM,EAAE,CAAC;wBACX,QAAQ,CAAC,gCAAgC,CAAC,CAAC;wBAC3C,OAAO;oBACT,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,uDAAuD;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;QAED,cAAc,EAAE,KAAK,EAAE,MAItB,EAAE,EAAE;YACH,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;gBAC9B,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;gBACnC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;aACtC,CAAC,CAAC;QACL,CAAC;QAED,mBAAmB,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;YACzC,OAAO,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC5C,CAAC;QAED,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAC/B,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,mBAAmB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC;QAEhE,YAAY,EAAE,KAAK,IAAI,EAAE;YACvB,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACtD,CAAC;gBAAC,MAAM,CAAC;oBACP,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;YAC9B,QAAQ,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACzC,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAChD,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YACrB,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QAC5C,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,GAAY,EAAE,EAAE;YAClC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;oBAClC,SAAS,CAAC;wBACR,IAAI,EAAE,aAAa;wBACnB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,OAAO,EACL,wFAAwF;wBAC1F,OAAO;qBACR,CAAC,CAAC;gBACL,CAAC;gBACD,QAAQ,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACpC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC3B,CAAC;YAED,MAAM,mBAAmB,CACvB,QAAQ,EACR,OAAO,CAAC,MAAM,EACd,OAAO,EACP,SAAS,EACT,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,GAAG,CACJ,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,UAAU,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,aAAa,CACjB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,CAAC,MAAM,EACd,OAAO,CACR,CAAC;YACF,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;oBAC/C,SAAS,EAAE,kBAAkB;iBAC9B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,SAAS,EAAE,KAAK,EACd,GAAW,EACX,UAA8C,EAAE,EAChD,EAAE;YACF,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;YACrD,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO;yBACrC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;wBACjB,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;4BAChD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;4BACxB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;wBAClB,OAAO,CACL,SAAS,CAAC,QAAQ,KAAK,YAAY;4BACnC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAChD,CAAC;oBACJ,CAAC,CAAC;yBACD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;yBACjD,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,IAAI,eAAe,EAAE,CAAC;wBACpB,YAAY,CAAC,OAAO,GAAG;4BACrB,GAAG,CAAC,YAAY,CAAC,OAAO,IAAI,EAAE,CAAC;4BAC/B,MAAM,EAAE,eAAe;yBACxB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,oCAAoC;gBACtC,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAChC,GAAG,YAAY;oBACf,MAAM,EAAE,UAAU,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBACH,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,IAAI,GAAY,IAAI,CAAC;gBACzB,IAAI,CAAC;oBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,GAAG,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO;oBACL,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACvD,IAAI;oBACJ,IAAI;oBACJ,KAAK,EAAE,IAAI;iBACZ,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,CAAC;oBACT,OAAO,EAAE,EAAE;oBACX,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAc,EACd,MAAc,EACd,OAAe;IAEf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACtE,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,MAAM;YACN,OAAO,EACL,wFAAwF;YAC1F,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IACE,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAChD,OAAO,CAAC,QAAQ,CAAC,iDAAiD,CAAC,EACnE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM;YACN,OAAO,EACL,2IAA2I;YAC7I,OAAO;SACR,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,MAAM;QACN,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,YAAoB,EACpB,SAAiB;IAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA2B,CAAC;YAC7D,MAAM,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,eAAe,EAAE,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,EAC/B,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,MAAM,GAQP;IACC,MAAM,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACxC,MAAM,GAAG,CAAC,SAAS,CACjB,gBAAgB,EAChB,GAAG,IAAI,CAAC,SAAS,CACf;QACE,OAAO;QACP,MAAM,EAAE,MAAM,IAAI,EAAE;QACpB,iBAAiB;QACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,EACD,IAAI,EACJ,CAAC,CACF,IAAI,EACL,MAAM,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { startInProcessConnectorRun } from "./in-process-run.js";
2
+ export { getBrowserCacheDir, getDefaultUserDataDir, getDownloadedChromiumPath, getSystemChromePath, importChromeCookies, isSystemChrome, launchPersistentContext, resolveBrowserPath, } from "./browser.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/playwright/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { startInProcessConnectorRun } from "./in-process-run.js";
2
+ export { getBrowserCacheDir, getDefaultUserDataDir, getDownloadedChromiumPath, getSystemChromePath, importChromeCookies, isSystemChrome, launchPersistentContext, resolveBrowserPath, } from "./browser.js";
3
+ //# sourceMappingURL=index.js.map