@zenalexa/unicli 0.222.3 → 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 (108) 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/cli.d.ts.map +1 -1
  37. package/dist/cli.js +14 -1
  38. package/dist/cli.js.map +1 -1
  39. package/dist/commands/browser/index.d.ts +2 -2
  40. package/dist/commands/browser/index.d.ts.map +1 -1
  41. package/dist/commands/browser/index.js +195 -14
  42. package/dist/commands/browser/index.js.map +1 -1
  43. package/dist/commands/compute.d.ts.map +1 -1
  44. package/dist/commands/compute.js +116 -11
  45. package/dist/commands/compute.js.map +1 -1
  46. package/dist/commands/doctor-compute.d.ts +3 -1
  47. package/dist/commands/doctor-compute.d.ts.map +1 -1
  48. package/dist/commands/doctor-compute.js +78 -2
  49. package/dist/commands/doctor-compute.js.map +1 -1
  50. package/dist/compute/capture-reference.d.ts +40 -0
  51. package/dist/compute/capture-reference.d.ts.map +1 -0
  52. package/dist/compute/capture-reference.js +285 -0
  53. package/dist/compute/capture-reference.js.map +1 -0
  54. package/dist/compute/capture.d.ts +67 -0
  55. package/dist/compute/capture.d.ts.map +1 -0
  56. package/dist/compute/capture.js +247 -0
  57. package/dist/compute/capture.js.map +1 -0
  58. package/dist/discovery/aliases.d.ts.map +1 -1
  59. package/dist/discovery/aliases.js +13 -0
  60. package/dist/discovery/aliases.js.map +1 -1
  61. package/dist/discovery/core-catalog.d.ts +37 -0
  62. package/dist/discovery/core-catalog.d.ts.map +1 -0
  63. package/dist/discovery/core-catalog.js +352 -0
  64. package/dist/discovery/core-catalog.js.map +1 -0
  65. package/dist/discovery/intents.d.ts.map +1 -1
  66. package/dist/discovery/intents.js +51 -0
  67. package/dist/discovery/intents.js.map +1 -1
  68. package/dist/discovery/search.d.ts +10 -6
  69. package/dist/discovery/search.d.ts.map +1 -1
  70. package/dist/discovery/search.js +21 -102
  71. package/dist/discovery/search.js.map +1 -1
  72. package/dist/engine/executor.d.ts +6 -1
  73. package/dist/engine/executor.d.ts.map +1 -1
  74. package/dist/engine/executor.js +2 -0
  75. package/dist/engine/executor.js.map +1 -1
  76. package/dist/engine/kernel/stages.d.ts.map +1 -1
  77. package/dist/engine/kernel/stages.js +4 -0
  78. package/dist/engine/kernel/stages.js.map +1 -1
  79. package/dist/engine/steps/browser-helpers.d.ts.map +1 -1
  80. package/dist/engine/steps/browser-helpers.js +29 -1
  81. package/dist/engine/steps/browser-helpers.js.map +1 -1
  82. package/dist/fast-path/handlers/discovery.d.ts.map +1 -1
  83. package/dist/fast-path/handlers/discovery.js +80 -1
  84. package/dist/fast-path/handlers/discovery.js.map +1 -1
  85. package/dist/manifest.json +1 -1
  86. package/dist/mcp/handler.d.ts.map +1 -1
  87. package/dist/mcp/handler.js +19 -4
  88. package/dist/mcp/handler.js.map +1 -1
  89. package/dist/mcp/profiles/computer-use.d.ts.map +1 -1
  90. package/dist/mcp/profiles/computer-use.js +106 -4
  91. package/dist/mcp/profiles/computer-use.js.map +1 -1
  92. package/docs/mcp/clients/claude-code.md +8 -7
  93. package/docs/mcp/clients/claude-desktop.md +1 -1
  94. package/docs/mcp/clients/codex.md +1 -1
  95. package/docs/mcp/clients/cursor.md +1 -1
  96. package/docs/mcp/clients/gemini-cli.md +1 -1
  97. package/docs/operate/compute.md +58 -0
  98. package/docs/operate/focus-behavior.md +25 -0
  99. package/package.json +1 -1
  100. package/server.json +2 -2
  101. package/skills/unicli/SKILL.md +54 -38
  102. package/skills/unicli-browser/SKILL.md +56 -10
  103. package/skills/unicli-claude-code/SKILL.md +1 -1
  104. package/skills/unicli-hermes/SKILL.md +1 -1
  105. package/skills/unicli-operate/SKILL.md +1 -1
  106. package/skills/unicli-smart-search/SKILL.md +7 -5
  107. package/skills/unicli-usage/SKILL.md +39 -1
  108. 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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAyB,MAAM,qBAAqB,CAAC;AAE5E,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC3C,CAAC;AAED,gDAAgD;AAChD,MAAM,YAAY,GAA6B;IAC7C,MAAM,EAAE;QACN,8DAA8D;QAC9D,4EAA4E;QAC5E,oDAAoD;KACrD;IACD,KAAK,EAAE;QACL,eAAe;QACf,sBAAsB;QACtB,kBAAkB;QAClB,UAAU;KACX;IACD,KAAK,EAAE;QACL,4DAA4D;QAC5D,kEAAkE;KACnE;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5C,OAAO,CAAC,CAAC;YACX,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;aAAM,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,OAAO,EAAE;YACxD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,gBAAgB,EAC/B,OAAmD;IAEnD,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;IAChC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;IACJ,CAAC;IAED,oCAAoC;IACpC,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sCAAsC;IACtC,MAAM,IAAI,GAAG;QACX,2BAA2B,MAAM,CAAC,IAAI,CAAC,EAAE;QACzC,gBAAgB;QAChB,4BAA4B;KAC7B,CAAC;IAEF,gFAAgF;IAChF,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EACvB,SAAS,EACT,gBAAgB,CACjB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,4DAA4D;IAC5D,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,CAAC;IAEzD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;QACpC,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,+DAA+D;IAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC;QACnC,IAAI,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,IAAI,KAAK,CACb,iDAAiD,MAAM,CAAC,IAAI,CAAC,YAAY,CAC1E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,IAAI,OAAO;QAAE,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAY;IAEZ,2BAA2B;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACpD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,CAAC,CAAC,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnD,yCAAyC;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,GAAG,CAAC,IAAI,OAAO,EAAE;YAC5D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAMhC,CAAC;QAEH,2EAA2E;QAC3E,MAAM,MAAM,GAAG,OAAO;aACnB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,gBAAgB,CACvE;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,GAAG,CAAC;YACJ,KAAK,EACH,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY;IAEZ,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAE3D,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,0CAA0C;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,GAAG,CAAC,WAAW,GAAG,EAAE;YACvD,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI,4BAA4B,GAAG,CAAC,IAAI,qBAAqB;gBACjF,iDAAiD,GAAG,CAAC,IAAI,EAAE,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,GAAG,CAAC;QACvE,qDAAqD;IACvD,CAAC;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,kBAAkB,GAAG,CAAC,WAAW,IAAI,IAAI,0CAA0C,CACpF,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG;QACX,2BAA2B,GAAG,CAAC,IAAI,EAAE;QACrC,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;IAEb,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;IACrC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI,gCAAgC,GAAG,CAAC,IAAI,aAAa,CAChF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,GAAqB;IAErB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,mBAAmB;QACnB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAClE,MAAM,MAAM,GAAG,QAAQ,CACrB,yCAAyC,GAAG,CAAC,QAAQ,cAAc,EACnE,EAAE,QAAQ,EAAE,OAAO,EAAE,CACtB,CAAC,IAAI,EAAE,CAAC;gBACT,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;oBAC7D,OAAO,GAAG,MAAM,mBAAmB,QAAQ,EAAE,CAAC;gBAChD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,mBAAmB;YACrB,CAAC;QACH,CAAC;QAED,gCAAgC;QAChC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC;QACnD,MAAM,UAAU,GAAG;YACjB,iBAAiB,OAAO,uBAAuB,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE;YAC5F,iBAAiB,OAAO,8BAA8B;YACtD,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,iBAAiB,OAAO,uBAAuB,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE;SAChH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,QAAQ,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,EAAE;gBAChE,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
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