@zenalexa/unicli 0.223.0 → 0.223.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.
Files changed (61) hide show
  1. package/AGENTS.md +24 -1
  2. package/README.md +16 -5
  3. package/README.zh-CN.md +2 -2
  4. package/dist/browser/auth-sync.d.ts +32 -0
  5. package/dist/browser/auth-sync.d.ts.map +1 -0
  6. package/dist/browser/auth-sync.js +119 -0
  7. package/dist/browser/auth-sync.js.map +1 -0
  8. package/dist/browser/bridge.d.ts +2 -0
  9. package/dist/browser/bridge.d.ts.map +1 -1
  10. package/dist/browser/bridge.js +4 -3
  11. package/dist/browser/bridge.js.map +1 -1
  12. package/dist/browser/cdp-client.d.ts +5 -0
  13. package/dist/browser/cdp-client.d.ts.map +1 -1
  14. package/dist/browser/cdp-client.js +18 -3
  15. package/dist/browser/cdp-client.js.map +1 -1
  16. package/dist/browser/chrome-policy.d.ts +38 -0
  17. package/dist/browser/chrome-policy.d.ts.map +1 -0
  18. package/dist/browser/chrome-policy.js +261 -0
  19. package/dist/browser/chrome-policy.js.map +1 -0
  20. package/dist/browser/daemon-client.d.ts +3 -0
  21. package/dist/browser/daemon-client.d.ts.map +1 -1
  22. package/dist/browser/daemon-client.js +13 -15
  23. package/dist/browser/daemon-client.js.map +1 -1
  24. package/dist/browser/doctor.d.ts +147 -0
  25. package/dist/browser/doctor.d.ts.map +1 -0
  26. package/dist/browser/doctor.js +784 -0
  27. package/dist/browser/doctor.js.map +1 -0
  28. package/dist/browser/launcher.d.ts +17 -8
  29. package/dist/browser/launcher.d.ts.map +1 -1
  30. package/dist/browser/launcher.js +51 -11
  31. package/dist/browser/launcher.js.map +1 -1
  32. package/dist/browser/local-profiles.d.ts +55 -0
  33. package/dist/browser/local-profiles.d.ts.map +1 -0
  34. package/dist/browser/local-profiles.js +333 -0
  35. package/dist/browser/local-profiles.js.map +1 -0
  36. package/dist/commands/browser/index.d.ts +2 -2
  37. package/dist/commands/browser/index.d.ts.map +1 -1
  38. package/dist/commands/browser/index.js +195 -14
  39. package/dist/commands/browser/index.js.map +1 -1
  40. package/dist/engine/executor.d.ts +6 -1
  41. package/dist/engine/executor.d.ts.map +1 -1
  42. package/dist/engine/executor.js +2 -0
  43. package/dist/engine/executor.js.map +1 -1
  44. package/dist/engine/kernel/stages.d.ts.map +1 -1
  45. package/dist/engine/kernel/stages.js +4 -0
  46. package/dist/engine/kernel/stages.js.map +1 -1
  47. package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
  48. package/dist/engine/steps/browser-helpers.js +29 -1
  49. package/dist/engine/steps/browser-helpers.js.map +1 -1
  50. package/dist/manifest.json +1 -1
  51. package/docs/operate/focus-behavior.md +25 -0
  52. package/package.json +1 -1
  53. package/server.json +2 -2
  54. package/skills/unicli/SKILL.md +54 -38
  55. package/skills/unicli-browser/SKILL.md +56 -10
  56. package/skills/unicli-claude-code/SKILL.md +1 -1
  57. package/skills/unicli-hermes/SKILL.md +1 -1
  58. package/skills/unicli-operate/SKILL.md +1 -1
  59. package/skills/unicli-smart-search/SKILL.md +7 -5
  60. package/skills/unicli-usage/SKILL.md +39 -1
  61. package/src/hub/external-clis.yaml +6 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/browser/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,20 @@
1
1
  /**
2
- * Chrome browser launcher and discovery.
3
- *
4
- * Finds an existing Chrome instance with CDP enabled, or launches one.
5
- * Supports macOS, Linux, and Windows.
2
+ * @owner src/browser/launcher.ts
3
+ * @does Discover Chrome-family executables, probe local CDP ports, find free debug ports, and launch Chrome with optional profile binding.
4
+ * @needs node:child_process, node:fs, node:net, node:path, src/electron-apps
5
+ * @feeds src/browser/bridge.ts, src/commands/browser/index.ts, src/commands/status.ts, transport CDP browser adapter
6
+ * @breaks Missing Chrome, occupied ports, and CDP startup timeouts throw explicit errors; callers decide repair or fallback.
6
7
  */
8
+ export interface ChromeLaunchOptions {
9
+ profile?: boolean;
10
+ headless?: boolean;
11
+ background?: boolean;
12
+ browserPath?: string;
13
+ userDataDir?: string;
14
+ profileDirectory?: string;
15
+ reuseExisting?: boolean;
16
+ allowDefaultUserDataDir?: boolean;
17
+ }
7
18
  /**
8
19
  * Check if a remote browser is configured via UNICLI_CDP_ENDPOINT.
9
20
  * When true, local Chrome launch should be skipped entirely.
@@ -17,14 +28,12 @@ export declare function findChrome(): string | null;
17
28
  * Check if a CDP port is responding.
18
29
  */
19
30
  export declare function isCDPAvailable(port: number): Promise<boolean>;
31
+ export declare function findAvailableCDPPort(preferredPort?: number, maxAttempts?: number): Promise<number>;
20
32
  /**
21
33
  * Launch Chrome with CDP enabled.
22
34
  * Returns the port number.
23
35
  */
24
- export declare function launchChrome(port?: number, options?: {
25
- profile?: boolean;
26
- headless?: boolean;
27
- }): Promise<number>;
36
+ export declare function launchChrome(port?: number, options?: ChromeLaunchOptions): Promise<number>;
28
37
  /**
29
38
  * Get CDP port from environment or default.
30
39
  */
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/browser/launcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAqBD;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAe1C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASnE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,IAAI,GAAE,MAAyB,EAC/B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAClD,OAAO,CAAC,MAAM,CAAC,CAwDjB;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA2CjD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAqD1C"}
1
+ {"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["../../src/browser/launcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAqBD;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,GAAG,IAAI,CAe1C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASnE;AAED,wBAAsB,oBAAoB,CACxC,aAAa,GAAE,MAAyB,EACxC,WAAW,SAAK,GACf,OAAO,CAAC,MAAM,CAAC,CAYjB;AAaD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,IAAI,GAAE,MAAyB,EAC/B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAmEjB;AAQD;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAInC;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA2CjD;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAqD1C"}
@@ -1,13 +1,15 @@
1
1
  /**
2
- * Chrome browser launcher and discovery.
3
- *
4
- * Finds an existing Chrome instance with CDP enabled, or launches one.
5
- * Supports macOS, Linux, and Windows.
2
+ * @owner src/browser/launcher.ts
3
+ * @does Discover Chrome-family executables, probe local CDP ports, find free debug ports, and launch Chrome with optional profile binding.
4
+ * @needs node:child_process, node:fs, node:net, node:path, src/electron-apps
5
+ * @feeds src/browser/bridge.ts, src/commands/browser/index.ts, src/commands/status.ts, transport CDP browser adapter
6
+ * @breaks Missing Chrome, occupied ports, and CDP startup timeouts throw explicit errors; callers decide repair or fallback.
6
7
  */
7
8
  import { execSync, spawn } from "node:child_process";
8
9
  import { existsSync } from "node:fs";
9
- import { join } from "node:path";
10
+ import { createServer } from "node:net";
10
11
  import { getElectronApp } from "../electron-apps.js";
12
+ import { automationDefaultUserDataDir, knownLocalBrowserInstalls, } from "./local-profiles.js";
11
13
  const DEFAULT_CDP_PORT = 9222;
12
14
  /**
13
15
  * Check if a remote browser is configured via UNICLI_CDP_ENDPOINT.
@@ -69,17 +71,44 @@ export async function isCDPAvailable(port) {
69
71
  return false;
70
72
  }
71
73
  }
74
+ export async function findAvailableCDPPort(preferredPort = DEFAULT_CDP_PORT, maxAttempts = 20) {
75
+ if (!Number.isInteger(preferredPort) || preferredPort < 1) {
76
+ throw new Error(`Invalid CDP port: ${String(preferredPort)}`);
77
+ }
78
+ for (let offset = 0; offset < maxAttempts; offset++) {
79
+ const candidate = preferredPort + offset;
80
+ if (candidate > 65535)
81
+ break;
82
+ if (await isTcpPortFree(candidate))
83
+ return candidate;
84
+ }
85
+ throw new Error(`No free local CDP port found from ${String(preferredPort)} after ${String(maxAttempts)} attempts`);
86
+ }
87
+ async function isTcpPortFree(port) {
88
+ return new Promise((resolve) => {
89
+ const server = createServer();
90
+ server.unref();
91
+ server.once("error", () => resolve(false));
92
+ server.listen(port, "127.0.0.1", () => {
93
+ server.close(() => resolve(true));
94
+ });
95
+ });
96
+ }
72
97
  /**
73
98
  * Launch Chrome with CDP enabled.
74
99
  * Returns the port number.
75
100
  */
76
101
  export async function launchChrome(port = DEFAULT_CDP_PORT, options) {
77
102
  const chromePath = findChrome();
78
- if (!chromePath) {
103
+ const actualPath = process.env.CHROME_PATH ?? options?.browserPath ?? chromePath;
104
+ if (!actualPath) {
79
105
  throw new Error("Chrome not found. Install Google Chrome or set CHROME_PATH env var.");
80
106
  }
81
107
  // Check if already running with CDP
82
108
  if (await isCDPAvailable(port)) {
109
+ if (options?.reuseExisting === false) {
110
+ throw new Error(`CDP port ${String(port)} is already in use`);
111
+ }
83
112
  return port;
84
113
  }
85
114
  // Launch Chrome with remote debugging
@@ -88,17 +117,25 @@ export async function launchChrome(port = DEFAULT_CDP_PORT, options) {
88
117
  "--no-first-run",
89
118
  "--no-default-browser-check",
90
119
  ];
91
- // Dedicated automation profile avoids polluting user's default Chrome profile
92
- if (options?.profile) {
93
- const profileDir = join(process.env.HOME ?? "~", ".unicli", "chrome-profile");
120
+ // Dedicated automation profile or selected logged-in Chromium profile.
121
+ const profileDir = options?.userDataDir ?? automationDefaultUserDataDir();
122
+ if (options?.allowDefaultUserDataDir !== true &&
123
+ isKnownDefaultUserDataDir(profileDir)) {
124
+ throw new Error(`Chrome disables remote debugging for the default user-data-dir: ${profileDir}. Use a Uni-CLI automation profile and import cookies from the logged-in profile instead.`);
125
+ }
126
+ if (profileDir) {
94
127
  args.push(`--user-data-dir=${profileDir}`);
95
128
  }
129
+ if (options?.profileDirectory) {
130
+ args.push(`--profile-directory=${options.profileDirectory}`);
131
+ }
96
132
  // Chrome's new headless mode (for CI / server environments)
97
133
  if (options?.headless) {
98
134
  args.push("--headless=new");
99
135
  }
100
- // Use env override if set
101
- const actualPath = process.env.CHROME_PATH ?? chromePath;
136
+ else if (options?.background !== false) {
137
+ args.push("--no-startup-window");
138
+ }
102
139
  const child = spawn(actualPath, args, {
103
140
  detached: true,
104
141
  stdio: "ignore",
@@ -114,6 +151,9 @@ export async function launchChrome(port = DEFAULT_CDP_PORT, options) {
114
151
  }
115
152
  throw new Error(`Chrome launched but CDP not available on port ${String(port)} after 10s`);
116
153
  }
154
+ function isKnownDefaultUserDataDir(userDataDir) {
155
+ return knownLocalBrowserInstalls().some((install) => install.user_data_dir === userDataDir);
156
+ }
117
157
  /**
118
158
  * Get CDP port from environment or default.
119
159
  */
@@ -1 +1 @@
1
- {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/browser/launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/browser/launcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @owner src/browser/local-profiles.ts
3
+ * @does Discover local Chromium-family browser profiles without reading cookie values.
4
+ * @needs node:child_process, node:fs, node:os, node:path, Chromium profile Local State conventions
5
+ * @feeds src/browser/doctor.ts, src/commands/browser/index.ts, tests/unit/commands/browser.test.ts
6
+ * @breaks Missing or malformed profile metadata is skipped; filesystem errors do not expose secrets or raw cookies.
7
+ */
8
+ export interface LocalBrowserInstall {
9
+ browser_name: string;
10
+ browser_path: string;
11
+ user_data_dir: string;
12
+ browser_path_exists: boolean;
13
+ }
14
+ export interface LocalBrowserDebugPort {
15
+ state: "not-recorded" | "recorded" | "invalid";
16
+ port?: number;
17
+ websocket_path?: string;
18
+ source?: string;
19
+ }
20
+ export interface LocalBrowserProfile {
21
+ id: string;
22
+ browser_name: string;
23
+ browser_path: string;
24
+ browser_path_exists: boolean;
25
+ user_data_dir: string;
26
+ profile_dir: string;
27
+ profile_name: string;
28
+ profile_path: string;
29
+ display_name: string;
30
+ debug_port: LocalBrowserDebugPort;
31
+ }
32
+ export interface DefaultProfileDebugBlock {
33
+ pid: number;
34
+ browser_name: string;
35
+ user_data_dir: string;
36
+ reason: "chrome-default-user-data-dir-debug-blocked";
37
+ next_step: string;
38
+ }
39
+ export interface LocalProfileDiscoveryOptions {
40
+ homeDir?: string;
41
+ env?: NodeJS.ProcessEnv;
42
+ }
43
+ export declare function detectLocalBrowserProfiles(opts?: LocalProfileDiscoveryOptions): LocalBrowserProfile[];
44
+ export declare function resolveLocalBrowserProfile(profileId: string, opts?: LocalProfileDiscoveryOptions): LocalBrowserProfile | null;
45
+ export declare function resolvePreferredLocalBrowserProfile(opts?: LocalProfileDiscoveryOptions & {
46
+ profileId?: string;
47
+ }): LocalBrowserProfile | null;
48
+ export declare function automationDefaultUserDataDir(opts?: LocalProfileDiscoveryOptions): string;
49
+ export declare function automationUserDataDirForProfile(profile: LocalBrowserProfile, opts?: LocalProfileDiscoveryOptions): string;
50
+ export declare function knownLocalBrowserInstalls(opts?: LocalProfileDiscoveryOptions): LocalBrowserInstall[];
51
+ export declare function detectDefaultProfileDebugBlocks(opts?: LocalProfileDiscoveryOptions & {
52
+ processList?: string;
53
+ }): DefaultProfileDebugBlock[];
54
+ export declare function parseDefaultProfileDebugBlocks(processList: string, installs: LocalBrowserInstall[]): DefaultProfileDebugBlock[];
55
+ //# sourceMappingURL=local-profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-profiles.d.ts","sourceRoot":"","sources":["../../src/browser/local-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,4CAA4C,CAAC;IACrD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAQD,wBAAgB,0BAA0B,CACxC,IAAI,GAAE,4BAAiC,GACtC,mBAAmB,EAAE,CAEvB;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,4BAAiC,GACtC,mBAAmB,GAAG,IAAI,CAM5B;AAED,wBAAgB,mCAAmC,CACjD,IAAI,GAAE,4BAA4B,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,mBAAmB,GAAG,IAAI,CAgB5B;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,GAAE,4BAAiC,GACtC,MAAM,CAIR;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,mBAAmB,EAC5B,IAAI,GAAE,4BAAiC,GACtC,MAAM,CASR;AAED,wBAAgB,yBAAyB,CACvC,IAAI,GAAE,4BAAiC,GACtC,mBAAmB,EAAE,CA2LvB;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,GAAE,4BAA4B,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACjE,wBAAwB,EAAE,CAO5B;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,mBAAmB,EAAE,GAC9B,wBAAwB,EAAE,CA+B5B"}
@@ -0,0 +1,333 @@
1
+ /**
2
+ * @owner src/browser/local-profiles.ts
3
+ * @does Discover local Chromium-family browser profiles without reading cookie values.
4
+ * @needs node:child_process, node:fs, node:os, node:path, Chromium profile Local State conventions
5
+ * @feeds src/browser/doctor.ts, src/commands/browser/index.ts, tests/unit/commands/browser.test.ts
6
+ * @breaks Missing or malformed profile metadata is skipped; filesystem errors do not expose secrets or raw cookies.
7
+ */
8
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
9
+ import { homedir } from "node:os";
10
+ import { basename, join } from "node:path";
11
+ import { execFileSync } from "node:child_process";
12
+ export function detectLocalBrowserProfiles(opts = {}) {
13
+ return detectProfilesFromInstalls(knownLocalBrowserInstalls(opts));
14
+ }
15
+ export function resolveLocalBrowserProfile(profileId, opts = {}) {
16
+ return (detectLocalBrowserProfiles(opts).find((profile) => profile.id === profileId) ?? null);
17
+ }
18
+ export function resolvePreferredLocalBrowserProfile(opts = {}) {
19
+ const requested = opts.profileId ?? opts.env?.UNICLI_BROWSER_PROFILE_ID;
20
+ if (requested)
21
+ return resolveLocalBrowserProfile(requested, opts);
22
+ const profiles = detectLocalBrowserProfiles(opts);
23
+ return (profiles.find((profile) => profile.id === "google-chrome:Default") ??
24
+ profiles.find((profile) => profile.browser_name === "Google Chrome" &&
25
+ profile.profile_dir === "Default") ??
26
+ profiles.find((profile) => profile.profile_dir === "Default") ??
27
+ profiles[0] ??
28
+ null);
29
+ }
30
+ export function automationDefaultUserDataDir(opts = {}) {
31
+ const env = opts.env ?? process.env;
32
+ const home = opts.homeDir ?? env.HOME ?? homedir();
33
+ return join(home, ".unicli", "chrome-profile");
34
+ }
35
+ export function automationUserDataDirForProfile(profile, opts = {}) {
36
+ const env = opts.env ?? process.env;
37
+ const home = opts.homeDir ?? env.HOME ?? homedir();
38
+ return join(home, ".unicli", "browser-profiles", profile.id.replace(/[^a-zA-Z0-9._-]+/g, "_"));
39
+ }
40
+ export function knownLocalBrowserInstalls(opts = {}) {
41
+ const env = opts.env ?? process.env;
42
+ const home = opts.homeDir ?? env.HOME ?? homedir();
43
+ const localAppData = env.LOCALAPPDATA ?? join(home, "AppData", "Local");
44
+ const programFiles = env.ProgramFiles ?? "C:\\Program Files";
45
+ const programFilesX86 = env["ProgramFiles(x86)"] ?? "C:\\Program Files (x86)";
46
+ const candidates = [
47
+ {
48
+ browserName: "Google Chrome",
49
+ browserPath: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
50
+ userDataDir: join(home, "Library", "Application Support", "Google", "Chrome"),
51
+ },
52
+ {
53
+ browserName: "Chrome Canary",
54
+ browserPath: "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary",
55
+ userDataDir: join(home, "Library", "Application Support", "Google", "Chrome Canary"),
56
+ },
57
+ {
58
+ browserName: "Brave",
59
+ browserPath: "/Applications/Brave Browser.app/Contents/MacOS/Brave Browser",
60
+ userDataDir: join(home, "Library", "Application Support", "BraveSoftware", "Brave-Browser"),
61
+ },
62
+ {
63
+ browserName: "Microsoft Edge",
64
+ browserPath: "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge",
65
+ userDataDir: join(home, "Library", "Application Support", "Microsoft Edge"),
66
+ },
67
+ {
68
+ browserName: "Chromium",
69
+ browserPath: "/Applications/Chromium.app/Contents/MacOS/Chromium",
70
+ userDataDir: join(home, "Library", "Application Support", "Chromium"),
71
+ },
72
+ {
73
+ browserName: "Arc",
74
+ browserPath: "/Applications/Arc.app/Contents/MacOS/Arc",
75
+ userDataDir: join(home, "Library", "Application Support", "Arc", "User Data"),
76
+ },
77
+ {
78
+ browserName: "Dia",
79
+ browserPath: "/Applications/Dia.app/Contents/MacOS/Dia",
80
+ userDataDir: join(home, "Library", "Application Support", "Dia"),
81
+ },
82
+ {
83
+ browserName: "Comet",
84
+ browserPath: "/Applications/Comet.app/Contents/MacOS/Comet",
85
+ userDataDir: join(home, "Library", "Application Support", "Comet"),
86
+ },
87
+ {
88
+ browserName: "Google Chrome",
89
+ browserPath: "/usr/bin/google-chrome",
90
+ userDataDir: join(home, ".config", "google-chrome"),
91
+ },
92
+ {
93
+ browserName: "Google Chrome",
94
+ browserPath: "/usr/bin/google-chrome-stable",
95
+ userDataDir: join(home, ".config", "google-chrome"),
96
+ },
97
+ {
98
+ browserName: "Chromium",
99
+ browserPath: "/usr/bin/chromium",
100
+ userDataDir: join(home, ".config", "chromium"),
101
+ },
102
+ {
103
+ browserName: "Chromium",
104
+ browserPath: "/usr/bin/chromium-browser",
105
+ userDataDir: join(home, ".config", "chromium"),
106
+ },
107
+ {
108
+ browserName: "Brave",
109
+ browserPath: "/usr/bin/brave-browser",
110
+ userDataDir: join(home, ".config", "BraveSoftware", "Brave-Browser"),
111
+ },
112
+ {
113
+ browserName: "Microsoft Edge",
114
+ browserPath: "/usr/bin/microsoft-edge",
115
+ userDataDir: join(home, ".config", "microsoft-edge"),
116
+ },
117
+ {
118
+ browserName: "Google Chrome",
119
+ browserPath: join(programFiles, "Google", "Chrome", "Application", "chrome.exe"),
120
+ userDataDir: join(localAppData, "Google", "Chrome", "User Data"),
121
+ },
122
+ {
123
+ browserName: "Google Chrome",
124
+ browserPath: join(programFilesX86, "Google", "Chrome", "Application", "chrome.exe"),
125
+ userDataDir: join(localAppData, "Google", "Chrome", "User Data"),
126
+ },
127
+ {
128
+ browserName: "Microsoft Edge",
129
+ browserPath: join(programFiles, "Microsoft", "Edge", "Application", "msedge.exe"),
130
+ userDataDir: join(localAppData, "Microsoft", "Edge", "User Data"),
131
+ },
132
+ {
133
+ browserName: "Brave",
134
+ browserPath: join(programFiles, "BraveSoftware", "Brave-Browser", "Application", "brave.exe"),
135
+ userDataDir: join(localAppData, "BraveSoftware", "Brave-Browser", "User Data"),
136
+ },
137
+ ];
138
+ const installs = [];
139
+ const seen = new Map();
140
+ for (const candidate of candidates) {
141
+ const browserPathExists = existsSync(candidate.browserPath);
142
+ if (!browserPathExists && !existsSync(candidate.userDataDir))
143
+ continue;
144
+ const key = `${candidate.browserName}\0${candidate.userDataDir}`;
145
+ const install = {
146
+ browser_name: candidate.browserName,
147
+ browser_path: candidate.browserPath,
148
+ user_data_dir: candidate.userDataDir,
149
+ browser_path_exists: browserPathExists,
150
+ };
151
+ const existingIndex = seen.get(key);
152
+ if (existingIndex === undefined) {
153
+ seen.set(key, installs.length);
154
+ installs.push(install);
155
+ }
156
+ else if (!installs[existingIndex].browser_path_exists &&
157
+ browserPathExists) {
158
+ installs[existingIndex] = install;
159
+ }
160
+ }
161
+ return installs;
162
+ }
163
+ export function detectDefaultProfileDebugBlocks(opts = {}) {
164
+ const processList = opts.processList ?? readProcessList();
165
+ if (!processList)
166
+ return [];
167
+ return parseDefaultProfileDebugBlocks(processList, knownLocalBrowserInstalls(opts));
168
+ }
169
+ export function parseDefaultProfileDebugBlocks(processList, installs) {
170
+ const blocks = [];
171
+ const seen = new Set();
172
+ for (const line of processList.split(/\r?\n/)) {
173
+ const match = line.match(/^\s*(\d+)\s+(.+)$/);
174
+ if (!match)
175
+ continue;
176
+ const pid = Number(match[1]);
177
+ const command = match[2];
178
+ if (!command.includes("--remote-debugging-port="))
179
+ continue;
180
+ const userDataDir = extractUserDataDirArg(command);
181
+ if (!userDataDir)
182
+ continue;
183
+ const install = installs.find((candidate) => {
184
+ return (candidate.user_data_dir === userDataDir &&
185
+ matchesBrowserExecutable(command, candidate.browser_path));
186
+ });
187
+ if (!install)
188
+ continue;
189
+ const key = `${pid}\0${userDataDir}`;
190
+ if (seen.has(key))
191
+ continue;
192
+ seen.add(key);
193
+ blocks.push({
194
+ pid,
195
+ browser_name: install.browser_name,
196
+ user_data_dir: userDataDir,
197
+ reason: "chrome-default-user-data-dir-debug-blocked",
198
+ next_step: "Use `unicli browser doctor --repair`; do not launch CDP against the browser default profile.",
199
+ });
200
+ }
201
+ return blocks;
202
+ }
203
+ function readProcessList() {
204
+ try {
205
+ return execFileSync("ps", ["-axo", "pid=,command="], {
206
+ encoding: "utf8",
207
+ stdio: ["ignore", "pipe", "ignore"],
208
+ timeout: 1000,
209
+ });
210
+ }
211
+ catch {
212
+ return "";
213
+ }
214
+ }
215
+ function extractUserDataDirArg(command) {
216
+ const match = command.match(/--user-data-dir=(?:"([^"]+)"|'([^']+)'|(.+?)(?=\s--|$))/);
217
+ return (match?.[1] ?? match?.[2] ?? match?.[3] ?? null)?.trim() ?? null;
218
+ }
219
+ function matchesBrowserExecutable(command, browserPath) {
220
+ if (command.includes(browserPath))
221
+ return true;
222
+ const executableName = command.match(/^\s*(\S+)/)?.[1];
223
+ if (!executableName || executableName.includes("/"))
224
+ return false;
225
+ return executableName === basename(browserPath);
226
+ }
227
+ function detectProfilesFromInstalls(installs) {
228
+ const profiles = [];
229
+ const seen = new Set();
230
+ for (const install of installs) {
231
+ if (!existsSync(install.user_data_dir))
232
+ continue;
233
+ const profileNames = loadProfileNamesFromLocalState(install.user_data_dir);
234
+ const debugPort = readDebugPort(install.user_data_dir);
235
+ let entries;
236
+ try {
237
+ entries = readdirSync(install.user_data_dir, { withFileTypes: true })
238
+ .filter((entry) => entry.isDirectory())
239
+ .map((entry) => entry.name);
240
+ }
241
+ catch {
242
+ continue;
243
+ }
244
+ for (const profileDir of entries) {
245
+ const profilePath = join(install.user_data_dir, profileDir);
246
+ if (!isValidProfileDir(profilePath))
247
+ continue;
248
+ const seenKey = `${install.user_data_dir}\0${profileDir}`;
249
+ if (seen.has(seenKey))
250
+ continue;
251
+ seen.add(seenKey);
252
+ const profileName = profileNames.get(profileDir) ?? profileDir;
253
+ profiles.push({
254
+ id: `${browserSlug(install.browser_name)}:${profileDir}`,
255
+ browser_name: install.browser_name,
256
+ browser_path: install.browser_path,
257
+ browser_path_exists: install.browser_path_exists,
258
+ user_data_dir: install.user_data_dir,
259
+ profile_dir: profileDir,
260
+ profile_name: profileName,
261
+ profile_path: profilePath,
262
+ display_name: `${install.browser_name} - ${profileName}`,
263
+ debug_port: debugPort,
264
+ });
265
+ }
266
+ }
267
+ return profiles.sort((a, b) => {
268
+ const browser = a.browser_name.localeCompare(b.browser_name);
269
+ if (browser !== 0)
270
+ return browser;
271
+ const dir = profileDirSortKey(a.profile_dir).localeCompare(profileDirSortKey(b.profile_dir));
272
+ if (dir !== 0)
273
+ return dir;
274
+ return naturalCompare(a.profile_name, b.profile_name);
275
+ });
276
+ }
277
+ function loadProfileNamesFromLocalState(userDataDir) {
278
+ try {
279
+ const parsed = JSON.parse(readFileSync(join(userDataDir, "Local State"), "utf-8"));
280
+ const infoCache = parsed.profile?.info_cache ?? {};
281
+ return new Map(Object.entries(infoCache)
282
+ .filter((entry) => {
283
+ const name = entry[1].name;
284
+ return typeof name === "string" && name.trim().length > 0;
285
+ })
286
+ .map(([profileDir, info]) => [profileDir, info.name]));
287
+ }
288
+ catch {
289
+ return new Map();
290
+ }
291
+ }
292
+ function isValidProfileDir(profilePath) {
293
+ return ["Preferences", "Cookies", join("Network", "Cookies"), "History"].some((relativePath) => existsSync(join(profilePath, relativePath)));
294
+ }
295
+ function readDebugPort(userDataDir) {
296
+ const source = join(userDataDir, "DevToolsActivePort");
297
+ if (!existsSync(source))
298
+ return { state: "not-recorded" };
299
+ try {
300
+ const [rawPort, websocketPath] = readFileSync(source, "utf-8")
301
+ .split(/\r?\n/)
302
+ .map((line) => line.trim());
303
+ const port = Number(rawPort);
304
+ if (!Number.isInteger(port) || port <= 0 || !websocketPath) {
305
+ return { state: "invalid", source };
306
+ }
307
+ return {
308
+ state: "recorded",
309
+ port,
310
+ websocket_path: websocketPath,
311
+ source,
312
+ };
313
+ }
314
+ catch {
315
+ return { state: "invalid", source };
316
+ }
317
+ }
318
+ function browserSlug(name) {
319
+ return name
320
+ .toLowerCase()
321
+ .replace(/[^a-z0-9]+/g, "-")
322
+ .replace(/^-+|-+$/g, "");
323
+ }
324
+ function profileDirSortKey(profileDir) {
325
+ return profileDir === "Default" ? "" : profileDir;
326
+ }
327
+ function naturalCompare(left, right) {
328
+ return left.localeCompare(right, undefined, {
329
+ numeric: true,
330
+ sensitivity: "base",
331
+ });
332
+ }
333
+ //# sourceMappingURL=local-profiles.js.map