10x-chat 0.2.1 → 0.2.2
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 +32 -32
- package/dist/providers/chatgpt.d.ts.map +1 -1
- package/dist/providers/chatgpt.js +21 -5
- package/dist/providers/chatgpt.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 10x-chat
|
|
2
2
|
|
|
3
|
-
> Chat with web AI agents (ChatGPT, Gemini, Claude) from your terminal via browser automation.
|
|
3
|
+
> Chat with web AI agents (ChatGPT, Gemini, Claude, Grok) from your terminal via browser automation.
|
|
4
4
|
|
|
5
5
|
10x-chat uses [Playwright](https://playwright.dev) to automate browser sessions with persisted login profiles. Login once, then send prompts — bundled with file context — from your CLI or AI coding agent.
|
|
6
6
|
|
|
@@ -12,26 +12,24 @@ Paste this into your [OpenClaw](https://openclaw.ai) chat to install as a skill:
|
|
|
12
12
|
https://raw.githubusercontent.com/RealMikeChong/10x-chat/refs/heads/main/skills/10x-chat/SKILL.md
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## Quick Start
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
npm install -g 10x-chat
|
|
19
18
|
npx playwright install chromium # one-time browser setup
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Quick Start
|
|
23
19
|
|
|
24
|
-
```bash
|
|
25
20
|
# 1. Login to a provider (opens a browser window)
|
|
26
|
-
10x-chat login chatgpt
|
|
21
|
+
npx 10x-chat@latest login chatgpt
|
|
27
22
|
|
|
28
23
|
# 2. Send a prompt
|
|
29
|
-
10x-chat chat -p "Explain this error" --provider chatgpt --file "src/**/*.ts"
|
|
24
|
+
npx 10x-chat@latest chat -p "Explain this error" --provider chatgpt --file "src/**/*.ts"
|
|
30
25
|
|
|
31
26
|
# 3. View session history
|
|
32
|
-
10x-chat status
|
|
27
|
+
npx 10x-chat@latest status
|
|
33
28
|
```
|
|
34
29
|
|
|
30
|
+
> [!TIP]
|
|
31
|
+
> Use `bunx` (bun.sh) instead of `npx` for faster startup.
|
|
32
|
+
|
|
35
33
|
## Commands
|
|
36
34
|
|
|
37
35
|
### `login <provider>`
|
|
@@ -39,10 +37,11 @@ npx playwright install chromium # one-time browser setup
|
|
|
39
37
|
Opens a headed browser for you to authenticate. The session persists across runs.
|
|
40
38
|
|
|
41
39
|
```bash
|
|
42
|
-
10x-chat login chatgpt # Login to ChatGPT
|
|
43
|
-
10x-chat login gemini # Login to Gemini
|
|
44
|
-
10x-chat login claude # Login to Claude
|
|
45
|
-
10x-chat login
|
|
40
|
+
npx 10x-chat@latest login chatgpt # Login to ChatGPT
|
|
41
|
+
npx 10x-chat@latest login gemini # Login to Gemini
|
|
42
|
+
npx 10x-chat@latest login claude # Login to Claude
|
|
43
|
+
npx 10x-chat@latest login grok # Login to Grok
|
|
44
|
+
npx 10x-chat@latest login --status # Check login status for all providers
|
|
46
45
|
```
|
|
47
46
|
|
|
48
47
|
### `chat`
|
|
@@ -50,17 +49,17 @@ Opens a headed browser for you to authenticate. The session persists across runs
|
|
|
50
49
|
Send a prompt to an AI provider via browser automation.
|
|
51
50
|
|
|
52
51
|
```bash
|
|
53
|
-
10x-chat chat -p "Review this code for bugs" --provider chatgpt --file "src/**/*.ts"
|
|
54
|
-
10x-chat chat -p "Debug this error" --file "logs/error.log"
|
|
55
|
-
10x-chat chat -p "Explain this" --dry-run # Preview bundle without sending
|
|
56
|
-
10x-chat chat -p "Explain this" --copy # Copy bundle to clipboard
|
|
57
|
-
10x-chat chat -p "Long task" --timeout 600000 --headed # 10min timeout, visible browser
|
|
52
|
+
npx 10x-chat@latest chat -p "Review this code for bugs" --provider chatgpt --file "src/**/*.ts"
|
|
53
|
+
npx 10x-chat@latest chat -p "Debug this error" --file "logs/error.log"
|
|
54
|
+
npx 10x-chat@latest chat -p "Explain this" --dry-run # Preview bundle without sending
|
|
55
|
+
npx 10x-chat@latest chat -p "Explain this" --copy # Copy bundle to clipboard
|
|
56
|
+
npx 10x-chat@latest chat -p "Long task" --timeout 600000 --headed # 10min timeout, visible browser
|
|
58
57
|
```
|
|
59
58
|
|
|
60
59
|
| Flag | Description |
|
|
61
60
|
|------|-------------|
|
|
62
61
|
| `-p, --prompt <text>` | **(required)** The prompt to send |
|
|
63
|
-
| `--provider <name>` | Provider: `chatgpt`, `gemini`, `claude` (default: config) |
|
|
62
|
+
| `--provider <name>` | Provider: `chatgpt`, `gemini`, `claude`, `grok` (default: config) |
|
|
64
63
|
| `--model <name>` | Model to select in the UI |
|
|
65
64
|
| `-f, --file <paths...>` | Files/globs to bundle as context |
|
|
66
65
|
| `--copy` | Copy bundle to clipboard instead of sending |
|
|
@@ -73,8 +72,8 @@ Send a prompt to an AI provider via browser automation.
|
|
|
73
72
|
List recent chat sessions.
|
|
74
73
|
|
|
75
74
|
```bash
|
|
76
|
-
10x-chat status # Last 24 hours
|
|
77
|
-
10x-chat status --hours 72 # Last 3 days
|
|
75
|
+
npx 10x-chat@latest status # Last 24 hours
|
|
76
|
+
npx 10x-chat@latest status --hours 72 # Last 3 days
|
|
78
77
|
```
|
|
79
78
|
|
|
80
79
|
### `session <id>`
|
|
@@ -82,7 +81,7 @@ List recent chat sessions.
|
|
|
82
81
|
View details of a specific session.
|
|
83
82
|
|
|
84
83
|
```bash
|
|
85
|
-
10x-chat session <id> --render # Pretty-print the response
|
|
84
|
+
npx 10x-chat@latest session <id> --render # Pretty-print the response
|
|
86
85
|
```
|
|
87
86
|
|
|
88
87
|
### `config`
|
|
@@ -90,10 +89,10 @@ View details of a specific session.
|
|
|
90
89
|
View or modify configuration.
|
|
91
90
|
|
|
92
91
|
```bash
|
|
93
|
-
10x-chat config show
|
|
94
|
-
10x-chat config set provider gemini
|
|
95
|
-
10x-chat config set timeout 600000
|
|
96
|
-
10x-chat config set headless false
|
|
92
|
+
npx 10x-chat@latest config show
|
|
93
|
+
npx 10x-chat@latest config set provider gemini
|
|
94
|
+
npx 10x-chat@latest config set timeout 600000
|
|
95
|
+
npx 10x-chat@latest config set headless false
|
|
97
96
|
```
|
|
98
97
|
|
|
99
98
|
### `skill`
|
|
@@ -101,8 +100,8 @@ View or modify configuration.
|
|
|
101
100
|
Manage the agent integration skill (for Codex, Claude Code, etc).
|
|
102
101
|
|
|
103
102
|
```bash
|
|
104
|
-
10x-chat skill install # Install SKILL.md to ~/.codex/skills/
|
|
105
|
-
10x-chat skill show # Display SKILL.md content
|
|
103
|
+
npx 10x-chat@latest skill install # Install SKILL.md to ~/.codex/skills/
|
|
104
|
+
npx 10x-chat@latest skill show # Display SKILL.md content
|
|
106
105
|
```
|
|
107
106
|
|
|
108
107
|
## File Bundling
|
|
@@ -110,7 +109,7 @@ Manage the agent integration skill (for Codex, Claude Code, etc).
|
|
|
110
109
|
The `--file` flag accepts globs. Files are assembled into a markdown bundle sent as the prompt:
|
|
111
110
|
|
|
112
111
|
```bash
|
|
113
|
-
10x-chat chat -p "Review these" --file "src/**/*.ts" "!src/**/*.test.ts"
|
|
112
|
+
npx 10x-chat@latest chat -p "Review these" --file "src/**/*.ts" "!src/**/*.test.ts"
|
|
114
113
|
```
|
|
115
114
|
|
|
116
115
|
Security-sensitive files (`.env*`, `*.pem`, `*.key`, etc.) are automatically excluded.
|
|
@@ -122,7 +121,8 @@ Security-sensitive files (`.env*`, `*.pem`, `*.key`, etc.) are automatically exc
|
|
|
122
121
|
├── profiles/
|
|
123
122
|
│ ├── chatgpt/ # Playwright persistent browser profile
|
|
124
123
|
│ ├── gemini/
|
|
125
|
-
│
|
|
124
|
+
│ ├── claude/
|
|
125
|
+
│ └── grok/
|
|
126
126
|
├── sessions/
|
|
127
127
|
│ └── <uuid>/
|
|
128
128
|
│ ├── meta.json # Session metadata
|
|
@@ -136,7 +136,7 @@ Security-sensitive files (`.env*`, `*.pem`, `*.key`, etc.) are automatically exc
|
|
|
136
136
|
10x-chat includes a `SKILL.md` for AI coding agents. Install it with:
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
|
-
10x-chat skill install
|
|
139
|
+
npx 10x-chat@latest skill install
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
This lets agents like Codex or Claude Code use 10x-chat to query other models for cross-validation, code review, or debugging help.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatgpt.d.ts","sourceRoot":"","sources":["../../src/providers/chatgpt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,eAAO,MAAM,cAAc,EAAE,cAQ5B,CAAC;AAYF,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"chatgpt.d.ts","sourceRoot":"","sources":["../../src/providers/chatgpt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAErF,eAAO,MAAM,cAAc,EAAE,cAQ5B,CAAC;AAYF,eAAO,MAAM,cAAc,EAAE,eAkI5B,CAAC"}
|
|
@@ -66,11 +66,27 @@ export const chatgptActions = {
|
|
|
66
66
|
async captureResponse(page, opts) {
|
|
67
67
|
const { timeoutMs, onChunk } = opts;
|
|
68
68
|
const startTime = Date.now();
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
//
|
|
69
|
+
const initialUrl = page.url();
|
|
70
|
+
// ChatGPT navigates from / to /c/<id> after sending a new message.
|
|
71
|
+
// This resets the DOM, so we cannot rely on a pre-counted nth() index.
|
|
72
|
+
// Instead, we poll for any assistant turn to appear and stabilize.
|
|
73
|
+
// Phase 1: Wait for at least one assistant turn to appear
|
|
74
|
+
const waitForTurn = async () => {
|
|
75
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
76
|
+
const count = await page.locator(SELECTORS.assistantTurn).count();
|
|
77
|
+
if (count > 0) {
|
|
78
|
+
// If URL changed (new conversation), any turn is "ours"
|
|
79
|
+
if (page.url() !== initialUrl)
|
|
80
|
+
return;
|
|
81
|
+
// If same URL, ensure the response is fresh (not a cached old one)
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
await page.waitForTimeout(500);
|
|
85
|
+
}
|
|
86
|
+
throw new Error('Timed out waiting for ChatGPT assistant response');
|
|
87
|
+
};
|
|
88
|
+
await waitForTurn();
|
|
89
|
+
// Phase 2: Poll until the response stops changing and streaming is complete
|
|
74
90
|
let lastText = '';
|
|
75
91
|
let stableCount = 0;
|
|
76
92
|
const STABLE_THRESHOLD = 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../src/providers/chatgpt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chatgpt.js","sourceRoot":"","sources":["../../src/providers/chatgpt.ts"],"names":[],"mappings":"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"}
|