openchrome-mcp 1.2.4 → 1.2.6

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 (126) hide show
  1. package/dist/cdp/client.d.ts.map +1 -1
  2. package/dist/cdp/client.js +44 -9
  3. package/dist/cdp/client.js.map +1 -1
  4. package/dist/chrome/launcher.d.ts +32 -15
  5. package/dist/chrome/launcher.d.ts.map +1 -1
  6. package/dist/chrome/launcher.js +136 -116
  7. package/dist/chrome/launcher.js.map +1 -1
  8. package/dist/chrome/profile-manager.d.ts +108 -0
  9. package/dist/chrome/profile-manager.d.ts.map +1 -0
  10. package/dist/chrome/profile-manager.js +372 -0
  11. package/dist/chrome/profile-manager.js.map +1 -0
  12. package/dist/chrome/sqlite-cookie-copy.d.ts +46 -0
  13. package/dist/chrome/sqlite-cookie-copy.d.ts.map +1 -0
  14. package/dist/chrome/sqlite-cookie-copy.js +145 -0
  15. package/dist/chrome/sqlite-cookie-copy.js.map +1 -0
  16. package/dist/cli/claude-session.js +0 -0
  17. package/dist/cli/index.js +0 -0
  18. package/dist/config/defaults.d.ts +16 -0
  19. package/dist/config/defaults.d.ts.map +1 -1
  20. package/dist/config/defaults.js +17 -1
  21. package/dist/config/defaults.js.map +1 -1
  22. package/dist/config/global.d.ts +2 -0
  23. package/dist/config/global.d.ts.map +1 -1
  24. package/dist/config/global.js.map +1 -1
  25. package/dist/hints/hint-engine.d.ts +36 -2
  26. package/dist/hints/hint-engine.d.ts.map +1 -1
  27. package/dist/hints/hint-engine.js +96 -27
  28. package/dist/hints/hint-engine.js.map +1 -1
  29. package/dist/hints/index.d.ts +1 -1
  30. package/dist/hints/index.d.ts.map +1 -1
  31. package/dist/hints/rules/repetition-detection.d.ts.map +1 -1
  32. package/dist/hints/rules/repetition-detection.js +21 -0
  33. package/dist/hints/rules/repetition-detection.js.map +1 -1
  34. package/dist/index.js +17 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/mcp-server.d.ts +12 -1
  37. package/dist/mcp-server.d.ts.map +1 -1
  38. package/dist/mcp-server.js +162 -20
  39. package/dist/mcp-server.js.map +1 -1
  40. package/dist/orchestration/workflow-engine.d.ts.map +1 -1
  41. package/dist/orchestration/workflow-engine.js +2 -1
  42. package/dist/orchestration/workflow-engine.js.map +1 -1
  43. package/dist/resources/usage-guide.d.ts +1 -1
  44. package/dist/resources/usage-guide.d.ts.map +1 -1
  45. package/dist/resources/usage-guide.js +22 -0
  46. package/dist/resources/usage-guide.js.map +1 -1
  47. package/dist/router/browser-router.d.ts.map +1 -1
  48. package/dist/router/browser-router.js +2 -1
  49. package/dist/router/browser-router.js.map +1 -1
  50. package/dist/session-manager.d.ts +4 -0
  51. package/dist/session-manager.d.ts.map +1 -1
  52. package/dist/session-manager.js +56 -0
  53. package/dist/session-manager.js.map +1 -1
  54. package/dist/tools/click-element.d.ts.map +1 -1
  55. package/dist/tools/click-element.js +6 -2
  56. package/dist/tools/click-element.js.map +1 -1
  57. package/dist/tools/computer.d.ts.map +1 -1
  58. package/dist/tools/computer.js +32 -3
  59. package/dist/tools/computer.js.map +1 -1
  60. package/dist/tools/find.d.ts.map +1 -1
  61. package/dist/tools/find.js +16 -6
  62. package/dist/tools/find.js.map +1 -1
  63. package/dist/tools/form-input.d.ts.map +1 -1
  64. package/dist/tools/form-input.js +20 -0
  65. package/dist/tools/form-input.js.map +1 -1
  66. package/dist/tools/index.d.ts.map +1 -1
  67. package/dist/tools/index.js +2 -0
  68. package/dist/tools/index.js.map +1 -1
  69. package/dist/tools/javascript.d.ts.map +1 -1
  70. package/dist/tools/javascript.js +38 -2
  71. package/dist/tools/javascript.js.map +1 -1
  72. package/dist/tools/navigate.d.ts.map +1 -1
  73. package/dist/tools/navigate.js +32 -4
  74. package/dist/tools/navigate.js.map +1 -1
  75. package/dist/tools/page-reload.d.ts.map +1 -1
  76. package/dist/tools/page-reload.js +2 -1
  77. package/dist/tools/page-reload.js.map +1 -1
  78. package/dist/tools/profile-status.d.ts +10 -0
  79. package/dist/tools/profile-status.d.ts.map +1 -0
  80. package/dist/tools/profile-status.js +101 -0
  81. package/dist/tools/profile-status.js.map +1 -0
  82. package/dist/tools/tabs-create.d.ts.map +1 -1
  83. package/dist/tools/tabs-create.js +2 -1
  84. package/dist/tools/tabs-create.js.map +1 -1
  85. package/dist/tools/wait-and-click.d.ts.map +1 -1
  86. package/dist/tools/wait-and-click.js +3 -1
  87. package/dist/tools/wait-and-click.js.map +1 -1
  88. package/dist/tools/wait-for.d.ts.map +1 -1
  89. package/dist/tools/wait-for.js +2 -1
  90. package/dist/tools/wait-for.js.map +1 -1
  91. package/dist/utils/format-age.d.ts +5 -0
  92. package/dist/utils/format-age.d.ts.map +1 -0
  93. package/dist/utils/format-age.js +15 -0
  94. package/dist/utils/format-age.js.map +1 -0
  95. package/dist/utils/index.d.ts +1 -0
  96. package/dist/utils/index.d.ts.map +1 -1
  97. package/dist/utils/index.js +1 -0
  98. package/dist/utils/index.js.map +1 -1
  99. package/dist/utils/pid-manager.d.ts +6 -0
  100. package/dist/utils/pid-manager.d.ts.map +1 -0
  101. package/dist/utils/pid-manager.js +132 -0
  102. package/dist/utils/pid-manager.js.map +1 -0
  103. package/dist/utils/ref-id-manager.d.ts +19 -1
  104. package/dist/utils/ref-id-manager.d.ts.map +1 -1
  105. package/dist/utils/ref-id-manager.js +49 -2
  106. package/dist/utils/ref-id-manager.js.map +1 -1
  107. package/dist/utils/request-queue.d.ts.map +1 -1
  108. package/dist/utils/request-queue.js +5 -1
  109. package/dist/utils/request-queue.js.map +1 -1
  110. package/dist/utils/safe-title.d.ts +10 -0
  111. package/dist/utils/safe-title.d.ts.map +1 -0
  112. package/dist/utils/safe-title.js +24 -0
  113. package/dist/utils/safe-title.js.map +1 -0
  114. package/package.json +4 -1
  115. package/dist/chrome/profile-detector.d.ts +0 -52
  116. package/dist/chrome/profile-detector.d.ts.map +0 -1
  117. package/dist/chrome/profile-detector.js +0 -246
  118. package/dist/chrome/profile-detector.js.map +0 -1
  119. package/dist/hints/rules/dom-mode-suggestion.d.ts +0 -6
  120. package/dist/hints/rules/dom-mode-suggestion.d.ts.map +0 -1
  121. package/dist/hints/rules/dom-mode-suggestion.js +0 -24
  122. package/dist/hints/rules/dom-mode-suggestion.js.map +0 -1
  123. package/dist/types/profile.d.ts +0 -76
  124. package/dist/types/profile.d.ts.map +0 -1
  125. package/dist/types/profile.js +0 -35
  126. package/dist/types/profile.js.map +0 -1
@@ -1,52 +0,0 @@
1
- /**
2
- * Chrome Profile Detector - Detects and manages Chrome profiles
3
- */
4
- import { ChromeProfile, ProfileListResult, LocalState } from '../types/profile';
5
- /**
6
- * Get Chrome user data directory path for the current platform
7
- */
8
- export declare function getChromeUserDataDir(platform?: NodeJS.Platform): string;
9
- /**
10
- * Check if a profile is currently in use by checking lock files
11
- *
12
- * Chrome uses different lock mechanisms on different platforms:
13
- * - Linux: SingletonLock (symlink)
14
- * - macOS/Windows: lockfile
15
- */
16
- export declare function isProfileInUse(profilePath: string): Promise<boolean>;
17
- /**
18
- * Parse Chrome's Local State file
19
- */
20
- export declare function parseLocalState(userDataDir: string): Promise<LocalState | null>;
21
- /**
22
- * Get metadata for a specific profile
23
- */
24
- export declare function getProfileMetadata(profilePath: string, localState: LocalState | null): Promise<Partial<ChromeProfile>>;
25
- /**
26
- * Detect all Chrome profiles
27
- */
28
- export declare function detectProfiles(options?: {
29
- userDataDir?: string;
30
- }): Promise<ProfileListResult>;
31
- /**
32
- * Get a specific profile by ID
33
- */
34
- export declare function getProfile(profileId: string, options?: {
35
- userDataDir?: string;
36
- }): Promise<ChromeProfile | null>;
37
- /**
38
- * Profile detector singleton
39
- */
40
- declare class ProfileDetector {
41
- private cache;
42
- private cacheTime;
43
- private cacheTTL;
44
- getProfiles(options?: {
45
- userDataDir?: string;
46
- refresh?: boolean;
47
- }): Promise<ProfileListResult>;
48
- clearCache(): void;
49
- }
50
- export declare function getProfileDetector(): ProfileDetector;
51
- export {};
52
- //# sourceMappingURL=profile-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile-detector.d.ts","sourceRoot":"","sources":["../../src/chrome/profile-detector.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,UAAU,EAEX,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAuBvE;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA+B1E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAcrF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,UAAU,GAAG,IAAI,GAC5B,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAyCjC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmD7B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAG/B;AAED;;GAEG;AACH,cAAM,eAAe;IACnB,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,QAAQ,CAAgB;IAE1B,WAAW,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsBpG,UAAU,IAAI,IAAI;CAInB;AAKD,wBAAgB,kBAAkB,IAAI,eAAe,CAKpD"}
@@ -1,246 +0,0 @@
1
- "use strict";
2
- /**
3
- * Chrome Profile Detector - Detects and manages Chrome profiles
4
- */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.getChromeUserDataDir = getChromeUserDataDir;
40
- exports.isProfileInUse = isProfileInUse;
41
- exports.parseLocalState = parseLocalState;
42
- exports.getProfileMetadata = getProfileMetadata;
43
- exports.detectProfiles = detectProfiles;
44
- exports.getProfile = getProfile;
45
- exports.getProfileDetector = getProfileDetector;
46
- const fs = __importStar(require("fs"));
47
- const path = __importStar(require("path"));
48
- const os = __importStar(require("os"));
49
- /**
50
- * Get Chrome user data directory path for the current platform
51
- */
52
- function getChromeUserDataDir(platform) {
53
- const p = platform || os.platform();
54
- switch (p) {
55
- case 'darwin':
56
- return path.join(os.homedir(), 'Library', 'Application Support', 'Google', 'Chrome');
57
- case 'win32':
58
- return path.join(process.env.LOCALAPPDATA || path.join(os.homedir(), 'AppData', 'Local'), 'Google', 'Chrome', 'User Data');
59
- case 'linux':
60
- default:
61
- return path.join(os.homedir(), '.config', 'google-chrome');
62
- }
63
- }
64
- /**
65
- * Check if a profile is currently in use by checking lock files
66
- *
67
- * Chrome uses different lock mechanisms on different platforms:
68
- * - Linux: SingletonLock (symlink)
69
- * - macOS/Windows: lockfile
70
- */
71
- async function isProfileInUse(profilePath) {
72
- const platform = os.platform();
73
- // Check for SingletonLock (Linux)
74
- const singletonLock = path.join(profilePath, 'SingletonLock');
75
- if (fs.existsSync(singletonLock)) {
76
- return true;
77
- }
78
- // Check for lockfile (macOS/Windows)
79
- const lockfile = path.join(profilePath, 'lockfile');
80
- if (fs.existsSync(lockfile)) {
81
- return true;
82
- }
83
- // Check parent directory for singleton lock (user data dir level)
84
- const userDataDir = path.dirname(profilePath);
85
- const userDataLock = path.join(userDataDir, 'SingletonLock');
86
- if (fs.existsSync(userDataLock)) {
87
- // This means Chrome is running with this user data dir
88
- // but we can't know which specific profile is active
89
- // For safety, we'll check if there's activity in the profile
90
- // Check for running lock in the profile
91
- const runningLock = path.join(profilePath, 'LOCK');
92
- if (fs.existsSync(runningLock)) {
93
- return true;
94
- }
95
- }
96
- return false;
97
- }
98
- /**
99
- * Parse Chrome's Local State file
100
- */
101
- async function parseLocalState(userDataDir) {
102
- const localStatePath = path.join(userDataDir, 'Local State');
103
- if (!fs.existsSync(localStatePath)) {
104
- return null;
105
- }
106
- try {
107
- const content = fs.readFileSync(localStatePath, 'utf8');
108
- return JSON.parse(content);
109
- }
110
- catch (error) {
111
- console.error('[ProfileDetector] Failed to parse Local State:', error);
112
- return null;
113
- }
114
- }
115
- /**
116
- * Get metadata for a specific profile
117
- */
118
- async function getProfileMetadata(profilePath, localState) {
119
- const profileId = path.basename(profilePath);
120
- const result = {
121
- id: profileId,
122
- name: profileId,
123
- path: profilePath,
124
- };
125
- // Get info from Local State if available
126
- if (localState?.profile?.info_cache) {
127
- const info = localState.profile.info_cache[profileId];
128
- if (info) {
129
- result.name = info.name || info.shortcut_name || profileId;
130
- result.email = info.user_name || info.gaia_name;
131
- }
132
- }
133
- // Try to read Preferences file for additional info
134
- const prefsPath = path.join(profilePath, 'Preferences');
135
- if (fs.existsSync(prefsPath)) {
136
- try {
137
- const prefs = JSON.parse(fs.readFileSync(prefsPath, 'utf8'));
138
- // Get account info if available
139
- if (prefs.account_info && Array.isArray(prefs.account_info) && prefs.account_info.length > 0) {
140
- const account = prefs.account_info[0];
141
- if (account.email && !result.email) {
142
- result.email = account.email;
143
- }
144
- }
145
- // Get profile name from preferences
146
- if (prefs.profile?.name && result.name === profileId) {
147
- result.name = prefs.profile.name;
148
- }
149
- }
150
- catch {
151
- // Ignore parse errors
152
- }
153
- }
154
- return result;
155
- }
156
- /**
157
- * Detect all Chrome profiles
158
- */
159
- async function detectProfiles(options) {
160
- const userDataDir = options?.userDataDir || getChromeUserDataDir();
161
- const profiles = [];
162
- if (!fs.existsSync(userDataDir)) {
163
- console.error(`[ProfileDetector] Chrome user data directory not found: ${userDataDir}`);
164
- return { userDataDir, profiles };
165
- }
166
- // Parse Local State for profile metadata
167
- const localState = await parseLocalState(userDataDir);
168
- // Find profile directories
169
- const entries = fs.readdirSync(userDataDir, { withFileTypes: true });
170
- for (const entry of entries) {
171
- if (!entry.isDirectory())
172
- continue;
173
- // Profile directories are "Default" or "Profile N"
174
- const name = entry.name;
175
- if (name !== 'Default' && !name.startsWith('Profile '))
176
- continue;
177
- const profilePath = path.join(userDataDir, name);
178
- // Verify it's actually a profile directory (has Preferences file)
179
- const prefsPath = path.join(profilePath, 'Preferences');
180
- if (!fs.existsSync(prefsPath))
181
- continue;
182
- // Get profile metadata
183
- const metadata = await getProfileMetadata(profilePath, localState);
184
- // Check if profile is in use
185
- const inUse = await isProfileInUse(profilePath);
186
- profiles.push({
187
- id: name,
188
- name: metadata.name || name,
189
- path: profilePath,
190
- email: metadata.email,
191
- isInUse: inUse,
192
- });
193
- }
194
- // Sort profiles: Default first, then by name
195
- profiles.sort((a, b) => {
196
- if (a.id === 'Default')
197
- return -1;
198
- if (b.id === 'Default')
199
- return 1;
200
- return a.id.localeCompare(b.id);
201
- });
202
- return { userDataDir, profiles };
203
- }
204
- /**
205
- * Get a specific profile by ID
206
- */
207
- async function getProfile(profileId, options) {
208
- const result = await detectProfiles(options);
209
- return result.profiles.find(p => p.id === profileId) || null;
210
- }
211
- /**
212
- * Profile detector singleton
213
- */
214
- class ProfileDetector {
215
- cache = null;
216
- cacheTime = 0;
217
- cacheTTL = 5000; // 5 seconds
218
- async getProfiles(options) {
219
- const now = Date.now();
220
- if (!options?.refresh &&
221
- this.cache &&
222
- !options?.userDataDir &&
223
- now - this.cacheTime < this.cacheTTL) {
224
- return this.cache;
225
- }
226
- const result = await detectProfiles(options);
227
- if (!options?.userDataDir) {
228
- this.cache = result;
229
- this.cacheTime = now;
230
- }
231
- return result;
232
- }
233
- clearCache() {
234
- this.cache = null;
235
- this.cacheTime = 0;
236
- }
237
- }
238
- // Singleton instance
239
- let detectorInstance = null;
240
- function getProfileDetector() {
241
- if (!detectorInstance) {
242
- detectorInstance = new ProfileDetector();
243
- }
244
- return detectorInstance;
245
- }
246
- //# sourceMappingURL=profile-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile-detector.js","sourceRoot":"","sources":["../../src/chrome/profile-detector.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * DOM Mode Suggestion — suggests compact DOM mode when AX tree output is truncated.
3
- */
4
- import type { HintRule } from '../hint-engine';
5
- export declare const domModeSuggestionRules: HintRule[];
6
- //# sourceMappingURL=dom-mode-suggestion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom-mode-suggestion.d.ts","sourceRoot":"","sources":["../../../src/hints/rules/dom-mode-suggestion.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,gBAAgB,CAAC;AAE5D,eAAO,MAAM,sBAAsB,EAAE,QAAQ,EAc5C,CAAC"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- /**
3
- * DOM Mode Suggestion — suggests compact DOM mode when AX tree output is truncated.
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.domModeSuggestionRules = void 0;
7
- exports.domModeSuggestionRules = [
8
- {
9
- name: 'suggest-dom-mode-on-truncation',
10
- priority: 204, // Just after read-page-truncated at 203
11
- match(ctx) {
12
- if (ctx.toolName !== 'read_page')
13
- return null;
14
- if (ctx.isError)
15
- return null;
16
- // Match truncation indicators in the output
17
- if (/Output truncated|truncat|\[Output .* chars\]/i.test(ctx.resultText)) {
18
- return 'Hint: Use read_page with mode:"dom" for a compact DOM view (~5-10x fewer tokens) that avoids AX tree truncation.';
19
- }
20
- return null;
21
- },
22
- },
23
- ];
24
- //# sourceMappingURL=dom-mode-suggestion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom-mode-suggestion.js","sourceRoot":"","sources":["../../../src/hints/rules/dom-mode-suggestion.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIU,QAAA,sBAAsB,GAAe;IAChD;QACE,IAAI,EAAE,gCAAgC;QACtC,QAAQ,EAAE,GAAG,EAAG,wCAAwC;QACxD,KAAK,CAAC,GAAgB;YACpB,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW;gBAAE,OAAO,IAAI,CAAC;YAC9C,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAC7B,4CAA4C;YAC5C,IAAI,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzE,OAAO,kHAAkH,CAAC;YAC5H,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF;CACF,CAAC"}
@@ -1,76 +0,0 @@
1
- /**
2
- * Chrome Profile Types - Type definitions for profile management
3
- */
4
- /**
5
- * Represents a Chrome profile
6
- */
7
- export interface ChromeProfile {
8
- /** Profile directory name (e.g., "Default", "Profile 1") */
9
- id: string;
10
- /** Display name from profile metadata */
11
- name: string;
12
- /** Full path to profile directory */
13
- path: string;
14
- /** Google account email if signed in */
15
- email?: string;
16
- /** Whether the profile is currently in use (lock file exists) */
17
- isInUse: boolean;
18
- }
19
- /**
20
- * Result of profile detection
21
- */
22
- export interface ProfileListResult {
23
- /** Chrome user data directory path */
24
- userDataDir: string;
25
- /** List of detected profiles */
26
- profiles: ChromeProfile[];
27
- }
28
- /**
29
- * Profile configuration for GlobalConfig
30
- */
31
- export interface ProfileConfig {
32
- /** Profile ID to use (e.g., "Default", "Profile 1") */
33
- useProfile?: string;
34
- /** Custom Chrome user data directory path */
35
- chromeUserDataDir?: string;
36
- }
37
- /**
38
- * Chrome Local State file structure (partial)
39
- */
40
- export interface LocalState {
41
- profile: {
42
- info_cache: Record<string, ProfileInfo>;
43
- };
44
- }
45
- /**
46
- * Profile info from Local State
47
- */
48
- export interface ProfileInfo {
49
- /** Display name */
50
- name: string;
51
- /** Shortcut name */
52
- shortcut_name?: string;
53
- /** Google account email */
54
- user_name?: string;
55
- /** GAIA (Google Account ID) name */
56
- gaia_name?: string;
57
- /** Avatar icon index */
58
- avatar_icon?: string;
59
- }
60
- /**
61
- * Error thrown when profile is already in use
62
- */
63
- export declare class ProfileInUseError extends Error {
64
- readonly profileId: string;
65
- readonly profilePath: string;
66
- constructor(profileId: string, profilePath: string);
67
- }
68
- /**
69
- * Error thrown when profile is not found
70
- */
71
- export declare class ProfileNotFoundError extends Error {
72
- readonly profileId: string;
73
- readonly availableProfiles: string[];
74
- constructor(profileId: string, availableProfiles: string[]);
75
- }
76
- //# sourceMappingURL=profile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/types/profile.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;KACzC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,SAAS,EAAE,MAAM;aACjB,WAAW,EAAE,MAAM;gBADnB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM;CAKtC;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;aAE3B,SAAS,EAAE,MAAM;aACjB,iBAAiB,EAAE,MAAM,EAAE;gBAD3B,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE;CAO9C"}
@@ -1,35 +0,0 @@
1
- "use strict";
2
- /**
3
- * Chrome Profile Types - Type definitions for profile management
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ProfileNotFoundError = exports.ProfileInUseError = void 0;
7
- /**
8
- * Error thrown when profile is already in use
9
- */
10
- class ProfileInUseError extends Error {
11
- profileId;
12
- profilePath;
13
- constructor(profileId, profilePath) {
14
- super(`Profile "${profileId}" is already in use. Please close Chrome or use a different profile.`);
15
- this.profileId = profileId;
16
- this.profilePath = profilePath;
17
- this.name = 'ProfileInUseError';
18
- }
19
- }
20
- exports.ProfileInUseError = ProfileInUseError;
21
- /**
22
- * Error thrown when profile is not found
23
- */
24
- class ProfileNotFoundError extends Error {
25
- profileId;
26
- availableProfiles;
27
- constructor(profileId, availableProfiles) {
28
- super(`Profile "${profileId}" not found. Available profiles: ${availableProfiles.join(', ') || 'none'}`);
29
- this.profileId = profileId;
30
- this.availableProfiles = availableProfiles;
31
- this.name = 'ProfileNotFoundError';
32
- }
33
- }
34
- exports.ProfileNotFoundError = ProfileNotFoundError;
35
- //# sourceMappingURL=profile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/types/profile.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA+DH;;GAEG;AACH,MAAa,iBAAkB,SAAQ,KAAK;IAExB;IACA;IAFlB,YACkB,SAAiB,EACjB,WAAmB;QAEnC,KAAK,CAAC,YAAY,SAAS,sEAAsE,CAAC,CAAC;QAHnF,cAAS,GAAT,SAAS,CAAQ;QACjB,gBAAW,GAAX,WAAW,CAAQ;QAGnC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AARD,8CAQC;AAED;;GAEG;AACH,MAAa,oBAAqB,SAAQ,KAAK;IAE3B;IACA;IAFlB,YACkB,SAAiB,EACjB,iBAA2B;QAE3C,KAAK,CACH,YAAY,SAAS,oCAAoC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAClG,CAAC;QALc,cAAS,GAAT,SAAS,CAAQ;QACjB,sBAAiB,GAAjB,iBAAiB,CAAU;QAK3C,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAVD,oDAUC"}