10x-chat 0.4.0 → 0.4.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.
@@ -1,3 +1,4 @@
1
1
  export { acquireProfileLock, type ProfileLock } from './lock.js';
2
- export { type BrowserSession, type LaunchOptions, launchBrowser, shutdownSharedBrowser, } from './manager.js';
2
+ export { type BrowserSession, type LaunchOptions, launchBrowser } from './manager.js';
3
+ export { loadStorageState, saveStorageState } from './state.js';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { acquireProfileLock } from './lock.js';
2
- export { launchBrowser, shutdownSharedBrowser, } from './manager.js';
2
+ export { launchBrowser } from './manager.js';
3
+ export { loadStorageState, saveStorageState } from './state.js';
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAoB,MAAM,WAAW,CAAC;AACjE,OAAO,EAGL,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAoB,MAAM,WAAW,CAAC;AACjE,OAAO,EAA2C,aAAa,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -4,7 +4,8 @@ import { type ProfileLock } from './lock.js';
4
4
  export interface BrowserSession {
5
5
  context: BrowserContext;
6
6
  page: Page;
7
- lock: ProfileLock;
7
+ /** Profile lock (only set in isolated mode; null in shared mode). */
8
+ lock: ProfileLock | null;
8
9
  close: () => Promise<void>;
9
10
  }
10
11
  export interface LaunchOptions {
@@ -13,25 +14,37 @@ export interface LaunchOptions {
13
14
  /** Initial URL to navigate to after launch. */
14
15
  url?: string;
15
16
  /**
16
- * Profile mode: 'shared' uses a single browser with multiple tabs,
17
- * 'isolated' uses a per-provider browser (original behavior).
17
+ * Profile mode:
18
+ * - 'shared': each process launches its own browser but loads shared
19
+ * cookies/storage from a common state file. Truly parallel across
20
+ * processes — no locks, no conflicts.
21
+ * - 'isolated': per-provider persistent context with profile lock
22
+ * (original behavior).
18
23
  * Defaults to 'shared'.
19
24
  */
20
25
  profileMode?: ProfileMode;
26
+ /**
27
+ * If true, use a persistent context even in shared mode.
28
+ * Used by `login` command which needs the user to interact and have
29
+ * state auto-persisted to disk. After login, storage state is exported
30
+ * for use by regular (non-persistent) shared sessions.
31
+ */
32
+ persistent?: boolean;
21
33
  }
22
34
  /**
23
35
  * Launch a browser session for a provider.
24
36
  *
25
- * In 'shared' mode (default): reuses a single Chromium instance with one tab
26
- * per provider. All providers share cookies/login state. Concurrent sessions
27
- * run as separate tabs in the same browser.
37
+ * **Shared mode (default):** Each process gets its own Chromium instance
38
+ * loaded with shared cookies from `~/.10x-chat/profiles/default/storage-state.json`.
39
+ * Multiple `npx 10x-chat` processes can run truly in parallel no locks.
40
+ * On close, updated cookies are saved back.
41
+ *
42
+ * **Shared + persistent** (login only): Uses `launchPersistentContext` on the
43
+ * shared profile dir so the user can interact and cookies auto-persist.
44
+ * Requires profile lock (only one login at a time).
28
45
  *
29
- * In 'isolated' mode: each provider gets its own Chromium instance and profile
30
- * directory. Separate login state, separate browser process.
46
+ * **Isolated mode:** Each provider gets its own persistent Chromium context
47
+ * and profile directory. Original behavior with profile lock.
31
48
  */
32
49
  export declare function launchBrowser(opts: LaunchOptions): Promise<BrowserSession>;
33
- /**
34
- * Force-close the shared browser (useful for cleanup/testing).
35
- */
36
- export declare function shutdownSharedBrowser(): Promise<void>;
37
50
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/browser/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAY,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAkFD;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAoDhF;AA+CD;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/browser/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,cAAc,EAAY,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEpF,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAGjE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,qEAAqE;IACrE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAYhF"}
@@ -2,127 +2,135 @@ import { mkdir } from 'node:fs/promises';
2
2
  import { chromium } from 'playwright';
3
3
  import { getIsolatedProfileDir, getSharedProfileDir } from '../paths.js';
4
4
  import { acquireProfileLock } from './lock.js';
5
- let sharedState = null;
6
- let sharedLaunchPromise = null;
7
- async function getOrCreateSharedBrowser(headless) {
8
- // If already running with matching headless mode, reuse it
9
- if (sharedState && sharedState.headless === headless) {
10
- return sharedState;
11
- }
12
- // If a launch is in progress, wait for it (prevents double-launch race)
13
- if (sharedLaunchPromise) {
14
- const state = await sharedLaunchPromise;
15
- if (state.headless === headless)
16
- return state;
17
- // Headless mode mismatch — close existing and relaunch
18
- await closeSharedBrowser();
19
- }
20
- const profileDir = getSharedProfileDir();
21
- await mkdir(profileDir, { recursive: true });
22
- sharedLaunchPromise = (async () => {
23
- const lock = await acquireProfileLock(profileDir);
24
- let context;
25
- try {
26
- context = await chromium.launchPersistentContext(profileDir, {
27
- headless,
28
- viewport: { width: 1280, height: 900 },
29
- args: [
30
- '--disable-blink-features=AutomationControlled',
31
- '--no-first-run',
32
- '--no-default-browser-check',
33
- ],
34
- });
35
- }
36
- catch (error) {
37
- await lock.release();
38
- throw error;
39
- }
40
- const state = {
41
- context,
42
- lock,
43
- pageCount: 0,
44
- headless,
45
- profileDir,
46
- };
47
- sharedState = state;
48
- sharedLaunchPromise = null;
49
- return state;
50
- })();
51
- return sharedLaunchPromise;
52
- }
53
- async function closeSharedBrowser() {
54
- if (!sharedState)
55
- return;
56
- const state = sharedState;
57
- sharedState = null;
58
- sharedLaunchPromise = null;
59
- try {
60
- await state.context.close();
61
- }
62
- finally {
63
- await state.lock.release();
64
- }
65
- }
5
+ import { loadStorageState, saveStorageState } from './state.js';
6
+ const CHROMIUM_ARGS = [
7
+ '--disable-blink-features=AutomationControlled',
8
+ '--no-first-run',
9
+ '--no-default-browser-check',
10
+ ];
66
11
  /**
67
12
  * Launch a browser session for a provider.
68
13
  *
69
- * In 'shared' mode (default): reuses a single Chromium instance with one tab
70
- * per provider. All providers share cookies/login state. Concurrent sessions
71
- * run as separate tabs in the same browser.
14
+ * **Shared mode (default):** Each process gets its own Chromium instance
15
+ * loaded with shared cookies from `~/.10x-chat/profiles/default/storage-state.json`.
16
+ * Multiple `npx 10x-chat` processes can run truly in parallel no locks.
17
+ * On close, updated cookies are saved back.
72
18
  *
73
- * In 'isolated' mode: each provider gets its own Chromium instance and profile
74
- * directory. Separate login state, separate browser process.
19
+ * **Shared + persistent** (login only): Uses `launchPersistentContext` on the
20
+ * shared profile dir so the user can interact and cookies auto-persist.
21
+ * Requires profile lock (only one login at a time).
22
+ *
23
+ * **Isolated mode:** Each provider gets its own persistent Chromium context
24
+ * and profile directory. Original behavior with profile lock.
75
25
  */
76
26
  export async function launchBrowser(opts) {
77
- const { headless = true, url, profileMode = 'shared' } = opts;
27
+ const { profileMode = 'shared', persistent = false } = opts;
78
28
  if (profileMode === 'isolated') {
79
29
  return launchIsolatedBrowser(opts);
80
30
  }
81
- // ── Shared mode: open a new tab in the shared browser ─────
82
- const state = await getOrCreateSharedBrowser(headless);
83
- state.pageCount++;
31
+ if (persistent) {
32
+ return launchSharedPersistentBrowser(opts);
33
+ }
34
+ return launchSharedBrowser(opts);
35
+ }
36
+ /**
37
+ * Shared mode (non-persistent): own browser + shared storage state.
38
+ * No lock needed — fully parallel across processes.
39
+ */
40
+ async function launchSharedBrowser(opts) {
41
+ const { headless = true, url } = opts;
42
+ const browser = await chromium.launch({
43
+ headless,
44
+ args: CHROMIUM_ARGS,
45
+ });
46
+ let context;
84
47
  let page;
85
48
  try {
86
- // First call may reuse the blank tab that launchPersistentContext creates
87
- const existingPages = state.context.pages();
88
- const blankPage = existingPages.find((p) => p.url() === 'about:blank' || p.url() === 'chrome://newtab/');
89
- if (state.pageCount === 1 && blankPage) {
90
- page = blankPage;
49
+ // Load shared cookies/storage if available
50
+ const statePath = await loadStorageState();
51
+ context = await browser.newContext({
52
+ viewport: { width: 1280, height: 900 },
53
+ ...(statePath ? { storageState: statePath } : {}),
54
+ });
55
+ page = await context.newPage();
56
+ if (url) {
57
+ await page.goto(url, { waitUntil: 'domcontentloaded' });
58
+ }
59
+ }
60
+ catch (error) {
61
+ await browser.close();
62
+ throw error;
63
+ }
64
+ const close = async () => {
65
+ try {
66
+ // Save updated cookies/storage back to shared state
67
+ await saveStorageState(context);
68
+ }
69
+ catch {
70
+ // best effort
91
71
  }
92
- else {
93
- page = await state.context.newPage();
72
+ try {
73
+ await context.close();
74
+ }
75
+ catch {
76
+ // context may already be closed
77
+ }
78
+ try {
79
+ await browser.close();
80
+ }
81
+ catch {
82
+ // browser may already be closed
94
83
  }
84
+ };
85
+ return { context, page, lock: null, close };
86
+ }
87
+ /**
88
+ * Shared mode (persistent): for login command.
89
+ * Uses persistent context so cookies auto-save to disk.
90
+ * Requires lock since persistent contexts can't share a profile dir.
91
+ */
92
+ async function launchSharedPersistentBrowser(opts) {
93
+ const { headless = true, url } = opts;
94
+ const profileDir = getSharedProfileDir();
95
+ await mkdir(profileDir, { recursive: true });
96
+ const lock = await acquireProfileLock(profileDir);
97
+ let context;
98
+ let page;
99
+ try {
100
+ context = await chromium.launchPersistentContext(profileDir, {
101
+ headless,
102
+ viewport: { width: 1280, height: 900 },
103
+ args: CHROMIUM_ARGS,
104
+ });
105
+ page = context.pages()[0] ?? (await context.newPage());
95
106
  if (url) {
96
107
  await page.goto(url, { waitUntil: 'domcontentloaded' });
97
108
  }
98
109
  }
99
110
  catch (error) {
100
- state.pageCount--;
101
- if (state.pageCount <= 0) {
102
- await closeSharedBrowser();
103
- }
111
+ await lock.release();
104
112
  throw error;
105
113
  }
106
114
  const close = async () => {
107
115
  try {
108
- if (!page.isClosed()) {
109
- await page.close();
110
- }
116
+ // Export storage state for non-persistent sessions to use
117
+ await saveStorageState(context);
118
+ }
119
+ catch {
120
+ // best effort
121
+ }
122
+ try {
123
+ await context.close();
111
124
  }
112
125
  finally {
113
- if (sharedState) {
114
- sharedState.pageCount--;
115
- if (sharedState.pageCount <= 0) {
116
- await closeSharedBrowser();
117
- }
118
- }
126
+ await lock.release();
119
127
  }
120
128
  };
121
- return { context: state.context, page, lock: state.lock, close };
129
+ return { context, page, lock, close };
122
130
  }
123
131
  /**
124
- * Launch an isolated browser (original behavior).
125
- * One Chromium instance per provider, separate profile dir.
132
+ * Isolated mode (original behavior).
133
+ * Per-provider persistent context with profile lock.
126
134
  */
127
135
  async function launchIsolatedBrowser(opts) {
128
136
  const { provider, headless = true, url } = opts;
@@ -135,11 +143,7 @@ async function launchIsolatedBrowser(opts) {
135
143
  context = await chromium.launchPersistentContext(profileDir, {
136
144
  headless,
137
145
  viewport: { width: 1280, height: 900 },
138
- args: [
139
- '--disable-blink-features=AutomationControlled',
140
- '--no-first-run',
141
- '--no-default-browser-check',
142
- ],
146
+ args: CHROMIUM_ARGS,
143
147
  });
144
148
  page = context.pages()[0] ?? (await context.newPage());
145
149
  if (url) {
@@ -160,10 +164,4 @@ async function launchIsolatedBrowser(opts) {
160
164
  };
161
165
  return { context, page, lock, close };
162
166
  }
163
- /**
164
- * Force-close the shared browser (useful for cleanup/testing).
165
- */
166
- export async function shutdownSharedBrowser() {
167
- await closeSharedBrowser();
168
- }
169
167
  //# sourceMappingURL=manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/browser/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAuB,QAAQ,EAAa,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,kBAAkB,EAAoB,MAAM,WAAW,CAAC;AAoCjE,IAAI,WAAW,GAA8B,IAAI,CAAC;AAClD,IAAI,mBAAmB,GAAuC,IAAI,CAAC;AAEnE,KAAK,UAAU,wBAAwB,CAAC,QAAiB;IACvD,2DAA2D;IAC3D,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,wEAAwE;IACxE,IAAI,mBAAmB,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC;QACxC,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9C,uDAAuD;QACvD,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,mBAAmB,GAAG,CAAC,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAElD,IAAI,OAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,uBAAuB,CAAC,UAAU,EAAE;gBAC3D,QAAQ;gBACR,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;gBACtC,IAAI,EAAE;oBACJ,+CAA+C;oBAC/C,gBAAgB;oBAChB,4BAA4B;iBAC7B;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAuB;YAChC,OAAO;YACP,IAAI;YACJ,SAAS,EAAE,CAAC;YACZ,QAAQ;YACR,UAAU;SACX,CAAC;QACF,WAAW,GAAG,KAAK,CAAC;QACpB,mBAAmB,GAAG,IAAI,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,MAAM,KAAK,GAAG,WAAW,CAAC;IAC1B,WAAW,GAAG,IAAI,CAAC;IACnB,mBAAmB,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAmB;IACrD,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;IAE9D,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACvD,KAAK,CAAC,SAAS,EAAE,CAAC;IAElB,IAAI,IAAU,CAAC;IACf,IAAI,CAAC;QACH,0EAA0E;QAC1E,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,aAAa,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,kBAAkB,CACnE,CAAC;QAEF,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACvC,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,kBAAkB,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,CAAC,SAAS,EAAE,CAAC;gBACxB,IAAI,WAAW,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;oBAC/B,MAAM,kBAAkB,EAAE,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,qBAAqB,CAAC,IAAmB;IACtD,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAChD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAElD,IAAI,OAAuB,CAAC;IAC5B,IAAI,IAAU,CAAC;IACf,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,uBAAuB,CAAC,UAAU,EAAE;YAC3D,QAAQ;YACR,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;YACtC,IAAI,EAAE;gBACJ,+CAA+C;gBAC/C,gBAAgB;gBAChB,4BAA4B;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvD,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,kBAAkB,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/browser/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { BrowserContext } from 'playwright';
2
+ /** Path to the shared storage state file. */
3
+ export declare function getStorageStatePath(): string;
4
+ /**
5
+ * Load storage state for shared mode.
6
+ * Returns the path if it exists, undefined otherwise.
7
+ * Playwright's `newContext({ storageState })` accepts a path string.
8
+ */
9
+ export declare function loadStorageState(): Promise<string | undefined>;
10
+ /**
11
+ * Save storage state from a browser context.
12
+ * Uses atomic write (temp file + rename) to prevent corruption
13
+ * if multiple processes save concurrently.
14
+ */
15
+ export declare function saveStorageState(context: BrowserContext): Promise<void>;
16
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/browser/state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD,6CAA6C;AAC7C,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAapE;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7E"}
@@ -0,0 +1,55 @@
1
+ import { mkdir, readFile, rename } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { getSharedProfileDir } from '../paths.js';
4
+ const STATE_FILENAME = 'storage-state.json';
5
+ /** Path to the shared storage state file. */
6
+ export function getStorageStatePath() {
7
+ return path.join(getSharedProfileDir(), STATE_FILENAME);
8
+ }
9
+ /**
10
+ * Load storage state for shared mode.
11
+ * Returns the path if it exists, undefined otherwise.
12
+ * Playwright's `newContext({ storageState })` accepts a path string.
13
+ */
14
+ export async function loadStorageState() {
15
+ const statePath = getStorageStatePath();
16
+ try {
17
+ const raw = await readFile(statePath, 'utf-8');
18
+ // Validate it's parseable JSON with the expected shape
19
+ const parsed = JSON.parse(raw);
20
+ if (Array.isArray(parsed.cookies) || Array.isArray(parsed.origins)) {
21
+ return statePath;
22
+ }
23
+ return undefined;
24
+ }
25
+ catch {
26
+ return undefined;
27
+ }
28
+ }
29
+ /**
30
+ * Save storage state from a browser context.
31
+ * Uses atomic write (temp file + rename) to prevent corruption
32
+ * if multiple processes save concurrently.
33
+ */
34
+ export async function saveStorageState(context) {
35
+ const statePath = getStorageStatePath();
36
+ const dir = path.dirname(statePath);
37
+ await mkdir(dir, { recursive: true });
38
+ // Atomic write: save to temp file, then rename
39
+ const tmpPath = `${statePath}.${process.pid}.tmp`;
40
+ try {
41
+ await context.storageState({ path: tmpPath });
42
+ await rename(tmpPath, statePath);
43
+ }
44
+ catch {
45
+ // Best effort — don't crash if save fails
46
+ try {
47
+ const { rm } = await import('node:fs/promises');
48
+ await rm(tmpPath, { force: true });
49
+ }
50
+ catch {
51
+ // ignore cleanup failure
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/browser/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,cAAc,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,uDAAuD;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAuB;IAC5D,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtC,+CAA+C;IAC/C,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9C,MAAM,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAChD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/cli/login.js CHANGED
@@ -52,6 +52,7 @@ async function loginToProvider(providerName, profileMode = 'shared') {
52
52
  headless: false, // Always headed for login
53
53
  url: provider.config.loginUrl,
54
54
  profileMode,
55
+ persistent: true, // Login needs persistent context to auto-save cookies
55
56
  });
56
57
  try {
57
58
  // Wait for the user to login — poll until logged in or timeout
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { type BrowserSession, launchBrowser, shutdownSharedBrowser } from './browser/index.js';
1
+ export { type BrowserSession, launchBrowser } from './browser/index.js';
2
2
  export { loadConfig, saveConfig } from './config.js';
3
3
  export { buildBundle, type ChatResult, runChat } from './core/index.js';
4
4
  export { getProvider, isValidProvider, listProviders } from './providers/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { launchBrowser, shutdownSharedBrowser } from './browser/index.js';
1
+ export { launchBrowser } from './browser/index.js';
2
2
  export { loadConfig, saveConfig } from './config.js';
3
3
  export { buildBundle, runChat } from './core/index.js';
4
4
  export { getProvider, isValidProvider, listProviders } from './providers/index.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAmB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAmB,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,eAAO,MAAM,aAAa,EAAE,cAQ3B,CAAC;AAUF,eAAO,MAAM,aAAa,EAAE,eAgG3B,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,eAAO,MAAM,aAAa,EAAE,cAQ3B,CAAC;AAWF,eAAO,MAAM,aAAa,EAAE,eAgG3B,CAAC"}
@@ -10,7 +10,7 @@ export const CLAUDE_CONFIG = {
10
10
  const SELECTORS = {
11
11
  composer: '[contenteditable="true"].ProseMirror, div[enterkeyhint="enter"]',
12
12
  sendButton: 'button[aria-label="Send message"], button[aria-label="Send Message"], button[data-testid="send-message"]',
13
- responseTurn: '[data-is-streaming], .font-claude-message, [data-testid="assistant-message"]',
13
+ responseTurn: '[data-is-streaming], .font-claude-message, .font-claude-response, [data-testid="assistant-message"], [data-testid="user-message"] ~ div',
14
14
  fileInput: '[data-testid="file-upload"], #chat-input-file-upload-onpage',
15
15
  };
16
16
  export const claudeActions = {
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/providers/claude.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "10x-chat",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "CLI to chat with web AI agents (ChatGPT, Gemini, Claude) via browser automation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",