gpt-connector 0.2.0 → 0.3.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.
@@ -0,0 +1,494 @@
1
+ import { execFile as execFileCallback, spawn as nodeSpawn } from "node:child_process";
2
+ import { chmod, lstat, mkdir, open, readFile, unlink } from "node:fs/promises";
3
+ import { homedir, platform as hostPlatform } from "node:os";
4
+ import { join, resolve } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { CdpClient, discoverChatGptTarget } from "./cdp.js";
7
+ import { GptConnector } from "./connector.js";
8
+ import { ConnectorError } from "./errors.js";
9
+ const endpoint = "http://127.0.0.1:9223";
10
+ const chatGptUrl = "https://chatgpt.com/";
11
+ const probeTimeoutMs = 500;
12
+ const appProbeTimeoutMs = 3_000;
13
+ const readyDeadlineMs = 15_000;
14
+ const lockWaitMarginMs = 1_000;
15
+ const execFile = promisify(execFileCallback);
16
+ let inFlight;
17
+ export async function startBrowser(options = {}) {
18
+ if (inFlight === undefined) {
19
+ inFlight = startBrowserOnce(options).finally(() => { inFlight = undefined; });
20
+ }
21
+ return inFlight;
22
+ }
23
+ export async function showBrowser(options = {}) {
24
+ const current = options.platform ?? hostPlatform();
25
+ if (current !== "darwin")
26
+ throw new ConnectorError("INVALID_INPUT", "browser showはmacOS以外を未対応として拒否します。");
27
+ const profile = resolve(join(options.home ?? homedir(), ".gpt-connector", "browser-profile"));
28
+ const timeout = options.probeTimeoutMs ?? probeTimeoutMs;
29
+ const fetcher = timedFetch(options.fetch ?? globalThis.fetch, timeout);
30
+ const endpointReady = options.endpointReady ?? (() => endpointIsReady(fetcher));
31
+ const ownershipReady = () => ownsEndpoint(profile, options.processInspector ?? inspectListenerProcesses);
32
+ if (!await bounded(endpointReady(), timeout, "CDP endpoint確認がtimeoutしました"))
33
+ throw new ConnectorError("CDP_UNAVAILABLE", "専用ChromeのCDP endpointを確認できませんでした。");
34
+ if (!await bounded(ownershipReady(), timeout, "CDP endpoint所有確認がtimeoutしました"))
35
+ throw new ConnectorError("RUNTIME_DRIFT", "9223番ポートはgpt-connector専用profileのChromeが所有していません(ポート衝突)。");
36
+ const showTimeout = options.appProbeTimeoutMs ?? appProbeTimeoutMs;
37
+ await showOwnedWindow(profile, options.processInspector ?? inspectListenerProcesses, options.windowShower ?? (() => showChatGptWindow(fetcher, showTimeout)), options.processRevealer ?? revealProcess, options.processActivator ?? activateProcess, options.windowVisibilityVerifier ?? verifyWindowVisibility, showTimeout, "専用Chromeを表示可能状態へ復帰できませんでした。", "CDP_UNAVAILABLE");
38
+ return { ok: true, status: "shown", endpoint };
39
+ }
40
+ async function startBrowserOnce(options) {
41
+ const current = options.platform ?? hostPlatform();
42
+ if (current !== "darwin")
43
+ throw new ConnectorError("INVALID_INPUT", "browser startはmacOS以外を未対応として拒否します。");
44
+ const profile = resolve(join(options.home ?? homedir(), ".gpt-connector", "browser-profile"));
45
+ await ensurePrivateProfile(profile);
46
+ const lockWaitDeadlineMs = (options.readyDeadlineMs ?? readyDeadlineMs) + lockWaitMarginMs;
47
+ let lock;
48
+ try {
49
+ lock = await (options.lockAcquirer ?? acquireBrowserLock)(profile, lockWaitDeadlineMs);
50
+ }
51
+ catch (error) {
52
+ throw launcherError("CDP_UNAVAILABLE", "専用Chrome起動lockを取得できませんでした。", error);
53
+ }
54
+ let result;
55
+ let launchError;
56
+ try {
57
+ result = await startBrowserLocked(options, profile);
58
+ }
59
+ catch (error) {
60
+ launchError = error;
61
+ }
62
+ try {
63
+ await lock.release();
64
+ }
65
+ catch (error) {
66
+ if (launchError === undefined)
67
+ throw launcherError("CDP_UNAVAILABLE", "専用Chrome起動lockを解放できませんでした。", error);
68
+ }
69
+ if (launchError !== undefined)
70
+ throw launchError;
71
+ return result;
72
+ }
73
+ async function startBrowserLocked(options, profile) {
74
+ const timeout = options.probeTimeoutMs ?? probeTimeoutMs;
75
+ const appTimeout = options.appProbeTimeoutMs ?? appProbeTimeoutMs;
76
+ const deadline = options.readyDeadlineMs ?? readyDeadlineMs;
77
+ const fetcher = timedFetch(options.fetch ?? globalThis.fetch, timeout);
78
+ const endpointReady = options.endpointReady ?? (() => endpointIsReady(fetcher));
79
+ const processInspector = options.processInspector ?? inspectListenerProcesses;
80
+ const ownershipReady = () => ownsEndpoint(profile, processInspector);
81
+ const appReady = options.appReady ?? options.connectorProbe ?? (() => ready(fetcher, timeout, appTimeout));
82
+ const windowMinimizer = options.windowMinimizer ?? (() => minimizeChatGptWindow(fetcher, appTimeout));
83
+ const coldTargetCreator = options.coldTargetCreator ?? (() => createMinimizedChatGptTarget(fetcher, appTimeout));
84
+ const coldWindowVerifier = options.coldWindowVerifier ?? ((targetId) => verifyCreatedChatGptWindow(fetcher, appTimeout, targetId));
85
+ const windowShower = options.windowShower ?? (() => showChatGptWindow(fetcher, appTimeout));
86
+ const existingTargetAbsent = options.existingTargetAbsent ?? (() => chatGptTargetAbsent(fetcher));
87
+ const processRevealer = options.processRevealer ?? revealProcess;
88
+ const visibilityVerifier = options.windowVisibilityVerifier ?? verifyWindowVisibility;
89
+ const processActivator = options.processActivator ?? activateProcess;
90
+ const authShow = () => showOwnedWindow(profile, processInspector, windowShower, processRevealer, processActivator, visibilityVerifier, Math.max(1, readyDeadline - Date.now()), "認証復帰のため専用Chrome windowを表示できませんでした。", "AUTH_REQUIRED");
91
+ const sleep = options.sleep ?? ((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));
92
+ const readyDeadline = Date.now() + deadline;
93
+ const endpointExists = await bounded(endpointReady(), timeout, "CDP endpoint確認がtimeoutしました")
94
+ .catch((error) => { throw launcherError("CDP_UNAVAILABLE", "CDP endpointを確認できませんでした。", error); });
95
+ if (endpointExists) {
96
+ const owned = await bounded(ownershipReady(), timeout, "既存CDP endpointの所有確認がtimeoutしました")
97
+ .catch((error) => { throw launcherError("CDP_UNAVAILABLE", "既存CDP endpointの所有者を確認できませんでした。", error); });
98
+ if (!owned) {
99
+ throw new ConnectorError("RUNTIME_DRIFT", "9223番ポートはgpt-connector専用profileのChromeが所有していません(ポート衝突)。");
100
+ }
101
+ if (await existingTargetAbsent()) {
102
+ await createAndVerifyMinimizedTarget(coldTargetCreator, coldWindowVerifier);
103
+ const pid = await revealOwnedProcess(profile, processInspector, processRevealer, Math.max(1, readyDeadline - Date.now()));
104
+ const result = await waitForReadyWithAuthRecovery(appReady, sleep, appTimeout, Math.max(1, readyDeadline - Date.now()), authShow, "already_ready");
105
+ await visibilityVerifier(await stableOwnedListenerPid(profile, processInspector, pid), false, Math.max(1, readyDeadline - Date.now()));
106
+ return result;
107
+ }
108
+ await minimizeReadyWindow(windowMinimizer);
109
+ const pid = await revealOwnedProcess(profile, processInspector, processRevealer, Math.max(1, readyDeadline - Date.now()));
110
+ const result = await waitForReadyWithAuthRecovery(appReady, sleep, appTimeout, Math.max(1, readyDeadline - Date.now()), authShow, "already_ready");
111
+ await visibilityVerifier(await stableOwnedListenerPid(profile, processInspector, pid), false, Math.max(1, readyDeadline - Date.now()));
112
+ return result;
113
+ }
114
+ const args = ["-j", "-g", "-n", "-a", "Google Chrome", "--args", "--remote-debugging-address=127.0.0.1", "--remote-debugging-port=9223", `--user-data-dir=${profile}`, "--no-startup-window", "--no-first-run", "--no-default-browser-check"];
115
+ const spawn = options.spawn ?? ((command, values) => nodeSpawn(command, values, { detached: true, stdio: "ignore" }));
116
+ try {
117
+ await spawnError(spawn("open", args));
118
+ }
119
+ catch (error) {
120
+ throw launcherError("CDP_UNAVAILABLE", "専用Chromeを起動できませんでした。", error);
121
+ }
122
+ if (!await waitForOwnedEndpoint(endpointReady, ownershipReady, sleep, timeout, Math.max(1, readyDeadline - Date.now()))) {
123
+ throw new ConnectorError("CDP_UNAVAILABLE", "専用ChromeのCDP endpointと所有者を確認できるまで待機がtimeoutしました。");
124
+ }
125
+ await createAndVerifyMinimizedTarget(coldTargetCreator, coldWindowVerifier);
126
+ const pid = await revealOwnedProcess(profile, processInspector, processRevealer, Math.max(1, readyDeadline - Date.now()));
127
+ const result = await waitForReadyWithAuthRecovery(appReady, sleep, appTimeout, Math.max(1, readyDeadline - Date.now()), authShow, "started");
128
+ await visibilityVerifier(await stableOwnedListenerPid(profile, processInspector, pid), false, Math.max(1, readyDeadline - Date.now()));
129
+ return result;
130
+ }
131
+ async function createAndVerifyMinimizedTarget(create, verify) { try {
132
+ const targetId = await create();
133
+ if (targetId.length === 0)
134
+ throw new Error("CDP targetIdが不正です");
135
+ if (await verify(targetId) !== "minimized")
136
+ throw new Error("CDP windowStateがminimizedではありません");
137
+ }
138
+ catch (error) {
139
+ throw browserWindowError("専用Chromeの最小化ChatGPT targetを作成できませんでした。", error);
140
+ } }
141
+ async function showOwnedWindow(profile, inspect, shower, reveal, activate, verify, timeoutMs, message, code) { try {
142
+ await shower();
143
+ const pid = await ownedListenerPid(profile, inspect);
144
+ await reveal(pid, timeoutMs);
145
+ await activate(pid, timeoutMs);
146
+ await verify(pid, true, timeoutMs);
147
+ }
148
+ catch (error) {
149
+ throw new ConnectorError(code, message, undefined, { cause: error });
150
+ } }
151
+ async function waitForReadyWithAuthRecovery(appReady, sleep, timeout, deadline, recover, status) {
152
+ try {
153
+ if (await waitForApp(appReady, sleep, timeout, deadline))
154
+ return { ok: true, status, endpoint };
155
+ }
156
+ catch (error) {
157
+ if (error instanceof ConnectorError && error.code === "AUTH_REQUIRED") {
158
+ await recover();
159
+ }
160
+ throw error;
161
+ }
162
+ throw new ConnectorError("CDP_UNAVAILABLE", "専用ChromeのChatGPTが利用可能になるまで待機がtimeoutしました。");
163
+ }
164
+ function launcherError(code, message, cause) {
165
+ return cause instanceof ConnectorError ? cause : new ConnectorError(code, message, undefined, { cause });
166
+ }
167
+ async function minimizeReadyWindow(minimize) {
168
+ try {
169
+ if (await minimize() !== "minimized")
170
+ throw new Error("CDP windowStateがminimizedではありません");
171
+ }
172
+ catch (error) {
173
+ throw browserWindowError("専用ChromeのChatGPT windowを最小化できませんでした。", error);
174
+ }
175
+ }
176
+ function browserWindowError(message, cause) {
177
+ if (cause instanceof ConnectorError) {
178
+ if (cause.code === "CDP_UNAVAILABLE" || cause.code === "RUNTIME_DRIFT")
179
+ return cause;
180
+ if (cause.code === "CHAT_FAILED")
181
+ return new ConnectorError("RUNTIME_DRIFT", message, undefined, { cause });
182
+ }
183
+ return new ConnectorError("RUNTIME_DRIFT", message, undefined, { cause });
184
+ }
185
+ async function minimizeChatGptWindow(fetcher, timeoutMs) {
186
+ const target = await discoverChatGptTarget(endpoint, fetcher);
187
+ const client = await CdpClient.connect(target.webSocketDebuggerUrl, timeoutMs);
188
+ try {
189
+ const window = await client.call("Browser.getWindowForTarget", { targetId: target.id }, timeoutMs);
190
+ if (typeof window.windowId !== "number")
191
+ throw new Error("CDP windowIdが不正です");
192
+ const before = await client.call("Browser.getWindowBounds", { windowId: window.windowId }, timeoutMs);
193
+ const state = before.bounds?.windowState;
194
+ if (state === "fullscreen") {
195
+ await client.call("Browser.setWindowBounds", { windowId: window.windowId, bounds: { windowState: "normal" } }, timeoutMs);
196
+ await waitForWindowState(client, window.windowId, "normal", timeoutMs);
197
+ }
198
+ else if (state !== "normal" && state !== "maximized" && state !== "minimized")
199
+ throw new Error("CDP windowStateが不正です");
200
+ await client.call("Browser.setWindowBounds", { windowId: window.windowId, bounds: { windowState: "minimized" } }, timeoutMs);
201
+ await waitForWindowState(client, window.windowId, "minimized", timeoutMs);
202
+ return "minimized";
203
+ }
204
+ finally {
205
+ client.close();
206
+ }
207
+ }
208
+ async function showChatGptWindow(fetcher, timeoutMs) {
209
+ const target = await discoverChatGptTarget(endpoint, fetcher);
210
+ const client = await CdpClient.connect(target.webSocketDebuggerUrl, timeoutMs);
211
+ try {
212
+ const window = await client.call("Browser.getWindowForTarget", { targetId: target.id }, timeoutMs);
213
+ if (typeof window.windowId !== "number")
214
+ throw new Error("CDP windowIdが不正です");
215
+ const before = await client.call("Browser.getWindowBounds", { windowId: window.windowId }, timeoutMs);
216
+ if (!["minimized", "maximized", "fullscreen", "normal"].includes(String(before.bounds?.windowState)))
217
+ throw new Error("CDP windowStateが不正です");
218
+ await client.call("Browser.setWindowBounds", { windowId: window.windowId, bounds: { windowState: "normal" } }, timeoutMs);
219
+ await client.call("Page.bringToFront", {}, timeoutMs);
220
+ return "normal";
221
+ }
222
+ finally {
223
+ client.close();
224
+ }
225
+ }
226
+ async function createMinimizedChatGptTarget(fetcher, timeoutMs) {
227
+ let response;
228
+ try {
229
+ response = await fetcher(`${endpoint}/json/version`);
230
+ }
231
+ catch (error) {
232
+ throw new ConnectorError("CDP_UNAVAILABLE", "CDP browser endpointを取得できませんでした。", undefined, { cause: error });
233
+ }
234
+ if (!response.ok)
235
+ throw new Error("CDP browser endpointを取得できませんでした");
236
+ const version = await response.json();
237
+ if (typeof version.webSocketDebuggerUrl !== "string")
238
+ throw new Error("CDP browser WebSocket URLが不正です");
239
+ const client = await CdpClient.connect(version.webSocketDebuggerUrl, timeoutMs);
240
+ try {
241
+ const created = await client.call("Target.createTarget", { url: chatGptUrl, newWindow: true, background: true, windowState: "minimized" }, timeoutMs);
242
+ if (typeof created.targetId !== "string" || created.targetId.length === 0)
243
+ throw new Error("CDP targetIdが不正です");
244
+ return created.targetId;
245
+ }
246
+ finally {
247
+ client.close();
248
+ }
249
+ }
250
+ async function verifyCreatedChatGptWindow(fetcher, timeoutMs, targetId) {
251
+ const target = await discoverChatGptTarget(endpoint, fetcher);
252
+ if (target.id !== targetId)
253
+ throw new Error("作成したChatGPT targetと一致しません");
254
+ const client = await CdpClient.connect(target.webSocketDebuggerUrl, timeoutMs);
255
+ try {
256
+ const window = await client.call("Browser.getWindowForTarget", { targetId }, timeoutMs);
257
+ if (typeof window.windowId !== "number")
258
+ throw new Error("CDP windowIdが不正です");
259
+ await waitForWindowState(client, window.windowId, "minimized", timeoutMs);
260
+ return "minimized";
261
+ }
262
+ finally {
263
+ client.close();
264
+ }
265
+ }
266
+ async function waitForWindowState(client, windowId, expected, timeoutMs) {
267
+ const deadline = Date.now() + timeoutMs;
268
+ let lastState;
269
+ do {
270
+ const result = await client.call("Browser.getWindowBounds", { windowId }, Math.max(1, deadline - Date.now()));
271
+ lastState = result.bounds?.windowState;
272
+ if (lastState === expected)
273
+ return;
274
+ if (Date.now() < deadline)
275
+ await new Promise((resolve) => setTimeout(resolve, 50));
276
+ } while (Date.now() < deadline);
277
+ throw new Error(`CDP windowStateが${expected}へ収束しません: ${String(lastState)}`);
278
+ }
279
+ function timedFetch(fetcher, timeoutMs) {
280
+ return (input, init) => fetcher(input, { ...init, signal: AbortSignal.timeout(timeoutMs) });
281
+ }
282
+ async function waitForApp(appReady, sleep, timeoutMs, deadlineMs) {
283
+ const deadline = Date.now() + deadlineMs;
284
+ let lastRuntimeDrift;
285
+ while (Date.now() < deadline) {
286
+ try {
287
+ if (await bounded(appReady(), Math.min(timeoutMs, Math.max(1, deadline - Date.now())), "ChatGPT app確認がtimeoutしました"))
288
+ return true;
289
+ }
290
+ catch (error) {
291
+ if (error instanceof ConnectorError && error.code === "AUTH_REQUIRED")
292
+ throw error;
293
+ if (error instanceof ConnectorError && error.code === "RUNTIME_DRIFT")
294
+ lastRuntimeDrift = error;
295
+ // SPA初期化中のbridge/catalog probe timeoutは全体deadlineまで再試行する。
296
+ }
297
+ await sleep(Math.min(200, Math.max(0, deadline - Date.now())));
298
+ }
299
+ if (lastRuntimeDrift !== undefined)
300
+ throw lastRuntimeDrift;
301
+ return false;
302
+ }
303
+ async function waitForOwnedEndpoint(endpointReady, ownershipReady, sleep, timeoutMs, deadlineMs) {
304
+ const deadline = Date.now() + deadlineMs;
305
+ while (Date.now() < deadline) {
306
+ try {
307
+ const remaining = Math.max(1, deadline - Date.now());
308
+ if (await bounded(endpointReady(), Math.min(timeoutMs, remaining), "CDP endpoint確認がtimeoutしました")
309
+ && await bounded(ownershipReady(), Math.min(timeoutMs, remaining), "CDP endpoint所有確認がtimeoutしました"))
310
+ return true;
311
+ }
312
+ catch {
313
+ // ChromeのCDP起動中は全体deadlineまで再試行する。
314
+ }
315
+ await sleep(Math.min(200, Math.max(0, deadline - Date.now())));
316
+ }
317
+ return false;
318
+ }
319
+ async function bounded(operation, timeoutMs, message) {
320
+ let timer;
321
+ try {
322
+ return await Promise.race([operation, new Promise((_resolve, reject) => { timer = setTimeout(() => reject(new Error(message)), timeoutMs); })]);
323
+ }
324
+ finally {
325
+ if (timer !== undefined)
326
+ clearTimeout(timer);
327
+ }
328
+ }
329
+ async function endpointIsReady(fetcher) { try {
330
+ return (await fetcher(`${endpoint}/json/version`)).ok;
331
+ }
332
+ catch {
333
+ return false;
334
+ } }
335
+ async function chatGptTargetAbsent(fetcher) {
336
+ const response = await fetcher(`${endpoint}/json/list`);
337
+ if (!response.ok)
338
+ throw new ConnectorError("CDP_UNAVAILABLE", "CDP target一覧の取得に失敗しました。");
339
+ const raw = await response.json();
340
+ if (!Array.isArray(raw))
341
+ throw new ConnectorError("RUNTIME_DRIFT", "CDP target一覧の形式が不正です。");
342
+ const count = raw.filter((value) => typeof value === "object" && value !== null && value.type === "page" && (() => { try {
343
+ return new URL(String(value.url)).origin === "https://chatgpt.com";
344
+ }
345
+ catch {
346
+ return false;
347
+ } })()).length;
348
+ if (count > 1)
349
+ throw new ConnectorError("CDP_UNAVAILABLE", "ChatGPT page targetが複数あります。専用Chromeでは1tabだけ開いてください。");
350
+ return count === 0;
351
+ }
352
+ async function ownsEndpoint(profile, inspect) {
353
+ try {
354
+ const listeners = await inspect();
355
+ return listeners.length === 1 && /^\d+$/.test(listeners[0].pid) && isOwnedChromeCommand(listeners[0].command, profile);
356
+ }
357
+ catch {
358
+ return false;
359
+ }
360
+ }
361
+ async function ownedListenerPid(profile, inspect) {
362
+ const listeners = await inspect();
363
+ if (listeners.length !== 1 || !/^\d+$/.test(listeners[0].pid) || !isOwnedChromeCommand(listeners[0].command, profile))
364
+ throw new ConnectorError("RUNTIME_DRIFT", "9223番ポートはgpt-connector専用profileのChromeが所有していません(ポート衝突)。");
365
+ return Number(listeners[0].pid);
366
+ }
367
+ async function stableOwnedListenerPid(profile, inspect, expectedPid) { const pid = await ownedListenerPid(profile, inspect); if (pid !== expectedPid)
368
+ throw new ConnectorError("RUNTIME_DRIFT", "専用Chromeの9223所有PIDが起動中に交代しました。"); return pid; }
369
+ async function revealOwnedProcess(profile, inspect, reveal, timeoutMs) {
370
+ const pid = await ownedListenerPid(profile, inspect);
371
+ try {
372
+ await reveal(pid, timeoutMs);
373
+ return pid;
374
+ }
375
+ catch (error) {
376
+ throw launcherError("CDP_UNAVAILABLE", "専用Chromeのhidden状態を解除できませんでした。", error);
377
+ }
378
+ }
379
+ const runningApplicationActionScript = "ObjC.import('AppKit'); function run(argv) { const a = $.NSRunningApplication.runningApplicationWithProcessIdentifier(Number(argv[0])); if (a.isNil()) throw new Error('PID not running'); const action = String(argv[1]); if (action === 'unhide') a.unhide; else if (action === 'activate') { if (!a.activateWithOptions($.NSApplicationActivateAllWindows | $.NSApplicationActivateIgnoringOtherApps)) throw new Error('activate failed'); } else throw new Error('invalid action'); return 'ok'; }";
380
+ const runningApplicationStatusScript = "ObjC.import('AppKit'); function run(argv) { const a = $.NSRunningApplication.runningApplicationWithProcessIdentifier(Number(argv[0])); if (a.isNil()) throw new Error('PID not running'); const status = String(argv[1]); if (status === 'unhide') return String(!Boolean(a.hidden)); if (status === 'activate') return String(Boolean(a.active)); throw new Error('invalid status'); }";
381
+ async function runningApplicationAction(pid, action, timeoutMs = appProbeTimeoutMs) {
382
+ if (!Number.isSafeInteger(pid) || pid <= 0)
383
+ throw new Error("PIDが不正です");
384
+ await execFile("osascript", ["-l", "JavaScript", "-e", runningApplicationActionScript, "--", String(pid), action], { timeout: Math.min(timeoutMs, 500) });
385
+ const deadline = Date.now() + timeoutMs;
386
+ while (Date.now() < deadline) {
387
+ const remaining = Math.max(1, deadline - Date.now());
388
+ const { stdout } = await execFile("osascript", ["-l", "JavaScript", "-e", runningApplicationStatusScript, "--", String(pid), action], { timeout: Math.min(500, remaining) });
389
+ if (stdout.trim() === "true")
390
+ return;
391
+ await new Promise((resolve) => setTimeout(resolve, 100));
392
+ }
393
+ throw new Error(action === "unhide" ? "hidden状態の解除がtimeoutしました" : "active状態への遷移がtimeoutしました");
394
+ }
395
+ async function revealProcess(pid, timeoutMs) { await runningApplicationAction(pid, "unhide", timeoutMs); }
396
+ async function activateProcess(pid, timeoutMs) { await runningApplicationAction(pid, "activate", timeoutMs); }
397
+ const windowVisibilityScript = "ObjC.import('CoreGraphics'); function run(argv) { const pid = Number(argv[0]); const r = $.CGWindowListCopyWindowInfo($.kCGWindowListOptionOnScreenOnly | $.kCGWindowListExcludeDesktopElements, $.kCGNullWindowID); const n = $.CFArrayGetCount(r); let count = 0; for (let i = 0; i < n; i += 1) { const value = ObjC.deepUnwrap(ObjC.castRefToObject($.CFArrayGetValueAtIndex(r, i))); if (value.kCGWindowOwnerPID === pid && value.kCGWindowLayer === 0) count += 1; } return String(count); }";
398
+ async function verifyWindowVisibility(pid, expectedVisible, timeoutMs) { const deadline = Date.now() + timeoutMs; do {
399
+ let stdout;
400
+ try {
401
+ ({ stdout } = await execFile("osascript", ["-l", "JavaScript", "-e", windowVisibilityScript, "--", String(pid)], { timeout: Math.min(3_000, Math.max(1, deadline - Date.now())) }));
402
+ }
403
+ catch (error) {
404
+ throw new ConnectorError("CDP_UNAVAILABLE", "WindowServer状態を確認できませんでした。", undefined, { cause: error });
405
+ }
406
+ const count = Number(stdout.trim());
407
+ if (Number.isSafeInteger(count) && (expectedVisible ? count >= 1 : count === 0))
408
+ return;
409
+ if (Date.now() < deadline)
410
+ await new Promise((resolve) => setTimeout(resolve, 100));
411
+ } while (Date.now() < deadline); throw new ConnectorError("RUNTIME_DRIFT", expectedVisible ? "WindowServer表示windowがありません。" : "WindowServer表示windowが残っています。"); }
412
+ function isOwnedChromeCommand(command, profile) {
413
+ const token = (value) => new RegExp(`(?:^|\\s)${value.replace(/[.*+?^${}()|[\\]\\]/g, "\\$&")}(?=\\s|$)`);
414
+ return /\/Google Chrome(?:\s|$)/.test(command)
415
+ && token("--remote-debugging-address=127.0.0.1").test(command)
416
+ && token("--remote-debugging-port=9223").test(command)
417
+ && token(`--user-data-dir=${profile}`).test(command);
418
+ }
419
+ async function inspectListenerProcesses() {
420
+ try {
421
+ const { stdout } = await execFile("lsof", ["-nP", "-iTCP:9223", "-sTCP:LISTEN", "-t"], { encoding: "utf8" });
422
+ const pids = [...new Set(stdout.split("\n").map((value) => value.trim()).filter((value) => /^\d+$/.test(value)))];
423
+ return Promise.all(pids.map(async (pid) => {
424
+ const { stdout: command } = await execFile("ps", ["-p", pid, "-o", "command="], { encoding: "utf8" });
425
+ return { pid, command: command.trim() };
426
+ }));
427
+ }
428
+ catch {
429
+ return [];
430
+ }
431
+ }
432
+ async function acquireBrowserLock(profile, waitDeadlineMs) {
433
+ const file = join(profile, "browser-launch.lock");
434
+ const deadline = Date.now() + waitDeadlineMs;
435
+ while (Date.now() < deadline) {
436
+ try {
437
+ const handle = await open(file, "wx", 0o600);
438
+ await handle.writeFile(`${process.pid}\n`);
439
+ await handle.close();
440
+ return { release: async () => { const info = await lstat(file); if (info.isSymbolicLink() || !info.isFile())
441
+ throw new Error("browser launch lockが不正です"); await unlink(file); } };
442
+ }
443
+ catch (error) {
444
+ if (error.code !== "EEXIST")
445
+ throw error;
446
+ const info = await lstat(file);
447
+ if (info.isSymbolicLink() || !info.isFile())
448
+ throw new Error("browser launch lockが不正です", { cause: error });
449
+ const pid = (await readFile(file, "utf8")).trim();
450
+ if (!/^\d+$/.test(pid))
451
+ throw new Error("browser launch lockのPIDが不正です", { cause: error });
452
+ if (!isLiveProcess(Number(pid))) {
453
+ await unlink(file);
454
+ continue;
455
+ }
456
+ await new Promise((resolve) => setTimeout(resolve, 50));
457
+ }
458
+ }
459
+ throw new Error("browser launch lockの取得がtimeoutしました");
460
+ }
461
+ function isLiveProcess(pid) {
462
+ try {
463
+ process.kill(pid, 0);
464
+ return true;
465
+ }
466
+ catch (error) {
467
+ return error.code === "EPERM";
468
+ }
469
+ }
470
+ async function ready(fetcher, cdpTimeoutMs, operationTimeoutMs) { let connector; try {
471
+ connector = await GptConnector.connect({ endpoint, fetch: fetcher, cdpTimeoutMs, operationTimeoutMs, pollIntervalMs: 100, readOnlyJobs: true });
472
+ await connector.models();
473
+ return true;
474
+ }
475
+ catch (error) {
476
+ if (error instanceof ConnectorError && (error.code === "AUTH_REQUIRED" || error.code === "RUNTIME_DRIFT"))
477
+ throw error;
478
+ return false;
479
+ }
480
+ finally {
481
+ connector?.close();
482
+ } }
483
+ async function spawnError(child) { await new Promise((resolve, reject) => { child.once("error", reject); setTimeout(resolve, 0); }); }
484
+ async function ensurePrivateProfile(profile) { try {
485
+ const info = await lstat(profile);
486
+ if (info.isSymbolicLink() || !info.isDirectory())
487
+ throw new Error("browser profile pathが不正です");
488
+ }
489
+ catch (error) {
490
+ if (error.code !== "ENOENT")
491
+ throw error;
492
+ await mkdir(profile, { recursive: true, mode: 0o700 });
493
+ } await chmod(profile, 0o700); }
494
+ //# sourceMappingURL=browser-launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-launcher.js","sourceRoot":"","sources":["../../src/browser-launcher.ts"],"names":[],"mappings":"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"}
package/dist/src/cdp.js CHANGED
@@ -8,13 +8,13 @@ export function validateCdpEndpoint(endpoint) {
8
8
  url = new URL(endpoint);
9
9
  }
10
10
  catch {
11
- throw new ConnectorError("CDP_UNAVAILABLE", "CDP endpointがURLではありません。");
11
+ throw new ConnectorError("INVALID_INPUT", "CDP endpointがURLではありません。");
12
12
  }
13
13
  if (url.protocol !== "http:" || !loopbackHosts.has(url.hostname)) {
14
- throw new ConnectorError("CDP_UNAVAILABLE", "CDP endpointはloopback HTTPだけを利用できます。");
14
+ throw new ConnectorError("INVALID_INPUT", "CDP endpointはloopback HTTPだけを利用できます。");
15
15
  }
16
16
  if (url.username !== "" || url.password !== "" || url.pathname !== "/") {
17
- throw new ConnectorError("CDP_UNAVAILABLE", "CDP endpointの形式が不正です。");
17
+ throw new ConnectorError("INVALID_INPUT", "CDP endpointの形式が不正です。");
18
18
  }
19
19
  return url;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/cdp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cdp.js","sourceRoot":"","sources":["../../src/cdp.ts"],"names":[],"mappings":"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"}