10x-chat 0.11.5 → 0.11.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.
- package/README.md +28 -0
- package/dist/bin/cli.js +2 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/delegate.d.ts +3 -0
- package/dist/cli/delegate.d.ts.map +1 -0
- package/dist/cli/delegate.js +252 -0
- package/dist/cli/delegate.js.map +1 -0
- package/package.json +1 -1
- package/skills/10x-chat/SKILL.md +33 -0
package/README.md
CHANGED
|
@@ -74,6 +74,34 @@ npx 10x-chat@latest chat -p "Long task" --timeout 600000 --headed # 10min timeo
|
|
|
74
74
|
| `--headed` | Show browser window during chat |
|
|
75
75
|
| `--timeout <ms>` | Response timeout in milliseconds (default: 300000) |
|
|
76
76
|
|
|
77
|
+
### `delegate <provider>`
|
|
78
|
+
|
|
79
|
+
Start a provider-specific JSONL delegate for external AI callers that need multi-step control instead of a single one-shot prompt. The delegate opens the provider once, keeps the tab alive, then reads JSON commands from stdin and writes JSON responses to stdout.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# One long-lived provider session controlled over JSONL
|
|
83
|
+
npx 10x-chat@latest delegate gemini --model Pro <<'EOF'
|
|
84
|
+
{"id":1,"action":"status"}
|
|
85
|
+
{"id":2,"action":"submit","prompt":"Draft three launch angles for this product."}
|
|
86
|
+
{"id":3,"action":"capture","timeoutMs":600000}
|
|
87
|
+
{"id":4,"action":"close"}
|
|
88
|
+
EOF
|
|
89
|
+
|
|
90
|
+
# Convenience combined action: select model/files, submit, capture
|
|
91
|
+
printf '%s\n' '{"action":"chat","model":"Thinking","prompt":"Review this pasted plan."}' \
|
|
92
|
+
| npx 10x-chat@latest delegate gemini
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Supported actions: `status`, `goto`, `selectModel`, `attach`, `submit`, `capture`, `chat`, `eval`, `close`.
|
|
96
|
+
|
|
97
|
+
| Flag | Description |
|
|
98
|
+
|------|-------------|
|
|
99
|
+
| `--model <name>` | Select a model/mode immediately after opening |
|
|
100
|
+
| `--headed` | Show browser window |
|
|
101
|
+
| `--timeout <ms>` | Default capture timeout |
|
|
102
|
+
| `--isolated-profile` | Use per-provider browser profile |
|
|
103
|
+
| `--no-login-check` | Start even if login detection fails |
|
|
104
|
+
|
|
77
105
|
### `image`
|
|
78
106
|
|
|
79
107
|
Generate images via ChatGPT (DALL-E), Gemini (Imagen), or Grok with non-blocking polling.
|
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 { createDelegateCommand } from '../cli/delegate.js';
|
|
10
11
|
import { createHistoryCommand } from '../cli/history.js';
|
|
11
12
|
import { createImageCommand } from '../cli/image.js';
|
|
12
13
|
import { createLoginCommand } from '../cli/login.js';
|
|
@@ -39,6 +40,7 @@ program
|
|
|
39
40
|
.version(pkg.version);
|
|
40
41
|
program.addCommand(createLoginCommand());
|
|
41
42
|
program.addCommand(createChatCommand());
|
|
43
|
+
program.addCommand(createDelegateCommand());
|
|
42
44
|
program.addCommand(createHistoryCommand());
|
|
43
45
|
program.addCommand(createImageCommand());
|
|
44
46
|
program.addCommand(createResearchCommand());
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../src/cli/delegate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8EpC,wBAAgB,qBAAqB,IAAI,OAAO,CA+P/C"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { stdin as input, stdout as output } from 'node:process';
|
|
2
|
+
import readline from 'node:readline';
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import { launchBrowser } from '../browser/index.js';
|
|
5
|
+
import { resolveHeadlessMode } from '../browser/mode.js';
|
|
6
|
+
import { loadConfig } from '../config.js';
|
|
7
|
+
import { resolveAttachPaths } from '../core/files.js';
|
|
8
|
+
import { getProvider, isValidProvider, listProviders } from '../providers/index.js';
|
|
9
|
+
function writeJsonLine(payload) {
|
|
10
|
+
output.write(`${JSON.stringify(payload)}\n`);
|
|
11
|
+
}
|
|
12
|
+
function parseRequest(line) {
|
|
13
|
+
const parsed = JSON.parse(line);
|
|
14
|
+
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
15
|
+
throw new Error('Expected a JSON object');
|
|
16
|
+
}
|
|
17
|
+
return parsed;
|
|
18
|
+
}
|
|
19
|
+
function requireString(value, name) {
|
|
20
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
21
|
+
throw new Error(`Missing required string field: ${name}`);
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
function requireStringArray(value, name) {
|
|
26
|
+
if (!Array.isArray(value) || !value.every((entry) => typeof entry === 'string')) {
|
|
27
|
+
throw new Error(`Missing required string[] field: ${name}`);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
async function capture(providerName, timeoutMs, page) {
|
|
32
|
+
const provider = getProvider(providerName);
|
|
33
|
+
return provider.actions.captureResponse(page, { timeoutMs });
|
|
34
|
+
}
|
|
35
|
+
export function createDelegateCommand() {
|
|
36
|
+
const cmd = new Command('delegate')
|
|
37
|
+
.description('Start a provider-specific JSONL delegate for multi-step external AI control')
|
|
38
|
+
.argument('<provider>', `Provider to delegate (${listProviders().join(', ')})`)
|
|
39
|
+
.option('--model <model>', 'Select a model/mode after opening')
|
|
40
|
+
.option('--headed', 'Force a visible browser window')
|
|
41
|
+
.option('--timeout <ms>', 'Default capture timeout in ms', (value) => Number(value))
|
|
42
|
+
.option('--isolated-profile', 'Use per-provider browser profile (backward compat)')
|
|
43
|
+
.option('--no-login-check', 'Do not fail startup when provider is not logged in')
|
|
44
|
+
.action(async (providerArg, options) => {
|
|
45
|
+
if (!isValidProvider(providerArg)) {
|
|
46
|
+
throw new Error(`Unknown provider: ${providerArg}. Available: ${listProviders().join(', ')}`);
|
|
47
|
+
}
|
|
48
|
+
const providerName = providerArg;
|
|
49
|
+
const config = await loadConfig();
|
|
50
|
+
const provider = getProvider(providerName);
|
|
51
|
+
const timeoutMs = Number.isFinite(options.timeout)
|
|
52
|
+
? Number(options.timeout)
|
|
53
|
+
: provider.config.defaultTimeoutMs || config.defaultTimeoutMs;
|
|
54
|
+
const headless = resolveHeadlessMode(providerName, config.headless, options.headed === true);
|
|
55
|
+
const profileMode = options.isolatedProfile ? 'isolated' : config.profileMode;
|
|
56
|
+
const browser = await launchBrowser({
|
|
57
|
+
provider: providerName,
|
|
58
|
+
headless,
|
|
59
|
+
url: provider.config.url,
|
|
60
|
+
profileMode,
|
|
61
|
+
});
|
|
62
|
+
let closing = false;
|
|
63
|
+
const close = async () => {
|
|
64
|
+
if (closing)
|
|
65
|
+
return;
|
|
66
|
+
closing = true;
|
|
67
|
+
await browser.close().catch(() => { });
|
|
68
|
+
};
|
|
69
|
+
process.once('SIGINT', () => {
|
|
70
|
+
void close().finally(() => process.exit(130));
|
|
71
|
+
});
|
|
72
|
+
process.once('SIGTERM', () => {
|
|
73
|
+
void close().finally(() => process.exit(143));
|
|
74
|
+
});
|
|
75
|
+
try {
|
|
76
|
+
const loggedIn = await provider.actions.isLoggedIn(browser.page);
|
|
77
|
+
if (!loggedIn && options.loginCheck !== false) {
|
|
78
|
+
writeJsonLine({
|
|
79
|
+
ok: false,
|
|
80
|
+
provider: providerName,
|
|
81
|
+
error: `Not logged in to ${provider.config.displayName}. Run: 10x-chat login ${providerName}`,
|
|
82
|
+
});
|
|
83
|
+
await close();
|
|
84
|
+
process.exit(1);
|
|
85
|
+
}
|
|
86
|
+
if (options.model && provider.actions.selectModel) {
|
|
87
|
+
await provider.actions.selectModel(browser.page, options.model);
|
|
88
|
+
}
|
|
89
|
+
writeJsonLine({
|
|
90
|
+
ok: true,
|
|
91
|
+
action: 'ready',
|
|
92
|
+
provider: providerName,
|
|
93
|
+
url: browser.page.url(),
|
|
94
|
+
loggedIn,
|
|
95
|
+
});
|
|
96
|
+
const rl = readline.createInterface({ input, crlfDelay: Infinity });
|
|
97
|
+
for await (const line of rl) {
|
|
98
|
+
const trimmed = line.trim();
|
|
99
|
+
if (!trimmed)
|
|
100
|
+
continue;
|
|
101
|
+
let request;
|
|
102
|
+
try {
|
|
103
|
+
request = parseRequest(trimmed);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
writeJsonLine({
|
|
107
|
+
ok: false,
|
|
108
|
+
error: error instanceof Error ? error.message : String(error),
|
|
109
|
+
});
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const action = request.action ?? 'status';
|
|
113
|
+
try {
|
|
114
|
+
switch (action) {
|
|
115
|
+
case 'status': {
|
|
116
|
+
writeJsonLine({
|
|
117
|
+
ok: true,
|
|
118
|
+
id: request.id,
|
|
119
|
+
action,
|
|
120
|
+
provider: providerName,
|
|
121
|
+
url: browser.page.url(),
|
|
122
|
+
title: await browser.page.title(),
|
|
123
|
+
loggedIn: await provider.actions.isLoggedIn(browser.page),
|
|
124
|
+
});
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case 'goto': {
|
|
128
|
+
const url = requireString(request.url, 'url');
|
|
129
|
+
await browser.page.goto(url, { waitUntil: 'domcontentloaded' });
|
|
130
|
+
writeJsonLine({
|
|
131
|
+
ok: true,
|
|
132
|
+
id: request.id,
|
|
133
|
+
action,
|
|
134
|
+
provider: providerName,
|
|
135
|
+
url: browser.page.url(),
|
|
136
|
+
});
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
case 'selectModel': {
|
|
140
|
+
const model = requireString(request.model, 'model');
|
|
141
|
+
if (!provider.actions.selectModel) {
|
|
142
|
+
throw new Error(`${provider.config.displayName} does not support model selection`);
|
|
143
|
+
}
|
|
144
|
+
await provider.actions.selectModel(browser.page, model);
|
|
145
|
+
writeJsonLine({
|
|
146
|
+
ok: true,
|
|
147
|
+
id: request.id,
|
|
148
|
+
action,
|
|
149
|
+
provider: providerName,
|
|
150
|
+
result: { model },
|
|
151
|
+
});
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
case 'attach': {
|
|
155
|
+
const files = requireStringArray(request.files, 'files');
|
|
156
|
+
if (!provider.actions.attachFiles) {
|
|
157
|
+
throw new Error(`${provider.config.displayName} does not support file attachments`);
|
|
158
|
+
}
|
|
159
|
+
const resolved = await resolveAttachPaths(files);
|
|
160
|
+
await provider.actions.attachFiles(browser.page, resolved);
|
|
161
|
+
writeJsonLine({
|
|
162
|
+
ok: true,
|
|
163
|
+
id: request.id,
|
|
164
|
+
action,
|
|
165
|
+
provider: providerName,
|
|
166
|
+
result: { files: resolved },
|
|
167
|
+
});
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case 'submit': {
|
|
171
|
+
const prompt = requireString(request.prompt, 'prompt');
|
|
172
|
+
await provider.actions.submitPrompt(browser.page, prompt);
|
|
173
|
+
writeJsonLine({ ok: true, id: request.id, action, provider: providerName });
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
case 'capture': {
|
|
177
|
+
const response = await capture(providerName, request.timeoutMs ?? timeoutMs, browser.page);
|
|
178
|
+
writeJsonLine({
|
|
179
|
+
ok: true,
|
|
180
|
+
id: request.id,
|
|
181
|
+
action,
|
|
182
|
+
provider: providerName,
|
|
183
|
+
response,
|
|
184
|
+
});
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
case 'chat': {
|
|
188
|
+
if (request.model) {
|
|
189
|
+
if (!provider.actions.selectModel) {
|
|
190
|
+
throw new Error(`${provider.config.displayName} does not support model selection`);
|
|
191
|
+
}
|
|
192
|
+
await provider.actions.selectModel(browser.page, request.model);
|
|
193
|
+
}
|
|
194
|
+
if (request.files && request.files.length > 0) {
|
|
195
|
+
if (!provider.actions.attachFiles) {
|
|
196
|
+
throw new Error(`${provider.config.displayName} does not support file attachments`);
|
|
197
|
+
}
|
|
198
|
+
const resolved = await resolveAttachPaths(request.files);
|
|
199
|
+
await provider.actions.attachFiles(browser.page, resolved);
|
|
200
|
+
}
|
|
201
|
+
const prompt = requireString(request.prompt, 'prompt');
|
|
202
|
+
await provider.actions.submitPrompt(browser.page, prompt);
|
|
203
|
+
const response = await capture(providerName, request.timeoutMs ?? timeoutMs, browser.page);
|
|
204
|
+
writeJsonLine({
|
|
205
|
+
ok: true,
|
|
206
|
+
id: request.id,
|
|
207
|
+
action,
|
|
208
|
+
provider: providerName,
|
|
209
|
+
response,
|
|
210
|
+
});
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
case 'eval': {
|
|
214
|
+
const script = requireString(request.script, 'script');
|
|
215
|
+
const result = await browser.page.evaluate(script);
|
|
216
|
+
writeJsonLine({
|
|
217
|
+
ok: true,
|
|
218
|
+
id: request.id,
|
|
219
|
+
action,
|
|
220
|
+
provider: providerName,
|
|
221
|
+
result,
|
|
222
|
+
});
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
case 'close': {
|
|
226
|
+
writeJsonLine({ ok: true, id: request.id, action, provider: providerName });
|
|
227
|
+
rl.close();
|
|
228
|
+
await close();
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
default:
|
|
232
|
+
throw new Error(`Unsupported delegate action: ${String(action)}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
writeJsonLine({
|
|
237
|
+
ok: false,
|
|
238
|
+
id: request.id,
|
|
239
|
+
action,
|
|
240
|
+
provider: providerName,
|
|
241
|
+
error: error instanceof Error ? error.message : String(error),
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
await close();
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
return cmd;
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=delegate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate.js","sourceRoot":"","sources":["../../src/cli/delegate.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.11.
|
|
3
|
+
"version": "0.11.6",
|
|
4
4
|
"description": "CLI to chat with web AI agents (ChatGPT, Gemini, Claude, Grok, Perplexity, NotebookLM) and generate video (Flow/Veo, Dreamina/Seedance) via browser automation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
package/skills/10x-chat/SKILL.md
CHANGED
|
@@ -67,6 +67,10 @@ npx 10x-chat@latest chat --provider gemini --file "path/to/prompt.md" -p "Comple
|
|
|
67
67
|
npx 10x-chat@latest chat --provider gemini --model Pro -p "Solve this math problem"
|
|
68
68
|
npx 10x-chat@latest chat --provider gemini --model "Deep Think" -p "Solve this hard problem"
|
|
69
69
|
|
|
70
|
+
# Multi-step provider delegate for external AI callers (JSONL over stdin/stdout)
|
|
71
|
+
npx 10x-chat@latest delegate gemini --model Pro
|
|
72
|
+
# then send JSON lines: {"action":"status"}, {"action":"submit","prompt":"..."}, {"action":"capture"}, {"action":"close"}
|
|
73
|
+
|
|
70
74
|
# Image generation
|
|
71
75
|
npx 10x-chat@latest image -p "A fox astronaut in space" --provider chatgpt
|
|
72
76
|
npx 10x-chat@latest image -p "Watercolor landscape" --provider gemini --save-dir ./images
|
|
@@ -106,6 +110,35 @@ npx 10x-chat@latest notebooklm summarize <id>
|
|
|
106
110
|
npx 10x-chat@latest skill install
|
|
107
111
|
```
|
|
108
112
|
|
|
113
|
+
## Provider delegate (v0.10.18+)
|
|
114
|
+
|
|
115
|
+
Use `delegate <provider>` when an external AI caller needs flexible multi-step control instead of a single one-shot `chat`, `image`, or `research` command. It opens one provider tab, keeps it alive, reads JSONL commands from stdin, and emits JSONL responses on stdout.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx 10x-chat@latest delegate gemini --model Pro <<'EOF'
|
|
119
|
+
{"id":1,"action":"status"}
|
|
120
|
+
{"id":2,"action":"submit","prompt":"Draft three launch angles for this product."}
|
|
121
|
+
{"id":3,"action":"capture","timeoutMs":600000}
|
|
122
|
+
{"id":4,"action":"close"}
|
|
123
|
+
EOF
|
|
124
|
+
|
|
125
|
+
printf '%s\n' '{"action":"chat","model":"Thinking","prompt":"Review this pasted plan."}' \
|
|
126
|
+
| npx 10x-chat@latest delegate gemini
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Actions:
|
|
130
|
+
- `status`: return url/title/login state
|
|
131
|
+
- `goto`: navigate with `{ "url": "https://..." }`
|
|
132
|
+
- `selectModel`: provider UI model/mode switch with `{ "model": "Pro" }`
|
|
133
|
+
- `attach`: attach files with `{ "files": ["path/to/file.png"] }`
|
|
134
|
+
- `submit`: submit prompt without waiting
|
|
135
|
+
- `capture`: wait for and extract the current response
|
|
136
|
+
- `chat`: select optional model/files, submit, then capture
|
|
137
|
+
- `eval`: run a page evaluation script for inspection/debugging
|
|
138
|
+
- `close`: close the browser tab and end the delegate
|
|
139
|
+
|
|
140
|
+
Flags: `--model`, `--headed`, `--timeout <ms>`, `--isolated-profile`, `--no-login-check`.
|
|
141
|
+
|
|
109
142
|
## Parallel sessions (v0.9.0+)
|
|
110
143
|
|
|
111
144
|
HTTP daemon makes parallel runs stable. All providers share one Chrome:
|