10x-chat 0.4.2 → 0.5.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/dist/bin/cli.js +2 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/browser/daemon.d.ts +39 -0
- package/dist/browser/daemon.d.ts.map +1 -0
- package/dist/browser/daemon.js +114 -0
- package/dist/browser/daemon.js.map +1 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/manager.d.ts.map +1 -1
- package/dist/browser/manager.js +25 -12
- package/dist/browser/manager.js.map +1 -1
- package/dist/browser/tabs.d.ts +22 -0
- package/dist/browser/tabs.d.ts.map +1 -0
- package/dist/browser/tabs.js +97 -0
- package/dist/browser/tabs.js.map +1 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +56 -21
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/login.d.ts.map +1 -1
- package/dist/cli/login.js +96 -3
- package/dist/cli/login.js.map +1 -1
- package/dist/cli/video.d.ts +3 -0
- package/dist/cli/video.d.ts.map +1 -0
- package/dist/cli/video.js +99 -0
- package/dist/cli/video.js.map +1 -0
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/orchestrator.d.ts +10 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +23 -0
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/polling.d.ts +30 -0
- package/dist/core/polling.d.ts.map +1 -0
- package/dist/core/polling.js +37 -0
- package/dist/core/polling.js.map +1 -0
- package/dist/core/video-orchestrator.d.ts +22 -0
- package/dist/core/video-orchestrator.d.ts.map +1 -0
- package/dist/core/video-orchestrator.js +269 -0
- package/dist/core/video-orchestrator.js.map +1 -0
- package/dist/providers/chatgpt.d.ts.map +1 -1
- package/dist/providers/chatgpt.js +67 -19
- package/dist/providers/chatgpt.js.map +1 -1
- package/dist/providers/claude.d.ts.map +1 -1
- package/dist/providers/claude.js +27 -36
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/flow.d.ts +55 -0
- package/dist/providers/flow.d.ts.map +1 -0
- package/dist/providers/flow.js +273 -0
- package/dist/providers/flow.js.map +1 -0
- package/dist/providers/gemini.d.ts.map +1 -1
- package/dist/providers/gemini.js +33 -38
- package/dist/providers/gemini.js.map +1 -1
- package/dist/providers/grok.d.ts.map +1 -1
- package/dist/providers/grok.js +23 -23
- package/dist/providers/grok.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -0
- package/dist/providers/registry.js.map +1 -1
- package/dist/types.d.ts +24 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/cli/login.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
import { mkdir } from 'node:fs/promises';
|
|
1
2
|
import chalk from 'chalk';
|
|
2
3
|
import { Command } from 'commander';
|
|
3
|
-
import {
|
|
4
|
+
import { chromium } from 'playwright';
|
|
5
|
+
import { acquireProfileLock, launchBrowser } from '../browser/index.js';
|
|
6
|
+
import { saveStorageState } from '../browser/state.js';
|
|
4
7
|
import { loadConfig } from '../config.js';
|
|
8
|
+
import { getSharedProfileDir } from '../paths.js';
|
|
5
9
|
import { getProvider, isValidProvider, listProviders } from '../providers/index.js';
|
|
6
10
|
export function createLoginCommand() {
|
|
7
11
|
const cmd = new Command('login')
|
|
8
12
|
.description('Login to an AI provider (opens browser for authentication)')
|
|
9
13
|
.argument('[provider]', 'Provider to login to (chatgpt, gemini, claude, grok)')
|
|
10
14
|
.option('--all', 'Login to all providers')
|
|
15
|
+
.option('--tabs', 'Open all providers as tabs in one browser window (use with --all)')
|
|
11
16
|
.option('--status', 'Check login status for all providers')
|
|
12
17
|
.option('--isolated-profile', 'Use per-provider browser profiles (backward compat)')
|
|
13
18
|
.action(async (providerArg, options) => {
|
|
@@ -21,8 +26,13 @@ export function createLoginCommand() {
|
|
|
21
26
|
console.log(chalk.dim('Using shared profile (all providers share one browser profile). Use --isolated-profile for per-provider.'));
|
|
22
27
|
}
|
|
23
28
|
if (options?.all) {
|
|
24
|
-
|
|
25
|
-
await
|
|
29
|
+
if (options?.tabs) {
|
|
30
|
+
await loginAllWithTabs(listProviders(), profileMode);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
for (const name of listProviders()) {
|
|
34
|
+
await loginToProvider(name, profileMode);
|
|
35
|
+
}
|
|
26
36
|
}
|
|
27
37
|
return;
|
|
28
38
|
}
|
|
@@ -72,6 +82,89 @@ async function loginToProvider(providerName, profileMode = 'shared') {
|
|
|
72
82
|
await browser.close();
|
|
73
83
|
}
|
|
74
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Open all providers as tabs in a single browser window.
|
|
87
|
+
* User can switch between tabs to login to each provider.
|
|
88
|
+
* Waits until all are logged in (or timeout), then saves and closes.
|
|
89
|
+
*/
|
|
90
|
+
async function loginAllWithTabs(providers, _profileMode = 'shared') {
|
|
91
|
+
console.log(chalk.blue(`Opening ${providers.length} providers as tabs in one browser window...`));
|
|
92
|
+
console.log(chalk.dim('Login to each tab. Window will close automatically when all are done.\n'));
|
|
93
|
+
const CHROMIUM_ARGS = [
|
|
94
|
+
'--disable-blink-features=AutomationControlled',
|
|
95
|
+
'--no-first-run',
|
|
96
|
+
'--no-default-browser-check',
|
|
97
|
+
];
|
|
98
|
+
const profileDir = getSharedProfileDir();
|
|
99
|
+
await mkdir(profileDir, { recursive: true });
|
|
100
|
+
const lock = await acquireProfileLock(profileDir);
|
|
101
|
+
const context = await chromium.launchPersistentContext(profileDir, {
|
|
102
|
+
headless: false,
|
|
103
|
+
viewport: { width: 1280, height: 900 },
|
|
104
|
+
args: CHROMIUM_ARGS,
|
|
105
|
+
});
|
|
106
|
+
try {
|
|
107
|
+
// Open first provider in the default page, rest in new tabs
|
|
108
|
+
const pages = [];
|
|
109
|
+
const firstPage = context.pages()[0] ?? (await context.newPage());
|
|
110
|
+
const [firstProvider, ...restProviders] = providers;
|
|
111
|
+
if (firstProvider) {
|
|
112
|
+
const provider = getProvider(firstProvider);
|
|
113
|
+
await firstPage.goto(provider.config.loginUrl, { waitUntil: 'domcontentloaded' });
|
|
114
|
+
pages.push({ name: firstProvider, page: firstPage });
|
|
115
|
+
}
|
|
116
|
+
for (const name of restProviders) {
|
|
117
|
+
const provider = getProvider(name);
|
|
118
|
+
const tab = await context.newPage();
|
|
119
|
+
await tab.goto(provider.config.loginUrl, { waitUntil: 'domcontentloaded' });
|
|
120
|
+
pages.push({ name, page: tab });
|
|
121
|
+
}
|
|
122
|
+
console.log(chalk.dim(`Tabs open: ${providers.map((p) => getProvider(p).config.displayName).join(', ')}`));
|
|
123
|
+
console.log(chalk.dim('Waiting for all logins... (5 min timeout)\n'));
|
|
124
|
+
const timeoutMs = 5 * 60 * 1000;
|
|
125
|
+
const startTime = Date.now();
|
|
126
|
+
const done = new Set();
|
|
127
|
+
while (Date.now() - startTime < timeoutMs && done.size < pages.length) {
|
|
128
|
+
for (const { name, page } of pages) {
|
|
129
|
+
if (done.has(name))
|
|
130
|
+
continue;
|
|
131
|
+
try {
|
|
132
|
+
const provider = getProvider(name);
|
|
133
|
+
const loggedIn = await provider.actions.isLoggedIn(page);
|
|
134
|
+
if (loggedIn) {
|
|
135
|
+
done.add(name);
|
|
136
|
+
console.log(chalk.green(`✓ Logged in to ${provider.config.displayName}`));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// page may have navigated; skip this tick
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (done.size < pages.length) {
|
|
144
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (done.size < pages.length) {
|
|
148
|
+
const pending = pages
|
|
149
|
+
.filter((p) => !done.has(p.name))
|
|
150
|
+
.map((p) => getProvider(p.name).config.displayName);
|
|
151
|
+
console.log(chalk.yellow(`\nTimeout — still not logged in: ${pending.join(', ')}`));
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
console.log(chalk.green('\n✓ All providers logged in! Saving session...'));
|
|
155
|
+
}
|
|
156
|
+
await saveStorageState(context);
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
try {
|
|
160
|
+
await context.close();
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// ignore
|
|
164
|
+
}
|
|
165
|
+
await lock.release();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
75
168
|
async function checkLoginStatus(profileMode = 'shared') {
|
|
76
169
|
console.log(chalk.bold('Login Status\n'));
|
|
77
170
|
if (profileMode === 'shared') {
|
package/dist/cli/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/cli/video.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,kBAAkB,IAAI,OAAO,CAoG5C"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { runVideo } from '../core/video-orchestrator.js';
|
|
4
|
+
const VALID_MODES = ['ingredients', 'frames'];
|
|
5
|
+
const VALID_MODELS = [
|
|
6
|
+
'Veo 3.1 - Fast',
|
|
7
|
+
'Veo 3.1 - Fast [Lower Priority]',
|
|
8
|
+
'Veo 3.1 - Quality',
|
|
9
|
+
'Veo 2 - Fast',
|
|
10
|
+
'Veo 2 - Quality',
|
|
11
|
+
];
|
|
12
|
+
const VALID_ORIENTATIONS = ['landscape', 'portrait'];
|
|
13
|
+
export function createVideoCommand() {
|
|
14
|
+
const cmd = new Command('video')
|
|
15
|
+
.description('Generate video with Google Flow (Veo 3.1) via browser automation')
|
|
16
|
+
.requiredOption('-p, --prompt <text>', 'The video generation prompt')
|
|
17
|
+
.option('--mode <mode>', 'Video mode: ingredients (default) or frames', 'ingredients')
|
|
18
|
+
.option('--model <name>', 'Veo model name', 'Veo 3.1 - Fast')
|
|
19
|
+
.option('--orientation <dir>', 'landscape (default) or portrait', 'landscape')
|
|
20
|
+
.option('--count <n>', 'Number of simultaneous generations (1-4)', '1')
|
|
21
|
+
.option('--start-frame <path>', 'Path to first keyframe image (frames mode)')
|
|
22
|
+
.option('--end-frame <path>', 'Path to last keyframe image (frames mode)')
|
|
23
|
+
.option('--headed', 'Show browser window during generation')
|
|
24
|
+
.option('--timeout <ms>', 'Generation timeout in milliseconds', '600000')
|
|
25
|
+
.option('--save-dir <dir>', 'Directory to save generated videos')
|
|
26
|
+
.option('--isolated-profile', 'Use per-provider browser profiles')
|
|
27
|
+
.action(async (options) => {
|
|
28
|
+
// Validate mode
|
|
29
|
+
const mode = options.mode;
|
|
30
|
+
if (!VALID_MODES.includes(mode)) {
|
|
31
|
+
console.error(chalk.red(`Invalid mode: ${mode}. Must be one of: ${VALID_MODES.join(', ')}`));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
// Validate model
|
|
35
|
+
const model = options.model;
|
|
36
|
+
if (!VALID_MODELS.includes(model)) {
|
|
37
|
+
console.error(chalk.red(`Invalid model: ${model}. Must be one of:\n ${VALID_MODELS.join('\n ')}`));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// Validate orientation
|
|
41
|
+
const orientation = options.orientation;
|
|
42
|
+
if (!VALID_ORIENTATIONS.includes(orientation)) {
|
|
43
|
+
console.error(chalk.red(`Invalid orientation: ${orientation}. Must be: landscape or portrait`));
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
// Validate count
|
|
47
|
+
const count = Number.parseInt(options.count, 10);
|
|
48
|
+
if (![1, 2, 3, 4].includes(count)) {
|
|
49
|
+
console.error(chalk.red('Count must be 1, 2, 3, or 4'));
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
// Validate frames mode requires at least one keyframe
|
|
53
|
+
if (mode === 'frames' && !options.startFrame && !options.endFrame) {
|
|
54
|
+
console.error(chalk.red('Frames mode requires --start-frame and/or --end-frame'));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
console.log(chalk.bold.blue('🎬 Google Flow Video Generation\n'));
|
|
59
|
+
const result = await runVideo({
|
|
60
|
+
prompt: options.prompt,
|
|
61
|
+
mode: mode,
|
|
62
|
+
model: model,
|
|
63
|
+
orientation: orientation,
|
|
64
|
+
count: count,
|
|
65
|
+
startFrame: options.startFrame,
|
|
66
|
+
endFrame: options.endFrame,
|
|
67
|
+
headed: options.headed,
|
|
68
|
+
timeoutMs: (() => {
|
|
69
|
+
const t = Number.parseInt(options.timeout, 10);
|
|
70
|
+
return Number.isFinite(t) && t > 0 ? t : 600_000;
|
|
71
|
+
})(),
|
|
72
|
+
saveDir: options.saveDir,
|
|
73
|
+
isolatedProfile: options.isolatedProfile,
|
|
74
|
+
});
|
|
75
|
+
console.log('');
|
|
76
|
+
console.log(chalk.bold.green(`--- ${result.message} ---\n`));
|
|
77
|
+
if (result.videos.length > 0) {
|
|
78
|
+
for (const vid of result.videos) {
|
|
79
|
+
if (vid.localPath) {
|
|
80
|
+
console.log(chalk.green(` 🎬 ${vid.localPath}`));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
console.log('');
|
|
85
|
+
console.log(chalk.dim(`Session: ${result.sessionId}`));
|
|
86
|
+
console.log(chalk.dim(`Duration: ${Math.round(result.durationMs / 1000)}s`));
|
|
87
|
+
if (result.truncated) {
|
|
88
|
+
console.log(chalk.yellow('⚠ Generation may not be complete (timeout reached)'));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
93
|
+
console.error(chalk.red(`Error: ${message}`));
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return cmd;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/cli/video.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/core/index.js
CHANGED
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAuC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -18,4 +18,14 @@ export interface ChatResult {
|
|
|
18
18
|
* 6. Save session
|
|
19
19
|
*/
|
|
20
20
|
export declare function runChat(options: ChatOptions): Promise<ChatResult>;
|
|
21
|
+
export interface ChatAllResult {
|
|
22
|
+
provider: ProviderName;
|
|
23
|
+
result?: ChatResult;
|
|
24
|
+
error?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Run the same prompt against multiple providers in parallel.
|
|
28
|
+
* Uses the shared browser daemon — all providers reuse one Chromium process.
|
|
29
|
+
*/
|
|
30
|
+
export declare function runChatAll(options: ChatOptions): Promise<ChatAllResult[]>;
|
|
21
31
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM7E,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAwHvE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAsB/E"}
|
|
@@ -7,6 +7,8 @@ import { loadConfig } from '../config.js';
|
|
|
7
7
|
import { getProvider } from '../providers/index.js';
|
|
8
8
|
import { createSession, saveBundle, saveResponse, updateSession } from '../session/index.js';
|
|
9
9
|
import { buildBundle } from './bundle.js';
|
|
10
|
+
/** Providers supported by chat --all (excludes special-purpose providers). */
|
|
11
|
+
const CHAT_PROVIDERS = ['chatgpt', 'gemini', 'claude', 'grok'];
|
|
10
12
|
/**
|
|
11
13
|
* Execute a chat interaction with a provider:
|
|
12
14
|
* 1. Build the prompt bundle
|
|
@@ -114,6 +116,27 @@ export async function runChat(options) {
|
|
|
114
116
|
await browser.close();
|
|
115
117
|
}
|
|
116
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Run the same prompt against multiple providers in parallel.
|
|
121
|
+
* Uses the shared browser daemon — all providers reuse one Chromium process.
|
|
122
|
+
*/
|
|
123
|
+
export async function runChatAll(options) {
|
|
124
|
+
const targets = options.providers ?? CHAT_PROVIDERS;
|
|
125
|
+
console.log(chalk.bold.blue(`\n🚀 Sending to ${targets.length} providers in parallel...\n`));
|
|
126
|
+
const tasks = targets.map(async (provider) => {
|
|
127
|
+
try {
|
|
128
|
+
const result = await runChat({ ...options, provider });
|
|
129
|
+
return { provider, result };
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
return {
|
|
133
|
+
provider,
|
|
134
|
+
error: error instanceof Error ? error.message : String(error),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return Promise.allSettled(tasks).then((settled) => settled.map((s) => s.status === 'fulfilled' ? s.value : { provider: 'chatgpt', error: String(s.reason) }));
|
|
139
|
+
}
|
|
117
140
|
/**
|
|
118
141
|
* Download generated images from the browser context (uses session cookies).
|
|
119
142
|
* Saves to --save-images dir or ~/.10x-chat/sessions/<id>/images/.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Page } from 'playwright';
|
|
2
|
+
/**
|
|
3
|
+
* Options for the pollUntilStable utility.
|
|
4
|
+
*/
|
|
5
|
+
export interface PollOptions {
|
|
6
|
+
/** Function that extracts current text from the page. */
|
|
7
|
+
getText: (page: Page) => Promise<string>;
|
|
8
|
+
/** Total timeout for polling in milliseconds. */
|
|
9
|
+
timeoutMs: number;
|
|
10
|
+
/** Called with new text delta when content changes. */
|
|
11
|
+
onChunk?: (delta: string) => void;
|
|
12
|
+
/** Number of consecutive stable polls before considering complete. Default: 3 */
|
|
13
|
+
stableThreshold?: number;
|
|
14
|
+
/** Interval between polls in milliseconds. Default: 1000 */
|
|
15
|
+
pollIntervalMs?: number;
|
|
16
|
+
/** Optional function that returns true if streaming is still in progress. */
|
|
17
|
+
isStreaming?: (page: Page) => Promise<boolean>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Poll a page element until its text content stabilizes (stops changing).
|
|
21
|
+
* Used by multiple providers for captureResponse streaming detection.
|
|
22
|
+
*
|
|
23
|
+
* @returns The final stable text, elapsed time, and whether it was truncated.
|
|
24
|
+
*/
|
|
25
|
+
export declare function pollUntilStable(page: Page, opts: PollOptions): Promise<{
|
|
26
|
+
text: string;
|
|
27
|
+
elapsed: number;
|
|
28
|
+
truncated: boolean;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=polling.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../src/core/polling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAwChE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Poll a page element until its text content stabilizes (stops changing).
|
|
3
|
+
* Used by multiple providers for captureResponse streaming detection.
|
|
4
|
+
*
|
|
5
|
+
* @returns The final stable text, elapsed time, and whether it was truncated.
|
|
6
|
+
*/
|
|
7
|
+
export async function pollUntilStable(page, opts) {
|
|
8
|
+
const { getText, timeoutMs, onChunk, stableThreshold = 3, pollIntervalMs = 1000, isStreaming, } = opts;
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
let lastText = '';
|
|
11
|
+
let stableCount = 0;
|
|
12
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
13
|
+
const streaming = isStreaming ? await isStreaming(page) : false;
|
|
14
|
+
const currentText = await getText(page);
|
|
15
|
+
if (currentText === lastText && !streaming) {
|
|
16
|
+
stableCount++;
|
|
17
|
+
if (stableCount >= stableThreshold && currentText.length > 0) {
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
if (onChunk && currentText.length > lastText.length) {
|
|
23
|
+
onChunk(currentText.slice(lastText.length));
|
|
24
|
+
}
|
|
25
|
+
lastText = currentText;
|
|
26
|
+
stableCount = 0;
|
|
27
|
+
}
|
|
28
|
+
await page.waitForTimeout(pollIntervalMs);
|
|
29
|
+
}
|
|
30
|
+
const elapsed = Date.now() - startTime;
|
|
31
|
+
return {
|
|
32
|
+
text: lastText,
|
|
33
|
+
elapsed,
|
|
34
|
+
truncated: elapsed >= timeoutMs && stableCount < stableThreshold,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=polling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polling.js","sourceRoot":"","sources":["../../src/core/polling.ts"],"names":[],"mappings":"AAoBA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAU,EACV,IAAiB;IAEjB,MAAM,EACJ,OAAO,EACP,SAAS,EACT,OAAO,EACP,eAAe,GAAG,CAAC,EACnB,cAAc,GAAG,IAAI,EACrB,WAAW,GACZ,GAAG,IAAI,CAAC;IAET,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAChE,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,WAAW,KAAK,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,WAAW,EAAE,CAAC;YACd,IAAI,WAAW,IAAI,eAAe,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,MAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpD,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,CAAC;YACD,QAAQ,GAAG,WAAW,CAAC;YACvB,WAAW,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACvC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,SAAS,EAAE,OAAO,IAAI,SAAS,IAAI,WAAW,GAAG,eAAe;KACjE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GeneratedVideo, ProviderName, VideoOptions } from '../types.js';
|
|
2
|
+
export interface VideoResult {
|
|
3
|
+
sessionId: string;
|
|
4
|
+
provider: ProviderName;
|
|
5
|
+
message: string;
|
|
6
|
+
videos: GeneratedVideo[];
|
|
7
|
+
truncated: boolean;
|
|
8
|
+
durationMs: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Execute a video generation interaction with Google Flow:
|
|
12
|
+
* 1. Launch browser → navigate to Flow
|
|
13
|
+
* 2. Click "New project"
|
|
14
|
+
* 3. Configure video mode (model, orientation, count, sub-mode)
|
|
15
|
+
* 4. If frames mode: upload Start/End keyframe images
|
|
16
|
+
* 5. Enter prompt → click Create
|
|
17
|
+
* 6. Poll for generation progress
|
|
18
|
+
* 7. When complete: download video files
|
|
19
|
+
* 8. Save session
|
|
20
|
+
*/
|
|
21
|
+
export declare function runVideo(options: VideoOptions): Promise<VideoResult>;
|
|
22
|
+
//# sourceMappingURL=video-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/video-orchestrator.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiM1E"}
|