screenwright 0.1.9 → 0.1.10
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/screenwright.js +2 -0
- package/dist/bin/screenwright.js.map +1 -1
- package/dist/src/commands/compose.d.ts.map +1 -1
- package/dist/src/commands/compose.js +7 -0
- package/dist/src/commands/compose.js.map +1 -1
- package/dist/src/commands/config.d.ts +3 -0
- package/dist/src/commands/config.d.ts.map +1 -0
- package/dist/src/commands/config.js +97 -0
- package/dist/src/commands/config.js.map +1 -0
- package/dist/src/config/config-schema.d.ts +7 -4
- package/dist/src/config/config-schema.d.ts.map +1 -1
- package/dist/src/config/config-schema.js +3 -2
- package/dist/src/config/config-schema.js.map +1 -1
- package/dist/src/config/defaults.d.ts.map +1 -1
- package/dist/src/config/defaults.js +1 -0
- package/dist/src/config/defaults.js.map +1 -1
- package/dist/src/generator/prompts.d.ts +1 -1
- package/dist/src/generator/prompts.d.ts.map +1 -1
- package/dist/src/generator/prompts.js +1 -6
- package/dist/src/generator/prompts.js.map +1 -1
- package/dist/src/generator/scenario-generator.d.ts.map +1 -1
- package/dist/src/generator/scenario-generator.js +0 -4
- package/dist/src/generator/scenario-generator.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/runtime/action-helpers.d.ts +9 -2
- package/dist/src/runtime/action-helpers.d.ts.map +1 -1
- package/dist/src/runtime/action-helpers.js +58 -31
- package/dist/src/runtime/action-helpers.js.map +1 -1
- package/dist/src/runtime/instrumented-page.d.ts +2 -1
- package/dist/src/runtime/instrumented-page.d.ts.map +1 -1
- package/dist/src/runtime/instrumented-page.js +6 -2
- package/dist/src/runtime/instrumented-page.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +3 -13
package/dist/bin/screenwright.js
CHANGED
|
@@ -5,6 +5,7 @@ import { initCommand } from '../src/commands/init.js';
|
|
|
5
5
|
import { generateCommand } from '../src/commands/generate.js';
|
|
6
6
|
import { composeCommand } from '../src/commands/compose.js';
|
|
7
7
|
import { previewCommand } from '../src/commands/preview.js';
|
|
8
|
+
import { configCommand } from '../src/commands/config.js';
|
|
8
9
|
const program = new Command();
|
|
9
10
|
program
|
|
10
11
|
.name('screenwright')
|
|
@@ -14,5 +15,6 @@ program.addCommand(initCommand);
|
|
|
14
15
|
program.addCommand(generateCommand);
|
|
15
16
|
program.addCommand(composeCommand);
|
|
16
17
|
program.addCommand(previewCommand);
|
|
18
|
+
program.addCommand(configCommand);
|
|
17
19
|
program.parse();
|
|
18
20
|
//# sourceMappingURL=screenwright.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenwright.js","sourceRoot":"","sources":["../../bin/screenwright.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"screenwright.js","sourceRoot":"","sources":["../../bin/screenwright.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAElC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../src/commands/compose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../src/commands/compose.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,cAAc,SAoKvB,CAAC"}
|
|
@@ -16,6 +16,7 @@ export const composeCommand = new Command('compose')
|
|
|
16
16
|
.option('--resolution <res>', 'Video resolution', '1280x720')
|
|
17
17
|
.option('--no-voiceover', 'Disable voiceover')
|
|
18
18
|
.option('--no-cursor', 'Disable cursor overlay')
|
|
19
|
+
.option('--pacing <mode>', 'Pacing mode: fast, normal, cinematic', 'normal')
|
|
19
20
|
.option('--keep-temp', 'Keep temporary files')
|
|
20
21
|
.action(async (scenario, opts) => {
|
|
21
22
|
const config = await loadConfig();
|
|
@@ -25,6 +26,11 @@ export const composeCommand = new Command('compose')
|
|
|
25
26
|
console.error(chalk.red('Invalid resolution format. Use WIDTHxHEIGHT (e.g., 1280x720)'));
|
|
26
27
|
process.exit(1);
|
|
27
28
|
}
|
|
29
|
+
const pacing = opts.pacing ?? config.pacing ?? 'normal';
|
|
30
|
+
if (!['fast', 'normal', 'cinematic'].includes(pacing)) {
|
|
31
|
+
console.error(chalk.red(`Invalid pacing mode: ${pacing}. Use fast, normal, or cinematic.`));
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
28
34
|
// Verify scenario file exists
|
|
29
35
|
try {
|
|
30
36
|
await access(scenarioPath);
|
|
@@ -69,6 +75,7 @@ export const composeCommand = new Command('compose')
|
|
|
69
75
|
scenarioFile: scenarioPath,
|
|
70
76
|
testFile: scenarioPath,
|
|
71
77
|
viewport: { width, height },
|
|
78
|
+
pacing: pacing,
|
|
72
79
|
});
|
|
73
80
|
timeline = result.timeline;
|
|
74
81
|
tempDir = result.tempDir;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/commands/compose.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../src/commands/compose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2EpC,eAAO,MAAM,aAAa,SA6BtB,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
import { writeFile } from 'node:fs/promises';
|
|
4
|
+
import { createInterface } from 'node:readline/promises';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { loadConfig } from '../config/load-config.js';
|
|
7
|
+
import { serializeConfig } from '../config/defaults.js';
|
|
8
|
+
import { openaiVoices } from '../config/config-schema.js';
|
|
9
|
+
function rl() {
|
|
10
|
+
return createInterface({ input: process.stdin, output: process.stdout });
|
|
11
|
+
}
|
|
12
|
+
async function ask(prompt) {
|
|
13
|
+
const r = rl();
|
|
14
|
+
try {
|
|
15
|
+
return (await r.question(prompt)).trim();
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
r.close();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function choose(label, options, current) {
|
|
22
|
+
console.log('');
|
|
23
|
+
console.log(chalk.bold(label));
|
|
24
|
+
for (let i = 0; i < options.length; i++) {
|
|
25
|
+
const marker = options[i] === current ? chalk.green('*') : ' ';
|
|
26
|
+
console.log(` ${marker} ${i + 1}) ${options[i]}`);
|
|
27
|
+
}
|
|
28
|
+
const answer = await ask(`Choice [${options.indexOf(current) + 1}]: `);
|
|
29
|
+
if (!answer)
|
|
30
|
+
return current;
|
|
31
|
+
const idx = parseInt(answer, 10) - 1;
|
|
32
|
+
if (idx >= 0 && idx < options.length)
|
|
33
|
+
return options[idx];
|
|
34
|
+
console.log(chalk.yellow(`Invalid choice, keeping "${current}".`));
|
|
35
|
+
return current;
|
|
36
|
+
}
|
|
37
|
+
async function askString(label, current) {
|
|
38
|
+
console.log('');
|
|
39
|
+
const answer = await ask(`${chalk.bold(label)} [${current}]: `);
|
|
40
|
+
return answer || current;
|
|
41
|
+
}
|
|
42
|
+
async function askResolution(current) {
|
|
43
|
+
const presets = ['1280x720', '1920x1080'];
|
|
44
|
+
const currentStr = `${current.width}x${current.height}`;
|
|
45
|
+
console.log('');
|
|
46
|
+
console.log(chalk.bold('Resolution'));
|
|
47
|
+
for (let i = 0; i < presets.length; i++) {
|
|
48
|
+
const marker = presets[i] === currentStr ? chalk.green('*') : ' ';
|
|
49
|
+
console.log(` ${marker} ${i + 1}) ${presets[i]}`);
|
|
50
|
+
}
|
|
51
|
+
console.log(` ${presets.includes(currentStr) ? ' ' : chalk.green('*')} 3) custom`);
|
|
52
|
+
const answer = await ask(`Choice [${presets.includes(currentStr) ? presets.indexOf(currentStr) + 1 : 3}]: `);
|
|
53
|
+
if (!answer)
|
|
54
|
+
return current;
|
|
55
|
+
if (answer === '3') {
|
|
56
|
+
const custom = await ask(`Enter WIDTHxHEIGHT [${currentStr}]: `);
|
|
57
|
+
if (!custom)
|
|
58
|
+
return current;
|
|
59
|
+
const [w, h] = custom.split('x').map(Number);
|
|
60
|
+
if (w && h)
|
|
61
|
+
return { width: w, height: h };
|
|
62
|
+
console.log(chalk.yellow('Invalid format, keeping current.'));
|
|
63
|
+
return current;
|
|
64
|
+
}
|
|
65
|
+
const idx = parseInt(answer, 10) - 1;
|
|
66
|
+
if (idx >= 0 && idx < presets.length) {
|
|
67
|
+
const [w, h] = presets[idx].split('x').map(Number);
|
|
68
|
+
return { width: w, height: h };
|
|
69
|
+
}
|
|
70
|
+
return current;
|
|
71
|
+
}
|
|
72
|
+
export const configCommand = new Command('config')
|
|
73
|
+
.description('Interactively configure Screenwright options')
|
|
74
|
+
.action(async () => {
|
|
75
|
+
const current = await loadConfig();
|
|
76
|
+
console.log(chalk.bold.underline('Screenwright Configuration'));
|
|
77
|
+
console.log(chalk.dim('Press Enter to keep current value.\n'));
|
|
78
|
+
const config = { ...current };
|
|
79
|
+
config.pacing = await choose('Pacing', ['fast', 'normal', 'cinematic'], current.pacing);
|
|
80
|
+
config.ttsProvider = await choose('TTS Provider', ['piper', 'openai'], current.ttsProvider);
|
|
81
|
+
if (config.ttsProvider === 'piper') {
|
|
82
|
+
config.voice = await askString('Piper voice model', current.voice);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
config.openaiVoice = await choose('OpenAI Voice', [...openaiVoices], current.openaiVoice);
|
|
86
|
+
}
|
|
87
|
+
config.resolution = await askResolution(current.resolution);
|
|
88
|
+
config.colorScheme = await choose('Color Scheme', ['light', 'dark'], current.colorScheme);
|
|
89
|
+
config.locale = await askString('Locale', current.locale);
|
|
90
|
+
config.timezoneId = await askString('Timezone', current.timezoneId);
|
|
91
|
+
config.outputDir = await askString('Output directory', current.outputDir);
|
|
92
|
+
const configPath = resolve(process.cwd(), 'screenwright.config.ts');
|
|
93
|
+
await writeFile(configPath, serializeConfig(config), 'utf-8');
|
|
94
|
+
console.log('');
|
|
95
|
+
console.log(chalk.green(`Saved to ${configPath}`));
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const openaiVoices: readonly ["alloy", "ash", "ballad", "coral", "echo", "fable", "nova", "onyx", "sage", "shimmer"];
|
|
2
|
+
export declare const openaiVoices: readonly ["alloy", "ash", "ballad", "cedar", "coral", "echo", "fable", "marin", "nova", "onyx", "sage", "shimmer", "verse"];
|
|
3
3
|
export type OpenaiVoice = (typeof openaiVoices)[number];
|
|
4
4
|
export declare const configSchema: z.ZodObject<{
|
|
5
5
|
voice: z.ZodDefault<z.ZodString>;
|
|
@@ -18,7 +18,8 @@ export declare const configSchema: z.ZodObject<{
|
|
|
18
18
|
colorScheme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
19
19
|
timezoneId: z.ZodDefault<z.ZodString>;
|
|
20
20
|
ttsProvider: z.ZodDefault<z.ZodEnum<["piper", "openai"]>>;
|
|
21
|
-
openaiVoice: z.ZodDefault<z.ZodEnum<["alloy", "ash", "ballad", "coral", "echo", "fable", "nova", "onyx", "sage", "shimmer"]>>;
|
|
21
|
+
openaiVoice: z.ZodDefault<z.ZodEnum<["alloy", "ash", "ballad", "cedar", "coral", "echo", "fable", "marin", "nova", "onyx", "sage", "shimmer", "verse"]>>;
|
|
22
|
+
pacing: z.ZodDefault<z.ZodEnum<["fast", "normal", "cinematic"]>>;
|
|
22
23
|
}, "strip", z.ZodTypeAny, {
|
|
23
24
|
voice: string;
|
|
24
25
|
resolution: {
|
|
@@ -30,7 +31,8 @@ export declare const configSchema: z.ZodObject<{
|
|
|
30
31
|
colorScheme: "light" | "dark";
|
|
31
32
|
timezoneId: string;
|
|
32
33
|
ttsProvider: "piper" | "openai";
|
|
33
|
-
openaiVoice: "nova" | "alloy" | "ash" | "ballad" | "coral" | "echo" | "fable" | "onyx" | "sage" | "shimmer";
|
|
34
|
+
openaiVoice: "nova" | "alloy" | "ash" | "ballad" | "cedar" | "coral" | "echo" | "fable" | "marin" | "onyx" | "sage" | "shimmer" | "verse";
|
|
35
|
+
pacing: "normal" | "fast" | "cinematic";
|
|
34
36
|
}, {
|
|
35
37
|
voice?: string | undefined;
|
|
36
38
|
resolution?: {
|
|
@@ -42,7 +44,8 @@ export declare const configSchema: z.ZodObject<{
|
|
|
42
44
|
colorScheme?: "light" | "dark" | undefined;
|
|
43
45
|
timezoneId?: string | undefined;
|
|
44
46
|
ttsProvider?: "piper" | "openai" | undefined;
|
|
45
|
-
openaiVoice?: "nova" | "alloy" | "ash" | "ballad" | "coral" | "echo" | "fable" | "onyx" | "sage" | "shimmer" | undefined;
|
|
47
|
+
openaiVoice?: "nova" | "alloy" | "ash" | "ballad" | "cedar" | "coral" | "echo" | "fable" | "marin" | "onyx" | "sage" | "shimmer" | "verse" | undefined;
|
|
48
|
+
pacing?: "normal" | "fast" | "cinematic" | undefined;
|
|
46
49
|
}>;
|
|
47
50
|
export type ScreenwrightConfig = z.infer<typeof configSchema>;
|
|
48
51
|
//# sourceMappingURL=config-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY,6HAGf,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAavB,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export const openaiVoices = [
|
|
3
|
-
'alloy', 'ash', 'ballad', 'coral', 'echo',
|
|
4
|
-
'fable', 'nova', 'onyx', 'sage', 'shimmer',
|
|
3
|
+
'alloy', 'ash', 'ballad', 'cedar', 'coral', 'echo',
|
|
4
|
+
'fable', 'marin', 'nova', 'onyx', 'sage', 'shimmer', 'verse',
|
|
5
5
|
];
|
|
6
6
|
export const configSchema = z.object({
|
|
7
7
|
voice: z.string().default('en_US-amy-medium'),
|
|
@@ -15,5 +15,6 @@ export const configSchema = z.object({
|
|
|
15
15
|
timezoneId: z.string().default('America/New_York'),
|
|
16
16
|
ttsProvider: z.enum(['piper', 'openai']).default('piper'),
|
|
17
17
|
openaiVoice: z.enum(openaiVoices).default('nova'),
|
|
18
|
+
pacing: z.enum(['fast', 'normal', 'cinematic']).default('normal'),
|
|
18
19
|
});
|
|
19
20
|
//# sourceMappingURL=config-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/config/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;IAClD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO;CACpD,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACpC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACvD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACzD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CAClE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,eAAO,MAAM,aAAa,EAAE,kBAU3B,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAOlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/config/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACxC,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,kBAAkB;IAC9B,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/config/defaults.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAuB;IAC/C,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACxC,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,OAAO;IACf,WAAW,EAAE,OAAO;IACpB,UAAU,EAAE,kBAAkB;IAC9B,WAAW,EAAE,OAAO;IACpB,WAAW,EAAE,MAAM;IACnB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,OAAO;;qCAE4B,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;;CAGnE,CAAC;AACF,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const SYSTEM_PROMPT = "You are Screenwright, a tool that converts Playwright E2E tests into cinematic product demo scenarios.\n\nGiven a Playwright test file, generate a new TypeScript file that uses the Screenwright helpers API to create a polished demo with:\n-
|
|
1
|
+
export declare const SYSTEM_PROMPT = "You are Screenwright, a tool that converts Playwright E2E tests into cinematic product demo scenarios.\n\nGiven a Playwright test file, generate a new TypeScript file that uses the Screenwright helpers API to create a polished demo with:\n- Human-friendly data (replace faker/test data with realistic values)\n- Narration cues (explain what's happening to the viewer)\n- Scene boundaries (organize the demo into logical chapters)\n\nThe output must be a valid TypeScript file with a default export function that takes a ScreenwrightHelpers parameter.\n\nAvailable helpers:\n- sw.scene(title, description?) \u2014 mark a scene/chapter boundary\n- sw.navigate(url, { narration? }) \u2014 navigate to a URL\n- sw.click(selector, { narration? }) \u2014 click an element\n- sw.fill(selector, value, { narration? }) \u2014 type into an input\n- sw.hover(selector, { narration? }) \u2014 hover over an element\n- sw.press(key, { narration? }) \u2014 press a keyboard key\n- sw.wait(ms) \u2014 pause for pacing\n- sw.narrate(text) \u2014 speak narration without an action\n\nRules:\n1. Import only ScreenwrightHelpers from 'screenwright'\n2. Export a default async function\n3. Replace ALL test/faker data with realistic human-friendly values\n4. Add narration to key actions explaining what the user is doing\n5. Use sw.wait() sparingly \u2014 only at scene transitions. Screenwright adds natural pacing automatically.\n6. Use sw.scene() to organize into 2-5 scenes\n7. Keep the same user flow as the original test\n8. Do NOT include assertions \u2014 this is a demo, not a test\n\nOutput format \u2014 always follow this exact structure:\n\n```typescript\nimport type { ScreenwrightHelpers } from 'screenwright';\n\nexport default async function scenario(sw: ScreenwrightHelpers) {\n // Scene 1\n await sw.scene('...');\n // ... actions ...\n\n // Scene 2\n await sw.scene('...');\n // ... actions ...\n}\n```\n\nCommon mistakes \u2014 do NOT do any of these:\n- Do NOT use page.click(), page.fill(), or any page.* methods \u2014 use sw.click(), sw.fill() etc.\n- Do NOT import expect, assert, or any test library\n- Do NOT call expect() or assert()\n- Do NOT use page.evaluate() or page.waitForSelector()\n- Do NOT add test(), describe(), or beforeEach() wrappers\n- Do NOT use page.locator().click() \u2014 use sw.click(selector) directly";
|
|
2
2
|
export declare function buildUserPrompt(testSource: string, narrationStyle: 'brief' | 'detailed', appDescription?: string): string;
|
|
3
3
|
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/generator/prompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/generator/prompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,yyEAmD4C,CAAC;AAEvE,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,OAAO,GAAG,UAAU,EACpC,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAmER"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export const SYSTEM_PROMPT = `You are Screenwright, a tool that converts Playwright E2E tests into cinematic product demo scenarios.
|
|
2
2
|
|
|
3
3
|
Given a Playwright test file, generate a new TypeScript file that uses the Screenwright helpers API to create a polished demo with:
|
|
4
|
-
- Natural pacing (deliberate waits between actions)
|
|
5
4
|
- Human-friendly data (replace faker/test data with realistic values)
|
|
6
5
|
- Narration cues (explain what's happening to the viewer)
|
|
7
6
|
- Scene boundaries (organize the demo into logical chapters)
|
|
@@ -23,7 +22,7 @@ Rules:
|
|
|
23
22
|
2. Export a default async function
|
|
24
23
|
3. Replace ALL test/faker data with realistic human-friendly values
|
|
25
24
|
4. Add narration to key actions explaining what the user is doing
|
|
26
|
-
5.
|
|
25
|
+
5. Use sw.wait() sparingly — only at scene transitions. Screenwright adds natural pacing automatically.
|
|
27
26
|
6. Use sw.scene() to organize into 2-5 scenes
|
|
28
27
|
7. Keep the same user flow as the original test
|
|
29
28
|
8. Do NOT include assertions — this is a demo, not a test
|
|
@@ -82,24 +81,20 @@ export default async function scenario(sw: ScreenwrightHelpers) {
|
|
|
82
81
|
await sw.navigate('http://localhost:3000', {
|
|
83
82
|
narration: 'Let\\'s browse the electronics store.',
|
|
84
83
|
});
|
|
85
|
-
await sw.wait(1500);
|
|
86
84
|
|
|
87
85
|
await sw.click('[data-testid="product-laptop"]', {
|
|
88
86
|
narration: 'We\\'ll select the MacBook Pro.',
|
|
89
87
|
});
|
|
90
|
-
await sw.wait(1000);
|
|
91
88
|
|
|
92
89
|
await sw.scene('Adding to Cart');
|
|
93
90
|
await sw.click('[data-testid="add-to-cart"]', {
|
|
94
91
|
narration: 'Add it to our cart.',
|
|
95
92
|
});
|
|
96
|
-
await sw.wait(1500);
|
|
97
93
|
|
|
98
94
|
await sw.scene('Checkout');
|
|
99
95
|
await sw.fill('[data-testid="email"]', 'sarah.chen@acme.co', {
|
|
100
96
|
narration: 'Enter our email address for the order confirmation.',
|
|
101
97
|
});
|
|
102
|
-
await sw.wait(1000);
|
|
103
98
|
|
|
104
99
|
await sw.click('[data-testid="checkout"]', {
|
|
105
100
|
narration: 'Complete the purchase.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/generator/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/generator/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sEAmDyC,CAAC;AAEvE,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,cAAoC,EACpC,cAAuB;IAEvB,IAAI,MAAM,GAAG;;mBAEI,cAAc;EAC/B,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,8DAA8D,CAAC,CAAC,CAAC,yDAAyD;;EAEvJ,cAAc,CAAC,CAAC,CAAC,gBAAgB,cAAc,MAAM,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuD1D,UAAU;;;gDAGoC,CAAC;IAE/C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario-generator.d.ts","sourceRoot":"","sources":["../../../src/generator/scenario-generator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,GAAG,UAAU,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAOD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"scenario-generator.d.ts","sourceRoot":"","sources":["../../../src/generator/scenario-generator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,GAAG,UAAU,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAOD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgB/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA6CnE"}
|
|
@@ -73,10 +73,6 @@ export function validateScenarioCode(code) {
|
|
|
73
73
|
if (!/\.scene\s*\(/.test(code)) {
|
|
74
74
|
warnings.push({ code: 'NO_SCENES', message: 'No sw.scene() calls found — consider adding scene boundaries' });
|
|
75
75
|
}
|
|
76
|
-
// Warnings — no waits
|
|
77
|
-
if (!/\.wait\s*\(/.test(code)) {
|
|
78
|
-
warnings.push({ code: 'NO_WAITS', message: 'No sw.wait() calls found — consider adding pacing' });
|
|
79
|
-
}
|
|
80
76
|
// Warnings — no narration
|
|
81
77
|
if (!/narration/.test(code)) {
|
|
82
78
|
warnings.push({ code: 'NO_NARRATION', message: 'No narration found — consider adding narration to actions' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario-generator.js","sourceRoot":"","sources":["../../../src/generator/scenario-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scenario-generator.js","sourceRoot":"","sources":["../../../src/generator/scenario-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export type { ScreenwrightHelpers, ActionOptions } from './runtime/action-helpers.js';
|
|
1
|
+
export type { ScreenwrightHelpers, ActionOptions, Pacing, HelpersOptions } from './runtime/action-helpers.js';
|
|
2
|
+
export { getPacingMultiplier, getNarrationOverlap } from './runtime/action-helpers.js';
|
|
2
3
|
export type { ScenarioFn } from './runtime/instrumented-page.js';
|
|
3
4
|
export type { Timeline, TimelineEvent, SceneEvent, ActionEvent, CursorTargetEvent, NarrationEvent, WaitEvent } from './timeline/types.js';
|
|
4
5
|
export type { ScreenwrightConfig, OpenaiVoice } from './config/config-schema.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC9G,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvF,YAAY,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1I,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { getPacingMultiplier, getNarrationOverlap } from './runtime/action-helpers.js';
|
|
1
2
|
export { openaiVoices } from './config/config-schema.js';
|
|
2
3
|
export { validateScenarioCode, extractScenarioCode } from './generator/scenario-generator.js';
|
|
3
4
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAIvF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -14,6 +14,13 @@ export interface ScreenwrightHelpers {
|
|
|
14
14
|
wait(ms: number): Promise<void>;
|
|
15
15
|
narrate(text: string): Promise<void>;
|
|
16
16
|
}
|
|
17
|
-
export
|
|
18
|
-
export
|
|
17
|
+
export type Pacing = 'fast' | 'normal' | 'cinematic';
|
|
18
|
+
export interface HelpersOptions {
|
|
19
|
+
pacingMultiplier?: number;
|
|
20
|
+
narrationOverlap?: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function getPacingMultiplier(pacing: Pacing): number;
|
|
23
|
+
export declare function getNarrationOverlap(pacing: Pacing): number;
|
|
24
|
+
export declare function calculateMoveDuration(fromX: number, fromY: number, toX: number, toY: number, pacingMultiplier?: number): number;
|
|
25
|
+
export declare function createHelpers(page: Page, collector: TimelineCollector, opts?: HelpersOptions): ScreenwrightHelpers;
|
|
19
26
|
//# sourceMappingURL=action-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-helpers.d.ts","sourceRoot":"","sources":["../../../src/runtime/action-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;
|
|
1
|
+
{"version":3,"file":"action-helpers.d.ts","sourceRoot":"","sources":["../../../src/runtime/action-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAOD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,gBAAgB,SAAM,GAAG,MAAM,CAI5H;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,mBAAmB,CAuJlH"}
|