10x-chat 0.10.0 → 0.10.1
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/dist/browser/engine.d.ts +2 -2
- package/dist/browser/engine.d.ts.map +1 -1
- package/dist/browser/engine.js +9 -7
- package/dist/browser/engine.js.map +1 -1
- package/dist/browser/stealth.d.ts +1 -1
- package/dist/browser/stealth.d.ts.map +1 -1
- package/dist/browser/stealth.js +7 -6
- package/dist/browser/stealth.js.map +1 -1
- package/package.json +3 -2
package/dist/browser/engine.d.ts
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
import type { BrowserType } from 'playwright';
|
|
15
15
|
/** Get the chromium browser type (async — loads engine on first call). */
|
|
16
16
|
export declare function getChromium(): Promise<BrowserType>;
|
|
17
|
-
/** Which engine is active
|
|
18
|
-
export declare function getEngineName(): 'patchright' | 'playwright';
|
|
17
|
+
/** Which engine is active. Returns 'unknown' if not yet loaded. */
|
|
18
|
+
export declare function getEngineName(): 'patchright' | 'playwright' | 'unknown';
|
|
19
19
|
/** Whether the engine has been loaded yet. */
|
|
20
20
|
export declare function isEngineLoaded(): boolean;
|
|
21
21
|
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/browser/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/browser/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmC9C,0EAA0E;AAC1E,wBAAsB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAExD;AAED,mEAAmE;AACnE,wBAAgB,aAAa,IAAI,YAAY,GAAG,YAAY,GAAG,SAAS,CAEvE;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,IAAI,OAAO,CAExC"}
|
package/dist/browser/engine.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* re-exports `chromium` from whichever is available.
|
|
13
13
|
*/
|
|
14
14
|
let _chromium;
|
|
15
|
-
let _engineName = '
|
|
15
|
+
let _engineName = 'unknown';
|
|
16
16
|
let _loaded = false;
|
|
17
17
|
async function loadEngine() {
|
|
18
18
|
if (_chromium)
|
|
@@ -20,13 +20,15 @@ async function loadEngine() {
|
|
|
20
20
|
// Try Patchright first (drop-in Playwright replacement with stealth)
|
|
21
21
|
try {
|
|
22
22
|
const patchright = await import('patchright');
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
if (patchright.chromium) {
|
|
24
|
+
_chromium = patchright.chromium;
|
|
25
|
+
_engineName = 'patchright';
|
|
26
|
+
_loaded = true;
|
|
27
|
+
return _chromium;
|
|
28
|
+
}
|
|
27
29
|
}
|
|
28
30
|
catch {
|
|
29
|
-
// Patchright not installed — fall back to Playwright
|
|
31
|
+
// Patchright not installed or broken — fall back to Playwright
|
|
30
32
|
}
|
|
31
33
|
try {
|
|
32
34
|
const playwright = await import('playwright');
|
|
@@ -43,7 +45,7 @@ async function loadEngine() {
|
|
|
43
45
|
export async function getChromium() {
|
|
44
46
|
return loadEngine();
|
|
45
47
|
}
|
|
46
|
-
/** Which engine is active
|
|
48
|
+
/** Which engine is active. Returns 'unknown' if not yet loaded. */
|
|
47
49
|
export function getEngineName() {
|
|
48
50
|
return _engineName;
|
|
49
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/browser/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,IAAI,SAAkC,CAAC;AACvC,IAAI,WAAW,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/browser/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,IAAI,SAAkC,CAAC;AACvC,IAAI,WAAW,GAA4C,SAAS,CAAC;AACrE,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,KAAK,UAAU,UAAU;IACvB,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,qEAAqE;IACrE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,SAAS,GAAG,UAAU,CAAC,QAAuB,CAAC;YAC/C,WAAW,GAAG,YAAY,CAAC;YAC3B,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9C,SAAS,GAAG,UAAU,CAAC,QAAuB,CAAC;QAC/C,WAAW,GAAG,YAAY,CAAC;QAC3B,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,UAAU,EAAE,CAAC;AACtB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* 4. navigator.plugins/mimeTypes populated
|
|
13
13
|
* 5. navigator.languages populated
|
|
14
14
|
*/
|
|
15
|
-
export declare const STEALTH_INIT_SCRIPT = "\n(() => {\n // 1. Remove webdriver flag\n Object.defineProperty(navigator, 'webdriver', { get: () => false });\n\n // 2. Fake chrome runtime (headless Chrome is missing window.chrome)\n if (!window.chrome) {\n window.chrome = {};\n }\n if (!window.chrome.runtime) {\n window.chrome.runtime = {};\n }\n\n // 3. Fix permissions query for notifications\n const origQuery = navigator.permissions?.query?.bind(navigator.permissions);\n if (origQuery) {\n navigator.permissions.query = (params) => {\n if (params.name === 'notifications') {\n return Promise.resolve({ state: Notification.permission, onchange: null });\n }\n return origQuery(params);\n };\n }\n\n // 4. Fix plugins/mimeTypes (headless has empty arrays)\n Object.defineProperty(navigator, 'plugins', {\n get: () => [
|
|
15
|
+
export declare const STEALTH_INIT_SCRIPT = "\n(() => {\n // 1. Remove webdriver flag\n Object.defineProperty(navigator, 'webdriver', { get: () => false });\n\n // 2. Fake chrome runtime (headless Chrome is missing window.chrome)\n if (!window.chrome) {\n window.chrome = {};\n }\n if (!window.chrome.runtime) {\n window.chrome.runtime = {};\n }\n\n // 3. Fix permissions query for notifications\n const origQuery = navigator.permissions?.query?.bind(navigator.permissions);\n if (origQuery) {\n navigator.permissions.query = (params) => {\n if (params.name === 'notifications') {\n return Promise.resolve({ state: Notification.permission, onchange: null });\n }\n return origQuery(params);\n };\n }\n\n // 4. Fix plugins/mimeTypes (headless has empty arrays)\n Object.defineProperty(navigator, 'plugins', {\n get: () => [\n { name: 'PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },\n { name: 'Chrome PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },\n { name: 'Chromium PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },\n { name: 'Microsoft Edge PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },\n { name: 'WebKit built-in PDF', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },\n ],\n });\n\n // 5. Fix languages (some headless configs return empty)\n Object.defineProperty(navigator, 'languages', {\n get: () => ['en-US', 'en'],\n });\n})();\n";
|
|
16
16
|
/**
|
|
17
17
|
* Detect if real Google Chrome is installed on the system.
|
|
18
18
|
* Returns 'chrome' if found, undefined otherwise.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stealth.d.ts","sourceRoot":"","sources":["../../src/browser/stealth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"stealth.d.ts","sourceRoot":"","sources":["../../src/browser/stealth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,6lDAwC/B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,GAAG,SAAS,CAkB1D"}
|
package/dist/browser/stealth.js
CHANGED
|
@@ -38,12 +38,13 @@ export const STEALTH_INIT_SCRIPT = `
|
|
|
38
38
|
|
|
39
39
|
// 4. Fix plugins/mimeTypes (headless has empty arrays)
|
|
40
40
|
Object.defineProperty(navigator, 'plugins', {
|
|
41
|
-
get: () => [
|
|
42
|
-
name: '
|
|
43
|
-
description: 'Portable Document Format',
|
|
44
|
-
filename: 'internal-pdf-viewer',
|
|
45
|
-
length: 1,
|
|
46
|
-
|
|
41
|
+
get: () => [
|
|
42
|
+
{ name: 'PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },
|
|
43
|
+
{ name: 'Chrome PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },
|
|
44
|
+
{ name: 'Chromium PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },
|
|
45
|
+
{ name: 'Microsoft Edge PDF Viewer', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },
|
|
46
|
+
{ name: 'WebKit built-in PDF', description: 'Portable Document Format', filename: 'internal-pdf-viewer', length: 1 },
|
|
47
|
+
],
|
|
47
48
|
});
|
|
48
49
|
|
|
49
50
|
// 5. Fix languages (some headless configs return empty)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stealth.js","sourceRoot":"","sources":["../../src/browser/stealth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG
|
|
1
|
+
{"version":3,"file":"stealth.js","sourceRoot":"","sources":["../../src/browser/stealth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwClC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG;YACZ,8DAA8D;YAC9D,wBAAwB;YACxB,+BAA+B;YAC/B,4DAA4D;YAC5D,kEAAkE;SACnE,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,OAAO,QAAQ,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "10x-chat",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "CLI to chat with web AI agents (ChatGPT, Gemini, Claude) via browser automation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"lint:fix": "biome check --fix .",
|
|
30
30
|
"test": "vitest run",
|
|
31
31
|
"test:watch": "vitest watch",
|
|
32
|
-
"prepublishOnly": "bun run typecheck && bun run lint && bun run test && bun run build"
|
|
32
|
+
"prepublishOnly": "bun run typecheck && bun run lint && bun run test && bun run build",
|
|
33
|
+
"postinstall": "npx patchright install chromium 2>/dev/null || npx playwright install chromium 2>/dev/null || true"
|
|
33
34
|
},
|
|
34
35
|
"engines": {
|
|
35
36
|
"node": ">=22"
|