thatgfsj-code 3.0.13 → 3.0.14
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 +1 -1
- package/dist/config/types.d.ts +3 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/setup/browser-setup.d.ts +5 -5
- package/dist/setup/browser-setup.d.ts.map +1 -1
- package/dist/setup/browser-setup.js +7 -14
- package/dist/setup/browser-setup.js.map +1 -1
- package/dist/tools/browser.d.ts +7 -10
- package/dist/tools/browser.d.ts.map +1 -1
- package/dist/tools/browser.js +16 -58
- package/dist/tools/browser.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ AI 编程助手 — 终端里的 AI 编程伙伴
|
|
|
8
8
|
|
|
9
9
|
- **Ink TUI** — React 驱动的终端 UI,流式输出、Markdown 渲染
|
|
10
10
|
- **Agent 工具调用** — AI 可以读写文件、执行命令、搜索代码、操作 Git,写/删文件前展示 diff 并请求确认
|
|
11
|
-
- **本机浏览器(Playwright)** —
|
|
11
|
+
- **本机浏览器(Playwright)** — 首次运行可选择安装内置 Chromium(约 130MB,独立运行,不影响你的浏览器),AI 用它搜索网页、读取页面,零 API key
|
|
12
12
|
- **MCP 支持** — 接入 Model Context Protocol 服务器(stdio),工具动态注册进对话,`~/.thatgfsj/mcp.json` 配置
|
|
13
13
|
- **会话持久化** — 每轮自动保存到 `~/.thatgfsj/sessions/`,`/resume` 随时恢复历史会话
|
|
14
14
|
- **Headless 模式** — `gfcode "任务" --json` 输出行分隔 JSON 事件流,可脚本化 / 接 CI
|
package/dist/config/types.d.ts
CHANGED
|
@@ -54,11 +54,12 @@ export interface Config {
|
|
|
54
54
|
contextWindow?: number;
|
|
55
55
|
/**
|
|
56
56
|
* v3.0.13: first-run browser (Playwright) setup state — the question
|
|
57
|
-
* is only asked once; mode records what was set up.
|
|
57
|
+
* is only asked once; mode records what was set up. v3.0.14: the
|
|
58
|
+
* bundled Chromium is used exclusively (never the user's own browser).
|
|
58
59
|
*/
|
|
59
60
|
browserSetup?: {
|
|
60
61
|
done: boolean;
|
|
61
|
-
mode?: '
|
|
62
|
+
mode?: 'chromium' | 'declined';
|
|
62
63
|
};
|
|
63
64
|
/**
|
|
64
65
|
* v3.0.8: user-added model ids (via /models → 添加模型). Free-text ids
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,QAAQ,GACR,UAAU,GACV,MAAM,GACN,OAAO,GACP,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,eAAe,GACf,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC3C;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KACtC,CAAC;IACF;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC7C,2EAA2E;QAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,QAAQ,GACR,UAAU,GACV,MAAM,GACN,OAAO,GACP,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,eAAe,GACf,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC3C;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KACtC,CAAC;IACF;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC7C,2EAA2E;QAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,GAAG,UAAU,CAAA;KAAE,CAAC;IACjE;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* First-run browser setup (v3.0.
|
|
2
|
+
* First-run browser setup (v3.0.14).
|
|
3
3
|
*
|
|
4
|
-
* On the first interactive run we ask whether to
|
|
5
|
-
* browser service.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* On the first interactive run we ask whether to install the Playwright
|
|
5
|
+
* browser service. Choosing yes downloads the BUNDLED Chromium (~130MB) —
|
|
6
|
+
* the user's own Edge/Chrome is never touched or launched. The outcome is
|
|
7
|
+
* persisted so the question never repeats.
|
|
8
8
|
*
|
|
9
9
|
* Non-interactive environments (piped stdin, --json) skip silently.
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-setup.d.ts","sourceRoot":"","sources":["../../src/setup/browser-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"browser-setup.d.ts","sourceRoot":"","sources":["../../src/setup/browser-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC7E"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* First-run browser setup (v3.0.
|
|
2
|
+
* First-run browser setup (v3.0.14).
|
|
3
3
|
*
|
|
4
|
-
* On the first interactive run we ask whether to
|
|
5
|
-
* browser service.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* On the first interactive run we ask whether to install the Playwright
|
|
5
|
+
* browser service. Choosing yes downloads the BUNDLED Chromium (~130MB) —
|
|
6
|
+
* the user's own Edge/Chrome is never touched or launched. The outcome is
|
|
7
|
+
* persisted so the question never repeats.
|
|
8
8
|
*
|
|
9
9
|
* Non-interactive environments (piped stdin, --json) skip silently.
|
|
10
10
|
*/
|
|
@@ -22,16 +22,9 @@ export async function ensureBrowserSetup(config) {
|
|
|
22
22
|
const ask = (q) => new Promise(res => rl.question(q, a => res(a.trim())));
|
|
23
23
|
console.log();
|
|
24
24
|
console.log(chalk.bold(' 浏览器服务(Playwright)'));
|
|
25
|
-
console.log(chalk.gray('
|
|
25
|
+
console.log(chalk.gray(' 安装后 AI 能用内置浏览器搜索网页、读取页面内容(独立运行,不影响你的浏览器)。'));
|
|
26
26
|
try {
|
|
27
|
-
|
|
28
|
-
const found = await BrowserTool.probeSystemBrowser();
|
|
29
|
-
if (found) {
|
|
30
|
-
await config.save({ browserSetup: { done: true, mode: found } });
|
|
31
|
-
console.log(chalk.green(` ✓ 检测到本机 ${found === 'msedge' ? 'Edge' : 'Chrome'},浏览器工具已就绪(无需下载)。`));
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
const answer = await ask(chalk.cyan(' 未检测到 Edge/Chrome。是否下载 Playwright 内置 Chromium(约 130MB)?[y/N] '));
|
|
27
|
+
const answer = await ask(chalk.cyan(' 是否安装?将下载内置 Chromium(约 130MB,一次性)[y/N] '));
|
|
35
28
|
if (answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes') {
|
|
36
29
|
console.log(chalk.gray(' 正在下载 Chromium(一次性,可能需要几分钟)…'));
|
|
37
30
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-setup.js","sourceRoot":"","sources":["../../src/setup/browser-setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAqB;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,EAAS,CAAC;IAC9B,IAAI,CAAC,CAAC,YAAY,EAAE,IAAI;QAAE,OAAO;IACjC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,CAAC,wCAAwC;IAE1E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,OAAO,CAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1F,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"browser-setup.js","sourceRoot":"","sources":["../../src/setup/browser-setup.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/browser.d.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* through the local network stack (works in China; Bing/Baidu are direct).
|
|
7
7
|
*
|
|
8
8
|
* Design notes:
|
|
9
|
-
* - Uses `playwright-core` (≈3MB, no browser downloads)
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* - Uses `playwright-core` (≈3MB, no browser downloads) with the BUNDLED
|
|
10
|
+
* Chromium only (installed via `npx playwright install chromium` on
|
|
11
|
+
* first run) — the user's own Edge/Chrome is never launched.
|
|
12
12
|
* - The browser launches lazily on first use and is reused across calls;
|
|
13
13
|
* it is killed on process exit.
|
|
14
14
|
* - `search` : engine search (bing | baidu), returns title/url/snippet
|
|
@@ -65,13 +65,10 @@ export declare class BrowserTool implements Tool {
|
|
|
65
65
|
/** Shut the shared browser down (process exit / action=close). */
|
|
66
66
|
dispose(): Promise<void>;
|
|
67
67
|
/**
|
|
68
|
-
* v3.0.
|
|
69
|
-
* Returns
|
|
70
|
-
*
|
|
71
|
-
* needed. Non-fatal on every failure path.
|
|
68
|
+
* v3.0.14: verify the BUNDLED Chromium launches (setup completed).
|
|
69
|
+
* Returns 'chromium' on success, null otherwise. System browsers are
|
|
70
|
+
* intentionally not considered.
|
|
72
71
|
*/
|
|
73
|
-
static
|
|
74
|
-
/** Verify a browser can launch; returns the mode that worked, else null. */
|
|
75
|
-
static verifyLaunch(): Promise<'msedge' | 'chrome' | 'chromium' | null>;
|
|
72
|
+
static verifyLaunch(): Promise<'chromium' | null>;
|
|
76
73
|
}
|
|
77
74
|
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/tools/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA0BnD,qBAAa,WAAY,YAAW,IAAI;IACtC,IAAI,SAAa;IACjB,WAAW,SAI6C;IAExD,WAAW;;;;;;;;;;;;;;;;;;;;;MAST;IAEF,QAAQ;qBACsB,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,EAAE;;;;MAIxE;IAEF,UAAU;;;;;QAKR;IAEF,2CAA2C;IAC3C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAa;IACnC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAuB;IACjD,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;YAE3B,MAAM;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/tools/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA0BnD,qBAAa,WAAY,YAAW,IAAI;IACtC,IAAI,SAAa;IACjB,WAAW,SAI6C;IAExD,WAAW;;;;;;;;;;;;;;;;;;;;;MAST;IAEF,QAAQ;qBACsB,CAAC,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC,EAAE;;;;MAIxE;IAEF,UAAU;;;;;QAKR;IAEF,2CAA2C;IAC3C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAa;IAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAa;IACnC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAuB;IACjD,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAS;YAE3B,MAAM;IAkCd,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAgF/D,kEAAkE;IAC5D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;OAIG;WACU,YAAY,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAUxD"}
|
package/dist/tools/browser.js
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* through the local network stack (works in China; Bing/Baidu are direct).
|
|
7
7
|
*
|
|
8
8
|
* Design notes:
|
|
9
|
-
* - Uses `playwright-core` (≈3MB, no browser downloads)
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* - Uses `playwright-core` (≈3MB, no browser downloads) with the BUNDLED
|
|
10
|
+
* Chromium only (installed via `npx playwright install chromium` on
|
|
11
|
+
* first run) — the user's own Edge/Chrome is never launched.
|
|
12
12
|
* - The browser launches lazily on first use and is reused across calls;
|
|
13
13
|
* it is killed on process exit.
|
|
14
14
|
* - `search` : engine search (bing | baidu), returns title/url/snippet
|
|
@@ -86,28 +86,17 @@ export class BrowserTool {
|
|
|
86
86
|
throw new Error(BrowserTool.launchError);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
lastErr = err;
|
|
98
|
-
}
|
|
89
|
+
// v3.0.14: bundled Chromium ONLY — the user's own Edge/Chrome is never
|
|
90
|
+
// launched (their explicit preference). Chromium is installed via
|
|
91
|
+
// `npx playwright install chromium` in the first-run setup.
|
|
92
|
+
try {
|
|
93
|
+
BrowserTool.browser = await BrowserTool.pw.chromium.launch({ headless: true });
|
|
99
94
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
catch {
|
|
106
|
-
BrowserTool.launchError =
|
|
107
|
-
`No usable browser found (tried Edge, Chrome, bundled Chromium). ` +
|
|
108
|
-
`Install one, or run: npx playwright install chromium. (${lastErr?.message ?? 'unknown error'})`;
|
|
109
|
-
throw new Error(BrowserTool.launchError);
|
|
110
|
-
}
|
|
95
|
+
catch {
|
|
96
|
+
BrowserTool.launchError =
|
|
97
|
+
'Playwright Chromium is not installed yet. Run `gfcode` once and choose ' +
|
|
98
|
+
'to install it (≈130MB), or run manually: npx playwright install chromium';
|
|
99
|
+
throw new Error(BrowserTool.launchError);
|
|
111
100
|
}
|
|
112
101
|
if (!BrowserTool.exitHookInstalled) {
|
|
113
102
|
BrowserTool.exitHookInstalled = true;
|
|
@@ -214,42 +203,11 @@ export class BrowserTool {
|
|
|
214
203
|
}
|
|
215
204
|
}
|
|
216
205
|
/**
|
|
217
|
-
* v3.0.
|
|
218
|
-
* Returns
|
|
219
|
-
*
|
|
220
|
-
* needed. Non-fatal on every failure path.
|
|
206
|
+
* v3.0.14: verify the BUNDLED Chromium launches (setup completed).
|
|
207
|
+
* Returns 'chromium' on success, null otherwise. System browsers are
|
|
208
|
+
* intentionally not considered.
|
|
221
209
|
*/
|
|
222
|
-
static async probeSystemBrowser() {
|
|
223
|
-
let pw;
|
|
224
|
-
try {
|
|
225
|
-
pw = await import('playwright-core');
|
|
226
|
-
}
|
|
227
|
-
catch {
|
|
228
|
-
return null;
|
|
229
|
-
}
|
|
230
|
-
for (const channel of ['msedge', 'chrome']) {
|
|
231
|
-
let browser = null;
|
|
232
|
-
try {
|
|
233
|
-
browser = await pw.chromium.launch({ channel, headless: true });
|
|
234
|
-
return channel;
|
|
235
|
-
}
|
|
236
|
-
catch {
|
|
237
|
-
// try next
|
|
238
|
-
}
|
|
239
|
-
finally {
|
|
240
|
-
try {
|
|
241
|
-
browser?.close();
|
|
242
|
-
}
|
|
243
|
-
catch { /* ignore */ }
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
return null;
|
|
247
|
-
}
|
|
248
|
-
/** Verify a browser can launch; returns the mode that worked, else null. */
|
|
249
210
|
static async verifyLaunch() {
|
|
250
|
-
const sys = await BrowserTool.probeSystemBrowser();
|
|
251
|
-
if (sys)
|
|
252
|
-
return sys;
|
|
253
211
|
try {
|
|
254
212
|
const pw = await import('playwright-core');
|
|
255
213
|
const browser = await pw.chromium.launch({ headless: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/tools/browser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/tools/browser.ts"],"names":[],"mappings":"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"}
|