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 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());
@@ -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 createDelegateCommand(): Command;
3
+ //# sourceMappingURL=delegate.d.ts.map
@@ -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.5",
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",
@@ -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: