10x-chat 0.10.11 → 0.10.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 10x-chat
2
2
 
3
- > Chat with web AI agents (ChatGPT, Gemini, Claude, Grok, Perplexity, NotebookLM) from your terminal via browser automation.
3
+ > Chat with web AI agents (ChatGPT, Gemini, Claude, Grok, Perplexity) from your terminal via browser automation.
4
4
 
5
5
  **English** | [繁體中文](./README-zh.md)
6
6
 
@@ -110,9 +110,26 @@ npx 10x-chat@latest research -p "Compare React vs Vue in 2026" --provider perple
110
110
  | `--poll-interval <ms>` | Progress check interval (default: 5000) |
111
111
  | `--save-dir <dir>` | Directory to save the research report |
112
112
 
113
+ ### `history`
114
+
115
+ List chat history visible in provider sidebars (ChatGPT, Gemini, Claude, Grok, Perplexity).
116
+
117
+ ```bash
118
+ npx 10x-chat@latest history --provider gemini
119
+ npx 10x-chat@latest history --provider all --limit 10
120
+ npx 10x-chat@latest history --provider chatgpt --json
121
+ ```
122
+
123
+ | Flag | Description |
124
+ |------|-------------|
125
+ | `--provider <name>` | Provider: `chatgpt`, `gemini`, `claude`, `grok`, `perplexity`, or `all` (default: all) |
126
+ | `--limit <n>` | Maximum items per provider (default: 20) |
127
+ | `--headed` | Show browser window |
128
+ | `--json` | Output JSON |
129
+
113
130
  ### `status`
114
131
 
115
- List recent chat sessions.
132
+ List local 10x-chat CLI sessions.
116
133
 
117
134
  ```bash
118
135
  npx 10x-chat@latest status # Last 24 hours
package/dist/bin/cli.js CHANGED
@@ -7,6 +7,7 @@ import { Command } from 'commander';
7
7
  import { stopDaemon } from '../browser/daemon.js';
8
8
  import { createChatCommand } from '../cli/chat.js';
9
9
  import { createConfigCommand } from '../cli/config.js';
10
+ import { createHistoryCommand } from '../cli/history.js';
10
11
  import { createImageCommand } from '../cli/image.js';
11
12
  import { createLoginCommand } from '../cli/login.js';
12
13
  import { createMigrateCommand } from '../cli/migrate.js';
@@ -38,6 +39,7 @@ program
38
39
  .version(pkg.version);
39
40
  program.addCommand(createLoginCommand());
40
41
  program.addCommand(createChatCommand());
42
+ program.addCommand(createHistoryCommand());
41
43
  program.addCommand(createImageCommand());
42
44
  program.addCommand(createResearchCommand());
43
45
  program.addCommand(createVideoCommand());
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createHistoryCommand(): Command;
3
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/cli/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,oBAAoB,IAAI,OAAO,CA4C9C"}
@@ -0,0 +1,207 @@
1
+ import chalk from 'chalk';
2
+ import { Command } from 'commander';
3
+ import { launchBrowser } from '../browser/index.js';
4
+ import { resolveHeadlessMode } from '../browser/mode.js';
5
+ import { loadConfig } from '../config.js';
6
+ import { getProvider, isValidProvider } from '../providers/index.js';
7
+ const HISTORY_PROVIDERS = ['chatgpt', 'gemini', 'claude', 'grok', 'perplexity'];
8
+ const HISTORY_URL_HINTS = {
9
+ chatgpt: [/\/c\//, /chatgpt\.com\/share\//],
10
+ gemini: [/gemini\.google\.com\/app\//],
11
+ claude: [/claude\.ai\/chat\//],
12
+ grok: [/grok\.com\/chat\//],
13
+ perplexity: [/perplexity\.ai\/(?:search|thread)\//],
14
+ notebooklm: [/notebooklm\.google\.com\/notebook\//],
15
+ };
16
+ const HISTORY_SELECTOR_HINTS = {
17
+ chatgpt: '[data-testid^="history-item"], nav a, a',
18
+ gemini: 'a[data-test-id="conversation"], [data-test-id="conversation"], nav a, a',
19
+ claude: 'nav a, a[href*="/chat/"], a',
20
+ grok: 'nav a, a[href*="/chat/"], a',
21
+ perplexity: 'nav a, a[href*="/search/"], a[href*="/thread/"], a',
22
+ notebooklm: 'a[href*="/notebook/"], [role="link"], a',
23
+ };
24
+ export function createHistoryCommand() {
25
+ return new Command('history')
26
+ .description('List chat history visible in provider sidebars')
27
+ .option('--provider <name>', `Provider (${HISTORY_PROVIDERS.join(', ')}, all)`, 'all')
28
+ .option('--limit <n>', 'Maximum items per provider', '20')
29
+ .option('--headed', 'Show browser window')
30
+ .option('--json', 'Output JSON')
31
+ .option('--isolated-profile', 'Use per-provider browser profiles')
32
+ .action(async (options) => {
33
+ const providerOption = String(options.provider ?? 'all');
34
+ const limit = Math.max(1, Number.parseInt(options.limit, 10) || 20);
35
+ const providers = (() => {
36
+ if (providerOption === 'all')
37
+ return HISTORY_PROVIDERS;
38
+ if (!isValidProvider(providerOption) || !HISTORY_PROVIDERS.includes(providerOption)) {
39
+ console.error(chalk.red(`Unknown or unsupported provider: ${providerOption}. Use: ${HISTORY_PROVIDERS.join(', ')}, all`));
40
+ process.exit(1);
41
+ }
42
+ return [providerOption];
43
+ })();
44
+ const results = [];
45
+ for (const providerName of providers) {
46
+ results.push(await listProviderHistory(providerName, {
47
+ headed: options.headed === true,
48
+ isolatedProfile: options.isolatedProfile === true,
49
+ limit,
50
+ quiet: options.json === true,
51
+ }));
52
+ }
53
+ if (options.json) {
54
+ console.log(JSON.stringify(results, null, 2));
55
+ return;
56
+ }
57
+ renderHistory(results);
58
+ });
59
+ }
60
+ async function listProviderHistory(providerName, opts) {
61
+ const config = await loadConfig();
62
+ const provider = getProvider(providerName);
63
+ const headless = resolveHeadlessMode(providerName, config.headless, opts.headed);
64
+ const profileMode = opts.isolatedProfile ? 'isolated' : config.profileMode;
65
+ let browser;
66
+ const originalConsoleLog = console.log;
67
+ const originalConsoleError = console.error;
68
+ if (opts.quiet) {
69
+ console.log = () => { };
70
+ console.error = () => { };
71
+ }
72
+ try {
73
+ browser = await launchBrowser({
74
+ provider: providerName,
75
+ headless,
76
+ url: provider.config.url,
77
+ profileMode,
78
+ });
79
+ const loggedIn = await provider.actions.isLoggedIn(browser.page);
80
+ if (!loggedIn) {
81
+ return { provider: providerName, items: [], error: 'not logged in' };
82
+ }
83
+ await revealHistory(browser.page, providerName);
84
+ const items = await extractHistoryItems(browser.page, providerName, opts.limit);
85
+ return { provider: providerName, items };
86
+ }
87
+ catch (error) {
88
+ return {
89
+ provider: providerName,
90
+ items: [],
91
+ error: error instanceof Error ? error.message : String(error),
92
+ };
93
+ }
94
+ finally {
95
+ await browser?.close().catch(() => { });
96
+ if (opts.quiet) {
97
+ console.log = originalConsoleLog;
98
+ console.error = originalConsoleError;
99
+ }
100
+ }
101
+ }
102
+ async function revealHistory(page, providerName) {
103
+ await page.waitForTimeout(2_000);
104
+ if (providerName === 'chatgpt') {
105
+ const searchButton = page
106
+ .locator('[aria-label*="Search chats"], button:has-text("Search chats")')
107
+ .first();
108
+ if (await searchButton.isVisible().catch(() => false))
109
+ return;
110
+ }
111
+ if (providerName === 'gemini') {
112
+ const historyVisible = await page
113
+ .locator('a[data-test-id="conversation"], [data-test-id="conversation"]')
114
+ .first()
115
+ .isVisible()
116
+ .catch(() => false);
117
+ if (historyVisible)
118
+ return;
119
+ }
120
+ const maybeOpenSidebar = page
121
+ .locator([
122
+ '[data-testid="side-nav-menu-button"]',
123
+ '[aria-label="Main menu"]',
124
+ '[aria-label*="menu" i]',
125
+ 'button:has-text("Recents")',
126
+ 'button:has-text("History")',
127
+ ].join(', '))
128
+ .first();
129
+ if (await maybeOpenSidebar.isVisible().catch(() => false)) {
130
+ await maybeOpenSidebar.click({ force: true }).catch(() => { });
131
+ await page.waitForTimeout(1_000);
132
+ }
133
+ }
134
+ async function extractHistoryItems(page, providerName, limit) {
135
+ return page.evaluate(({ provider, limit: maxItems, selector, urlHints }) => {
136
+ const normalize = (value) => (value ?? '').replace(/\s+/g, ' ').trim();
137
+ const isVisible = (el) => {
138
+ if (!(el instanceof HTMLElement))
139
+ return false;
140
+ return el.offsetWidth > 0 && el.offsetHeight > 0;
141
+ };
142
+ const matchesUrlHint = (href) => {
143
+ if (!href)
144
+ return false;
145
+ return urlHints.some((pattern) => new RegExp(pattern).test(href));
146
+ };
147
+ const candidates = Array.from(document.querySelectorAll(selector));
148
+ const seen = new Set();
149
+ const items = [];
150
+ for (const el of candidates) {
151
+ if (!isVisible(el))
152
+ continue;
153
+ const anchor = el instanceof HTMLAnchorElement ? el : el.querySelector('a');
154
+ const href = anchor instanceof HTMLAnchorElement ? anchor.href : '';
155
+ const title = normalize(el.getAttribute('aria-label') ||
156
+ el.getAttribute('title') ||
157
+ el.textContent ||
158
+ anchor?.textContent);
159
+ if (!title || title.length < 2)
160
+ continue;
161
+ if (/^(new chat|search chats|settings|upgrade|log in|sign in|explore gpts|library)$/i.test(title) ||
162
+ /^open (?:conversation|project|chat) options/i.test(title)) {
163
+ continue;
164
+ }
165
+ const providerSpecific = (() => {
166
+ if (provider === 'gemini')
167
+ return el.getAttribute('data-test-id') === 'conversation' || matchesUrlHint(href);
168
+ if (provider === 'chatgpt')
169
+ return matchesUrlHint(href);
170
+ return matchesUrlHint(href);
171
+ })();
172
+ if (!providerSpecific)
173
+ continue;
174
+ const key = href || title.toLowerCase();
175
+ if (seen.has(key))
176
+ continue;
177
+ seen.add(key);
178
+ items.push({ title, ...(href ? { href } : {}) });
179
+ if (items.length >= maxItems)
180
+ break;
181
+ }
182
+ return items;
183
+ }, {
184
+ provider: providerName,
185
+ limit,
186
+ selector: HISTORY_SELECTOR_HINTS[providerName] ?? 'a, button, [role="link"]',
187
+ urlHints: (HISTORY_URL_HINTS[providerName] ?? []).map((re) => re.source),
188
+ });
189
+ }
190
+ function renderHistory(results) {
191
+ for (const result of results) {
192
+ console.log(chalk.bold(`\n${result.provider}`));
193
+ if (result.error) {
194
+ console.log(chalk.red(` ${result.error}`));
195
+ continue;
196
+ }
197
+ if (result.items.length === 0) {
198
+ console.log(chalk.dim(' No history items found.'));
199
+ continue;
200
+ }
201
+ result.items.forEach((item, index) => {
202
+ const href = item.href ? chalk.dim(` ${item.href}`) : '';
203
+ console.log(` ${String(index + 1).padStart(2, ' ')}. ${item.title}${href}`);
204
+ });
205
+ }
206
+ }
207
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/cli/history.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.10.11",
3
+ "version": "0.10.12",
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",
@@ -77,7 +77,9 @@ npx 10x-chat@latest research -p "Market analysis of EVs" --provider chatgpt --ti
77
77
  npx 10x-chat@latest chat --dry-run -p "Debug this error" --file src/
78
78
  npx 10x-chat@latest chat --copy -p "Explain this" --file "src/**"
79
79
 
80
- # Session management
80
+ # Provider chat history + local session management
81
+ npx 10x-chat@latest history --provider gemini
82
+ npx 10x-chat@latest history --provider all --limit 10
81
83
  npx 10x-chat@latest status
82
84
  npx 10x-chat@latest session <id> --render
83
85