studioflow 0.2.0 → 0.2.1
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 +96 -41
- package/assets/cursor.png +0 -0
- package/bundled/skills/manifest.json +7 -4
- package/bundled/skills/studioflow-author/SKILL.md +86 -0
- package/bundled/skills/{studioflow-investigate → studioflow-author}/references/artifact-spec.md +2 -2
- package/bundled/skills/studioflow-author/references/cli-handoff-spec.md +60 -0
- package/bundled/skills/studioflow-cli/SKILL.md +15 -0
- package/bundled/skills/studioflow-cli/references/handoff-spec.md +1 -1
- package/bundled/skills/studioflow-investigate/SKILL.md +32 -55
- package/bundled/skills/studioflow-investigate/references/artifact-fit-spec.md +73 -0
- package/bundled/skills/studioflow-investigate/references/cli-handoff-spec.md +1 -1
- package/dist/index.js +364 -142
- package/dist/index.js.map +3 -3
- package/package.json +7 -5
- package/scripts/sync-skills.mjs +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../../../node_modules/.pnpm/kleur@4.1.5/node_modules/kleur/index.mjs", "../src/commands/run.ts", "../../../packages/adapters-playwright/src/browser.ts", "../../../packages/adapters-playwright/src/actions.ts", "../../../packages/adapters-playwright/src/assertions.ts", "../../../packages/flow-registry/src/index.ts", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js", "../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js", "../../../packages/contracts/src/schemas.ts", "../../../packages/orchestrator/src/engine.ts", "../../../packages/artifacts/src/paths.ts", "../../../packages/artifacts/src/logger.ts", "../../../packages/artifacts/src/writer.ts", "../../../packages/adapters-desktop/src/osascript.ts", "../../../packages/adapters-desktop/src/permissions.ts", "../../../packages/adapters-desktop/src/quicktime.ts", "../../../packages/adapters-screenstudio/src/menu-controls.ts", "../../../packages/adapters-screenstudio/src/recorder.ts", "../../../packages/orchestrator/src/retry-policy.ts", "../src/commands/config.ts", "../src/commands/path-utils.ts", "../src/commands/runtime-paths.ts", "../src/commands/flow-validation.ts", "../src/commands/screenstudio-prep.ts", "../src/commands/quicktime-prep.ts", "../src/commands/list-flows.ts", "../src/commands/doctor.ts", "../src/commands/discover.ts", "../src/commands/validate.ts", "../src/commands/bootstrap.ts", "../src/commands/setup.ts", "../src/commands/install-skills.ts"],
|
|
4
|
-
"sourcesContent": ["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport kleur from \"kleur\";\nimport type { RecorderBackend } from \"@studioflow/contracts\";\nimport { runFlowFileCommand, type RunCommandOptions } from \"./commands/run.js\";\nimport { listFlowsCommand } from \"./commands/list-flows.js\";\nimport { doctorCommand } from \"./commands/doctor.js\";\nimport { discoverCommand } from \"./commands/discover.js\";\nimport { validateCommand } from \"./commands/validate.js\";\nimport { bootstrapCommand } from \"./commands/bootstrap.js\";\nimport { screenstudioPrepCommand } from \"./commands/screenstudio-prep.js\";\nimport { quicktimePrepCommand } from \"./commands/quicktime-prep.js\";\nimport { setupCommand } from \"./commands/setup.js\";\nimport type { SkillsAgentSelection } from \"./commands/install-skills.js\";\nimport { installSkillsCommand } from \"./commands/install-skills.js\";\nimport type { RuntimeConfigOverrides } from \"./commands/config.js\";\nimport { configCheckCommand, configShowCommand } from \"./commands/config.js\";\n\nlet cachedVersion: string | null = null;\n\nasync function cliVersion() {\n if (cachedVersion) return cachedVersion;\n const dirname = path.dirname(fileURLToPath(import.meta.url));\n const packageJsonPath = path.resolve(dirname, \"../package.json\");\n const raw = await fs.readFile(packageJsonPath, \"utf8\");\n const parsed = JSON.parse(raw) as { version?: string };\n cachedVersion = parsed.version ?? \"0.0.0\";\n return cachedVersion;\n}\n\nfunction readFlag(args: string[], flag: string) {\n const index = args.indexOf(flag);\n if (index === -1) return undefined;\n return args[index + 1];\n}\n\nfunction hasFlag(args: string[], flag: string) {\n return args.includes(flag);\n}\n\nfunction parseBoolean(raw: string, flag: string) {\n if (raw === \"true\") return true;\n if (raw === \"false\") return false;\n throw new Error(`Invalid ${flag} value: ${raw}. Expected true or false.`);\n}\n\nfunction readFlagValue(args: string[], flag: string) {\n const index = args.indexOf(flag);\n if (index === -1) return undefined;\n const value = args[index + 1];\n if (!value || value.startsWith(\"--\")) {\n throw new Error(`Flag ${flag} requires a value.`);\n }\n return value;\n}\n\nfunction parseRecorder(raw: string | undefined, flag: string): RecorderBackend | undefined {\n if (raw === undefined) return undefined;\n if (raw === \"quicktime\" || raw === \"screenstudio\") {\n return raw;\n }\n throw new Error(`Invalid ${flag} value: ${raw}. Expected quicktime or screenstudio.`);\n}\n\nfunction parseRuntimeConfigOverrides(args: string[]): RuntimeConfigOverrides {\n const headlessRaw = readFlagValue(args, \"--headless\");\n\n return {\n baseUrl: readFlagValue(args, \"--base-url\"),\n startCommand: readFlagValue(args, \"--start-command\"),\n healthPath: readFlagValue(args, \"--health-path\"),\n bootstrapReportPath: readFlagValue(args, \"--bootstrap-report\"),\n runsDir: readFlagValue(args, \"--runs-dir\"),\n recorder: parseRecorder(readFlagValue(args, \"--recorder\"), \"--recorder\"),\n headless: headlessRaw ? parseBoolean(headlessRaw, \"--headless\") : undefined\n };\n}\n\nfunction parseRunCommandOptions(args: string[]): RunCommandOptions {\n const allowExportRaw = readFlagValue(args, \"--allow-export\");\n return {\n allowExport: allowExportRaw ? parseBoolean(allowExportRaw, \"--allow-export\") : undefined\n };\n}\n\nfunction parseSkillsAgent(raw: string | undefined, flag: string): SkillsAgentSelection | undefined {\n if (raw === undefined) return undefined;\n if (raw === \"codex\" || raw === \"claude\" || raw === \"all\") {\n return raw;\n }\n throw new Error(`Invalid ${flag} value: ${raw}. Expected codex, claude, or all.`);\n}\n\nasync function main() {\n const [, , command = \"run\", ...args] = process.argv;\n const normalizedArgs = args.filter((arg) => arg !== \"--\");\n\n try {\n if (command === \"version\" || command === \"--version\" || command === \"-v\") {\n console.log(await cliVersion());\n return;\n }\n\n if (command === \"run\" || command === \"demo\") {\n const flowPath = readFlag(normalizedArgs, \"--flow\");\n if (!flowPath) {\n throw new Error(\n 'Usage: studioflow run --flow <path/to/flow.json|yaml> [--intent \"<label>\"] [--allow-export <true|false>] [--base-url <url>] [--start-command \"<command>\"] [--health-path <path>] [--headless <true|false>] [--recorder <quicktime|screenstudio>] [--bootstrap-report <path>] [--runs-dir <path>]'\n );\n }\n\n const sourceIntent = readFlag(normalizedArgs, \"--intent\") ?? \"artifact flow\";\n const runtimeOverrides = parseRuntimeConfigOverrides(normalizedArgs);\n const runOptions = parseRunCommandOptions(normalizedArgs);\n await runFlowFileCommand(flowPath, sourceIntent, runtimeOverrides, runOptions);\n return;\n }\n\n if (command === \"config\") {\n const subcommand = normalizedArgs[0] && !normalizedArgs[0].startsWith(\"--\") ? normalizedArgs[0] : \"show\";\n const commandArgs = normalizedArgs[0] === subcommand ? normalizedArgs.slice(1) : normalizedArgs;\n const json = hasFlag(commandArgs, \"--json\");\n const runtimeOverrides = parseRuntimeConfigOverrides(commandArgs);\n\n if (subcommand === \"show\") {\n await configShowCommand({ json, overrides: runtimeOverrides });\n return;\n }\n\n if (subcommand === \"check\") {\n await configCheckCommand({ json, overrides: runtimeOverrides });\n return;\n }\n\n throw new Error(\n \"Usage: studioflow config <show|check> [--json] [--base-url <url>] [--start-command <command>] [--health-path <path>] [--headless <true|false>] [--recorder <quicktime|screenstudio>] [--bootstrap-report <path>] [--runs-dir <path>]\"\n );\n }\n\n if (command === \"discover\") {\n const outDir = readFlag(normalizedArgs, \"--out\") ?? \"artifacts\";\n await discoverCommand(outDir);\n return;\n }\n\n if (command === \"bootstrap\") {\n const outPath = readFlag(normalizedArgs, \"--out\") ?? \"artifacts/bootstrap.json\";\n await bootstrapCommand(outPath);\n return;\n }\n\n if (command === \"screenstudio-prep\") {\n const appName = readFlag(normalizedArgs, \"--app-name\");\n await screenstudioPrepCommand(appName);\n return;\n }\n\n if (command === \"quicktime-prep\") {\n const appName = readFlag(normalizedArgs, \"--app-name\");\n await quicktimePrepCommand(appName);\n return;\n }\n\n if (command === \"setup\") {\n await setupCommand({\n skipSkills: hasFlag(normalizedArgs, \"--skip-skills\"),\n forceSkills: hasFlag(normalizedArgs, \"--force-skills\"),\n skillsTargetDir: readFlag(normalizedArgs, \"--skills-target\"),\n skillsAgent: parseSkillsAgent(readFlag(normalizedArgs, \"--skills-agent\"), \"--skills-agent\"),\n codexSkillsTargetDir: readFlag(normalizedArgs, \"--codex-skills-target\"),\n claudeSkillsTargetDir: readFlag(normalizedArgs, \"--claude-skills-target\")\n });\n return;\n }\n\n if (command === \"install-skills\") {\n await installSkillsCommand({\n force: hasFlag(normalizedArgs, \"--force\"),\n targetDir: readFlag(normalizedArgs, \"--target\"),\n agent: parseSkillsAgent(readFlag(normalizedArgs, \"--agent\"), \"--agent\"),\n codexTargetDir: readFlag(normalizedArgs, \"--codex-target\"),\n claudeTargetDir: readFlag(normalizedArgs, \"--claude-target\")\n });\n return;\n }\n\n if (command === \"validate\") {\n const flowPath = readFlag(normalizedArgs, \"--flow\") ?? normalizedArgs[0];\n await validateCommand(flowPath);\n return;\n }\n\n if (command === \"list-flows\") {\n await listFlowsCommand();\n return;\n }\n\n if (command === \"doctor\") {\n await doctorCommand();\n return;\n }\n\n throw new Error(`Unknown command: ${command}`);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(kleur.red(`StudioFlow error: ${message}`));\n process.exit(1);\n }\n}\n\nmain();\n", "'use strict';\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nexport default $;\n", "import { spawn } from \"node:child_process\";\nimport kleur from \"kleur\";\nimport type { FlowDefinition, RecorderBackend } from \"@studioflow/contracts\";\nimport { ensureChromiumInstalled } from \"@studioflow/adapters-playwright\";\nimport { loadFlowFromFile } from \"@studioflow/flow-registry\";\nimport { runEngine } from \"@studioflow/orchestrator\";\nimport { ensureAutomationPermissions } from \"@studioflow/adapters-desktop\";\nimport type { ResolvedRuntimeConfig, RuntimeConfigOverrides } from \"./config.js\";\nimport { resolveRuntimeConfig } from \"./config.js\";\nimport { validateFlowDefinition } from \"./flow-validation.js\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\nimport { runScreenStudioPreflight } from \"./screenstudio-prep.js\";\nimport { runQuickTimePreflight } from \"./quicktime-prep.js\";\n\ninterface ParsedStartCommand {\n command: string;\n args: string[];\n}\n\nexport interface RunCommandOptions {\n allowExport?: boolean;\n}\n\nconst explicitExportIntentMatchers = [\n /\\bexport(?:ed|ing)?\\b/i,\n /\\bdownload(?:ed|ing)?\\b/i,\n /\\bsave(?:\\s+(?:the|to|as|a|an))*\\s+(?:video|recording|file)\\b/i,\n /\\bshareable\\s+link\\b/i,\n /\\bcopy\\s+to\\s+clipboard\\b/i\n];\n\nfunction isWhitespace(char: string) {\n return /\\s/.test(char);\n}\n\nexport function parseStartCommand(raw: string): ParsedStartCommand {\n const tokens: string[] = [];\n let current = \"\";\n let tokenStarted = false;\n let quote: '\"' | \"'\" | null = null;\n let escaped = false;\n\n for (let index = 0; index < raw.length; index += 1) {\n const char = raw[index];\n\n if (escaped) {\n current += char;\n tokenStarted = true;\n escaped = false;\n continue;\n }\n\n if (char === \"\\\\\" && quote !== \"'\") {\n escaped = true;\n tokenStarted = true;\n continue;\n }\n\n if (quote) {\n if (char === quote) {\n quote = null;\n } else {\n current += char;\n }\n tokenStarted = true;\n continue;\n }\n\n if (char === '\"' || char === \"'\") {\n quote = char;\n tokenStarted = true;\n continue;\n }\n\n if (isWhitespace(char)) {\n if (tokenStarted) {\n tokens.push(current);\n current = \"\";\n tokenStarted = false;\n }\n continue;\n }\n\n current += char;\n tokenStarted = true;\n }\n\n if (escaped) {\n throw new Error(\"Start command ends with an escape character.\");\n }\n if (quote) {\n throw new Error(\"Start command contains an unterminated quote.\");\n }\n if (tokenStarted) {\n tokens.push(current);\n }\n if (tokens.length === 0) {\n throw new Error(\"Start command is empty.\");\n }\n\n const [command, ...args] = tokens;\n return { command, args };\n}\n\nfunction flowRequestsExport(flows: FlowDefinition[]) {\n return flows.some((flow) => flow.steps.some((step) => step.action === \"recorder_export\"));\n}\n\nfunction parseBooleanFromEnv(name: string, env: NodeJS.ProcessEnv = process.env) {\n const raw = env[name];\n if (!raw) return undefined;\n const normalized = raw.trim().toLowerCase();\n if ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) return true;\n if ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) return false;\n throw new Error(`Invalid ${name} value: ${raw}. Expected true or false.`);\n}\n\nexport function intentAllowsExport(intentLabel: string) {\n const normalized = intentLabel.trim();\n if (!normalized) return false;\n return explicitExportIntentMatchers.some((matcher) => matcher.test(normalized));\n}\n\nfunction resolveExportPermission(intentLabel: string, opts: RunCommandOptions = {}) {\n if (opts.allowExport !== undefined) {\n return opts.allowExport;\n }\n const envOverride = parseBooleanFromEnv(\"STUDIOFLOW_ALLOW_EXPORT\");\n if (envOverride !== undefined) {\n return envOverride;\n }\n return intentAllowsExport(intentLabel);\n}\n\nasync function waitForHealth(healthUrl: string, timeoutMs = 45_000) {\n const start = Date.now();\n let lastError: unknown = null;\n\n while (Date.now() - start < timeoutMs) {\n try {\n const response = await fetch(healthUrl);\n if (response.ok) return;\n lastError = new Error(`Health endpoint returned ${response.status}`);\n } catch (error) {\n lastError = error;\n }\n await new Promise((resolve) => setTimeout(resolve, 700));\n }\n\n throw new Error(`Timed out waiting for sample app health (${healthUrl}): ${String(lastError)}`);\n}\n\nasync function startAppLifecycle(\n baseUrl: string,\n startCommand: string | undefined,\n healthPath: string\n): Promise<() => Promise<void>> {\n const healthUrl = new URL(healthPath, baseUrl).toString();\n\n try {\n await waitForHealth(healthUrl, 1800);\n return async () => {};\n } catch {\n // App not running yet, continue and launch it.\n }\n\n if (!startCommand) {\n throw new Error(\n `App is not healthy at ${healthUrl} and no start command is configured. Run \\`studioflow bootstrap\\` or pass --start-command.`\n );\n }\n\n const parsedStartCommand = parseStartCommand(startCommand);\n const child = spawn(parsedStartCommand.command, parsedStartCommand.args, {\n shell: false,\n cwd: workspaceRoot(),\n stdio: \"ignore\",\n detached: false\n });\n\n try {\n await waitForHealth(healthUrl, 60_000);\n } catch (error) {\n child.kill(\"SIGTERM\");\n throw error;\n }\n\n return async () => {\n if (!child.killed) {\n child.kill(\"SIGTERM\");\n }\n };\n}\n\nfunction formatDuration(start: number) {\n return `${((Date.now() - start) / 1000).toFixed(1)}s`;\n}\n\nasync function runRecorderPreflight(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n const prep = await runScreenStudioPreflight({ ensurePermissions: false, quiet: true });\n return {\n label: \"Screen Studio\",\n itemsLabel: \"Record menu\",\n menuItems: prep.recordMenuItems\n };\n }\n\n const prep = await runQuickTimePreflight({ ensurePermissions: false, quiet: true });\n return {\n label: \"QuickTime\",\n itemsLabel: \"File menu\",\n menuItems: prep.fileMenuItems\n };\n}\n\nasync function runWithFlows(\n intentLabel: string,\n flowIds: string[],\n flows: FlowDefinition[],\n runtime: ResolvedRuntimeConfig,\n opts: RunCommandOptions = {}\n) {\n const chromium = await ensureChromiumInstalled({ autoInstall: true });\n if (!chromium.installed) {\n throw new Error(\"Playwright Chromium is not installed. Run `studioflow setup` and retry.\");\n }\n if (chromium.installedNow) {\n console.log(kleur.green(\"Installed Playwright Chromium runtime.\"));\n }\n\n await ensureAutomationPermissions();\n try {\n const prep = await runRecorderPreflight(runtime.values.recorder);\n console.log(`${prep.label} preflight: ready (${prep.itemsLabel}: ${prep.menuItems.join(\", \")})`);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const diagnosticsCommand =\n runtime.values.recorder === \"screenstudio\" ? \"studioflow screenstudio-prep\" : \"studioflow quicktime-prep\";\n throw new Error(`${runtime.values.recorder} preflight failed: ${message}. Run \\`${diagnosticsCommand}\\` for diagnostics.`);\n }\n\n for (const flow of flows) {\n const validation = validateFlowDefinition(flow);\n if (!validation.valid) {\n throw new Error(`Flow ${flow.id} failed validation: ${validation.errors.join(\"; \")}`);\n }\n }\n\n if (flowRequestsExport(flows) && !resolveExportPermission(intentLabel, opts)) {\n throw new Error(\n \"Flow includes recorder_export, but the run intent does not explicitly request export. Remove recorder_export, include export language in --intent, or pass --allow-export true.\"\n );\n }\n\n const started = Date.now();\n\n console.log(kleur.bold(\"StudioFlow Run\"));\n console.log(`Intent: ${intentLabel}`);\n console.log(`Mapped flows: ${flowIds.join(\", \")}`);\n console.log(`Base URL: ${runtime.values.baseUrl}`);\n console.log(`Start command: ${runtime.values.startCommand ?? \"(not configured)\"}`);\n console.log(`Health path: ${runtime.values.healthPath}`);\n console.log(`Headless: ${String(runtime.values.headless)}`);\n console.log(`Recorder: ${runtime.values.recorder}`);\n console.log(`Runs dir: ${runtime.values.runsDir}`);\n\n const previousRunsDir = process.env.STUDIOFLOW_RUNS_DIR;\n process.env.STUDIOFLOW_RUNS_DIR = runtime.values.runsDir;\n try {\n const result = await runEngine({\n intent: intentLabel,\n flows,\n baseUrl: runtime.values.baseUrl,\n headless: runtime.values.headless,\n recorder: runtime.values.recorder,\n startApp: async () =>\n startAppLifecycle(runtime.values.baseUrl, runtime.values.startCommand, runtime.values.healthPath)\n });\n\n console.log(kleur.green(\"Run completed successfully.\"));\n console.log(`Run ID: ${result.runId}`);\n console.log(`Duration: ${formatDuration(started)}`);\n console.log(`Artifacts: ${result.runDir}`);\n } catch (error) {\n const err = error as { message?: string; runDir?: string };\n console.error(kleur.red(`Run failed: ${err.message ?? String(error)}`));\n if (err.runDir) {\n console.error(kleur.yellow(`Artifacts: ${err.runDir}`));\n }\n throw error;\n } finally {\n if (previousRunsDir === undefined) {\n delete process.env.STUDIOFLOW_RUNS_DIR;\n } else {\n process.env.STUDIOFLOW_RUNS_DIR = previousRunsDir;\n }\n }\n}\n\nexport async function runFlowFileCommand(\n flowPath: string,\n sourceIntent = \"artifact flow\",\n overrides?: RuntimeConfigOverrides,\n opts: RunCommandOptions = {}\n) {\n if (!flowPath) {\n throw new Error(\"Usage: studioflow run --flow <path/to/flow.json|yaml>\");\n }\n\n const resolvedPath = resolveFromWorkspace(flowPath);\n const runtime = await resolveRuntimeConfig(overrides);\n const flow = await loadFlowFromFile(resolvedPath);\n await runWithFlows(sourceIntent, [flow.id], [flow], runtime, opts);\n}\n", "import { spawn } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport { chromium, type Browser, type Page } from \"playwright\";\n\nexport interface BrowserSession {\n browser: Browser;\n page: Page;\n}\n\nexport interface ChromiumInstallStatus {\n installed: boolean;\n executablePath: string;\n installedNow: boolean;\n}\n\nexport interface StartBrowserOptions {\n headless?: boolean;\n fullscreen?: boolean;\n}\n\nconst defaultViewport = { width: 1440, height: 960 };\n\nfunction parseBooleanEnv(value: string | undefined): boolean | undefined {\n if (value === undefined) return undefined;\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\" || normalized === \"yes\") return true;\n if (normalized === \"false\" || normalized === \"0\" || normalized === \"no\") return false;\n return undefined;\n}\n\nexport interface ResolvedBrowserLaunch {\n headless: boolean;\n launchArgs: string[] | undefined;\n viewport: { width: number; height: number } | null;\n}\n\nexport function resolveBrowserLaunch(opts: StartBrowserOptions = {}, env: NodeJS.ProcessEnv = process.env): ResolvedBrowserLaunch {\n const headless = opts.headless ?? parseBooleanEnv(env.STUDIOFLOW_HEADLESS) ?? false;\n const fullscreen = opts.fullscreen ?? parseBooleanEnv(env.STUDIOFLOW_BROWSER_FULLSCREEN) ?? !headless;\n const useFullscreen = !headless && fullscreen;\n return {\n headless,\n launchArgs: useFullscreen ? [\"--start-maximized\"] : undefined,\n viewport: useFullscreen ? null : defaultViewport\n };\n}\n\nasync function runPlaywrightCli(args: string[]) {\n const require = createRequire(import.meta.url);\n const cliPath = require.resolve(\"playwright/cli\");\n\n await new Promise<void>((resolve, reject) => {\n const child = spawn(process.execPath, [cliPath, ...args], {\n stdio: \"inherit\",\n env: process.env\n });\n\n child.on(\"error\", reject);\n child.on(\"exit\", (code) => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(new Error(`Playwright CLI exited with code ${code ?? \"unknown\"}.`));\n });\n });\n}\n\nexport async function getChromiumInstallStatus(): Promise<ChromiumInstallStatus> {\n const executablePath = chromium.executablePath();\n try {\n await fs.access(executablePath);\n return { installed: true, executablePath, installedNow: false };\n } catch {\n return { installed: false, executablePath, installedNow: false };\n }\n}\n\nexport async function ensureChromiumInstalled(opts: { autoInstall?: boolean } = {}): Promise<ChromiumInstallStatus> {\n const status = await getChromiumInstallStatus();\n if (status.installed || !opts.autoInstall) {\n return status;\n }\n\n await runPlaywrightCli([\"install\", \"chromium\"]);\n const postInstall = await getChromiumInstallStatus();\n return { ...postInstall, installedNow: postInstall.installed };\n}\n\nexport async function startBrowser(baseUrl: string, opts: StartBrowserOptions = {}): Promise<BrowserSession> {\n const resolved = resolveBrowserLaunch(opts);\n\n const browser = await chromium.launch({\n headless: resolved.headless,\n ...(resolved.launchArgs ? { args: resolved.launchArgs } : {})\n });\n const context = await browser.newContext({\n baseURL: baseUrl,\n viewport: resolved.viewport\n });\n const page = await context.newPage();\n return { browser, page };\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { Page } from \"playwright\";\nimport type { FlowStep } from \"@studioflow/contracts\";\nimport { assertText, assertVisible } from \"./assertions.js\";\n\nfunction wait(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction boolEnv(name: string, fallback: boolean, env: NodeJS.ProcessEnv = process.env) {\n const raw = env[name];\n if (!raw) return fallback;\n const normalized = raw.trim().toLowerCase();\n if ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) return true;\n if ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) return false;\n return fallback;\n}\n\nfunction intEnv(name: string, fallback: number, env: NodeJS.ProcessEnv = process.env) {\n const raw = env[name];\n if (!raw) return fallback;\n const parsed = Number(raw);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nconst maxDelayMs = 60_000;\ntype CursorTheme = \"macos\" | \"generic\";\ninterface CursorOverlayAsset {\n dataUri: string;\n width: number;\n height: number;\n hotspotX: number;\n hotspotY: number;\n}\n\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url));\n\nconst macosCursorSvgDataUri =\n \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2226%22%20height%3D%2236%22%20viewBox%3D%220%200%2026%2036%22%3E%3Cpath%20d%3D%22M2%201.5v26.2l6.7-6.4%204.4%2012.8%204.2-1.6-4.4-12.8h10.8L2%201.5z%22%20fill%3D%22%23111%22%2F%3E%3Cpath%20d%3D%22M4%204.5v18.1l5.1-4.9a1%201%200%200%201%201.6.4l3.7%2010.9%201.4-.5-3.7-10.9a1%201%200%200%201%20.9-1.3h7.8L4%204.5z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E\";\nconst genericCursorSvgDataUri =\n \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2230%22%20viewBox%3D%220%200%2022%2030%22%3E%3Cpath%20d%3D%22M1.5%201.5V22.2L7.4%2017.4L11%2028.5L14.4%2027L10.8%2015.9H19.6L1.5%201.5Z%22%20fill%3D%22white%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\";\nconst macosFallbackCursorAsset: CursorOverlayAsset = {\n dataUri: macosCursorSvgDataUri,\n width: 26,\n height: 36,\n hotspotX: 2,\n hotspotY: 1\n};\nconst genericCursorAsset: CursorOverlayAsset = {\n dataUri: genericCursorSvgDataUri,\n width: 22,\n height: 30,\n hotspotX: 2,\n hotspotY: 1\n};\nconst cursorAssetCache = new Map<string, CursorOverlayAsset>();\n\nfunction cursorThemeEnv(env: NodeJS.ProcessEnv = process.env): CursorTheme {\n const raw = env.STUDIOFLOW_CURSOR_THEME?.trim().toLowerCase();\n if (raw === \"generic\") return \"generic\";\n return \"macos\";\n}\n\nfunction parsePngDimensions(buffer: Buffer) {\n if (buffer.length < 24) return null;\n const pngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n for (let index = 0; index < pngHeader.length; index += 1) {\n if (buffer[index] !== pngHeader[index]) {\n return null;\n }\n }\n const width = buffer.readUInt32BE(16);\n const height = buffer.readUInt32BE(20);\n if (width <= 0 || height <= 0) return null;\n return { width, height };\n}\n\nfunction resolveCursorPngPath(env: NodeJS.ProcessEnv = process.env) {\n const projectRoot = env.INIT_CWD ?? process.cwd();\n const explicitPath = env.STUDIOFLOW_CURSOR_PNG_PATH?.trim();\n const candidates = [\n explicitPath\n ? path.isAbsolute(explicitPath)\n ? explicitPath\n : path.resolve(projectRoot, explicitPath)\n : \"\",\n path.resolve(projectRoot, \"apps/cli/assets/cursor.png\"),\n path.resolve(projectRoot, \"apps/cli/cursor.png\"),\n path.resolve(projectRoot, \"assets/cursor.png\"),\n path.resolve(projectRoot, \"cursor.png\"),\n path.resolve(moduleDir, \"../../../apps/cli/assets/cursor.png\"),\n path.resolve(moduleDir, \"../../../apps/cli/cursor.png\"),\n path.resolve(moduleDir, \"../assets/cursor.png\"),\n path.resolve(moduleDir, \"../cursor.png\")\n ];\n const visited = new Set<string>();\n for (const candidate of candidates) {\n if (!candidate || visited.has(candidate)) continue;\n visited.add(candidate);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nfunction loadCursorPngAsset(filePath: string, env: NodeJS.ProcessEnv = process.env): CursorOverlayAsset | null {\n const cached = cursorAssetCache.get(filePath);\n if (cached) return cached;\n\n try {\n const image = fs.readFileSync(filePath);\n const dimensions = parsePngDimensions(image);\n const maxEdge = Math.max(20, intEnv(\"STUDIOFLOW_CURSOR_MAX_EDGE_PX\", 34, env));\n const sourceWidth = dimensions?.width ?? 26;\n const sourceHeight = dimensions?.height ?? 36;\n const scale = maxEdge / Math.max(sourceWidth, sourceHeight);\n const width = Math.max(18, Math.round(sourceWidth * scale));\n const height = Math.max(18, Math.round(sourceHeight * scale));\n const asset: CursorOverlayAsset = {\n dataUri: `data:image/png;base64,${image.toString(\"base64\")}`,\n width,\n height,\n hotspotX: Math.max(1, Math.round(width * 0.08)),\n hotspotY: Math.max(1, Math.round(height * 0.08))\n };\n cursorAssetCache.set(filePath, asset);\n return asset;\n } catch {\n return null;\n }\n}\n\nfunction resolveCursorOverlayAsset(theme: CursorTheme, env: NodeJS.ProcessEnv = process.env): CursorOverlayAsset {\n if (theme === \"generic\") {\n return genericCursorAsset;\n }\n\n const cursorPngPath = resolveCursorPngPath(env);\n if (!cursorPngPath) {\n return macosFallbackCursorAsset;\n }\n\n return loadCursorPngAsset(cursorPngPath, env) ?? macosFallbackCursorAsset;\n}\n\nexport interface RuntimePacingDefaults {\n renderCursorOverlay: boolean;\n cursorTheme: CursorTheme;\n cursorMoveMs: number;\n cursorHighlightMs: number;\n realisticTyping: boolean;\n typingDelayMs: number;\n clickPulseMs: number;\n stepPreDelayMs: number;\n stepPostDelayMs: number;\n stepDwellMs: number;\n pacingAdjustmentEnabled: boolean;\n pacingJitterEnabled: boolean;\n}\n\nexport function resolveRuntimePacingDefaults(env: NodeJS.ProcessEnv = process.env): RuntimePacingDefaults {\n return {\n renderCursorOverlay: boolEnv(\"STUDIOFLOW_RENDER_CURSOR\", true, env),\n cursorTheme: cursorThemeEnv(env),\n cursorMoveMs: Math.max(0, intEnv(\"STUDIOFLOW_CURSOR_MOVE_MS\", 430, env)),\n cursorHighlightMs: Math.max(0, intEnv(\"STUDIOFLOW_CURSOR_HIGHLIGHT_MS\", 170, env)),\n realisticTyping: boolEnv(\"STUDIOFLOW_REALISTIC_TYPING\", true, env),\n typingDelayMs: Math.max(0, intEnv(\"STUDIOFLOW_TYPING_DELAY_MS\", 55, env)),\n clickPulseMs: Math.max(0, intEnv(\"STUDIOFLOW_CLICK_PULSE_MS\", 220, env)),\n stepPreDelayMs: Math.max(0, intEnv(\"STUDIOFLOW_STEP_PRE_DELAY_MS\", 90, env)),\n stepPostDelayMs: Math.max(0, intEnv(\"STUDIOFLOW_STEP_POST_DELAY_MS\", 130, env)),\n stepDwellMs: Math.max(0, intEnv(\"STUDIOFLOW_STEP_DWELL_MS\", 180, env)),\n pacingAdjustmentEnabled: boolEnv(\"STUDIOFLOW_PACING_ADJUSTMENT\", true, env),\n pacingJitterEnabled: boolEnv(\"STUDIOFLOW_PACING_JITTER\", true, env)\n };\n}\n\ntype ScrollAlignment = \"start\" | \"center\" | \"end\" | \"nearest\";\n\ninterface StepScrollPlan {\n required: boolean;\n alignment: ScrollAlignment;\n maxAttempts: number;\n}\n\ninterface ElementTargetSnapshot {\n exists: boolean;\n visible: boolean;\n inViewport: boolean;\n clippedByOverflow: boolean;\n scrollableAncestors: number;\n rect?: {\n top: number;\n left: number;\n width: number;\n height: number;\n };\n viewport?: {\n width: number;\n height: number;\n };\n}\n\nconst defaultScrollPlan: StepScrollPlan = {\n required: false,\n alignment: \"center\",\n maxAttempts: 2\n};\n\nasync function collectTargetSnapshot(page: Page, target: string): Promise<ElementTargetSnapshot> {\n const locator = page.locator(target).first();\n try {\n if ((await locator.count()) === 0) {\n return {\n exists: false,\n visible: false,\n inViewport: false,\n clippedByOverflow: false,\n scrollableAncestors: 0\n };\n }\n return locator.evaluate((element) => {\n const rect = element.getBoundingClientRect();\n const style = window.getComputedStyle(element);\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight\n };\n const visible =\n style.display !== \"none\" &&\n style.visibility !== \"hidden\" &&\n Number(style.opacity || \"1\") > 0 &&\n rect.width > 0 &&\n rect.height > 0;\n const inViewport = rect.bottom > 0 && rect.right > 0 && rect.top < viewport.height && rect.left < viewport.width;\n\n let clippedByOverflow = false;\n let scrollableAncestors = 0;\n let parent = element.parentElement;\n while (parent) {\n const parentStyle = window.getComputedStyle(parent);\n const scrollableY =\n /(auto|scroll|overlay)/.test(parentStyle.overflowY) && parent.scrollHeight > parent.clientHeight + 1;\n const scrollableX =\n /(auto|scroll|overlay)/.test(parentStyle.overflowX) && parent.scrollWidth > parent.clientWidth + 1;\n if (scrollableY || scrollableX) {\n scrollableAncestors += 1;\n const parentRect = parent.getBoundingClientRect();\n if (\n rect.top < parentRect.top ||\n rect.bottom > parentRect.bottom ||\n rect.left < parentRect.left ||\n rect.right > parentRect.right\n ) {\n clippedByOverflow = true;\n }\n }\n parent = parent.parentElement;\n }\n\n return {\n exists: true,\n visible,\n inViewport,\n clippedByOverflow,\n scrollableAncestors,\n rect: {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n },\n viewport\n };\n });\n } catch {\n return {\n exists: false,\n visible: false,\n inViewport: false,\n clippedByOverflow: false,\n scrollableAncestors: 0\n };\n }\n}\n\nasync function scrollTargetIntoView(\n page: Page,\n target: string,\n timeoutMs: number,\n runtime: RuntimePacingDefaults\n) {\n const locator = page.locator(target).first();\n const snapshot = await collectTargetSnapshot(page, target);\n if (!snapshot.exists) return;\n\n const effective = defaultScrollPlan;\n const needsScroll = snapshot.visible && (!snapshot.inViewport || snapshot.clippedByOverflow);\n if (!effective.required && !needsScroll) return;\n\n for (let attempt = 0; attempt < effective.maxAttempts; attempt += 1) {\n try {\n await locator.evaluate(\n (element, alignment: ScrollAlignment) => {\n const block = alignment === \"start\" || alignment === \"center\" || alignment === \"end\" ? alignment : \"nearest\";\n\n let parent = element.parentElement;\n while (parent) {\n const style = window.getComputedStyle(parent);\n const scrollableY =\n /(auto|scroll|overlay)/.test(style.overflowY) && parent.scrollHeight > parent.clientHeight + 1;\n const scrollableX =\n /(auto|scroll|overlay)/.test(style.overflowX) && parent.scrollWidth > parent.clientWidth + 1;\n\n if (scrollableY || scrollableX) {\n const targetRect = element.getBoundingClientRect();\n const parentRect = parent.getBoundingClientRect();\n\n if (scrollableY) {\n const offsetTop = targetRect.top - parentRect.top + parent.scrollTop;\n if (block === \"start\") {\n parent.scrollTop = offsetTop - 8;\n } else if (block === \"end\") {\n parent.scrollTop = offsetTop - parent.clientHeight + targetRect.height + 8;\n } else if (block === \"center\") {\n parent.scrollTop = offsetTop - parent.clientHeight / 2 + targetRect.height / 2;\n } else if (targetRect.top < parentRect.top || targetRect.bottom > parentRect.bottom) {\n parent.scrollTop = offsetTop - parent.clientHeight / 2 + targetRect.height / 2;\n }\n }\n\n if (scrollableX) {\n const offsetLeft = targetRect.left - parentRect.left + parent.scrollLeft;\n parent.scrollLeft = offsetLeft - parent.clientWidth / 2 + targetRect.width / 2;\n }\n }\n\n parent = parent.parentElement;\n }\n\n element.scrollIntoView({ behavior: \"instant\", block, inline: \"nearest\" });\n },\n effective.alignment\n );\n } catch {\n return;\n }\n\n const settleMs = Math.min(timeoutMs, Math.max(40, Math.round(runtime.stepPreDelayMs * 0.5)));\n if (settleMs > 0) {\n await wait(settleMs);\n }\n\n const after = await collectTargetSnapshot(page, target);\n if (!after.exists) return;\n if (after.visible && after.inViewport && !after.clippedByOverflow) return;\n }\n}\n\nexport interface StepExecutionContext {\n pacingMultiplier?: number;\n strictPacing?: boolean;\n jitterSeed?: string;\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\nconst cursorOverlaySetupScript = (clickPulseMs: number, theme: CursorTheme, asset: CursorOverlayAsset) => `\n(() => {\n const win = window;\n const cursorAsset = \"${asset.dataUri}\";\n if (win.__studioflowCursor) return;\n\n if (!document.getElementById(\"studioflow-cursor-style\")) {\n const style = document.createElement(\"style\");\n style.id = \"studioflow-cursor-style\";\n style.textContent = \\`\n #studioflow-cursor {\n position: fixed;\n top: 0;\n left: 0;\n width: ${asset.width}px;\n height: ${asset.height}px;\n background-image: url(\"\\${cursorAsset}\");\n background-repeat: no-repeat;\n background-size: ${asset.width}px ${asset.height}px;\n pointer-events: none;\n z-index: 2147483647;\n opacity: 0;\n transform: translate3d(-9999px, -9999px, 0);\n filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.48));\n transition: opacity 120ms ease;\n will-change: transform;\n }\n #studioflow-cursor::after {\n content: \"\";\n position: absolute;\n left: -7px;\n top: -7px;\n width: 18px;\n height: 18px;\n border-radius: 999px;\n border: 2px solid rgba(37, 99, 235, 0.72);\n opacity: 0;\n transform: scale(0.65);\n }\n #studioflow-cursor.studioflow-cursor-pulse::after {\n animation: studioflow-cursor-pulse var(--studioflow-click-pulse-ms, ${Math.max(0, clickPulseMs)}ms) ease-out;\n }\n @keyframes studioflow-cursor-pulse {\n 0% { opacity: 0.9; transform: scale(0.55); }\n 100% { opacity: 0; transform: scale(1.5); }\n }\n \\`;\n document.head.appendChild(style);\n }\n\n const cursor = document.createElement(\"div\");\n cursor.id = \"studioflow-cursor\";\n cursor.setAttribute(\"aria-hidden\", \"true\");\n cursor.dataset.theme = \"${theme}\";\n document.body.appendChild(cursor);\n\n const hotSpotX = ${asset.hotspotX};\n const hotSpotY = ${asset.hotspotY};\n let x = 0;\n let y = 0;\n let initialized = false;\n let raf = 0;\n let activeResolve = null;\n\n const resolveActiveAnimation = () => {\n if (activeResolve) {\n const done = activeResolve;\n activeResolve = null;\n done();\n }\n };\n\n const stopAnimation = () => {\n if (raf) {\n cancelAnimationFrame(raf);\n raf = 0;\n }\n resolveActiveAnimation();\n };\n\n const setPosition = (nextX, nextY) => {\n x = nextX;\n y = nextY;\n cursor.style.transform = \\`translate3d(\\${Math.round(x - hotSpotX)}px, \\${Math.round(y - hotSpotY)}px, 0)\\`;\n };\n\n const easeInOut = (value) => {\n if (value <= 0) return 0;\n if (value >= 1) return 1;\n return value < 0.5 ? 2 * value * value : 1 - Math.pow(-2 * value + 2, 2) / 2;\n };\n\n const animateTo = (nextX, nextY, durationMs) => {\n const startX = x;\n const startY = y;\n const ms = Math.max(0, Math.round(durationMs));\n\n if (ms === 0 || (Math.abs(startX - nextX) < 0.5 && Math.abs(startY - nextY) < 0.5)) {\n setPosition(nextX, nextY);\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n activeResolve = resolve;\n const start = performance.now();\n const tick = (now) => {\n const progress = Math.min(1, (now - start) / ms);\n const eased = easeInOut(progress);\n const currentX = startX + (nextX - startX) * eased;\n const currentY = startY + (nextY - startY) * eased;\n setPosition(currentX, currentY);\n if (progress >= 1) {\n raf = 0;\n resolveActiveAnimation();\n return;\n }\n raf = requestAnimationFrame(tick);\n };\n raf = requestAnimationFrame(tick);\n });\n };\n\n win.__studioflowCursor = {\n moveTo(nextX, nextY, durationMs) {\n const targetX = Number(nextX) || 0;\n const targetY = Number(nextY) || 0;\n const transitionMs = Math.max(0, Number(durationMs) || 0);\n stopAnimation();\n\n if (!initialized) {\n initialized = true;\n cursor.style.opacity = \"1\";\n setPosition(targetX - 14, targetY - 10);\n return animateTo(targetX, targetY, Math.min(280, Math.max(120, transitionMs)));\n }\n\n return animateTo(targetX, targetY, transitionMs);\n },\n getPosition() {\n if (!initialized) return null;\n return { x, y };\n },\n clickPulse() {\n cursor.classList.remove(\"studioflow-cursor-pulse\");\n void cursor.offsetWidth;\n cursor.classList.add(\"studioflow-cursor-pulse\");\n }\n };\n})();\n`;\n\nconst cursorMoveScript = (point: Point, durationMs: number) => `\n(() => {\n const cursor = window.__studioflowCursor;\n if (cursor) return cursor.moveTo(${point.x}, ${point.y}, ${durationMs});\n return undefined;\n})();\n`;\n\nconst cursorClickPulseScript = (pulseMs: number) => `\n(() => {\n const cursor = window.__studioflowCursor;\n if (!cursor) return;\n const pulse = Math.max(0, Math.round(${pulseMs}));\n const cursorNode = document.getElementById(\"studioflow-cursor\");\n if (cursorNode) {\n cursorNode.style.setProperty(\"--studioflow-click-pulse-ms\", pulse + \"ms\");\n }\n cursor.clickPulse();\n})();\n`;\n\nconst cursorPositionScript = `\n(() => {\n const cursor = window.__studioflowCursor;\n if (!cursor) return null;\n return cursor.getPosition();\n})();\n`;\n\nconst cursorExistsScript = `\n(() => Boolean(window.__studioflowCursor))();\n`;\n\ndeclare global {\n interface Window {\n __studioflowCursor?: {\n moveTo: (x: number, y: number, durationMs: number) => Promise<void>;\n getPosition: () => Point | null;\n clickPulse: () => void;\n };\n }\n}\n\nfunction hashString(input: string) {\n let hash = 2166136261;\n for (let i = 0; i < input.length; i += 1) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return hash >>> 0;\n}\n\nfunction jitterFactor(seed: string) {\n const hash = hashString(seed);\n const normalized = hash / 0xffffffff;\n return normalized * 0.24 - 0.12;\n}\n\nfunction resolvePacedDelay(\n rawMs: number | undefined,\n context: StepExecutionContext,\n runtime: RuntimePacingDefaults,\n channel: string,\n allowJitter = true\n) {\n if (!rawMs || rawMs <= 0) return 0;\n\n let value = rawMs;\n const multiplier = runtime.pacingAdjustmentEnabled ? context.pacingMultiplier ?? 1 : 1;\n value *= multiplier;\n\n const shouldApplyJitter =\n allowJitter && runtime.pacingJitterEnabled && !context.strictPacing && Boolean(context.jitterSeed);\n\n if (shouldApplyJitter) {\n value *= 1 + jitterFactor(`${context.jitterSeed}:${channel}`);\n }\n\n return Math.max(0, Math.min(maxDelayMs, Math.round(value)));\n}\n\nfunction sanitizeScreenshotName(raw: string) {\n const normalized = raw.trim().replace(/\\\\/g, \"/\");\n const base = normalized.split(\"/\").filter(Boolean).pop() ?? \"screenshot\";\n const withoutPng = base.toLowerCase().endsWith(\".png\") ? base.slice(0, -4) : base;\n const safe = withoutPng.replace(/[^A-Za-z0-9._-]/g, \"_\").replace(/_+/g, \"_\").replace(/^\\.+/, \"\").slice(0, 120);\n return safe || \"screenshot\";\n}\n\nasync function ensureCursorOverlay(page: Page, runtime: RuntimePacingDefaults) {\n if (!runtime.renderCursorOverlay) return;\n const cursorExists = await page.evaluate(cursorExistsScript);\n if (cursorExists) return;\n const cursorAsset = resolveCursorOverlayAsset(runtime.cursorTheme);\n await page.evaluate(cursorOverlaySetupScript(runtime.clickPulseMs, runtime.cursorTheme, cursorAsset));\n}\n\nfunction distanceBetweenPoints(start: Point, end: Point) {\n return Math.hypot(end.x - start.x, end.y - start.y);\n}\n\nfunction resolveCursorTravelDuration(baseMs: number, start: Point | null, end: Point) {\n if (baseMs <= 0) return 0;\n if (!start) {\n return Math.max(120, Math.round(baseMs * 0.7));\n }\n\n const distanceMs = distanceBetweenPoints(start, end) * 1.1;\n const blended = baseMs * 0.45 + distanceMs * 0.55;\n const minMs = Math.max(110, Math.round(baseMs * 0.35));\n const maxMs = Math.min(maxDelayMs, Math.max(850, Math.round(baseMs * 2.2)));\n return Math.max(minMs, Math.min(maxMs, Math.round(blended)));\n}\n\nasync function getCursorPosition(page: Page, runtime: RuntimePacingDefaults): Promise<Point | null> {\n if (!runtime.renderCursorOverlay) return null;\n await ensureCursorOverlay(page, runtime);\n return page.evaluate(cursorPositionScript) as Promise<Point | null>;\n}\n\nasync function getTargetCenter(page: Page, target: string): Promise<Point | null> {\n const box = await page.locator(target).first().boundingBox();\n if (!box) return null;\n return { x: box.x + box.width / 2, y: box.y + box.height / 2 };\n}\n\nasync function moveCursor(page: Page, point: Point, durationMs: number, runtime: RuntimePacingDefaults) {\n await page.mouse.move(point.x, point.y, { steps: Math.max(8, Math.floor(durationMs / 16)) });\n if (runtime.renderCursorOverlay) {\n await ensureCursorOverlay(page, runtime);\n await page.evaluate(cursorMoveScript(point, durationMs));\n return;\n }\n if (durationMs > 0) {\n await wait(durationMs);\n }\n}\n\nasync function clickPulse(page: Page, runtime: RuntimePacingDefaults, pulseMs: number) {\n if (!runtime.renderCursorOverlay) return;\n await ensureCursorOverlay(page, runtime);\n await page.evaluate(cursorClickPulseScript(pulseMs));\n}\n\nasync function applyPreStepPacing(\n page: Page,\n step: FlowStep,\n timeout: number,\n context: StepExecutionContext,\n runtime: RuntimePacingDefaults\n) {\n const preDelay = resolvePacedDelay(step.preDelayMs ?? runtime.stepPreDelayMs, context, runtime, \"pre\");\n if (preDelay > 0) {\n await wait(preDelay);\n }\n\n const shouldMoveCursor = [\"click\", \"type\"].includes(step.action) && Boolean(step.target);\n if (!shouldMoveCursor || !step.target) return;\n\n await scrollTargetIntoView(page, step.target, timeout, runtime);\n\n const center = await getTargetCenter(page, step.target);\n if (!center) return;\n\n const baseMoveMs = resolvePacedDelay(step.mouseMoveMs ?? runtime.cursorMoveMs, context, runtime, \"move\");\n const currentCursorPosition = await getCursorPosition(page, runtime);\n const moveMs = resolveCursorTravelDuration(baseMoveMs, currentCursorPosition, center);\n if (moveMs > 0) {\n await moveCursor(page, center, moveMs, runtime);\n }\n\n const highlightMs = resolvePacedDelay(step.highlightMs ?? runtime.cursorHighlightMs, context, runtime, \"highlight\");\n if (highlightMs > 0) {\n await wait(highlightMs);\n }\n}\n\nasync function applyPostStepPacing(\n step: FlowStep,\n context: StepExecutionContext,\n runtime: RuntimePacingDefaults\n) {\n const postDelay = resolvePacedDelay(step.postDelayMs ?? runtime.stepPostDelayMs, context, runtime, \"post\");\n if (postDelay > 0) {\n await wait(postDelay);\n }\n const dwellDelay = resolvePacedDelay(step.dwellMs ?? runtime.stepDwellMs, context, runtime, \"dwell\");\n if (dwellDelay > 0) {\n await wait(dwellDelay);\n }\n}\n\nexport async function executeStep(\n page: Page,\n step: FlowStep,\n runDir: string,\n baseUrl: string,\n context: StepExecutionContext = {}\n) {\n const timeout = step.timeoutMs ?? 6000;\n const runtime = resolveRuntimePacingDefaults();\n await applyPreStepPacing(page, step, timeout, context, runtime);\n\n if (step.action === \"goto\") {\n const target = step.value ?? \"/\";\n const isAbsolute = /^https?:\\/\\//.test(target);\n await page.goto(isAbsolute ? target : new URL(target, baseUrl).toString(), { timeout });\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"click\") {\n if (!step.target) throw new Error(`Step ${step.id} missing target`);\n await scrollTargetIntoView(page, step.target, timeout, runtime);\n await page.locator(step.target).first().click({ timeout });\n const pulseMs = resolvePacedDelay(runtime.clickPulseMs, context, runtime, \"click\", false);\n await clickPulse(page, runtime, pulseMs);\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"type\") {\n if (!step.target) throw new Error(`Step ${step.id} missing target`);\n await scrollTargetIntoView(page, step.target, timeout, runtime);\n const locator = page.locator(step.target).first();\n if (runtime.realisticTyping) {\n await locator.click({ timeout });\n const pulseMs = resolvePacedDelay(runtime.clickPulseMs, context, runtime, \"click\", false);\n await clickPulse(page, runtime, pulseMs);\n await locator.fill(\"\", { timeout });\n const effectiveTypingDelay = resolvePacedDelay(runtime.typingDelayMs, context, runtime, \"typing\", false);\n await page.keyboard.type(step.value ?? \"\", { delay: effectiveTypingDelay });\n } else {\n await locator.fill(step.value ?? \"\", { timeout });\n }\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"wait_for\") {\n if (step.target) {\n await scrollTargetIntoView(page, step.target, timeout, runtime);\n await page.locator(step.target).first().waitFor({ state: \"visible\", timeout });\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n if (step.value) {\n await page.getByText(step.value).first().waitFor({ timeout });\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n throw new Error(`Step ${step.id} requires target or value for wait_for`);\n }\n\n if (step.action === \"assert_text\") {\n if (!step.value) throw new Error(`Step ${step.id} missing value`);\n await assertText(page, step.value, timeout);\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"assert_visible\") {\n if (!step.target) throw new Error(`Step ${step.id} missing target`);\n await scrollTargetIntoView(page, step.target, timeout, runtime);\n await assertVisible(page, step.target, timeout);\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"screenshot\") {\n const name = sanitizeScreenshotName(step.value ?? step.id);\n const screenshotPath = path.join(runDir, \"screenshots\", `${name}.png`);\n await page.screenshot({ path: screenshotPath, fullPage: true });\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if ([\"recorder_start\", \"recorder_stop\", \"recorder_export\"].includes(step.action)) {\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n throw new Error(`Unsupported action: ${step.action}`);\n}\n", "import type { Page } from \"playwright\";\n\nexport async function assertText(page: Page, text: string, timeoutMs = 5000) {\n await page.getByText(text, { exact: false }).first().waitFor({ timeout: timeoutMs });\n}\n\nexport async function assertVisible(page: Page, selector: string, timeoutMs = 5000) {\n await page.locator(selector).first().waitFor({ state: \"visible\", timeout: timeoutMs });\n}\n", "import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport YAML from \"yaml\";\nimport {\n flowDefinitionSchema,\n type FlowDefinition\n} from \"@studioflow/contracts\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst rootDir = path.resolve(__dirname, \"..\");\n\nfunction builtInFlowsDirs() {\n const configured = process.env.STUDIOFLOW_FLOWS_SOURCE?.trim();\n // Support both workspace execution and packaged CLI runtime layouts.\n const candidates = [\n configured ? path.resolve(configured) : \"\",\n path.join(rootDir, \"bundled\", \"flows\"),\n path.join(rootDir, \"flows\"),\n path.resolve(rootDir, \"../../packages/flow-registry/flows\"),\n path.resolve(process.cwd(), \"packages/flow-registry/flows\")\n ].filter((value): value is string => Boolean(value));\n return Array.from(new Set(candidates));\n}\n\nfunction dataRoot() {\n const configured = process.env.STUDIOFLOW_DATA_DIR ?? process.env.STUDIOFLOW_HOME;\n if (configured && configured.trim()) {\n return path.resolve(configured);\n }\n return path.join(os.homedir(), \".studioflow\");\n}\n\nfunction userFlowsDir() {\n return path.join(dataRoot(), \"flows\");\n}\n\nasync function listFlowFiles(dir: string) {\n try {\n const files = await fs.readdir(dir);\n return files.filter((f) => [\".yaml\", \".yml\", \".json\"].includes(path.extname(f).toLowerCase()));\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code;\n if (code === \"ENOENT\") return [];\n throw error;\n }\n}\n\nfunction parseFlow(raw: string, ext: string): FlowDefinition {\n const parsed = ext === \".json\" ? JSON.parse(raw) : YAML.parse(raw);\n return flowDefinitionSchema.parse(parsed);\n}\n\nexport async function loadFlowFromFile(filePath: string): Promise<FlowDefinition> {\n const ext = path.extname(filePath).toLowerCase();\n if (![\".yaml\", \".yml\", \".json\"].includes(ext)) {\n throw new Error(`Unsupported flow file format: ${filePath}`);\n }\n const raw = await fs.readFile(filePath, \"utf8\");\n return parseFlow(raw, ext);\n}\n\nexport async function loadFlows(): Promise<FlowDefinition[]> {\n const merged = new Map<string, FlowDefinition>();\n const dirs = [...builtInFlowsDirs(), userFlowsDir()];\n\n for (const dir of dirs) {\n const files = await listFlowFiles(dir);\n for (const file of files) {\n const fullPath = path.join(dir, file);\n const flow = await loadFlowFromFile(fullPath);\n merged.set(flow.id, flow);\n }\n }\n\n return Array.from(merged.values()).sort((a, b) => a.id.localeCompare(b.id));\n}\n\nexport async function getFlowById(id: string): Promise<FlowDefinition> {\n const flows = await loadFlows();\n const flow = flows.find((f) => f.id === id);\n if (!flow) {\n throw new Error(`Flow not found: ${id}`);\n }\n return flow;\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "import { z } from \"zod\";\n\nexport const flowActionSchema = z.enum([\n \"goto\",\n \"click\",\n \"type\",\n \"wait_for\",\n \"assert_text\",\n \"assert_visible\",\n \"screenshot\",\n \"recorder_start\",\n \"recorder_stop\",\n \"recorder_export\"\n]);\n\nexport const pacingProfileSchema = z.enum([\"fast\", \"standard\", \"cinematic\"]);\nexport const emphasisScopeSchema = z.enum([\"flowId\", \"tag\", \"stepId\", \"route\", \"action\"]);\n\nexport const pacingEmphasisDirectiveSchema = z.object({\n scope: emphasisScopeSchema,\n value: z.string().min(1),\n weight: z.number().min(0.5).max(2)\n});\n\nexport const pacingDirectivesSchema = z.object({\n profile: pacingProfileSchema.optional(),\n targetDurationSec: z.number().int().positive().optional(),\n emphasis: z.array(pacingEmphasisDirectiveSchema).optional(),\n strictPacing: z.boolean().optional()\n});\n\nexport const flowPacingMetadataSchema = z.object({\n profile: pacingProfileSchema,\n targetDurationSec: z.number().int().positive().optional(),\n predictedDurationSec: z.number().positive(),\n durationMultiplier: z.number().min(0.75).max(1.6),\n strictPacing: z.boolean().optional(),\n emphasis: z.array(pacingEmphasisDirectiveSchema).optional()\n});\n\nexport const flowStepSchema = z.object({\n id: z.string().min(1),\n action: flowActionSchema,\n target: z.string().optional(),\n value: z.string().optional(),\n timeoutMs: z.number().int().positive().optional(),\n retries: z.number().int().nonnegative().optional(),\n preDelayMs: z.number().int().nonnegative().optional(),\n postDelayMs: z.number().int().nonnegative().optional(),\n mouseMoveMs: z.number().int().nonnegative().optional(),\n highlightMs: z.number().int().nonnegative().optional(),\n dwellMs: z.number().int().nonnegative().optional(),\n narrativeCheckpoint: z.string().optional()\n});\n\nexport const flowDefinitionSchema = z.object({\n id: z.string().min(1),\n description: z.string().min(1),\n tags: z.array(z.string()).default([]),\n preconditions: z.array(z.string()).optional(),\n estimated_duration_sec: z.number().int().positive().optional(),\n pacing: flowPacingMetadataSchema.optional(),\n steps: z.array(flowStepSchema).min(1)\n});\n\nexport const intentMappingSchema = z.object({\n intent: z.string().min(1),\n selectedFlowIds: z.array(z.string().min(1)).min(1),\n confidence: z.number().min(0).max(1),\n rationale: z.string().min(1)\n});\n\nexport const structureReportSchema = z.object({\n generatedAt: z.string(),\n projectRoot: z.string().min(1),\n packageManager: z.string().min(1),\n projectType: z.enum([\"nextjs\", \"vite-react\", \"unknown\"]).optional(),\n frameworkHints: z.array(z.string()),\n startCommands: z.array(z.string()),\n routes: z.array(z.object({ route: z.string(), file: z.string() })),\n components: z.array(z.object({ name: z.string(), file: z.string() })),\n existingFlowIds: z.array(z.string()),\n notes: z.array(z.string())\n});\n\nexport const navigationGraphSchema = z.object({\n generatedAt: z.string(),\n nodes: z.array(z.object({ id: z.string(), route: z.string(), file: z.string().optional() })),\n edges: z.array(\n z.object({\n from: z.string(),\n to: z.string(),\n via: z.string(),\n confidence: z.number().min(0).max(1),\n evidence: z.string().optional()\n })\n )\n});\n\nexport const bootstrapReportSchema = z.object({\n generatedAt: z.string(),\n projectRoot: z.string().min(1),\n packageManager: z.enum([\"pnpm\", \"npm\", \"yarn\", \"unknown\"]),\n projectType: z.enum([\"nextjs\", \"vite-react\", \"unknown\"]),\n startCommand: z.string().min(1),\n healthPath: z.string().min(1),\n notes: z.array(z.string())\n});\n\nexport const planReportSchema = z.object({\n generatedAt: z.string(),\n intent: z.string().min(1),\n confidence: z.number().min(0).max(1),\n rationale: z.string().min(1),\n source: z.enum([\"llm-artifact\", \"heuristic\"]),\n selectedFlowId: z.string().optional(),\n generatedFlowId: z.string().optional(),\n pacing: flowPacingMetadataSchema.optional(),\n needsClarification: z.boolean(),\n clarifyingQuestion: z.string().optional()\n});\n\nexport const runArtifactIndexSchema = z.object({\n runId: z.string().min(1),\n status: z.enum([\"success\", \"failed\"]),\n startedAt: z.string(),\n endedAt: z.string(),\n files: z.record(z.string(), z.string())\n});\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { FlowDefinition, RecorderBackend, RunArtifactIndex } from \"@studioflow/contracts\";\nimport { appendJsonLine, createRunContext, writeJsonFile } from \"@studioflow/artifacts\";\nimport { executeStep, startBrowser } from \"@studioflow/adapters-playwright\";\nimport { exportRecording, startRecording, stopRecording } from \"@studioflow/adapters-screenstudio\";\nimport {\n exportQuickTimeRecording,\n startQuickTimeRecording,\n stopQuickTimeRecording\n} from \"@studioflow/adapters-desktop\";\nimport { withRetry } from \"./retry-policy.js\";\nimport type { EngineState } from \"./state-machine.js\";\n\nexport interface RunInput {\n intent: string;\n flows: FlowDefinition[];\n startApp: () => Promise<() => Promise<void>>;\n baseUrl: string;\n headless?: boolean;\n recorder?: RecorderBackend;\n}\n\nasync function startRecorder(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n await startRecording();\n return;\n }\n await startQuickTimeRecording();\n}\n\nasync function stopRecorder(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n await stopRecording();\n return;\n }\n await stopQuickTimeRecording();\n}\n\nasync function exportRecorder(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n await exportRecording();\n return;\n }\n await exportQuickTimeRecording();\n}\n\nexport async function runEngine(input: RunInput): Promise<RunArtifactIndex & { runDir: string }> {\n const run = await createRunContext();\n let state: EngineState = \"INIT\";\n const recorder = input.recorder ?? \"screenstudio\";\n const shouldExport = input.flows.some((flow) => flow.steps.some((step) => step.action === \"recorder_export\"));\n const files: Record<string, string> = {\n events: run.eventsFile\n };\n\n const emit = async (event: string, payload: Record<string, unknown> = {}) => {\n await appendJsonLine(run.eventsFile, {\n ts: new Date().toISOString(),\n state,\n event,\n ...payload\n });\n };\n\n let closeApp: (() => Promise<void>) | null = null;\n const { browser, page } = await startBrowser(input.baseUrl, { headless: input.headless });\n\n try {\n state = \"START_APP\";\n await emit(\"start_app.begin\");\n closeApp = await input.startApp();\n await emit(\"start_app.done\");\n\n state = \"START_RECORDER\";\n await emit(\"recorder.start.begin\");\n await startRecorder(recorder);\n // Recorder startup can steal focus; return focus to the demo browser.\n await page.bringToFront();\n await emit(\"recorder.start.done\");\n\n state = \"RUN_FLOW\";\n const runtimePacingEnabled = (process.env.STUDIOFLOW_PACING_ADJUSTMENT ?? \"true\").toLowerCase() !== \"false\";\n for (const flow of input.flows) {\n await emit(\"flow.begin\", { flowId: flow.id });\n const flowMultiplier = runtimePacingEnabled ? flow.pacing?.durationMultiplier ?? 1 : 1;\n const strictPacing = flow.pacing?.strictPacing ?? false;\n for (const step of flow.steps) {\n await withRetry(\n async () => {\n await emit(\"step.begin\", { flowId: flow.id, stepId: step.id, action: step.action });\n await executeStep(page, step, run.runDir, input.baseUrl, {\n pacingMultiplier: flowMultiplier,\n strictPacing,\n jitterSeed: `${run.runId}:${flow.id}:${step.id}`\n });\n await emit(\"step.done\", { flowId: flow.id, stepId: step.id });\n },\n { retries: step.retries ?? 2 }\n );\n }\n await emit(\"flow.done\", { flowId: flow.id });\n }\n\n state = \"STOP_RECORDER\";\n await emit(\"recorder.stop.begin\");\n await stopRecorder(recorder);\n await emit(\"recorder.stop.done\");\n\n if (shouldExport) {\n state = \"EXPORT\";\n await emit(\"recorder.export.begin\");\n await exportRecorder(recorder);\n await emit(\"recorder.export.done\");\n }\n\n state = \"VERIFY_ARTIFACTS\";\n const planPath = path.join(run.runDir, \"plan.json\");\n await writeJsonFile(planPath, {\n intent: input.intent,\n flowIds: input.flows.map((f) => f.id),\n pacing: {\n runtimeAdjustmentEnabled: runtimePacingEnabled,\n flows: input.flows.map((flow) => ({\n flowId: flow.id,\n profile: flow.pacing?.profile ?? \"standard\",\n predictedDurationSec: flow.pacing?.predictedDurationSec,\n targetDurationSec: flow.pacing?.targetDurationSec,\n durationMultiplier: runtimePacingEnabled ? flow.pacing?.durationMultiplier ?? 1 : 1,\n strictPacing: flow.pacing?.strictPacing ?? false\n }))\n }\n });\n files.plan = planPath;\n\n state = \"DONE\";\n await emit(\"run.done\", { runId: run.runId });\n\n const result: RunArtifactIndex & { runDir: string } = {\n runId: run.runId,\n runDir: run.runDir,\n status: \"success\",\n startedAt: run.startedAt,\n endedAt: new Date().toISOString(),\n files\n };\n\n const resultPath = path.join(run.runDir, \"run.json\");\n files.run = resultPath;\n await writeJsonFile(resultPath, result);\n\n return result;\n } catch (error) {\n state = \"FAILED\";\n await emit(\"run.failed\", { message: error instanceof Error ? error.message : String(error) });\n\n const failShot = path.join(run.runDir, \"screenshots\", \"failure.png\");\n await page.screenshot({ path: failShot, fullPage: true });\n files.failureScreenshot = failShot;\n\n const result: RunArtifactIndex & { runDir: string } = {\n runId: run.runId,\n runDir: run.runDir,\n status: \"failed\",\n startedAt: run.startedAt,\n endedAt: new Date().toISOString(),\n files\n };\n\n const resultPath = path.join(run.runDir, \"run.json\");\n files.run = resultPath;\n await writeJsonFile(resultPath, result);\n\n throw Object.assign(new Error(error instanceof Error ? error.message : String(error)), {\n runDir: run.runDir,\n resultPath\n });\n } finally {\n await browser.close();\n if (closeApp) {\n await closeApp();\n }\n // Ensure run dir exists even on failure if nothing else touched it\n await fs.mkdir(run.runDir, { recursive: true });\n }\n}\n", "import os from \"node:os\";\nimport path from \"node:path\";\n\nexport function getRunsRoot() {\n const dataDir = process.env.STUDIOFLOW_DATA_DIR ?? process.env.STUDIOFLOW_HOME;\n const defaultRunsDir =\n dataDir && dataDir.trim()\n ? path.join(path.resolve(dataDir), \"runs\")\n : path.join(os.homedir(), \".studioflow\", \"runs\");\n const configured = process.env.STUDIOFLOW_RUNS_DIR || defaultRunsDir;\n if (path.isAbsolute(configured)) {\n return configured;\n }\n\n const initCwd = process.env.INIT_CWD;\n if (initCwd) {\n return path.resolve(initCwd, configured);\n }\n\n return path.resolve(process.cwd(), configured);\n}\n\nexport function getRunDir(runId: string) {\n return path.join(getRunsRoot(), runId);\n}\n", "import fs from \"node:fs/promises\";\n\nexport async function appendJsonLine(filePath: string, payload: unknown) {\n await fs.appendFile(filePath, `${JSON.stringify(payload)}\\n`, \"utf8\");\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getRunDir } from \"./paths.js\";\n\nexport interface RunContext {\n runId: string;\n runDir: string;\n eventsFile: string;\n startedAt: string;\n}\n\nexport async function createRunContext() {\n const now = new Date();\n const runId = now.toISOString().replace(/[:.]/g, \"-\");\n const runDir = getRunDir(runId);\n const screenshotsDir = path.join(runDir, \"screenshots\");\n await fs.mkdir(screenshotsDir, { recursive: true });\n\n const eventsFile = path.join(runDir, \"events.jsonl\");\n await fs.writeFile(eventsFile, \"\", \"utf8\");\n\n return {\n runId,\n runDir,\n eventsFile,\n startedAt: now.toISOString()\n } satisfies RunContext;\n}\n\nexport async function writeJsonFile(filePath: string, payload: unknown) {\n await fs.writeFile(filePath, JSON.stringify(payload, null, 2), \"utf8\");\n}\n", "import { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script: string) {\n const { stdout, stderr } = await execFileAsync(\"osascript\", [\"-e\", script]);\n return { stdout: stdout.trim(), stderr: stderr.trim() };\n}\n", "import { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport { promisify } from \"node:util\";\nimport { runAppleScript } from \"./osascript.js\";\n\nconst execFileAsync = promisify(execFile);\n\nexport interface PermissionStatus {\n screenStudioInstalled: boolean;\n canRunAppleScript: boolean;\n canSendKeystrokes: boolean;\n notes: string[];\n}\n\nexport async function checkPermissions(): Promise<PermissionStatus> {\n const notes: string[] = [];\n let screenStudioInstalled = false;\n\n try {\n await fs.access(\"/Applications/Screen Studio.app\");\n screenStudioInstalled = true;\n } catch {\n notes.push(\"Screen Studio app not found at /Applications/Screen Studio.app\");\n }\n\n let canRunAppleScript = true;\n try {\n await runAppleScript('tell application \"System Events\" to get UI elements enabled');\n } catch {\n canRunAppleScript = false;\n notes.push(\"AppleScript execution failed. Accessibility/Automation permission may be missing.\");\n }\n\n let canSendKeystrokes = true;\n try {\n // Uses an unlikely key chord to validate keystroke permission with low side-effect risk.\n await runAppleScript(\n 'tell application \"System Events\" to keystroke \"9\" using {command down, option down, control down, shift down}'\n );\n } catch {\n canSendKeystrokes = false;\n notes.push(\"Keystroke automation is blocked. Grant Accessibility + Automation permissions.\");\n }\n\n return {\n screenStudioInstalled,\n canRunAppleScript,\n canSendKeystrokes,\n notes\n };\n}\n\nexport async function triggerPermissionPrompts() {\n const results = {\n automationPromptAttempted: false,\n accessibilityPromptAttempted: false\n };\n\n try {\n // Triggers Apple Events automation prompt when not yet approved.\n await runAppleScript('tell application \"System Events\" to get name of first process');\n results.automationPromptAttempted = true;\n } catch {\n results.automationPromptAttempted = true;\n }\n\n try {\n // Triggers keystroke permission path with a low-risk chord.\n await runAppleScript(\n 'tell application \"System Events\" to keystroke \"9\" using {command down, option down, control down, shift down}'\n );\n results.accessibilityPromptAttempted = true;\n } catch {\n results.accessibilityPromptAttempted = true;\n }\n\n return results;\n}\n\nexport async function openPermissionSettings() {\n const panes = [\n \"x-apple.systempreferences:com.apple.preference.security?Privacy_Automation\",\n \"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility\"\n ];\n\n for (const pane of panes) {\n try {\n await execFileAsync(\"open\", [pane]);\n } catch {\n // Best-effort only.\n }\n }\n}\n\nexport async function ensureAutomationPermissions() {\n const firstCheck = await checkPermissions();\n if (firstCheck.canRunAppleScript && firstCheck.canSendKeystrokes) {\n return firstCheck;\n }\n\n await triggerPermissionPrompts();\n const secondCheck = await checkPermissions();\n if (secondCheck.canRunAppleScript && secondCheck.canSendKeystrokes) {\n return secondCheck;\n }\n\n await openPermissionSettings();\n\n throw new Error(\n \"macOS automation permission is required. Approve Terminal/iTerm for System Events in Privacy & Security (Automation + Accessibility), then rerun the demo.\"\n );\n}\n", "import { runAppleScript } from \"./osascript.js\";\n\nconst defaultQuickTimeAppName = process.env.QUICKTIME_APP_NAME ?? \"QuickTime Player\";\n\nfunction int(value: string | undefined, fallback: number) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nconst preConfirmDelay = int(process.env.QUICKTIME_PRE_CONFIRM_DELAY_MS, 700);\nconst postStartDelay = int(process.env.QUICKTIME_POST_START_DELAY_MS, 1200);\nconst postStopDelay = int(process.env.QUICKTIME_POST_STOP_DELAY_MS, 900);\nconst exportDialogConfirmDelay = int(process.env.QUICKTIME_EXPORT_DIALOG_CONFIRM_DELAY_MS, 900);\nconst exportDelay = int(process.env.QUICKTIME_EXPORT_DELAY_MS, 2500);\n\nfunction quote(value: string) {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\n\nfunction normalizeMenuItem(raw: string) {\n return raw.trim();\n}\n\nexport function parseQuickTimeMenuItems(stdout: string) {\n if (!stdout.trim()) {\n return [] as string[];\n }\n\n return stdout\n .split(\",\")\n .map(normalizeMenuItem)\n .filter((item) => item.length > 0 && item !== \"missing value\");\n}\n\nexport function buildActivateQuickTimeScript(appName: string) {\n return `tell application \"${quote(appName)}\" to activate`;\n}\n\nexport function buildListQuickTimeFileMenuItemsScript(appName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to get name of every menu item of menu \"File\" of menu bar 1`;\n}\n\nexport function buildClickQuickTimeFileMenuItemScript(appName: string, itemName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to click menu item \"${quote(itemName)}\" of menu \"File\" of menu bar 1`;\n}\n\nexport function buildQuickTimeStartShortcutScript() {\n return 'tell application \"System Events\" to keystroke \"n\" using {command down, control down}';\n}\n\nexport function buildQuickTimeStopShortcutScript() {\n return 'tell application \"System Events\" to key code 53 using {command down, control down}';\n}\n\nexport function buildQuickTimeSaveShortcutScript() {\n return 'tell application \"System Events\" to keystroke \"s\" using {command down}';\n}\n\nexport function buildPressReturnScript() {\n return 'tell application \"System Events\" to key code 36';\n}\n\nexport async function wait(ms: number) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction findMenuItem(items: string[], partial: string) {\n const needle = partial.toLowerCase();\n return items.find((item) => item.toLowerCase().includes(needle));\n}\n\nexport async function activateQuickTime(appName = defaultQuickTimeAppName) {\n await runAppleScript(buildActivateQuickTimeScript(appName));\n}\n\nexport async function listQuickTimeFileMenuItems(appName = defaultQuickTimeAppName) {\n const { stdout } = await runAppleScript(buildListQuickTimeFileMenuItemsScript(appName));\n return parseQuickTimeMenuItems(stdout);\n}\n\nexport async function clickQuickTimeFileMenuItem(appName: string, itemName: string) {\n const items = await listQuickTimeFileMenuItems(appName);\n\n if (!items.includes(itemName)) {\n const available = items.length > 0 ? items.join(\", \") : \"none\";\n throw new Error(\n `QuickTime File menu item \"${itemName}\" not available. Available items: ${available}`\n );\n }\n\n await runAppleScript(buildClickQuickTimeFileMenuItemScript(appName, itemName));\n}\n\nexport async function pressQuickTimeStartShortcut() {\n await runAppleScript(buildQuickTimeStartShortcutScript());\n}\n\nexport async function pressQuickTimeStopShortcut() {\n await runAppleScript(buildQuickTimeStopShortcutScript());\n}\n\nexport async function pressQuickTimeSaveShortcut() {\n await runAppleScript(buildQuickTimeSaveShortcutScript());\n}\n\nexport async function pressReturn() {\n await runAppleScript(buildPressReturnScript());\n}\n\nexport async function startQuickTimeRecording(appName = defaultQuickTimeAppName) {\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n const newScreenRecordingItem = findMenuItem(items, \"new screen recording\");\n\n if (newScreenRecordingItem) {\n await clickQuickTimeFileMenuItem(appName, newScreenRecordingItem);\n } else {\n await pressQuickTimeStartShortcut();\n }\n\n await wait(preConfirmDelay);\n await pressReturn();\n await wait(postStartDelay);\n}\n\nexport async function stopQuickTimeRecording(appName = defaultQuickTimeAppName) {\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n const stopScreenRecordingItem = findMenuItem(items, \"stop screen recording\");\n\n if (stopScreenRecordingItem) {\n await clickQuickTimeFileMenuItem(appName, stopScreenRecordingItem);\n } else {\n await pressQuickTimeStopShortcut();\n }\n\n await wait(postStopDelay);\n}\n\nexport async function exportQuickTimeRecording(appName = defaultQuickTimeAppName) {\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n const saveItem = findMenuItem(items, \"save\");\n\n if (saveItem) {\n await clickQuickTimeFileMenuItem(appName, saveItem);\n } else {\n await pressQuickTimeSaveShortcut();\n }\n\n await wait(exportDialogConfirmDelay);\n await pressReturn();\n await wait(exportDelay);\n}\n", "import { runAppleScript } from \"@studioflow/adapters-desktop\";\n\nfunction quote(value: string) {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\n\nfunction normalizeMenuItem(raw: string) {\n return raw.trim();\n}\n\nexport function parseMenuItems(stdout: string) {\n if (!stdout.trim()) {\n return [] as string[];\n }\n\n return stdout\n .split(\",\")\n .map(normalizeMenuItem)\n .filter((item) => item.length > 0 && item !== \"missing value\");\n}\n\nexport function buildActivateScreenStudioScript(appName: string) {\n return `tell application \"${quote(appName)}\" to activate`;\n}\n\nexport function buildListRecordMenuItemsScript(appName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to get name of every menu item of menu \"Record\" of menu bar 1`;\n}\n\nexport function buildClickRecordMenuItemScript(appName: string, itemName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to click menu item \"${quote(itemName)}\" of menu \"Record\" of menu bar 1`;\n}\n\nexport function buildPressReturnScript() {\n return 'tell application \"System Events\" to key code 36';\n}\n\nexport async function wait(ms: number) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function activateScreenStudio(appName: string) {\n await runAppleScript(buildActivateScreenStudioScript(appName));\n}\n\nexport async function listRecordMenuItems(appName: string) {\n const { stdout } = await runAppleScript(buildListRecordMenuItemsScript(appName));\n return parseMenuItems(stdout);\n}\n\nexport async function clickRecordMenuItem(appName: string, itemName: string) {\n const items = await listRecordMenuItems(appName);\n\n if (!items.includes(itemName)) {\n const available = items.length > 0 ? items.join(\", \") : \"none\";\n throw new Error(\n `Screen Studio Record menu item \"${itemName}\" not available. Available items: ${available}`\n );\n }\n\n await runAppleScript(buildClickRecordMenuItemScript(appName, itemName));\n}\n\nexport async function pressReturn() {\n await runAppleScript(buildPressReturnScript());\n}\n", "import {\n activateScreenStudio,\n clickRecordMenuItem,\n pressReturn,\n wait\n} from \"./menu-controls.js\";\n\nconst appName = process.env.SCREENSTUDIO_APP_NAME ?? \"Screen Studio\";\n\nfunction int(value: string | undefined, fallback: number) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nconst preConfirmDelay = int(process.env.SCREENSTUDIO_PRE_CONFIRM_DELAY_MS, 800);\nconst postStartDelay = int(process.env.SCREENSTUDIO_POST_START_DELAY_MS, 1200);\nconst postStopDelay = int(process.env.SCREENSTUDIO_POST_STOP_DELAY_MS, 800);\nconst exportDialogConfirmDelay = int(process.env.SCREENSTUDIO_EXPORT_DIALOG_CONFIRM_DELAY_MS, 800);\nconst exportDelay = int(process.env.SCREENSTUDIO_EXPORT_DELAY_MS, 2500);\n\nexport async function startRecording() {\n await activateScreenStudio(appName);\n await clickRecordMenuItem(appName, \"Record display\");\n await wait(preConfirmDelay);\n await pressReturn();\n await wait(postStartDelay);\n}\n\nexport async function stopRecording() {\n await activateScreenStudio(appName);\n await clickRecordMenuItem(appName, \"Stop recording\");\n await wait(postStopDelay);\n}\n\nexport async function exportRecording() {\n await activateScreenStudio(appName);\n await clickRecordMenuItem(appName, \"Export and save to file\");\n await wait(exportDialogConfirmDelay);\n await pressReturn();\n await wait(exportDelay);\n}\n", "export async function withRetry<T>(\n fn: () => Promise<T>,\n opts: { retries?: number; delaysMs?: number[] } = {}\n): Promise<T> {\n const retries = opts.retries ?? 2;\n const delays = opts.delaysMs ?? [500, 1500, 2500];\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n if (attempt === retries) break;\n const delay = delays[Math.min(attempt, delays.length - 1)] ?? 800;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n\n throw lastError;\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { bootstrapReportSchema, type RecorderBackend } from \"@studioflow/contracts\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\nimport { getStudioflowDataDir } from \"./runtime-paths.js\";\n\nexport type ConfigSource = \"flag\" | \"project-config\" | \"user-config\" | \"bootstrap\" | \"default\";\n\ninterface RuntimeConfigFile {\n baseUrl?: string;\n startCommand?: string;\n healthPath?: string;\n headless?: boolean;\n recorder?: RecorderBackend;\n bootstrapReport?: string;\n runsDir?: string;\n}\n\ninterface RuntimeValues {\n baseUrl: string;\n startCommand: string | undefined;\n healthPath: string;\n headless: boolean;\n recorder: RecorderBackend;\n runsDir: string;\n}\n\ninterface RuntimeSources {\n baseUrl: ConfigSource;\n startCommand: ConfigSource;\n healthPath: ConfigSource;\n headless: ConfigSource;\n recorder: ConfigSource;\n runsDir: ConfigSource;\n}\n\nexport interface RuntimeConfigOverrides {\n baseUrl?: string;\n startCommand?: string;\n healthPath?: string;\n headless?: boolean;\n recorder?: RecorderBackend;\n bootstrapReportPath?: string;\n runsDir?: string;\n}\n\nexport interface ResolvedRuntimeConfig {\n values: RuntimeValues;\n sources: RuntimeSources;\n files: {\n projectConfigPath: string;\n projectConfigExists: boolean;\n userConfigPath: string;\n userConfigExists: boolean;\n bootstrapReportPath: string;\n bootstrapReportLoaded: boolean;\n };\n}\n\nfunction ensureObject(value: unknown, label: string) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction optionalString(value: unknown, key: string, label: string) {\n if (value === undefined) return undefined;\n if (typeof value !== \"string\") {\n throw new Error(`${label} field \"${key}\" must be a string.`);\n }\n return value;\n}\n\nfunction optionalBoolean(value: unknown, key: string, label: string) {\n if (value === undefined) return undefined;\n if (typeof value !== \"boolean\") {\n throw new Error(`${label} field \"${key}\" must be a boolean.`);\n }\n return value;\n}\n\nfunction optionalRecorder(value: unknown, key: string, label: string) {\n if (value === undefined) return undefined;\n if (value === \"quicktime\" || value === \"screenstudio\") {\n return value;\n }\n throw new Error(`${label} field \"${key}\" must be \"quicktime\" or \"screenstudio\".`);\n}\n\nfunction parseRuntimeConfigFile(value: unknown, label: string): RuntimeConfigFile {\n const obj = ensureObject(value, label);\n return {\n baseUrl: optionalString(obj.baseUrl, \"baseUrl\", label),\n startCommand: optionalString(obj.startCommand, \"startCommand\", label),\n healthPath: optionalString(obj.healthPath, \"healthPath\", label),\n headless: optionalBoolean(obj.headless, \"headless\", label),\n recorder: optionalRecorder(obj.recorder, \"recorder\", label),\n bootstrapReport: optionalString(obj.bootstrapReport, \"bootstrapReport\", label),\n runsDir: optionalString(obj.runsDir, \"runsDir\", label)\n };\n}\n\nasync function readConfigFile(filePath: string, label: string): Promise<{ exists: boolean; config: RuntimeConfigFile }> {\n try {\n const raw = await fs.readFile(filePath, \"utf8\");\n const parsed = JSON.parse(raw);\n return {\n exists: true,\n config: parseRuntimeConfigFile(parsed, label)\n };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code === \"ENOENT\") {\n return { exists: false, config: {} };\n }\n throw error;\n }\n}\n\nfunction chooseOptional(\n candidates: Array<{ value: string | undefined; source: ConfigSource }>\n): { value: string | undefined; source: ConfigSource } {\n for (const candidate of candidates) {\n if (candidate.value !== undefined) return candidate;\n }\n return { value: undefined, source: \"default\" };\n}\n\nfunction chooseString(\n candidates: Array<{ value: string | undefined; source: ConfigSource }>,\n fallback: string\n): { value: string; source: ConfigSource } {\n for (const candidate of candidates) {\n if (candidate.value !== undefined) return { value: candidate.value, source: candidate.source };\n }\n return { value: fallback, source: \"default\" };\n}\n\nfunction chooseBoolean(\n candidates: Array<{ value: boolean | undefined; source: ConfigSource }>,\n fallback: boolean\n): { value: boolean; source: ConfigSource } {\n for (const candidate of candidates) {\n if (candidate.value !== undefined) return { value: candidate.value, source: candidate.source };\n }\n return { value: fallback, source: \"default\" };\n}\n\nfunction validateBaseUrl(baseUrl: string) {\n try {\n new URL(baseUrl);\n } catch {\n throw new Error(`Invalid base URL: ${baseUrl}`);\n }\n}\n\nexport async function resolveRuntimeConfig(overrides: RuntimeConfigOverrides = {}): Promise<ResolvedRuntimeConfig> {\n const projectConfigPath = path.join(workspaceRoot(), \".studioflow\", \"config.json\");\n const userConfigPath = path.join(getStudioflowDataDir(), \"config.json\");\n\n const [project, user] = await Promise.all([\n readConfigFile(projectConfigPath, `Project config (${projectConfigPath})`),\n readConfigFile(userConfigPath, `User config (${userConfigPath})`)\n ]);\n\n const bootstrapPathField = chooseString(\n [\n { value: overrides.bootstrapReportPath, source: \"flag\" },\n { value: project.config.bootstrapReport, source: \"project-config\" },\n { value: user.config.bootstrapReport, source: \"user-config\" }\n ],\n \"artifacts/bootstrap.json\"\n );\n const bootstrapReportPath = resolveFromWorkspace(bootstrapPathField.value);\n\n let bootstrap:\n | {\n startCommand: string;\n healthPath: string;\n }\n | null = null;\n\n try {\n const raw = await fs.readFile(bootstrapReportPath, \"utf8\");\n const parsed = bootstrapReportSchema.parse(JSON.parse(raw));\n bootstrap = { startCommand: parsed.startCommand, healthPath: parsed.healthPath };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code !== \"ENOENT\") {\n throw error;\n }\n }\n\n const baseUrl = chooseString(\n [\n { value: overrides.baseUrl, source: \"flag\" },\n { value: project.config.baseUrl, source: \"project-config\" },\n { value: user.config.baseUrl, source: \"user-config\" }\n ],\n \"http://localhost:4173\"\n );\n\n const startCommand = chooseOptional([\n { value: overrides.startCommand, source: \"flag\" },\n { value: project.config.startCommand, source: \"project-config\" },\n { value: user.config.startCommand, source: \"user-config\" },\n { value: bootstrap?.startCommand, source: \"bootstrap\" }\n ]);\n\n const healthPath = chooseString(\n [\n { value: overrides.healthPath, source: \"flag\" },\n { value: project.config.healthPath, source: \"project-config\" },\n { value: user.config.healthPath, source: \"user-config\" },\n { value: bootstrap?.healthPath, source: \"bootstrap\" }\n ],\n \"/api/health\"\n );\n\n const headless = chooseBoolean(\n [\n { value: overrides.headless, source: \"flag\" },\n { value: project.config.headless, source: \"project-config\" },\n { value: user.config.headless, source: \"user-config\" }\n ],\n false\n );\n\n const recorder = chooseString(\n [\n { value: overrides.recorder, source: \"flag\" },\n { value: project.config.recorder, source: \"project-config\" },\n { value: user.config.recorder, source: \"user-config\" }\n ],\n \"quicktime\"\n );\n\n const runsDir = chooseString(\n [\n { value: overrides.runsDir, source: \"flag\" },\n { value: project.config.runsDir, source: \"project-config\" },\n { value: user.config.runsDir, source: \"user-config\" }\n ],\n path.join(getStudioflowDataDir(), \"runs\")\n );\n\n validateBaseUrl(baseUrl.value);\n\n return {\n values: {\n baseUrl: baseUrl.value,\n startCommand: startCommand.value,\n healthPath: healthPath.value,\n headless: headless.value,\n recorder: recorder.value as RecorderBackend,\n runsDir: runsDir.value\n },\n sources: {\n baseUrl: baseUrl.source,\n startCommand: startCommand.source,\n healthPath: healthPath.source,\n headless: headless.source,\n recorder: recorder.source,\n runsDir: runsDir.source\n },\n files: {\n projectConfigPath,\n projectConfigExists: project.exists,\n userConfigPath,\n userConfigExists: user.exists,\n bootstrapReportPath,\n bootstrapReportLoaded: Boolean(bootstrap)\n }\n };\n}\n\nexport async function configShowCommand(opts: { json?: boolean; overrides?: RuntimeConfigOverrides } = {}) {\n const resolved = await resolveRuntimeConfig(opts.overrides);\n if (opts.json) {\n console.log(JSON.stringify(resolved, null, 2));\n return resolved;\n }\n\n console.log(kleur.bold(\"StudioFlow configuration\"));\n console.log(`- baseUrl: ${resolved.values.baseUrl} (${resolved.sources.baseUrl})`);\n console.log(\n `- startCommand: ${resolved.values.startCommand ?? \"(not configured)\"} (${resolved.sources.startCommand})`\n );\n console.log(`- healthPath: ${resolved.values.healthPath} (${resolved.sources.healthPath})`);\n console.log(`- headless: ${String(resolved.values.headless)} (${resolved.sources.headless})`);\n console.log(`- recorder: ${resolved.values.recorder} (${resolved.sources.recorder})`);\n console.log(`- runsDir: ${resolved.values.runsDir} (${resolved.sources.runsDir})`);\n console.log(`- project config: ${resolved.files.projectConfigPath} (${resolved.files.projectConfigExists ? \"found\" : \"missing\"})`);\n console.log(`- user config: ${resolved.files.userConfigPath} (${resolved.files.userConfigExists ? \"found\" : \"missing\"})`);\n console.log(\n `- bootstrap report: ${resolved.files.bootstrapReportPath} (${resolved.files.bootstrapReportLoaded ? \"loaded\" : \"missing\"})`\n );\n return resolved;\n}\n\nexport async function configCheckCommand(opts: { json?: boolean; overrides?: RuntimeConfigOverrides } = {}) {\n const resolved = await resolveRuntimeConfig(opts.overrides);\n const warnings: string[] = [];\n\n if (!resolved.values.startCommand) {\n warnings.push(\"No startCommand resolved. Runs will require the app to already be healthy at baseUrl/healthPath.\");\n }\n if (!resolved.files.bootstrapReportLoaded) {\n warnings.push(\n `Bootstrap report not found at ${resolved.files.bootstrapReportPath}. Run \\`studioflow bootstrap\\` for project hints.`\n );\n }\n\n if (opts.json) {\n console.log(\n JSON.stringify(\n {\n ok: true,\n warnings,\n config: resolved\n },\n null,\n 2\n )\n );\n return { ok: true, warnings, config: resolved };\n }\n\n console.log(kleur.green(\"Configuration check passed.\"));\n console.log(`- baseUrl: ${resolved.values.baseUrl}`);\n console.log(`- healthPath: ${resolved.values.healthPath}`);\n console.log(`- headless: ${String(resolved.values.headless)}`);\n console.log(`- recorder: ${resolved.values.recorder}`);\n console.log(`- runsDir: ${resolved.values.runsDir}`);\n if (warnings.length > 0) {\n console.log(kleur.yellow(\"Warnings:\"));\n for (const warning of warnings) {\n console.log(`- ${warning}`);\n }\n }\n\n return { ok: true, warnings, config: resolved };\n}\n", "import path from \"node:path\";\n\nexport function workspaceRoot() {\n return process.env.INIT_CWD ? path.resolve(process.env.INIT_CWD) : process.cwd();\n}\n\nexport function resolveFromWorkspace(inputPath: string) {\n if (!inputPath) return workspaceRoot();\n return path.isAbsolute(inputPath) ? inputPath : path.resolve(workspaceRoot(), inputPath);\n}\n", "import os from \"node:os\";\nimport path from \"node:path\";\n\nexport function getStudioflowDataDir() {\n const configured = process.env.STUDIOFLOW_DATA_DIR ?? process.env.STUDIOFLOW_HOME;\n if (configured && configured.trim()) {\n return path.resolve(configured);\n }\n return path.join(os.homedir(), \".studioflow\");\n}\n\nfunction resolveAgentHome(envVar: string, defaultDir: string) {\n const configured = process.env[envVar];\n return configured && configured.trim() ? path.resolve(configured) : path.join(os.homedir(), defaultDir);\n}\n\nexport function getCodexSkillsDir() {\n return path.join(resolveAgentHome(\"CODEX_HOME\", \".codex\"), \"skills\");\n}\n\nexport function getClaudeSkillsDir() {\n return path.join(resolveAgentHome(\"CLAUDE_HOME\", \".claude\"), \"skills\");\n}\n", "import type { FlowDefinition, FlowStep } from \"@studioflow/contracts\";\n\nexport interface FlowValidationResult {\n valid: boolean;\n errors: string[];\n warnings: string[];\n}\n\nfunction validateStep(step: FlowStep, index: number) {\n const errors: string[] = [];\n const warnings: string[] = [];\n const at = `step[${index}] (${step.id})`;\n\n if ([\"click\", \"type\", \"assert_visible\"].includes(step.action) && !step.target) {\n errors.push(`${at}: action ${step.action} requires target`);\n }\n\n if ([\"assert_text\"].includes(step.action) && !step.value) {\n errors.push(`${at}: action ${step.action} requires value`);\n }\n\n if (step.action === \"wait_for\" && !step.target && !step.value) {\n errors.push(`${at}: action wait_for requires target or value`);\n }\n\n const pacingFields: Array<keyof FlowStep> = [\"preDelayMs\", \"postDelayMs\", \"mouseMoveMs\", \"highlightMs\", \"dwellMs\"];\n for (const field of pacingFields) {\n const value = step[field];\n if (typeof value === \"number\" && value > 20_000) {\n warnings.push(`${at}: ${field} is very high (${value}ms)`);\n }\n }\n\n return { errors, warnings };\n}\n\nexport function validateFlowDefinition(flow: FlowDefinition): FlowValidationResult {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (flow.steps.length === 0) {\n errors.push(\"flow has no steps\");\n }\n\n flow.steps.forEach((step, index) => {\n const result = validateStep(step, index);\n errors.push(...result.errors);\n warnings.push(...result.warnings);\n });\n\n return {\n valid: errors.length === 0,\n errors,\n warnings\n };\n}\n", "import kleur from \"kleur\";\nimport { ensureAutomationPermissions } from \"@studioflow/adapters-desktop\";\nimport { activateScreenStudio, listRecordMenuItems } from \"@studioflow/adapters-screenstudio\";\n\nexport const defaultScreenStudioAppName = process.env.SCREENSTUDIO_APP_NAME ?? \"Screen Studio\";\n\nexport interface ScreenStudioPrepOptions {\n appName?: string;\n ensurePermissions?: boolean;\n quiet?: boolean;\n}\n\nexport interface ScreenStudioPrepResult {\n appName: string;\n recordMenuItems: string[];\n}\n\nexport function hasRecordingEntry(items: string[]) {\n return items.includes(\"Record display\") || items.includes(\"Stop recording\");\n}\n\nexport async function runScreenStudioPreflight(\n opts: ScreenStudioPrepOptions = {}\n): Promise<ScreenStudioPrepResult> {\n const appName = opts.appName ?? defaultScreenStudioAppName;\n const ensurePermissions = opts.ensurePermissions ?? true;\n\n if (ensurePermissions) {\n await ensureAutomationPermissions();\n }\n\n await activateScreenStudio(appName);\n const items = await listRecordMenuItems(appName);\n\n if (items.length === 0) {\n throw new Error(\n `Screen Studio Record menu is empty for app \"${appName}\". Ensure Screen Studio is running and menu automation is allowed.`\n );\n }\n\n if (!hasRecordingEntry(items)) {\n throw new Error(\n `Screen Studio Record menu does not expose expected recording actions for \"${appName}\". Found: ${items.join(\", \")}`\n );\n }\n\n const result = {\n appName,\n recordMenuItems: items\n };\n\n if (!opts.quiet) {\n console.log(kleur.green(\"Screen Studio prep passed.\"));\n console.log(`- App: ${appName}`);\n console.log(`- Record menu items: ${items.join(\", \")}`);\n }\n\n return result;\n}\n\nexport async function screenstudioPrepCommand(appName = defaultScreenStudioAppName) {\n await runScreenStudioPreflight({ appName, ensurePermissions: true, quiet: false });\n}\n", "import kleur from \"kleur\";\nimport { ensureAutomationPermissions, activateQuickTime, listQuickTimeFileMenuItems } from \"@studioflow/adapters-desktop\";\n\nexport const defaultQuickTimeAppName = process.env.QUICKTIME_APP_NAME ?? \"QuickTime Player\";\n\nexport interface QuickTimePrepOptions {\n appName?: string;\n ensurePermissions?: boolean;\n quiet?: boolean;\n}\n\nexport interface QuickTimePrepResult {\n appName: string;\n fileMenuItems: string[];\n}\n\nexport function hasScreenRecordingEntry(items: string[]) {\n return items.some((item) => item.toLowerCase().includes(\"new screen recording\"));\n}\n\nexport async function runQuickTimePreflight(opts: QuickTimePrepOptions = {}): Promise<QuickTimePrepResult> {\n const appName = opts.appName ?? defaultQuickTimeAppName;\n const ensurePermissions = opts.ensurePermissions ?? true;\n\n if (ensurePermissions) {\n await ensureAutomationPermissions();\n }\n\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n\n if (items.length === 0) {\n throw new Error(\n `QuickTime File menu is empty for app \"${appName}\". Ensure QuickTime Player is running and menu automation is allowed.`\n );\n }\n\n if (!hasScreenRecordingEntry(items)) {\n throw new Error(\n `QuickTime File menu does not expose \"New Screen Recording\" for \"${appName}\". Found: ${items.join(\", \")}`\n );\n }\n\n const result = {\n appName,\n fileMenuItems: items\n };\n\n if (!opts.quiet) {\n console.log(kleur.green(\"QuickTime prep passed.\"));\n console.log(`- App: ${appName}`);\n console.log(`- File menu items: ${items.join(\", \")}`);\n }\n\n return result;\n}\n\nexport async function quicktimePrepCommand(appName = defaultQuickTimeAppName) {\n await runQuickTimePreflight({ appName, ensurePermissions: true, quiet: false });\n}\n", "import kleur from \"kleur\";\nimport { loadFlows } from \"@studioflow/flow-registry\";\n\nexport async function listFlowsCommand() {\n const flows = await loadFlows();\n console.log(kleur.bold(\"Available deterministic flows:\"));\n for (const flow of flows) {\n console.log(`- ${flow.id}: ${flow.description}`);\n }\n}\n", "import kleur from \"kleur\";\nimport {\n checkPermissions,\n openPermissionSettings,\n triggerPermissionPrompts\n} from \"@studioflow/adapters-desktop\";\n\nexport async function doctorCommand() {\n const permissions = await checkPermissions();\n\n const checks = [\n {\n name: \"Screen Studio installed (optional)\",\n ok: permissions.screenStudioInstalled,\n required: false\n },\n {\n name: \"AppleScript available\",\n ok: permissions.canRunAppleScript,\n required: true\n },\n {\n name: \"Keystroke automation allowed\",\n ok: permissions.canSendKeystrokes,\n required: true\n }\n ];\n\n for (const check of checks) {\n const mark = check.ok ? kleur.green(\"PASS\") : check.required ? kleur.red(\"FAIL\") : kleur.yellow(\"WARN\");\n console.log(`${mark} ${check.name}`);\n }\n\n if (permissions.notes.length > 0) {\n console.log(kleur.yellow(\"Notes:\"));\n for (const note of permissions.notes) {\n console.log(`- ${note}`);\n }\n }\n\n const failed = checks.filter((c) => c.required && !c.ok);\n if (failed.length > 0) {\n await triggerPermissionPrompts();\n await openPermissionSettings();\n throw new Error(\n \"Doctor checks failed. Permission prompts were triggered and settings panes were opened. Approve access, then rerun doctor.\"\n );\n }\n\n console.log(kleur.green(\"Doctor checks passed.\"));\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { loadFlows } from \"@studioflow/flow-registry\";\nimport { structureReportSchema, navigationGraphSchema, type NavigationGraph, type StructureReport } from \"@studioflow/contracts\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\n\nasync function walk(dir: string, acc: string[] = []) {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if ([\"node_modules\", \".next\", \".git\", \"dist\", \".runs\"].includes(entry.name)) continue;\n const fullPath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n await walk(fullPath, acc);\n } else {\n acc.push(fullPath);\n }\n }\n return acc;\n}\n\nfunction routeFromAppFile(filePath: string): string | null {\n const normalized = filePath.replace(/\\\\/g, \"/\");\n const idx = normalized.indexOf(\"/app/\");\n if (idx === -1 || !normalized.endsWith(\"/page.tsx\")) return null;\n const routePart = normalized.slice(idx + 5, normalized.length - \"/page.tsx\".length);\n if (!routePart) return \"/\";\n return `/${routePart}`;\n}\n\nfunction normalizeTargetRoute(target: string): string | null {\n if (!target.startsWith(\"/\")) return null;\n const withoutQuery = target.split(\"?\")[0];\n if (!withoutQuery) return null;\n return withoutQuery;\n}\n\nfunction detectProjectType(pkg: Record<string, unknown>, files: string[]): \"nextjs\" | \"vite-react\" | \"unknown\" {\n const deps = {\n ...(typeof pkg.dependencies === \"object\" && pkg.dependencies ? (pkg.dependencies as Record<string, unknown>) : {}),\n ...(typeof pkg.devDependencies === \"object\" && pkg.devDependencies\n ? (pkg.devDependencies as Record<string, unknown>)\n : {})\n };\n\n if (deps.next || files.some((file) => file.includes(\"/app/\") && file.endsWith(\"/page.tsx\"))) {\n return \"nextjs\";\n }\n if (deps.vite && deps.react) {\n return \"vite-react\";\n }\n return \"unknown\";\n}\n\nasync function detectPackageManager(root: string): Promise<string> {\n const lockfiles = [\n { name: \"pnpm\", file: \"pnpm-lock.yaml\" },\n { name: \"npm\", file: \"package-lock.json\" },\n { name: \"yarn\", file: \"yarn.lock\" }\n ];\n\n for (const lock of lockfiles) {\n try {\n await fs.access(path.join(root, lock.file));\n return lock.name;\n } catch {\n // Keep checking.\n }\n }\n\n return \"unknown\";\n}\n\nfunction deriveStartCommands(pkg: Record<string, unknown>, packageManager: string) {\n const scripts =\n typeof pkg.scripts === \"object\" && pkg.scripts ? (pkg.scripts as Record<string, unknown>) : ({} as Record<string, unknown>);\n const pmRun = packageManager === \"npm\" ? \"npm run\" : packageManager === \"yarn\" ? \"yarn\" : \"pnpm\";\n const commands: string[] = [];\n\n if (typeof scripts[\"dev:sample\"] === \"string\") commands.push(`${pmRun} dev:sample`);\n if (typeof scripts.dev === \"string\") commands.push(`${pmRun} dev`);\n if (typeof scripts.start === \"string\") commands.push(`${pmRun} start`);\n\n if (commands.length === 0) {\n commands.push(\"pnpm dev:sample\", \"pnpm dev\");\n }\n\n return commands;\n}\n\nfunction inferEdgesFromSource(\n sourceRoute: string,\n sourceFile: string,\n content: string,\n knownRoutes: Set<string>\n): NavigationGraph[\"edges\"] {\n const edges: NavigationGraph[\"edges\"] = [];\n const addEdge = (to: string, via: string, confidence: number, evidence: string) => {\n if (!knownRoutes.has(to)) return;\n edges.push({ from: sourceRoute, to, via, confidence, evidence });\n };\n\n const hrefRegex = /\\bhref\\s*=\\s*[\"'`]([^\"'`]+)[\"'`]/g;\n for (const match of content.matchAll(hrefRegex)) {\n const raw = match[1];\n const to = normalizeTargetRoute(raw);\n if (!to) continue;\n addEdge(to, `href:${raw}`, 0.95, `${path.basename(sourceFile)} -> href=\"${raw}\"`);\n }\n\n const routerPushRegex = /router\\.push\\(\\s*[\"'`]([^\"'`]+)[\"'`]\\s*\\)/g;\n for (const match of content.matchAll(routerPushRegex)) {\n const raw = match[1];\n const to = normalizeTargetRoute(raw);\n if (!to) continue;\n addEdge(to, `router.push:${raw}`, 0.92, `${path.basename(sourceFile)} -> router.push(\"${raw}\")`);\n }\n\n const routerPushTemplateRegex = /router\\.push\\(\\s*`([^`]+)`\\s*\\)/g;\n for (const match of content.matchAll(routerPushTemplateRegex)) {\n const raw = match[1];\n const to = normalizeTargetRoute(raw);\n if (!to) continue;\n addEdge(to, `router.push:${raw}`, 0.88, `${path.basename(sourceFile)} -> router.push(\\`${raw}\\`)`);\n }\n\n return edges;\n}\n\nexport async function discoverCommand(outDir = \"artifacts\") {\n const root = workspaceRoot();\n const files = await walk(root);\n const pkgPath = path.join(root, \"package.json\");\n const pkg = JSON.parse(await fs.readFile(pkgPath, \"utf8\"));\n const packageManager = await detectPackageManager(root);\n const projectType = detectProjectType(pkg, files);\n\n const frameworkHints = [\n pkg.dependencies?.next || pkg.devDependencies?.next ? \"nextjs\" : null,\n pkg.dependencies?.react || pkg.devDependencies?.react ? \"react\" : null,\n files.some((f) => f.endsWith(\"playwright.config.ts\")) ? \"playwright\" : null\n ].filter(Boolean) as string[];\n\n const routeFiles = files.filter((f) => f.endsWith(\"/page.tsx\") && f.includes(\"/app/\"));\n const routes = routeFiles\n .map((file) => ({ route: routeFromAppFile(file), file: path.relative(root, file) }))\n .filter((item): item is { route: string; file: string } => Boolean(item.route));\n\n const componentFiles = files\n .filter((f) => /\\/components\\/.+\\.(tsx|ts|jsx|js)$/.test(f.replace(/\\\\/g, \"/\")))\n .map((file) => ({ name: path.basename(file).replace(/\\.(tsx|ts|jsx|js)$/, \"\"), file: path.relative(root, file) }));\n\n const flows = await loadFlows();\n\n const structureReport: StructureReport = {\n generatedAt: new Date().toISOString(),\n projectRoot: root,\n packageManager,\n projectType,\n frameworkHints,\n startCommands: [...deriveStartCommands(pkg, packageManager), \"pnpm demo -- \\\"<intent>\\\"\"],\n routes,\n components: componentFiles,\n existingFlowIds: flows.map((f) => f.id),\n notes: [\n \"Generated by studioflow discover.\",\n \"Use this report as context for the studioflow-investigate skill.\"\n ]\n };\n\n const routeSet = new Set(routes.map((route) => route.route));\n const routeFilesWithPaths = routes.map((route) => ({\n route: route.route,\n filePath: path.join(root, route.file),\n file: route.file\n }));\n\n const inferredEdges: NavigationGraph[\"edges\"] = [];\n for (const routeFile of routeFilesWithPaths) {\n const raw = await fs.readFile(routeFile.filePath, \"utf8\");\n inferredEdges.push(...inferEdgesFromSource(routeFile.route, routeFile.filePath, raw, routeSet));\n }\n\n const deduped = Array.from(\n new Map(inferredEdges.map((edge) => [`${edge.from}|${edge.to}|${edge.via}`, edge])).values()\n );\n\n const graph: NavigationGraph = {\n generatedAt: new Date().toISOString(),\n nodes: routes.map((route) => ({ id: route.route, route: route.route, file: route.file })),\n edges: deduped\n };\n\n structureReportSchema.parse(structureReport);\n navigationGraphSchema.parse(graph);\n\n const outputDir = resolveFromWorkspace(outDir);\n await fs.mkdir(outputDir, { recursive: true });\n\n const structurePath = path.join(outputDir, \"structure-report.json\");\n const graphPath = path.join(outputDir, \"navigation-graph.json\");\n\n await fs.writeFile(structurePath, JSON.stringify(structureReport, null, 2), \"utf8\");\n await fs.writeFile(graphPath, JSON.stringify(graph, null, 2), \"utf8\");\n\n console.log(kleur.green(\"Discovery complete.\"));\n console.log(`- Structure report: ${structurePath}`);\n console.log(`- Navigation graph: ${graphPath}`);\n}\n", "import kleur from \"kleur\";\nimport { loadFlowFromFile } from \"@studioflow/flow-registry\";\nimport { validateFlowDefinition } from \"./flow-validation.js\";\nimport { resolveFromWorkspace } from \"./path-utils.js\";\n\nexport async function validateCommand(flowPath: string) {\n if (!flowPath) {\n throw new Error(\"Usage: studioflow validate --flow <path/to/flow.json|yaml>\");\n }\n\n const resolvedPath = resolveFromWorkspace(flowPath);\n const flow = await loadFlowFromFile(resolvedPath);\n const result = validateFlowDefinition(flow);\n\n if (result.warnings.length > 0) {\n console.log(kleur.yellow(`Validation warnings (${result.warnings.length}):`));\n result.warnings.forEach((warning) => console.log(`- ${warning}`));\n }\n\n if (!result.valid) {\n console.log(kleur.red(`Validation errors (${result.errors.length}):`));\n result.errors.forEach((error) => console.log(`- ${error}`));\n throw new Error(\"Flow validation failed\");\n }\n\n console.log(kleur.green(`Flow is valid: ${flow.id}`));\n console.log(`Source: ${resolvedPath}`);\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { bootstrapReportSchema, type BootstrapReport } from \"@studioflow/contracts\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\n\ntype PackageManager = BootstrapReport[\"packageManager\"];\ntype ProjectType = BootstrapReport[\"projectType\"];\n\nasync function detectPackageManager(root: string): Promise<PackageManager> {\n const lockfiles: Array<{ manager: PackageManager; file: string }> = [\n { manager: \"pnpm\", file: \"pnpm-lock.yaml\" },\n { manager: \"npm\", file: \"package-lock.json\" },\n { manager: \"yarn\", file: \"yarn.lock\" }\n ];\n\n for (const lock of lockfiles) {\n try {\n await fs.access(path.join(root, lock.file));\n return lock.manager;\n } catch {\n // Continue checking.\n }\n }\n\n return \"unknown\";\n}\n\nasync function walk(dir: string, acc: string[] = []) {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if ([\"node_modules\", \".next\", \".git\", \"dist\", \".runs\"].includes(entry.name)) continue;\n const fullPath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n await walk(fullPath, acc);\n } else {\n acc.push(fullPath);\n }\n }\n return acc;\n}\n\nfunction detectProjectType(pkg: Record<string, unknown>, files: string[]): ProjectType {\n const deps = {\n ...(typeof pkg.dependencies === \"object\" && pkg.dependencies ? (pkg.dependencies as Record<string, unknown>) : {}),\n ...(typeof pkg.devDependencies === \"object\" && pkg.devDependencies\n ? (pkg.devDependencies as Record<string, unknown>)\n : {})\n };\n\n if (deps.next || files.some((file) => file.includes(\"/app/\") && file.endsWith(\"/page.tsx\"))) {\n return \"nextjs\";\n }\n if (deps.vite && deps.react) {\n return \"vite-react\";\n }\n return \"unknown\";\n}\n\nfunction chooseStartCommand(\n pkg: Record<string, unknown>,\n packageManager: PackageManager\n): { command: string; note?: string } {\n const scripts =\n typeof pkg.scripts === \"object\" && pkg.scripts ? (pkg.scripts as Record<string, unknown>) : ({} as Record<string, unknown>);\n const pmRun = packageManager === \"npm\" ? \"npm run\" : packageManager === \"yarn\" ? \"yarn\" : \"pnpm\";\n\n if (typeof scripts[\"dev:sample\"] === \"string\") return { command: `${pmRun} dev:sample` };\n if (typeof scripts.dev === \"string\") return { command: `${pmRun} dev` };\n if (typeof scripts.start === \"string\") return { command: `${pmRun} start` };\n\n return { command: \"pnpm dev\", note: \"Fallback start command used because package scripts were not detected.\" };\n}\n\nfunction defaultHealthPath(projectType: ProjectType) {\n if (projectType === \"nextjs\") return \"/api/health\";\n return \"/\";\n}\n\nexport async function bootstrapCommand(outPath = \"artifacts/bootstrap.json\") {\n const root = workspaceRoot();\n const pkgPath = path.join(root, \"package.json\");\n const pkg = JSON.parse(await fs.readFile(pkgPath, \"utf8\"));\n const packageManager = await detectPackageManager(root);\n const files = await walk(root);\n const projectType = detectProjectType(pkg, files);\n const chosen = chooseStartCommand(pkg, packageManager);\n const healthPath = defaultHealthPath(projectType);\n\n const report: BootstrapReport = {\n generatedAt: new Date().toISOString(),\n projectRoot: root,\n packageManager,\n projectType,\n startCommand: chosen.command,\n healthPath,\n notes: [\n \"Generated by studioflow bootstrap.\",\n \"Override runtime values with .studioflow/config.json or run command flags.\",\n ...(chosen.note ? [chosen.note] : [])\n ]\n };\n\n const validated = bootstrapReportSchema.parse(report);\n const resolved = resolveFromWorkspace(outPath);\n await fs.mkdir(path.dirname(resolved), { recursive: true });\n await fs.writeFile(resolved, JSON.stringify(validated, null, 2), \"utf8\");\n\n console.log(kleur.green(\"Bootstrap report generated.\"));\n console.log(`- Output: ${resolved}`);\n console.log(`- Start command: ${validated.startCommand}`);\n console.log(`- Health path: ${validated.healthPath}`);\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { checkPermissions } from \"@studioflow/adapters-desktop\";\nimport { ensureChromiumInstalled } from \"@studioflow/adapters-playwright\";\nimport type { SkillsAgentSelection } from \"./install-skills.js\";\nimport { installBundledSkills } from \"./install-skills.js\";\nimport { getStudioflowDataDir } from \"./runtime-paths.js\";\n\nexport interface SetupOptions {\n skipSkills?: boolean;\n forceSkills?: boolean;\n skillsTargetDir?: string;\n skillsAgent?: SkillsAgentSelection;\n codexSkillsTargetDir?: string;\n claudeSkillsTargetDir?: string;\n}\n\nfunction setupStatePath() {\n return path.join(getStudioflowDataDir(), \"setup-state.json\");\n}\n\nasync function writeSetupState(payload: Record<string, unknown>) {\n const statePath = setupStatePath();\n await fs.mkdir(path.dirname(statePath), { recursive: true });\n await fs.writeFile(statePath, JSON.stringify(payload, null, 2), \"utf8\");\n}\n\nexport async function setupCommand(opts: SetupOptions = {}) {\n console.log(kleur.bold(\"StudioFlow setup\"));\n\n const chromium = await ensureChromiumInstalled({ autoInstall: true });\n if (!chromium.installed) {\n throw new Error(\"Chromium installation is required but could not be completed.\");\n }\n\n if (chromium.installedNow) {\n console.log(kleur.green(\"Chromium installed for Playwright.\"));\n } else {\n console.log(kleur.green(\"Chromium already installed for Playwright.\"));\n }\n\n let skillsSummary:\n | {\n sourceDir: string;\n targets: Array<{\n targetId: string;\n targetDir: string;\n installed: string[];\n updated: string[];\n skipped: string[];\n }>;\n }\n | undefined;\n\n if (opts.skipSkills) {\n console.log(kleur.yellow(\"Skipped skill installation (--skip-skills).\"));\n } else {\n skillsSummary = await installBundledSkills({\n force: opts.forceSkills,\n targetDir: opts.skillsTargetDir,\n agent: opts.skillsAgent,\n codexTargetDir: opts.codexSkillsTargetDir,\n claudeTargetDir: opts.claudeSkillsTargetDir\n });\n\n console.log(kleur.green(\"Skills synchronized.\"));\n for (const target of skillsSummary.targets) {\n const label = target.targetId === \"custom\" ? \"custom\" : target.targetId;\n console.log(`- Target (${label}): ${target.targetDir}`);\n if (target.installed.length > 0) {\n console.log(`- Installed (${label}): ${target.installed.join(\", \")}`);\n }\n if (target.updated.length > 0) {\n console.log(`- Updated (${label}): ${target.updated.join(\", \")}`);\n }\n if (target.skipped.length > 0) {\n console.log(kleur.yellow(`- Skipped (${label}, up to date): ${target.skipped.join(\", \")}`));\n }\n }\n }\n\n const permissions = await checkPermissions();\n const permissionChecks = [\n { label: \"Screen Studio installed (optional)\", ok: permissions.screenStudioInstalled },\n { label: \"AppleScript available\", ok: permissions.canRunAppleScript },\n { label: \"Keystroke automation allowed\", ok: permissions.canSendKeystrokes }\n ];\n\n console.log(kleur.bold(\"Permission checks\"));\n for (const check of permissionChecks) {\n const mark = check.ok ? kleur.green(\"PASS\") : kleur.yellow(\"WARN\");\n console.log(`- ${mark} ${check.label}`);\n }\n\n if (permissions.notes.length > 0) {\n console.log(kleur.yellow(\"Notes:\"));\n for (const note of permissions.notes) {\n console.log(`- ${note}`);\n }\n console.log(\"Run `studioflow doctor` to trigger permission prompts and open settings panes.\");\n }\n\n await writeSetupState({\n completedAt: new Date().toISOString(),\n chromiumExecutablePath: chromium.executablePath,\n chromiumInstalledNow: chromium.installedNow,\n skills: skillsSummary\n ? {\n targets: skillsSummary.targets.map((target) => ({\n targetId: target.targetId,\n targetDir: target.targetDir,\n installed: target.installed,\n updated: target.updated,\n skipped: target.skipped\n }))\n }\n : { skipped: true }\n });\n\n console.log(kleur.green(\"Setup complete.\"));\n console.log(`- State file: ${setupStatePath()}`);\n}\n", "import { createHash } from \"node:crypto\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport kleur from \"kleur\";\nimport { getClaudeSkillsDir, getCodexSkillsDir } from \"./runtime-paths.js\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst bundledSkillNames = [\"studioflow-cli\", \"studioflow-investigate\"] as const;\nconst skillManifestFile = \"manifest.json\";\nconst skillMetadataFile = \".studioflow-skill.json\";\nconst packageName = \"studioflow\";\n\ntype BundledSkillName = (typeof bundledSkillNames)[number];\n\nexport type SkillsAgent = \"codex\" | \"claude\";\nexport type SkillsAgentSelection = SkillsAgent | \"all\";\n\nexport interface InstallSkillsOptions {\n force?: boolean;\n targetDir?: string;\n agent?: SkillsAgentSelection;\n codexTargetDir?: string;\n claudeTargetDir?: string;\n quiet?: boolean;\n}\n\nexport interface InstallSkillsTargetResult {\n targetId: SkillsAgent | \"custom\";\n targetDir: string;\n installed: string[];\n updated: string[];\n skipped: string[];\n}\n\nexport interface InstallSkillsResult {\n sourceDir: string;\n targets: InstallSkillsTargetResult[];\n}\n\nasync function pathExists(target: string) {\n try {\n await fs.access(target);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface BundledSkillManifestEntry {\n hash: string;\n}\n\ninterface BundledSkillManifest {\n schemaVersion: number;\n packageName: string;\n packageVersion: string;\n skills: Record<string, BundledSkillManifestEntry>;\n}\n\ninterface InstalledSkillMetadata {\n packageName: string;\n cliVersion: string;\n skillHash: string;\n installedAt: string;\n}\n\nfunction toPosixPath(value: string) {\n return value.split(path.sep).join(\"/\");\n}\n\nasync function listFilesRecursively(rootDir: string): Promise<string[]> {\n const entries = await fs.readdir(rootDir, { withFileTypes: true });\n const files: string[] = [];\n\n for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {\n const fullPath = path.join(rootDir, entry.name);\n if (entry.isDirectory()) {\n files.push(...(await listFilesRecursively(fullPath)));\n continue;\n }\n if (entry.isFile()) {\n files.push(fullPath);\n }\n }\n\n return files;\n}\n\nasync function hashDirectoryContents(rootDir: string): Promise<string> {\n const hasher = createHash(\"sha256\");\n const files = await listFilesRecursively(rootDir);\n\n for (const filePath of files) {\n const relativePath = toPosixPath(path.relative(rootDir, filePath));\n hasher.update(relativePath);\n hasher.update(\"\\n\");\n hasher.update(await fs.readFile(filePath));\n hasher.update(\"\\n\");\n }\n\n return hasher.digest(\"hex\");\n}\n\nasync function resolveCliPackageVersion(sourceDir: string): Promise<string> {\n const candidates = [\n path.resolve(sourceDir, \"../package.json\"),\n path.resolve(__dirname, \"../../package.json\"),\n path.resolve(process.cwd(), \"apps/cli/package.json\")\n ];\n\n for (const candidate of candidates) {\n try {\n const raw = await fs.readFile(candidate, \"utf8\");\n const parsed = JSON.parse(raw) as {\n name?: string;\n version?: string;\n };\n if (parsed.name === packageName && typeof parsed.version === \"string\") {\n return parsed.version;\n }\n } catch {\n // Try next candidate.\n }\n }\n\n return \"0.0.0\";\n}\n\nfunction isValidManifest(value: unknown): value is BundledSkillManifest {\n if (!value || typeof value !== \"object\") return false;\n const manifest = value as Partial<BundledSkillManifest>;\n if (\n manifest.schemaVersion !== 1 ||\n manifest.packageName !== packageName ||\n typeof manifest.packageVersion !== \"string\" ||\n !manifest.skills ||\n typeof manifest.skills !== \"object\"\n ) {\n return false;\n }\n\n return bundledSkillNames.every((name) => {\n const entry = (manifest.skills as Record<string, unknown>)[name] as Partial<BundledSkillManifestEntry> | undefined;\n return Boolean(entry && typeof entry.hash === \"string\" && entry.hash.length > 0);\n });\n}\n\nasync function resolveBundledSkillsManifest(sourceDir: string): Promise<BundledSkillManifest> {\n const manifestPath = path.join(sourceDir, skillManifestFile);\n if (await pathExists(manifestPath)) {\n try {\n const raw = await fs.readFile(manifestPath, \"utf8\");\n const parsed = JSON.parse(raw) as unknown;\n if (isValidManifest(parsed)) {\n return parsed;\n }\n } catch {\n // Fall back to a computed manifest when the bundled manifest is missing or invalid.\n }\n }\n\n const skills = {} as Record<BundledSkillName, BundledSkillManifestEntry>;\n for (const skillName of bundledSkillNames) {\n const skillPath = path.join(sourceDir, skillName);\n skills[skillName] = {\n hash: await hashDirectoryContents(skillPath)\n };\n }\n\n return {\n schemaVersion: 1,\n packageName,\n packageVersion: await resolveCliPackageVersion(sourceDir),\n skills\n };\n}\n\nasync function readInstalledSkillMetadata(skillDir: string): Promise<InstalledSkillMetadata | null> {\n const metadataPath = path.join(skillDir, skillMetadataFile);\n if (!(await pathExists(metadataPath))) {\n return null;\n }\n\n try {\n const raw = await fs.readFile(metadataPath, \"utf8\");\n const parsed = JSON.parse(raw) as Partial<InstalledSkillMetadata>;\n if (\n typeof parsed.packageName === \"string\" &&\n typeof parsed.cliVersion === \"string\" &&\n typeof parsed.skillHash === \"string\" &&\n typeof parsed.installedAt === \"string\"\n ) {\n return parsed as InstalledSkillMetadata;\n }\n } catch {\n // Treat invalid metadata as stale and reinstall.\n }\n\n return null;\n}\n\nasync function writeInstalledSkillMetadata(\n skillDir: string,\n expectedVersion: string,\n expectedHash: string\n): Promise<void> {\n const metadata: InstalledSkillMetadata = {\n packageName,\n cliVersion: expectedVersion,\n skillHash: expectedHash,\n installedAt: new Date().toISOString()\n };\n\n await fs.writeFile(path.join(skillDir, skillMetadataFile), `${JSON.stringify(metadata, null, 2)}\\n`);\n}\n\nasync function resolveBundledSkillsDir(): Promise<string> {\n // Prefer packaged bundled assets, but keep workspace and legacy fallbacks for local development.\n const candidates = [\n process.env.STUDIOFLOW_SKILLS_SOURCE,\n path.resolve(__dirname, \"../bundled/skills\"),\n path.resolve(__dirname, \"../../bundled/skills\"),\n path.resolve(__dirname, \"../skills\"),\n path.resolve(__dirname, \"../../skills\"),\n path.resolve(__dirname, \"../../../../skills\"),\n path.resolve(process.cwd(), \"skills\")\n ].filter((value): value is string => Boolean(value && value.trim()));\n\n for (const candidate of candidates) {\n const hasAllSkills = await Promise.all(\n bundledSkillNames.map(async (name) => {\n const dir = path.join(candidate, name);\n return pathExists(path.join(dir, \"SKILL.md\"));\n })\n );\n if (hasAllSkills.every(Boolean)) {\n return candidate;\n }\n }\n\n throw new Error(\n `Could not locate bundled skills. Checked: ${candidates.join(\", \")}. Set STUDIOFLOW_SKILLS_SOURCE if needed.`\n );\n}\n\nasync function syncSkillsToTarget(\n sourceDir: string,\n targetDir: string,\n force: boolean,\n manifest: BundledSkillManifest\n) {\n await fs.mkdir(targetDir, { recursive: true });\n\n const installed: string[] = [];\n const updated: string[] = [];\n const skipped: string[] = [];\n\n for (const skillName of bundledSkillNames) {\n const source = path.join(sourceDir, skillName);\n const target = path.join(targetDir, skillName);\n const exists = await pathExists(target);\n const expectedHash = manifest.skills[skillName]?.hash;\n if (!expectedHash) {\n throw new Error(`Missing skill hash in manifest for ${skillName}.`);\n }\n\n if (!exists) {\n await fs.cp(source, target, { recursive: true });\n await writeInstalledSkillMetadata(target, manifest.packageVersion, expectedHash);\n installed.push(skillName);\n continue;\n }\n\n if (force) {\n await fs.rm(target, { recursive: true, force: true });\n await fs.cp(source, target, { recursive: true });\n await writeInstalledSkillMetadata(target, manifest.packageVersion, expectedHash);\n installed.push(skillName);\n continue;\n }\n\n const currentMetadata = await readInstalledSkillMetadata(target);\n const matchesInstalledVersion =\n currentMetadata?.packageName === manifest.packageName &&\n currentMetadata.cliVersion === manifest.packageVersion &&\n currentMetadata.skillHash === expectedHash;\n\n if (matchesInstalledVersion) {\n skipped.push(skillName);\n continue;\n }\n\n await fs.rm(target, { recursive: true, force: true });\n await fs.cp(source, target, { recursive: true });\n await writeInstalledSkillMetadata(target, manifest.packageVersion, expectedHash);\n updated.push(skillName);\n }\n\n return { installed, updated, skipped };\n}\n\nexport async function installBundledSkills(opts: InstallSkillsOptions = {}): Promise<InstallSkillsResult> {\n const sourceDir = await resolveBundledSkillsDir();\n const manifest = await resolveBundledSkillsManifest(sourceDir);\n const force = opts.force ?? false;\n const targets: Array<{ targetId: SkillsAgent | \"custom\"; targetDir: string }> = [];\n\n if (opts.targetDir && (opts.agent || opts.codexTargetDir || opts.claudeTargetDir)) {\n throw new Error(\"Use either --target or --agent/--codex-target/--claude-target options, not both.\");\n }\n\n if (opts.targetDir) {\n targets.push({ targetId: \"custom\", targetDir: path.resolve(opts.targetDir) });\n } else {\n const agent = opts.agent ?? \"all\";\n\n if (agent === \"all\" || agent === \"codex\") {\n targets.push({\n targetId: \"codex\",\n targetDir: opts.codexTargetDir ? path.resolve(opts.codexTargetDir) : getCodexSkillsDir()\n });\n }\n if (agent === \"all\" || agent === \"claude\") {\n targets.push({\n targetId: \"claude\",\n targetDir: opts.claudeTargetDir ? path.resolve(opts.claudeTargetDir) : getClaudeSkillsDir()\n });\n }\n }\n\n const results: InstallSkillsTargetResult[] = [];\n for (const target of targets) {\n const synced = await syncSkillsToTarget(sourceDir, target.targetDir, force, manifest);\n results.push({\n targetId: target.targetId,\n targetDir: target.targetDir,\n installed: synced.installed,\n updated: synced.updated,\n skipped: synced.skipped\n });\n }\n\n return { sourceDir, targets: results };\n}\n\nexport async function installSkillsCommand(opts: InstallSkillsOptions = {}) {\n const result = await installBundledSkills(opts);\n if (opts.quiet) return result;\n\n console.log(kleur.green(\"Skill install complete.\"));\n console.log(`- Source: ${result.sourceDir}`);\n for (const target of result.targets) {\n const label = target.targetId === \"custom\" ? \"custom\" : target.targetId;\n console.log(`- Target (${label}): ${target.targetDir}`);\n if (target.installed.length > 0) {\n console.log(`- Installed (${label}): ${target.installed.join(\", \")}`);\n }\n if (target.updated.length > 0) {\n console.log(`- Updated (${label}): ${target.updated.join(\", \")}`);\n }\n if (target.skipped.length > 0) {\n console.log(kleur.yellow(`- Skipped (${label}, up to date): ${target.skipped.join(\", \")}`));\n }\n }\n if (result.targets.some((target) => target.skipped.length > 0)) {\n console.log(\"Use --force to overwrite existing skill directories.\");\n }\n\n return result;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["fs", "path", "fileURLToPath", "spawn", "require", "fs", "fs", "fs", "path", "fileURLToPath", "util", "objectUtil", "path", "errorUtil", "path", "errorMap", "ctx", "result", "issues", "elements", "processed", "result", "r", "ZodFirstPartyTypeKind", "fileURLToPath", "path", "fs", "fs", "path", "os", "path", "fs", "fs", "path", "path", "fs", "execFile", "fs", "promisify", "execFileAsync", "promisify", "execFile", "fs", "appName", "wait", "quote", "normalizeMenuItem", "appName", "buildPressReturnScript", "wait", "pressReturn", "int", "preConfirmDelay", "postStartDelay", "postStopDelay", "exportDialogConfirmDelay", "exportDelay", "wait", "pressReturn", "run", "path", "fs", "fs", "path", "path", "os", "path", "fs", "path", "appName", "defaultQuickTimeAppName", "appName", "quote", "spawn", "prep", "chromium", "fs", "path", "fs", "path", "fs", "path", "detectPackageManager", "fs", "path", "walk", "detectProjectType", "fs", "path", "fs", "path", "fileURLToPath", "__dirname", "path", "fileURLToPath", "fs", "rootDir", "path", "fs", "chromium", "path", "fileURLToPath", "fs", "appName"]
|
|
4
|
+
"sourcesContent": ["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport kleur from \"kleur\";\nimport type { RecorderBackend } from \"@studioflow/contracts\";\nimport { runFlowFileCommand, type RunCommandOptions } from \"./commands/run.js\";\nimport { listFlowsCommand } from \"./commands/list-flows.js\";\nimport { doctorCommand } from \"./commands/doctor.js\";\nimport { discoverCommand } from \"./commands/discover.js\";\nimport { validateCommand } from \"./commands/validate.js\";\nimport { bootstrapCommand } from \"./commands/bootstrap.js\";\nimport { screenstudioPrepCommand } from \"./commands/screenstudio-prep.js\";\nimport { quicktimePrepCommand } from \"./commands/quicktime-prep.js\";\nimport { setupCommand } from \"./commands/setup.js\";\nimport type { SkillsAgentSelection } from \"./commands/install-skills.js\";\nimport { installSkillsCommand } from \"./commands/install-skills.js\";\nimport type { RuntimeConfigOverrides } from \"./commands/config.js\";\nimport { configCheckCommand, configShowCommand } from \"./commands/config.js\";\n\nlet cachedVersion: string | null = null;\n\nasync function cliVersion() {\n if (cachedVersion) return cachedVersion;\n const dirname = path.dirname(fileURLToPath(import.meta.url));\n const packageJsonPath = path.resolve(dirname, \"../package.json\");\n const raw = await fs.readFile(packageJsonPath, \"utf8\");\n const parsed = JSON.parse(raw) as { version?: string };\n cachedVersion = parsed.version ?? \"0.0.0\";\n return cachedVersion;\n}\n\nfunction hasFlag(args: string[], flag: string) {\n return args.includes(flag);\n}\n\nfunction parseBoolean(raw: string, flag: string) {\n if (raw === \"true\") return true;\n if (raw === \"false\") return false;\n throw new Error(`Invalid ${flag} value: ${raw}. Expected true or false.`);\n}\n\nfunction readFlagValue(args: string[], flag: string) {\n const index = args.indexOf(flag);\n if (index === -1) return undefined;\n const value = args[index + 1];\n if (!value || value.startsWith(\"--\")) {\n throw new Error(`Flag ${flag} requires a value.`);\n }\n return value;\n}\n\nfunction parseRecorder(raw: string | undefined, flag: string): RecorderBackend | undefined {\n if (raw === undefined) return undefined;\n if (raw === \"quicktime\" || raw === \"screenstudio\") {\n return raw;\n }\n throw new Error(`Invalid ${flag} value: ${raw}. Expected quicktime or screenstudio.`);\n}\n\nfunction parseRuntimeConfigOverrides(args: string[]): RuntimeConfigOverrides {\n const headlessRaw = readFlagValue(args, \"--headless\");\n\n return {\n baseUrl: readFlagValue(args, \"--base-url\"),\n startCommand: readFlagValue(args, \"--start-command\"),\n healthPath: readFlagValue(args, \"--health-path\"),\n bootstrapReportPath: readFlagValue(args, \"--bootstrap-report\"),\n runsDir: readFlagValue(args, \"--runs-dir\"),\n recorder: parseRecorder(readFlagValue(args, \"--recorder\"), \"--recorder\"),\n headless: headlessRaw ? parseBoolean(headlessRaw, \"--headless\") : undefined\n };\n}\n\nfunction parseRunCommandOptions(args: string[]): RunCommandOptions {\n const allowExportRaw = readFlagValue(args, \"--allow-export\");\n const allowUnsafeStartCommandRaw = readFlagValue(args, \"--allow-unsafe-start-command\");\n return {\n allowExport: allowExportRaw ? parseBoolean(allowExportRaw, \"--allow-export\") : undefined,\n allowUnsafeStartCommand: allowUnsafeStartCommandRaw\n ? parseBoolean(allowUnsafeStartCommandRaw, \"--allow-unsafe-start-command\")\n : undefined\n };\n}\n\nfunction parseSkillsAgent(raw: string | undefined, flag: string): SkillsAgentSelection | undefined {\n if (raw === undefined) return undefined;\n if (raw === \"codex\" || raw === \"claude\" || raw === \"all\") {\n return raw;\n }\n throw new Error(`Invalid ${flag} value: ${raw}. Expected codex, claude, or all.`);\n}\n\nasync function main() {\n const [, , command = \"run\", ...args] = process.argv;\n const normalizedArgs = args.filter((arg) => arg !== \"--\");\n\n try {\n if (command === \"version\" || command === \"--version\" || command === \"-v\") {\n console.log(await cliVersion());\n return;\n }\n\n if (command === \"run\" || command === \"demo\") {\n const flowPath = readFlagValue(normalizedArgs, \"--flow\");\n if (!flowPath) {\n throw new Error(\n 'Usage: studioflow run --flow <path/to/flow.json|yaml> [--intent \"<label>\"] [--allow-export <true|false>] [--allow-unsafe-start-command <true|false>] [--base-url <url>] [--start-command \"<command>\"] [--health-path <path>] [--headless <true|false>] [--recorder <quicktime|screenstudio>] [--bootstrap-report <path>] [--runs-dir <path>]'\n );\n }\n\n const sourceIntent = readFlagValue(normalizedArgs, \"--intent\") ?? \"artifact flow\";\n const runtimeOverrides = parseRuntimeConfigOverrides(normalizedArgs);\n const runOptions = parseRunCommandOptions(normalizedArgs);\n await runFlowFileCommand(flowPath, sourceIntent, runtimeOverrides, runOptions);\n return;\n }\n\n if (command === \"config\") {\n const subcommand = normalizedArgs[0] && !normalizedArgs[0].startsWith(\"--\") ? normalizedArgs[0] : \"show\";\n const commandArgs = normalizedArgs[0] === subcommand ? normalizedArgs.slice(1) : normalizedArgs;\n const json = hasFlag(commandArgs, \"--json\");\n const runtimeOverrides = parseRuntimeConfigOverrides(commandArgs);\n\n if (subcommand === \"show\") {\n await configShowCommand({ json, overrides: runtimeOverrides });\n return;\n }\n\n if (subcommand === \"check\") {\n await configCheckCommand({ json, overrides: runtimeOverrides });\n return;\n }\n\n throw new Error(\n \"Usage: studioflow config <show|check> [--json] [--base-url <url>] [--start-command <command>] [--health-path <path>] [--headless <true|false>] [--recorder <quicktime|screenstudio>] [--bootstrap-report <path>] [--runs-dir <path>]\"\n );\n }\n\n if (command === \"discover\") {\n const outDir = readFlagValue(normalizedArgs, \"--out\") ?? \"artifacts\";\n await discoverCommand(outDir);\n return;\n }\n\n if (command === \"bootstrap\") {\n const outPath = readFlagValue(normalizedArgs, \"--out\") ?? \"artifacts/bootstrap.json\";\n await bootstrapCommand(outPath);\n return;\n }\n\n if (command === \"screenstudio-prep\") {\n const appName = readFlagValue(normalizedArgs, \"--app-name\");\n await screenstudioPrepCommand(appName);\n return;\n }\n\n if (command === \"quicktime-prep\") {\n const appName = readFlagValue(normalizedArgs, \"--app-name\");\n await quicktimePrepCommand(appName);\n return;\n }\n\n if (command === \"setup\") {\n await setupCommand({\n skipSkills: hasFlag(normalizedArgs, \"--skip-skills\"),\n forceSkills: hasFlag(normalizedArgs, \"--force-skills\"),\n skillsTargetDir: readFlagValue(normalizedArgs, \"--skills-target\"),\n skillsAgent: parseSkillsAgent(readFlagValue(normalizedArgs, \"--skills-agent\"), \"--skills-agent\"),\n codexSkillsTargetDir: readFlagValue(normalizedArgs, \"--codex-skills-target\"),\n claudeSkillsTargetDir: readFlagValue(normalizedArgs, \"--claude-skills-target\")\n });\n return;\n }\n\n if (command === \"install-skills\") {\n await installSkillsCommand({\n force: hasFlag(normalizedArgs, \"--force\"),\n targetDir: readFlagValue(normalizedArgs, \"--target\"),\n agent: parseSkillsAgent(readFlagValue(normalizedArgs, \"--agent\"), \"--agent\"),\n codexTargetDir: readFlagValue(normalizedArgs, \"--codex-target\"),\n claudeTargetDir: readFlagValue(normalizedArgs, \"--claude-target\"),\n sourceDir: readFlagValue(normalizedArgs, \"--source\"),\n allowExternalSource: hasFlag(normalizedArgs, \"--allow-external-source\")\n });\n return;\n }\n\n if (command === \"validate\") {\n const flowPath = readFlagValue(normalizedArgs, \"--flow\") ?? normalizedArgs[0];\n await validateCommand(flowPath);\n return;\n }\n\n if (command === \"list-flows\") {\n await listFlowsCommand();\n return;\n }\n\n if (command === \"doctor\") {\n await doctorCommand();\n return;\n }\n\n throw new Error(`Unknown command: ${command}`);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n console.error(kleur.red(`StudioFlow error: ${message}`));\n process.exit(1);\n }\n}\n\nmain();\n", "'use strict';\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nexport default $;\n", "import { spawn } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport type { FlowDefinition, RecorderBackend } from \"@studioflow/contracts\";\nimport { ensureChromiumInstalled } from \"@studioflow/adapters-playwright\";\nimport { loadFlowFromFile } from \"@studioflow/flow-registry\";\nimport { runEngine } from \"@studioflow/orchestrator\";\nimport { ensureAutomationPermissions } from \"@studioflow/adapters-desktop\";\nimport type { ResolvedRuntimeConfig, RuntimeConfigOverrides } from \"./config.js\";\nimport { resolveRuntimeConfig } from \"./config.js\";\nimport { validateFlowDefinition } from \"./flow-validation.js\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\nimport { runScreenStudioPreflight } from \"./screenstudio-prep.js\";\nimport { runQuickTimePreflight } from \"./quicktime-prep.js\";\n\ninterface ParsedStartCommand {\n command: string;\n args: string[];\n}\n\nexport interface RunCommandOptions {\n allowExport?: boolean;\n allowUnsafeStartCommand?: boolean;\n}\n\nconst explicitExportIntentMatchers = [\n /\\bexport(?:ed|ing)?\\b/i,\n /\\bdownload(?:ed|ing)?\\b/i,\n /\\bsave(?:\\s+(?:the|to|as|a|an))*\\s+(?:video|recording|file)\\b/i,\n /\\bshareable\\s+link\\b/i,\n /\\bcopy\\s+to\\s+clipboard\\b/i\n];\n\nfunction isWhitespace(char: string) {\n return /\\s/.test(char);\n}\n\nexport function parseStartCommand(raw: string): ParsedStartCommand {\n const tokens: string[] = [];\n let current = \"\";\n let tokenStarted = false;\n let quote: '\"' | \"'\" | null = null;\n let escaped = false;\n\n for (let index = 0; index < raw.length; index += 1) {\n const char = raw[index];\n\n if (escaped) {\n current += char;\n tokenStarted = true;\n escaped = false;\n continue;\n }\n\n if (char === \"\\\\\" && quote !== \"'\") {\n escaped = true;\n tokenStarted = true;\n continue;\n }\n\n if (quote) {\n if (char === quote) {\n quote = null;\n } else {\n current += char;\n }\n tokenStarted = true;\n continue;\n }\n\n if (char === '\"' || char === \"'\") {\n quote = char;\n tokenStarted = true;\n continue;\n }\n\n if (isWhitespace(char)) {\n if (tokenStarted) {\n tokens.push(current);\n current = \"\";\n tokenStarted = false;\n }\n continue;\n }\n\n current += char;\n tokenStarted = true;\n }\n\n if (escaped) {\n throw new Error(\"Start command ends with an escape character.\");\n }\n if (quote) {\n throw new Error(\"Start command contains an unterminated quote.\");\n }\n if (tokenStarted) {\n tokens.push(current);\n }\n if (tokens.length === 0) {\n throw new Error(\"Start command is empty.\");\n }\n\n const [command, ...args] = tokens;\n return { command, args };\n}\n\ninterface StartCommandSafetyResult {\n safe: boolean;\n reason?: string;\n packageManager?: \"pnpm\" | \"npm\" | \"yarn\";\n scriptName?: string;\n}\n\nfunction scriptNameToken(raw: string | undefined) {\n if (!raw) return undefined;\n if (!/^[A-Za-z0-9:_-]+$/.test(raw)) return undefined;\n return raw;\n}\n\nfunction parsePackageManagerScriptInvocation(parsed: ParsedStartCommand): {\n packageManager: \"pnpm\" | \"npm\" | \"yarn\";\n scriptName: string;\n} | null {\n const command = parsed.command.toLowerCase();\n const [arg0, arg1] = parsed.args;\n\n if (command === \"npm\") {\n if (arg0 !== \"run\") return null;\n const scriptName = scriptNameToken(arg1);\n if (!scriptName) return null;\n return { packageManager: \"npm\", scriptName };\n }\n\n if (command === \"pnpm\") {\n if (arg0 === \"run\") {\n const scriptName = scriptNameToken(arg1);\n if (!scriptName) return null;\n return { packageManager: \"pnpm\", scriptName };\n }\n const scriptName = scriptNameToken(arg0);\n if (!scriptName) return null;\n return { packageManager: \"pnpm\", scriptName };\n }\n\n if (command === \"yarn\") {\n if (arg0 === \"run\") {\n const scriptName = scriptNameToken(arg1);\n if (!scriptName) return null;\n return { packageManager: \"yarn\", scriptName };\n }\n const scriptName = scriptNameToken(arg0);\n if (!scriptName) return null;\n return { packageManager: \"yarn\", scriptName };\n }\n\n return null;\n}\n\nasync function readWorkspaceScripts(): Promise<Record<string, unknown>> {\n try {\n const packageJsonPath = path.join(workspaceRoot(), \"package.json\");\n const raw = await fs.readFile(packageJsonPath, \"utf8\");\n const parsed = JSON.parse(raw) as { scripts?: Record<string, unknown> };\n if (!parsed.scripts || typeof parsed.scripts !== \"object\") {\n return {};\n }\n return parsed.scripts;\n } catch {\n return {};\n }\n}\n\nexport async function assessStartCommandSafety(raw: string): Promise<StartCommandSafetyResult> {\n const parsed = parseStartCommand(raw);\n const invocation = parsePackageManagerScriptInvocation(parsed);\n if (!invocation) {\n return {\n safe: false,\n reason:\n 'startCommand must use package-manager script form (e.g. \"pnpm run dev:sample\", \"npm run dev\", or \"yarn run dev\").'\n };\n }\n\n const scripts = await readWorkspaceScripts();\n if (typeof scripts[invocation.scriptName] !== \"string\") {\n return {\n safe: false,\n packageManager: invocation.packageManager,\n scriptName: invocation.scriptName,\n reason: `script \"${invocation.scriptName}\" was not found in workspace package.json scripts.`\n };\n }\n\n return {\n safe: true,\n packageManager: invocation.packageManager,\n scriptName: invocation.scriptName\n };\n}\n\nfunction flowRequestsExport(flows: FlowDefinition[]) {\n return flows.some((flow) => flow.steps.some((step) => step.action === \"recorder_export\"));\n}\n\nfunction parseBooleanFromEnv(name: string, env: NodeJS.ProcessEnv = process.env) {\n const raw = env[name];\n if (!raw) return undefined;\n const normalized = raw.trim().toLowerCase();\n if ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) return true;\n if ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) return false;\n throw new Error(`Invalid ${name} value: ${raw}. Expected true or false.`);\n}\n\nexport function intentAllowsExport(intentLabel: string) {\n const normalized = intentLabel.trim();\n if (!normalized) return false;\n return explicitExportIntentMatchers.some((matcher) => matcher.test(normalized));\n}\n\nfunction resolveExportPermission(intentLabel: string, opts: RunCommandOptions = {}) {\n if (opts.allowExport !== undefined) {\n return opts.allowExport;\n }\n const envOverride = parseBooleanFromEnv(\"STUDIOFLOW_ALLOW_EXPORT\");\n if (envOverride !== undefined) {\n return envOverride;\n }\n return intentAllowsExport(intentLabel);\n}\n\nfunction resolveUnsafeStartCommandPermission(opts: RunCommandOptions = {}) {\n if (opts.allowUnsafeStartCommand !== undefined) {\n return opts.allowUnsafeStartCommand;\n }\n const envOverride = parseBooleanFromEnv(\"STUDIOFLOW_ALLOW_UNSAFE_START_COMMAND\");\n if (envOverride !== undefined) {\n return envOverride;\n }\n return false;\n}\n\nasync function waitForHealth(healthUrl: string, timeoutMs = 45_000) {\n const start = Date.now();\n let lastError: unknown = null;\n\n while (Date.now() - start < timeoutMs) {\n try {\n const response = await fetch(healthUrl);\n if (response.ok) return;\n lastError = new Error(`Health endpoint returned ${response.status}`);\n } catch (error) {\n lastError = error;\n }\n await new Promise((resolve) => setTimeout(resolve, 700));\n }\n\n throw new Error(`Timed out waiting for app health (${healthUrl}): ${String(lastError)}`);\n}\n\nconst startupOutputLimit = 4000;\n\nfunction appendStartupOutput(\n target: string[],\n chunk: Buffer | string,\n stream: \"stdout\" | \"stderr\"\n) {\n const raw = typeof chunk === \"string\" ? chunk : chunk.toString(\"utf8\");\n const withPrefix = raw\n .split(/\\r?\\n/)\n .filter((line) => line.length > 0)\n .map((line) => `[${stream}] ${line}`)\n .join(\"\\n\");\n if (!withPrefix) return;\n target.push(withPrefix);\n}\n\nfunction formatStartupOutput(lines: string[]) {\n if (lines.length === 0) {\n return \"No output captured from start command.\";\n }\n const joined = lines.join(\"\\n\");\n if (joined.length <= startupOutputLimit) {\n return joined;\n }\n return `...${joined.slice(joined.length - startupOutputLimit)}`;\n}\n\nasync function startAppLifecycle(\n baseUrl: string,\n startCommand: string | undefined,\n healthPath: string,\n opts: RunCommandOptions = {}\n): Promise<() => Promise<void>> {\n const healthUrl = new URL(healthPath, baseUrl).toString();\n\n try {\n await waitForHealth(healthUrl, 1800);\n return async () => {};\n } catch {\n // App not running yet, continue and launch it.\n }\n\n if (!startCommand) {\n throw new Error(\n `App is not healthy at ${healthUrl} and no start command is configured. Run \\`studioflow bootstrap\\` or pass --start-command.`\n );\n }\n\n const allowUnsafeStartCommand = resolveUnsafeStartCommandPermission(opts);\n if (!allowUnsafeStartCommand) {\n const safety = await assessStartCommandSafety(startCommand);\n if (!safety.safe) {\n throw new Error(\n `Unsafe start command \"${startCommand}\" blocked: ${safety.reason} Pass --allow-unsafe-start-command true (or STUDIOFLOW_ALLOW_UNSAFE_START_COMMAND=true) to override.`\n );\n }\n }\n\n const parsedStartCommand = parseStartCommand(startCommand);\n const startupOutput: string[] = [];\n const child = spawn(parsedStartCommand.command, parsedStartCommand.args, {\n shell: false,\n cwd: workspaceRoot(),\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n detached: false\n });\n child.stdout?.on(\"data\", (chunk) => appendStartupOutput(startupOutput, chunk, \"stdout\"));\n child.stderr?.on(\"data\", (chunk) => appendStartupOutput(startupOutput, chunk, \"stderr\"));\n\n const startupFailure = new Promise<never>((_, reject) => {\n child.once(\"error\", (error) => {\n reject(\n new Error(\n `Failed to launch start command \"${startCommand}\": ${error.message}.`\n )\n );\n });\n child.once(\"exit\", (code, signal) => {\n reject(\n new Error(\n `Start command \"${startCommand}\" exited before app became healthy (code ${code ?? \"unknown\"}${signal ? `, signal ${signal}` : \"\"}). ${formatStartupOutput(startupOutput)}`\n )\n );\n });\n });\n\n try {\n await Promise.race([waitForHealth(healthUrl, 60_000), startupFailure]);\n } catch (error) {\n if (child.exitCode === null && !child.killed) {\n child.kill(\"SIGTERM\");\n }\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`App startup failed for \"${startCommand}\": ${message}`);\n }\n\n return async () => {\n if (child.exitCode === null && !child.killed) {\n child.kill(\"SIGTERM\");\n }\n };\n}\n\nfunction formatDuration(start: number) {\n return `${((Date.now() - start) / 1000).toFixed(1)}s`;\n}\n\nasync function runRecorderPreflight(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n const prep = await runScreenStudioPreflight({ ensurePermissions: false, quiet: true });\n return {\n label: \"Screen Studio\",\n itemsLabel: \"Record menu\",\n menuItems: prep.recordMenuItems\n };\n }\n\n const prep = await runQuickTimePreflight({ ensurePermissions: false, quiet: true });\n return {\n label: \"QuickTime\",\n itemsLabel: \"File menu\",\n menuItems: prep.fileMenuItems\n };\n}\n\nasync function runWithFlows(\n intentLabel: string,\n flowIds: string[],\n flows: FlowDefinition[],\n runtime: ResolvedRuntimeConfig,\n opts: RunCommandOptions = {}\n) {\n const chromium = await ensureChromiumInstalled({ autoInstall: true });\n if (!chromium.installed) {\n throw new Error(\"Playwright Chromium is not installed. Run `studioflow setup` and retry.\");\n }\n if (chromium.installedNow) {\n console.log(kleur.green(\"Installed Playwright Chromium runtime.\"));\n }\n\n await ensureAutomationPermissions();\n try {\n const prep = await runRecorderPreflight(runtime.values.recorder);\n console.log(`${prep.label} preflight: ready (${prep.itemsLabel}: ${prep.menuItems.join(\", \")})`);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const diagnosticsCommand =\n runtime.values.recorder === \"screenstudio\" ? \"studioflow screenstudio-prep\" : \"studioflow quicktime-prep\";\n throw new Error(`${runtime.values.recorder} preflight failed: ${message}. Run \\`${diagnosticsCommand}\\` for diagnostics.`);\n }\n\n for (const flow of flows) {\n const validation = validateFlowDefinition(flow);\n if (!validation.valid) {\n throw new Error(`Flow ${flow.id} failed validation: ${validation.errors.join(\"; \")}`);\n }\n }\n\n if (flowRequestsExport(flows) && !resolveExportPermission(intentLabel, opts)) {\n throw new Error(\n \"Flow includes recorder_export, but the run intent does not explicitly request export. Remove recorder_export, include export language in --intent, or pass --allow-export true.\"\n );\n }\n\n const started = Date.now();\n\n console.log(kleur.bold(\"StudioFlow Run\"));\n console.log(`Intent: ${intentLabel}`);\n console.log(`Mapped flows: ${flowIds.join(\", \")}`);\n console.log(`Base URL: ${runtime.values.baseUrl}`);\n console.log(`Start command: ${runtime.values.startCommand ?? \"(not configured)\"}`);\n console.log(`Health path: ${runtime.values.healthPath}`);\n console.log(`Headless: ${String(runtime.values.headless)}`);\n console.log(`Recorder: ${runtime.values.recorder}`);\n console.log(`Runs dir: ${runtime.values.runsDir}`);\n\n const previousRunsDir = process.env.STUDIOFLOW_RUNS_DIR;\n process.env.STUDIOFLOW_RUNS_DIR = runtime.values.runsDir;\n try {\n const result = await runEngine({\n intent: intentLabel,\n flows,\n baseUrl: runtime.values.baseUrl,\n headless: runtime.values.headless,\n recorder: runtime.values.recorder,\n startApp: async () =>\n startAppLifecycle(runtime.values.baseUrl, runtime.values.startCommand, runtime.values.healthPath, opts)\n });\n\n console.log(kleur.green(\"Run completed successfully.\"));\n console.log(`Run ID: ${result.runId}`);\n console.log(`Duration: ${formatDuration(started)}`);\n console.log(`Artifacts: ${result.runDir}`);\n } catch (error) {\n const err = error as { message?: string; runDir?: string };\n console.error(kleur.red(`Run failed: ${err.message ?? String(error)}`));\n if (err.runDir) {\n console.error(kleur.yellow(`Artifacts: ${err.runDir}`));\n }\n throw error;\n } finally {\n if (previousRunsDir === undefined) {\n delete process.env.STUDIOFLOW_RUNS_DIR;\n } else {\n process.env.STUDIOFLOW_RUNS_DIR = previousRunsDir;\n }\n }\n}\n\nexport async function runFlowFileCommand(\n flowPath: string,\n sourceIntent = \"artifact flow\",\n overrides?: RuntimeConfigOverrides,\n opts: RunCommandOptions = {}\n) {\n if (!flowPath) {\n throw new Error(\"Usage: studioflow run --flow <path/to/flow.json|yaml>\");\n }\n\n const resolvedPath = resolveFromWorkspace(flowPath);\n const runtime = await resolveRuntimeConfig(overrides);\n const flow = await loadFlowFromFile(resolvedPath);\n await runWithFlows(sourceIntent, [flow.id], [flow], runtime, opts);\n}\n", "import { spawn } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport { createRequire } from \"node:module\";\nimport { chromium, type Browser, type Page } from \"playwright\";\n\nexport interface BrowserSession {\n browser: Browser;\n page: Page;\n}\n\nexport interface ChromiumInstallStatus {\n installed: boolean;\n executablePath: string;\n installedNow: boolean;\n}\n\nexport interface StartBrowserOptions {\n headless?: boolean;\n fullscreen?: boolean;\n}\n\nconst defaultViewport = { width: 1440, height: 960 };\n\nfunction parseBooleanEnv(value: string | undefined): boolean | undefined {\n if (value === undefined) return undefined;\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\" || normalized === \"yes\") return true;\n if (normalized === \"false\" || normalized === \"0\" || normalized === \"no\") return false;\n return undefined;\n}\n\nexport interface ResolvedBrowserLaunch {\n headless: boolean;\n launchArgs: string[] | undefined;\n viewport: { width: number; height: number } | null;\n}\n\nexport function resolveBrowserLaunch(opts: StartBrowserOptions = {}, env: NodeJS.ProcessEnv = process.env): ResolvedBrowserLaunch {\n const headless = opts.headless ?? parseBooleanEnv(env.STUDIOFLOW_HEADLESS) ?? false;\n const fullscreen = opts.fullscreen ?? parseBooleanEnv(env.STUDIOFLOW_BROWSER_FULLSCREEN) ?? !headless;\n const useFullscreen = !headless && fullscreen;\n return {\n headless,\n launchArgs: useFullscreen ? [\"--start-maximized\"] : undefined,\n viewport: useFullscreen ? null : defaultViewport\n };\n}\n\nasync function runPlaywrightCli(args: string[]) {\n const require = createRequire(import.meta.url);\n const cliPath = require.resolve(\"playwright/cli\");\n\n await new Promise<void>((resolve, reject) => {\n const child = spawn(process.execPath, [cliPath, ...args], {\n stdio: \"inherit\",\n env: process.env\n });\n\n child.on(\"error\", reject);\n child.on(\"exit\", (code) => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(new Error(`Playwright CLI exited with code ${code ?? \"unknown\"}.`));\n });\n });\n}\n\nexport async function getChromiumInstallStatus(): Promise<ChromiumInstallStatus> {\n const executablePath = chromium.executablePath();\n try {\n await fs.access(executablePath);\n return { installed: true, executablePath, installedNow: false };\n } catch {\n return { installed: false, executablePath, installedNow: false };\n }\n}\n\nexport async function ensureChromiumInstalled(opts: { autoInstall?: boolean } = {}): Promise<ChromiumInstallStatus> {\n const status = await getChromiumInstallStatus();\n if (status.installed || !opts.autoInstall) {\n return status;\n }\n\n await runPlaywrightCli([\"install\", \"chromium\"]);\n const postInstall = await getChromiumInstallStatus();\n return { ...postInstall, installedNow: postInstall.installed };\n}\n\nexport async function startBrowser(baseUrl: string, opts: StartBrowserOptions = {}): Promise<BrowserSession> {\n const resolved = resolveBrowserLaunch(opts);\n\n const browser = await chromium.launch({\n headless: resolved.headless,\n ...(resolved.launchArgs ? { args: resolved.launchArgs } : {})\n });\n const context = await browser.newContext({\n baseURL: baseUrl,\n viewport: resolved.viewport\n });\n const page = await context.newPage();\n return { browser, page };\n}\n", "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { Page } from \"playwright\";\nimport type { FlowStep } from \"@studioflow/contracts\";\nimport { assertText, assertVisible } from \"./assertions.js\";\n\nfunction wait(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction boolEnv(name: string, fallback: boolean, env: NodeJS.ProcessEnv = process.env) {\n const raw = env[name];\n if (!raw) return fallback;\n const normalized = raw.trim().toLowerCase();\n if ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) return true;\n if ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) return false;\n return fallback;\n}\n\nfunction intEnv(name: string, fallback: number, env: NodeJS.ProcessEnv = process.env) {\n const raw = env[name];\n if (!raw) return fallback;\n const parsed = Number(raw);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nconst maxDelayMs = 60_000;\ntype CursorTheme = \"macos\" | \"generic\";\ninterface CursorOverlayAsset {\n dataUri: string;\n width: number;\n height: number;\n hotspotX: number;\n hotspotY: number;\n}\n\nconst moduleDir = path.dirname(fileURLToPath(import.meta.url));\n\nconst macosCursorSvgDataUri =\n \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2226%22%20height%3D%2236%22%20viewBox%3D%220%200%2026%2036%22%3E%3Cpath%20d%3D%22M2%201.5v26.2l6.7-6.4%204.4%2012.8%204.2-1.6-4.4-12.8h10.8L2%201.5z%22%20fill%3D%22%23111%22%2F%3E%3Cpath%20d%3D%22M4%204.5v18.1l5.1-4.9a1%201%200%200%201%201.6.4l3.7%2010.9%201.4-.5-3.7-10.9a1%201%200%200%201%20.9-1.3h7.8L4%204.5z%22%20fill%3D%22%23fff%22%2F%3E%3C%2Fsvg%3E\";\nconst genericCursorSvgDataUri =\n \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2222%22%20height%3D%2230%22%20viewBox%3D%220%200%2022%2030%22%3E%3Cpath%20d%3D%22M1.5%201.5V22.2L7.4%2017.4L11%2028.5L14.4%2027L10.8%2015.9H19.6L1.5%201.5Z%22%20fill%3D%22white%22%20stroke%3D%22%23000%22%20stroke-width%3D%221.5%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E\";\nconst macosFallbackCursorAsset: CursorOverlayAsset = {\n dataUri: macosCursorSvgDataUri,\n width: 26,\n height: 36,\n hotspotX: 2,\n hotspotY: 1\n};\nconst genericCursorAsset: CursorOverlayAsset = {\n dataUri: genericCursorSvgDataUri,\n width: 22,\n height: 30,\n hotspotX: 2,\n hotspotY: 1\n};\nconst cursorAssetCache = new Map<string, CursorOverlayAsset>();\n\nfunction cursorThemeEnv(env: NodeJS.ProcessEnv = process.env): CursorTheme {\n const raw = env.STUDIOFLOW_CURSOR_THEME?.trim().toLowerCase();\n if (raw === \"generic\") return \"generic\";\n return \"macos\";\n}\n\nfunction parsePngDimensions(buffer: Buffer) {\n if (buffer.length < 24) return null;\n const pngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n for (let index = 0; index < pngHeader.length; index += 1) {\n if (buffer[index] !== pngHeader[index]) {\n return null;\n }\n }\n const width = buffer.readUInt32BE(16);\n const height = buffer.readUInt32BE(20);\n if (width <= 0 || height <= 0) return null;\n return { width, height };\n}\n\nfunction resolveCursorPngPath(env: NodeJS.ProcessEnv = process.env) {\n const projectRoot = env.INIT_CWD ?? process.cwd();\n const explicitPath = env.STUDIOFLOW_CURSOR_PNG_PATH?.trim();\n const candidates = [\n explicitPath\n ? path.isAbsolute(explicitPath)\n ? explicitPath\n : path.resolve(projectRoot, explicitPath)\n : \"\",\n path.resolve(projectRoot, \"apps/cli/assets/cursor.png\"),\n path.resolve(projectRoot, \"apps/cli/cursor.png\"),\n path.resolve(projectRoot, \"assets/cursor.png\"),\n path.resolve(projectRoot, \"cursor.png\"),\n path.resolve(moduleDir, \"../../../apps/cli/assets/cursor.png\"),\n path.resolve(moduleDir, \"../../../apps/cli/cursor.png\"),\n path.resolve(moduleDir, \"../assets/cursor.png\"),\n path.resolve(moduleDir, \"../cursor.png\")\n ];\n const visited = new Set<string>();\n for (const candidate of candidates) {\n if (!candidate || visited.has(candidate)) continue;\n visited.add(candidate);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n return null;\n}\n\nfunction loadCursorPngAsset(filePath: string, env: NodeJS.ProcessEnv = process.env): CursorOverlayAsset | null {\n const cached = cursorAssetCache.get(filePath);\n if (cached) return cached;\n\n try {\n const image = fs.readFileSync(filePath);\n const dimensions = parsePngDimensions(image);\n const maxEdge = Math.max(20, intEnv(\"STUDIOFLOW_CURSOR_MAX_EDGE_PX\", 34, env));\n const sourceWidth = dimensions?.width ?? 26;\n const sourceHeight = dimensions?.height ?? 36;\n const scale = maxEdge / Math.max(sourceWidth, sourceHeight);\n const width = Math.max(18, Math.round(sourceWidth * scale));\n const height = Math.max(18, Math.round(sourceHeight * scale));\n const asset: CursorOverlayAsset = {\n dataUri: `data:image/png;base64,${image.toString(\"base64\")}`,\n width,\n height,\n hotspotX: Math.max(1, Math.round(width * 0.08)),\n hotspotY: Math.max(1, Math.round(height * 0.08))\n };\n cursorAssetCache.set(filePath, asset);\n return asset;\n } catch {\n return null;\n }\n}\n\nfunction resolveCursorOverlayAsset(theme: CursorTheme, env: NodeJS.ProcessEnv = process.env): CursorOverlayAsset {\n if (theme === \"generic\") {\n return genericCursorAsset;\n }\n\n const cursorPngPath = resolveCursorPngPath(env);\n if (!cursorPngPath) {\n return macosFallbackCursorAsset;\n }\n\n return loadCursorPngAsset(cursorPngPath, env) ?? macosFallbackCursorAsset;\n}\n\nexport interface RuntimePacingDefaults {\n renderCursorOverlay: boolean;\n cursorTheme: CursorTheme;\n cursorMoveMs: number;\n cursorHighlightMs: number;\n realisticTyping: boolean;\n typingDelayMs: number;\n clickPulseMs: number;\n fullPageScreenshots: boolean;\n scrollAnimationMs: number;\n scrollSettleMs: number;\n stepPreDelayMs: number;\n stepPostDelayMs: number;\n stepDwellMs: number;\n pacingAdjustmentEnabled: boolean;\n pacingJitterEnabled: boolean;\n}\n\nexport function resolveRuntimePacingDefaults(env: NodeJS.ProcessEnv = process.env): RuntimePacingDefaults {\n return {\n renderCursorOverlay: boolEnv(\"STUDIOFLOW_RENDER_CURSOR\", true, env),\n cursorTheme: cursorThemeEnv(env),\n cursorMoveMs: Math.max(0, intEnv(\"STUDIOFLOW_CURSOR_MOVE_MS\", 430, env)),\n cursorHighlightMs: Math.max(0, intEnv(\"STUDIOFLOW_CURSOR_HIGHLIGHT_MS\", 170, env)),\n realisticTyping: boolEnv(\"STUDIOFLOW_REALISTIC_TYPING\", true, env),\n typingDelayMs: Math.max(0, intEnv(\"STUDIOFLOW_TYPING_DELAY_MS\", 55, env)),\n clickPulseMs: Math.max(0, intEnv(\"STUDIOFLOW_CLICK_PULSE_MS\", 220, env)),\n fullPageScreenshots: boolEnv(\"STUDIOFLOW_SCREENSHOT_FULL_PAGE\", false, env),\n scrollAnimationMs: Math.max(0, intEnv(\"STUDIOFLOW_SCROLL_ANIMATION_MS\", 340, env)),\n scrollSettleMs: Math.max(0, intEnv(\"STUDIOFLOW_SCROLL_SETTLE_MS\", 180, env)),\n stepPreDelayMs: Math.max(0, intEnv(\"STUDIOFLOW_STEP_PRE_DELAY_MS\", 90, env)),\n stepPostDelayMs: Math.max(0, intEnv(\"STUDIOFLOW_STEP_POST_DELAY_MS\", 130, env)),\n stepDwellMs: Math.max(0, intEnv(\"STUDIOFLOW_STEP_DWELL_MS\", 180, env)),\n pacingAdjustmentEnabled: boolEnv(\"STUDIOFLOW_PACING_ADJUSTMENT\", true, env),\n pacingJitterEnabled: boolEnv(\"STUDIOFLOW_PACING_JITTER\", true, env)\n };\n}\n\ntype ScrollAlignment = \"start\" | \"center\" | \"end\" | \"nearest\";\n\ninterface StepScrollPlan {\n required: boolean;\n alignment: ScrollAlignment;\n maxAttempts: number;\n}\n\ninterface ElementTargetSnapshot {\n exists: boolean;\n visible: boolean;\n inViewport: boolean;\n clippedByOverflow: boolean;\n scrollableAncestors: number;\n rect?: {\n top: number;\n left: number;\n width: number;\n height: number;\n };\n viewport?: {\n width: number;\n height: number;\n };\n}\n\nconst defaultScrollPlan: StepScrollPlan = {\n required: false,\n alignment: \"center\",\n maxAttempts: 2\n};\n\nasync function collectTargetSnapshot(page: Page, target: string): Promise<ElementTargetSnapshot> {\n const locator = page.locator(target).first();\n try {\n if ((await locator.count()) === 0) {\n return {\n exists: false,\n visible: false,\n inViewport: false,\n clippedByOverflow: false,\n scrollableAncestors: 0\n };\n }\n return locator.evaluate((element) => {\n const rect = element.getBoundingClientRect();\n const style = window.getComputedStyle(element);\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight\n };\n const visible =\n style.display !== \"none\" &&\n style.visibility !== \"hidden\" &&\n Number(style.opacity || \"1\") > 0 &&\n rect.width > 0 &&\n rect.height > 0;\n const inViewport = rect.bottom > 0 && rect.right > 0 && rect.top < viewport.height && rect.left < viewport.width;\n\n let clippedByOverflow = false;\n let scrollableAncestors = 0;\n let parent = element.parentElement;\n while (parent) {\n const parentStyle = window.getComputedStyle(parent);\n const scrollableY =\n /(auto|scroll|overlay)/.test(parentStyle.overflowY) && parent.scrollHeight > parent.clientHeight + 1;\n const scrollableX =\n /(auto|scroll|overlay)/.test(parentStyle.overflowX) && parent.scrollWidth > parent.clientWidth + 1;\n if (scrollableY || scrollableX) {\n scrollableAncestors += 1;\n const parentRect = parent.getBoundingClientRect();\n if (\n rect.top < parentRect.top ||\n rect.bottom > parentRect.bottom ||\n rect.left < parentRect.left ||\n rect.right > parentRect.right\n ) {\n clippedByOverflow = true;\n }\n }\n parent = parent.parentElement;\n }\n\n return {\n exists: true,\n visible,\n inViewport,\n clippedByOverflow,\n scrollableAncestors,\n rect: {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n width: Math.round(rect.width),\n height: Math.round(rect.height)\n },\n viewport\n };\n });\n } catch {\n return {\n exists: false,\n visible: false,\n inViewport: false,\n clippedByOverflow: false,\n scrollableAncestors: 0\n };\n }\n}\n\nasync function scrollTargetIntoView(\n page: Page,\n target: string,\n timeoutMs: number,\n runtime: RuntimePacingDefaults,\n context: StepExecutionContext = {}\n) {\n const locator = page.locator(target).first();\n const snapshot = await collectTargetSnapshot(page, target);\n if (!snapshot.exists) return;\n\n const effective = defaultScrollPlan;\n const needsScroll = snapshot.visible && (!snapshot.inViewport || snapshot.clippedByOverflow);\n if (!effective.required && !needsScroll) return;\n const scrollAnimationMs = resolvePacedDelay(runtime.scrollAnimationMs, context, runtime, \"scroll-motion\");\n const scrollSettleMs = resolvePacedDelay(runtime.scrollSettleMs, context, runtime, \"scroll-settle\", false);\n\n for (let attempt = 0; attempt < effective.maxAttempts; attempt += 1) {\n try {\n await locator.evaluate(\n (element, payload: { alignment: ScrollAlignment; smooth: boolean }) => {\n const block =\n payload.alignment === \"start\" || payload.alignment === \"center\" || payload.alignment === \"end\"\n ? payload.alignment\n : \"nearest\";\n const behavior = payload.smooth ? \"smooth\" : \"instant\";\n\n let parent = element.parentElement;\n while (parent) {\n const style = window.getComputedStyle(parent);\n const scrollableY =\n /(auto|scroll|overlay)/.test(style.overflowY) && parent.scrollHeight > parent.clientHeight + 1;\n const scrollableX =\n /(auto|scroll|overlay)/.test(style.overflowX) && parent.scrollWidth > parent.clientWidth + 1;\n\n if (scrollableY || scrollableX) {\n const targetRect = element.getBoundingClientRect();\n const parentRect = parent.getBoundingClientRect();\n let nextScrollTop = parent.scrollTop;\n let nextScrollLeft = parent.scrollLeft;\n\n if (scrollableY) {\n const offsetTop = targetRect.top - parentRect.top + parent.scrollTop;\n if (block === \"start\") {\n nextScrollTop = offsetTop - 8;\n } else if (block === \"end\") {\n nextScrollTop = offsetTop - parent.clientHeight + targetRect.height + 8;\n } else if (block === \"center\") {\n nextScrollTop = offsetTop - parent.clientHeight / 2 + targetRect.height / 2;\n } else if (targetRect.top < parentRect.top || targetRect.bottom > parentRect.bottom) {\n nextScrollTop = offsetTop - parent.clientHeight / 2 + targetRect.height / 2;\n }\n }\n\n if (scrollableX) {\n const offsetLeft = targetRect.left - parentRect.left + parent.scrollLeft;\n nextScrollLeft = offsetLeft - parent.clientWidth / 2 + targetRect.width / 2;\n }\n\n const didMoveY = Math.abs(nextScrollTop - parent.scrollTop) > 0.5;\n const didMoveX = Math.abs(nextScrollLeft - parent.scrollLeft) > 0.5;\n if (didMoveY || didMoveX) {\n parent.scrollTo({\n top: nextScrollTop,\n left: nextScrollLeft,\n behavior\n });\n }\n }\n\n parent = parent.parentElement;\n }\n\n element.scrollIntoView({ behavior, block, inline: \"nearest\" });\n },\n {\n alignment: effective.alignment,\n smooth: scrollAnimationMs > 0\n }\n );\n } catch {\n return;\n }\n\n const settleMs = Math.min(timeoutMs, Math.max(60, Math.max(scrollSettleMs, Math.round(scrollAnimationMs * 0.75))));\n if (settleMs > 0) {\n await wait(settleMs);\n }\n\n const after = await collectTargetSnapshot(page, target);\n if (!after.exists) return;\n if (after.visible && after.inViewport && !after.clippedByOverflow) return;\n }\n}\n\nexport interface StepExecutionContext {\n pacingMultiplier?: number;\n strictPacing?: boolean;\n jitterSeed?: string;\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\nconst cursorOverlaySetupScript = (clickPulseMs: number, theme: CursorTheme, asset: CursorOverlayAsset) => `\n(() => {\n const win = window;\n const cursorAsset = \"${asset.dataUri}\";\n if (win.__studioflowCursor) return;\n\n if (!document.getElementById(\"studioflow-cursor-style\")) {\n const style = document.createElement(\"style\");\n style.id = \"studioflow-cursor-style\";\n style.textContent = \\`\n #studioflow-cursor {\n position: fixed;\n top: 0;\n left: 0;\n width: ${asset.width}px;\n height: ${asset.height}px;\n background-image: url(\"\\${cursorAsset}\");\n background-repeat: no-repeat;\n background-size: ${asset.width}px ${asset.height}px;\n pointer-events: none;\n z-index: 2147483647;\n opacity: 0;\n transform: translate3d(-9999px, -9999px, 0);\n filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.48));\n transition: opacity 120ms ease;\n will-change: transform;\n }\n #studioflow-cursor::after {\n content: \"\";\n position: absolute;\n left: -7px;\n top: -7px;\n width: 18px;\n height: 18px;\n border-radius: 999px;\n border: 2px solid rgba(37, 99, 235, 0.72);\n opacity: 0;\n transform: scale(0.65);\n }\n #studioflow-cursor.studioflow-cursor-pulse::after {\n animation: studioflow-cursor-pulse var(--studioflow-click-pulse-ms, ${Math.max(0, clickPulseMs)}ms) ease-out;\n }\n @keyframes studioflow-cursor-pulse {\n 0% { opacity: 0.9; transform: scale(0.55); }\n 100% { opacity: 0; transform: scale(1.5); }\n }\n \\`;\n document.head.appendChild(style);\n }\n\n const cursor = document.createElement(\"div\");\n cursor.id = \"studioflow-cursor\";\n cursor.setAttribute(\"aria-hidden\", \"true\");\n cursor.dataset.theme = \"${theme}\";\n document.body.appendChild(cursor);\n\n const hotSpotX = ${asset.hotspotX};\n const hotSpotY = ${asset.hotspotY};\n let x = 0;\n let y = 0;\n let initialized = false;\n let raf = 0;\n let activeResolve = null;\n\n const resolveActiveAnimation = () => {\n if (activeResolve) {\n const done = activeResolve;\n activeResolve = null;\n done();\n }\n };\n\n const stopAnimation = () => {\n if (raf) {\n cancelAnimationFrame(raf);\n raf = 0;\n }\n resolveActiveAnimation();\n };\n\n const setPosition = (nextX, nextY) => {\n x = nextX;\n y = nextY;\n cursor.style.transform = \\`translate3d(\\${Math.round(x - hotSpotX)}px, \\${Math.round(y - hotSpotY)}px, 0)\\`;\n };\n\n const easeInOut = (value) => {\n if (value <= 0) return 0;\n if (value >= 1) return 1;\n return value < 0.5 ? 2 * value * value : 1 - Math.pow(-2 * value + 2, 2) / 2;\n };\n\n const animateTo = (nextX, nextY, durationMs) => {\n const startX = x;\n const startY = y;\n const ms = Math.max(0, Math.round(durationMs));\n\n if (ms === 0 || (Math.abs(startX - nextX) < 0.5 && Math.abs(startY - nextY) < 0.5)) {\n setPosition(nextX, nextY);\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n activeResolve = resolve;\n const start = performance.now();\n const tick = (now) => {\n const progress = Math.min(1, (now - start) / ms);\n const eased = easeInOut(progress);\n const currentX = startX + (nextX - startX) * eased;\n const currentY = startY + (nextY - startY) * eased;\n setPosition(currentX, currentY);\n if (progress >= 1) {\n raf = 0;\n resolveActiveAnimation();\n return;\n }\n raf = requestAnimationFrame(tick);\n };\n raf = requestAnimationFrame(tick);\n });\n };\n\n win.__studioflowCursor = {\n moveTo(nextX, nextY, durationMs) {\n const targetX = Number(nextX) || 0;\n const targetY = Number(nextY) || 0;\n const transitionMs = Math.max(0, Number(durationMs) || 0);\n stopAnimation();\n\n if (!initialized) {\n initialized = true;\n cursor.style.opacity = \"1\";\n setPosition(targetX - 14, targetY - 10);\n return animateTo(targetX, targetY, Math.min(280, Math.max(120, transitionMs)));\n }\n\n return animateTo(targetX, targetY, transitionMs);\n },\n getPosition() {\n if (!initialized) return null;\n return { x, y };\n },\n clickPulse() {\n cursor.classList.remove(\"studioflow-cursor-pulse\");\n void cursor.offsetWidth;\n cursor.classList.add(\"studioflow-cursor-pulse\");\n }\n };\n})();\n`;\n\nconst cursorMoveScript = (point: Point, durationMs: number) => `\n(() => {\n const cursor = window.__studioflowCursor;\n if (cursor) return cursor.moveTo(${point.x}, ${point.y}, ${durationMs});\n return undefined;\n})();\n`;\n\nconst cursorClickPulseScript = (pulseMs: number) => `\n(() => {\n const cursor = window.__studioflowCursor;\n if (!cursor) return;\n const pulse = Math.max(0, Math.round(${pulseMs}));\n const cursorNode = document.getElementById(\"studioflow-cursor\");\n if (cursorNode) {\n cursorNode.style.setProperty(\"--studioflow-click-pulse-ms\", pulse + \"ms\");\n }\n cursor.clickPulse();\n})();\n`;\n\nconst cursorPositionScript = `\n(() => {\n const cursor = window.__studioflowCursor;\n if (!cursor) return null;\n return cursor.getPosition();\n})();\n`;\n\nconst cursorExistsScript = `\n(() => Boolean(window.__studioflowCursor))();\n`;\n\ndeclare global {\n interface Window {\n __studioflowCursor?: {\n moveTo: (x: number, y: number, durationMs: number) => Promise<void>;\n getPosition: () => Point | null;\n clickPulse: () => void;\n };\n }\n}\n\nfunction hashString(input: string) {\n let hash = 2166136261;\n for (let i = 0; i < input.length; i += 1) {\n hash ^= input.charCodeAt(i);\n hash = Math.imul(hash, 16777619);\n }\n return hash >>> 0;\n}\n\nfunction jitterFactor(seed: string) {\n const hash = hashString(seed);\n const normalized = hash / 0xffffffff;\n return normalized * 0.24 - 0.12;\n}\n\nfunction resolvePacedDelay(\n rawMs: number | undefined,\n context: StepExecutionContext,\n runtime: RuntimePacingDefaults,\n channel: string,\n allowJitter = true\n) {\n if (!rawMs || rawMs <= 0) return 0;\n\n let value = rawMs;\n const multiplier = runtime.pacingAdjustmentEnabled ? context.pacingMultiplier ?? 1 : 1;\n value *= multiplier;\n\n const shouldApplyJitter =\n allowJitter && runtime.pacingJitterEnabled && !context.strictPacing && Boolean(context.jitterSeed);\n\n if (shouldApplyJitter) {\n value *= 1 + jitterFactor(`${context.jitterSeed}:${channel}`);\n }\n\n return Math.max(0, Math.min(maxDelayMs, Math.round(value)));\n}\n\nfunction sanitizeScreenshotName(raw: string) {\n const normalized = raw.trim().replace(/\\\\/g, \"/\");\n const base = normalized.split(\"/\").filter(Boolean).pop() ?? \"screenshot\";\n const withoutPng = base.toLowerCase().endsWith(\".png\") ? base.slice(0, -4) : base;\n const safe = withoutPng.replace(/[^A-Za-z0-9._-]/g, \"_\").replace(/_+/g, \"_\").replace(/^\\.+/, \"\").slice(0, 120);\n return safe || \"screenshot\";\n}\n\nfunction normalizePathname(pathname: string) {\n if (!pathname) return \"/\";\n const normalized = pathname.replace(/\\/+$/g, \"\");\n return normalized.length > 0 ? normalized : \"/\";\n}\n\nfunction isSameNavigationTarget(currentUrl: string, nextUrl: string) {\n if (!currentUrl) return false;\n try {\n const current = new URL(currentUrl);\n const next = new URL(nextUrl);\n return (\n current.origin === next.origin &&\n normalizePathname(current.pathname) === normalizePathname(next.pathname) &&\n current.search === next.search &&\n current.hash === next.hash\n );\n } catch {\n return currentUrl === nextUrl;\n }\n}\n\nasync function ensureCursorOverlay(page: Page, runtime: RuntimePacingDefaults) {\n if (!runtime.renderCursorOverlay) return;\n const cursorExists = await page.evaluate(cursorExistsScript);\n if (cursorExists) return;\n const cursorAsset = resolveCursorOverlayAsset(runtime.cursorTheme);\n await page.evaluate(cursorOverlaySetupScript(runtime.clickPulseMs, runtime.cursorTheme, cursorAsset));\n}\n\nfunction distanceBetweenPoints(start: Point, end: Point) {\n return Math.hypot(end.x - start.x, end.y - start.y);\n}\n\nfunction resolveCursorTravelDuration(baseMs: number, start: Point | null, end: Point) {\n if (baseMs <= 0) return 0;\n if (!start) {\n return Math.max(120, Math.round(baseMs * 0.7));\n }\n\n const distanceMs = distanceBetweenPoints(start, end) * 1.1;\n const blended = baseMs * 0.45 + distanceMs * 0.55;\n const minMs = Math.max(110, Math.round(baseMs * 0.35));\n const maxMs = Math.min(maxDelayMs, Math.max(850, Math.round(baseMs * 2.2)));\n return Math.max(minMs, Math.min(maxMs, Math.round(blended)));\n}\n\nasync function getCursorPosition(page: Page, runtime: RuntimePacingDefaults): Promise<Point | null> {\n if (!runtime.renderCursorOverlay) return null;\n await ensureCursorOverlay(page, runtime);\n return page.evaluate(cursorPositionScript) as Promise<Point | null>;\n}\n\nasync function getTargetCenter(page: Page, target: string): Promise<Point | null> {\n const box = await page.locator(target).first().boundingBox();\n if (!box) return null;\n return { x: box.x + box.width / 2, y: box.y + box.height / 2 };\n}\n\nasync function moveCursor(page: Page, point: Point, durationMs: number, runtime: RuntimePacingDefaults) {\n if (runtime.renderCursorOverlay) {\n await ensureCursorOverlay(page, runtime);\n // Keep UI reactions synchronized with the visible cursor overlay by moving the real\n // pointer only after the overlay finishes traveling to the destination.\n await page.evaluate(cursorMoveScript(point, durationMs));\n await page.mouse.move(point.x, point.y);\n return;\n }\n await page.mouse.move(point.x, point.y, { steps: Math.max(8, Math.floor(durationMs / 16)) });\n if (durationMs > 0) {\n await wait(durationMs);\n }\n}\n\nasync function clickPulse(page: Page, runtime: RuntimePacingDefaults, pulseMs: number) {\n if (!runtime.renderCursorOverlay) return;\n await ensureCursorOverlay(page, runtime);\n await page.evaluate(cursorClickPulseScript(pulseMs));\n}\n\nasync function applyPreStepPacing(\n page: Page,\n step: FlowStep,\n timeout: number,\n context: StepExecutionContext,\n runtime: RuntimePacingDefaults\n) {\n const preDelay = resolvePacedDelay(step.preDelayMs ?? runtime.stepPreDelayMs, context, runtime, \"pre\");\n if (preDelay > 0) {\n await wait(preDelay);\n }\n\n const shouldMoveCursor = [\"click\", \"type\"].includes(step.action) && Boolean(step.target);\n if (!shouldMoveCursor || !step.target) return;\n\n await scrollTargetIntoView(page, step.target, timeout, runtime, context);\n\n const center = await getTargetCenter(page, step.target);\n if (!center) return;\n\n const baseMoveMs = resolvePacedDelay(step.mouseMoveMs ?? runtime.cursorMoveMs, context, runtime, \"move\");\n const currentCursorPosition = await getCursorPosition(page, runtime);\n const moveMs = resolveCursorTravelDuration(baseMoveMs, currentCursorPosition, center);\n if (moveMs > 0) {\n await moveCursor(page, center, moveMs, runtime);\n }\n\n const highlightMs = resolvePacedDelay(step.highlightMs ?? runtime.cursorHighlightMs, context, runtime, \"highlight\");\n if (highlightMs > 0) {\n await wait(highlightMs);\n }\n}\n\nasync function applyPostStepPacing(\n step: FlowStep,\n context: StepExecutionContext,\n runtime: RuntimePacingDefaults\n) {\n const postDelay = resolvePacedDelay(step.postDelayMs ?? runtime.stepPostDelayMs, context, runtime, \"post\");\n if (postDelay > 0) {\n await wait(postDelay);\n }\n const dwellDelay = resolvePacedDelay(step.dwellMs ?? runtime.stepDwellMs, context, runtime, \"dwell\");\n if (dwellDelay > 0) {\n await wait(dwellDelay);\n }\n}\n\nexport async function executeStep(\n page: Page,\n step: FlowStep,\n runDir: string,\n baseUrl: string,\n context: StepExecutionContext = {}\n) {\n const timeout = step.timeoutMs ?? 6000;\n const runtime = resolveRuntimePacingDefaults();\n await applyPreStepPacing(page, step, timeout, context, runtime);\n\n if (step.action === \"goto\") {\n const target = step.value ?? \"/\";\n const isAbsolute = /^https?:\\/\\//.test(target);\n const destinationUrl = isAbsolute ? target : new URL(target, baseUrl).toString();\n if (!isSameNavigationTarget(page.url(), destinationUrl)) {\n await page.goto(destinationUrl, { timeout });\n }\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"click\") {\n if (!step.target) throw new Error(`Step ${step.id} missing target`);\n await scrollTargetIntoView(page, step.target, timeout, runtime, context);\n await page.locator(step.target).first().click({ timeout });\n const pulseMs = resolvePacedDelay(runtime.clickPulseMs, context, runtime, \"click\", false);\n await clickPulse(page, runtime, pulseMs);\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"type\") {\n if (!step.target) throw new Error(`Step ${step.id} missing target`);\n await scrollTargetIntoView(page, step.target, timeout, runtime, context);\n const locator = page.locator(step.target).first();\n if (runtime.realisticTyping) {\n await locator.click({ timeout });\n const pulseMs = resolvePacedDelay(runtime.clickPulseMs, context, runtime, \"click\", false);\n await clickPulse(page, runtime, pulseMs);\n await locator.fill(\"\", { timeout });\n const effectiveTypingDelay = resolvePacedDelay(runtime.typingDelayMs, context, runtime, \"typing\", false);\n await page.keyboard.type(step.value ?? \"\", { delay: effectiveTypingDelay });\n } else {\n await locator.fill(step.value ?? \"\", { timeout });\n }\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"wait_for\") {\n if (step.target) {\n await scrollTargetIntoView(page, step.target, timeout, runtime, context);\n await page.locator(step.target).first().waitFor({ state: \"visible\", timeout });\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n if (step.value) {\n await page.getByText(step.value).first().waitFor({ timeout });\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n throw new Error(`Step ${step.id} requires target or value for wait_for`);\n }\n\n if (step.action === \"assert_text\") {\n if (!step.value) throw new Error(`Step ${step.id} missing value`);\n await assertText(page, step.value, timeout);\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"assert_visible\") {\n if (!step.target) throw new Error(`Step ${step.id} missing target`);\n await scrollTargetIntoView(page, step.target, timeout, runtime, context);\n await assertVisible(page, step.target, timeout);\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if (step.action === \"screenshot\") {\n const name = sanitizeScreenshotName(step.value ?? step.id);\n const screenshotPath = path.join(runDir, \"screenshots\", `${name}.png`);\n await page.screenshot({ path: screenshotPath, fullPage: runtime.fullPageScreenshots });\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n if ([\"recorder_start\", \"recorder_stop\", \"recorder_export\"].includes(step.action)) {\n await applyPostStepPacing(step, context, runtime);\n return;\n }\n\n throw new Error(`Unsupported action: ${step.action}`);\n}\n", "import type { Page } from \"playwright\";\n\nexport async function assertText(page: Page, text: string, timeoutMs = 5000) {\n await page.getByText(text, { exact: false }).first().waitFor({ timeout: timeoutMs });\n}\n\nexport async function assertVisible(page: Page, selector: string, timeoutMs = 5000) {\n await page.locator(selector).first().waitFor({ state: \"visible\", timeout: timeoutMs });\n}\n", "import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport YAML from \"yaml\";\nimport {\n flowDefinitionSchema,\n type FlowDefinition\n} from \"@studioflow/contracts\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\nconst rootDir = path.resolve(__dirname, \"..\");\n\nfunction builtInFlowsDirs() {\n const configured = process.env.STUDIOFLOW_FLOWS_SOURCE?.trim();\n // Support both workspace execution and packaged CLI runtime layouts.\n const candidates = [\n configured ? path.resolve(configured) : \"\",\n path.join(rootDir, \"bundled\", \"flows\"),\n path.join(rootDir, \"flows\"),\n path.resolve(rootDir, \"../../packages/flow-registry/flows\"),\n path.resolve(process.cwd(), \"packages/flow-registry/flows\")\n ].filter((value): value is string => Boolean(value));\n return Array.from(new Set(candidates));\n}\n\nfunction dataRoot() {\n const configured = process.env.STUDIOFLOW_DATA_DIR ?? process.env.STUDIOFLOW_HOME;\n if (configured && configured.trim()) {\n return path.resolve(configured);\n }\n return path.join(os.homedir(), \".studioflow\");\n}\n\nfunction userFlowsDir() {\n return path.join(dataRoot(), \"flows\");\n}\n\nasync function listFlowFiles(dir: string) {\n try {\n const files = await fs.readdir(dir);\n return files.filter((f) => [\".yaml\", \".yml\", \".json\"].includes(path.extname(f).toLowerCase()));\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code;\n if (code === \"ENOENT\") return [];\n throw error;\n }\n}\n\nfunction parseFlow(raw: string, ext: string): FlowDefinition {\n const parsed = ext === \".json\" ? JSON.parse(raw) : YAML.parse(raw);\n return flowDefinitionSchema.parse(parsed);\n}\n\nexport async function loadFlowFromFile(filePath: string): Promise<FlowDefinition> {\n const ext = path.extname(filePath).toLowerCase();\n if (![\".yaml\", \".yml\", \".json\"].includes(ext)) {\n throw new Error(`Unsupported flow file format: ${filePath}`);\n }\n const raw = await fs.readFile(filePath, \"utf8\");\n return parseFlow(raw, ext);\n}\n\nexport async function loadFlows(): Promise<FlowDefinition[]> {\n const merged = new Map<string, FlowDefinition>();\n const dirs = [...builtInFlowsDirs(), userFlowsDir()];\n\n for (const dir of dirs) {\n const files = await listFlowFiles(dir);\n for (const file of files) {\n const fullPath = path.join(dir, file);\n const flow = await loadFlowFromFile(fullPath);\n merged.set(flow.id, flow);\n }\n }\n\n return Array.from(merged.values()).sort((a, b) => a.id.localeCompare(b.id));\n}\n\nexport async function getFlowById(id: string): Promise<FlowDefinition> {\n const flows = await loadFlows();\n const flow = flows.find((f) => f.id === id);\n if (!flow) {\n throw new Error(`Flow not found: ${id}`);\n }\n return flow;\n}\n", "export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n", "export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n", "import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n", "import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n", "import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n", "import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n", "export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n", "import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n", "import { z } from \"zod\";\n\nexport const flowActionSchema = z.enum([\n \"goto\",\n \"click\",\n \"type\",\n \"wait_for\",\n \"assert_text\",\n \"assert_visible\",\n \"screenshot\",\n \"recorder_start\",\n \"recorder_stop\",\n \"recorder_export\"\n]);\n\nexport const pacingProfileSchema = z.enum([\"fast\", \"standard\", \"cinematic\"]);\nexport const emphasisScopeSchema = z.enum([\"flowId\", \"tag\", \"stepId\", \"route\", \"action\"]);\n\nexport const pacingEmphasisDirectiveSchema = z.object({\n scope: emphasisScopeSchema,\n value: z.string().min(1),\n weight: z.number().min(0.5).max(2)\n});\n\nexport const pacingDirectivesSchema = z.object({\n profile: pacingProfileSchema.optional(),\n targetDurationSec: z.number().int().positive().optional(),\n emphasis: z.array(pacingEmphasisDirectiveSchema).optional(),\n strictPacing: z.boolean().optional()\n});\n\nexport const flowPacingMetadataSchema = z.object({\n profile: pacingProfileSchema,\n targetDurationSec: z.number().int().positive().optional(),\n predictedDurationSec: z.number().positive(),\n durationMultiplier: z.number().min(0.75).max(1.6),\n strictPacing: z.boolean().optional(),\n emphasis: z.array(pacingEmphasisDirectiveSchema).optional()\n});\n\nexport const flowStepSchema = z.object({\n id: z.string().min(1),\n action: flowActionSchema,\n target: z.string().optional(),\n value: z.string().optional(),\n timeoutMs: z.number().int().positive().optional(),\n retries: z.number().int().nonnegative().optional(),\n preDelayMs: z.number().int().nonnegative().optional(),\n postDelayMs: z.number().int().nonnegative().optional(),\n mouseMoveMs: z.number().int().nonnegative().optional(),\n highlightMs: z.number().int().nonnegative().optional(),\n dwellMs: z.number().int().nonnegative().optional(),\n narrativeCheckpoint: z.string().optional()\n});\n\nexport const flowDefinitionSchema = z.object({\n id: z.string().min(1),\n description: z.string().min(1),\n tags: z.array(z.string()).default([]),\n preconditions: z.array(z.string()).optional(),\n estimated_duration_sec: z.number().int().positive().optional(),\n pacing: flowPacingMetadataSchema.optional(),\n steps: z.array(flowStepSchema).min(1)\n});\n\nexport const intentMappingSchema = z.object({\n intent: z.string().min(1),\n selectedFlowIds: z.array(z.string().min(1)).min(1),\n confidence: z.number().min(0).max(1),\n rationale: z.string().min(1)\n});\n\nexport const structureReportSchema = z.object({\n generatedAt: z.string(),\n projectRoot: z.string().min(1),\n packageManager: z.string().min(1),\n projectType: z.enum([\"nextjs\", \"vite-react\", \"unknown\"]).optional(),\n frameworkHints: z.array(z.string()),\n startCommands: z.array(z.string()),\n routes: z.array(z.object({ route: z.string(), file: z.string() })),\n components: z.array(z.object({ name: z.string(), file: z.string() })),\n existingFlowIds: z.array(z.string()),\n notes: z.array(z.string())\n});\n\nexport const navigationGraphSchema = z.object({\n generatedAt: z.string(),\n nodes: z.array(z.object({ id: z.string(), route: z.string(), file: z.string().optional() })),\n edges: z.array(\n z.object({\n from: z.string(),\n to: z.string(),\n via: z.string(),\n confidence: z.number().min(0).max(1),\n evidence: z.string().optional()\n })\n )\n});\n\nexport const bootstrapReportSchema = z.object({\n generatedAt: z.string(),\n projectRoot: z.string().min(1),\n packageManager: z.enum([\"pnpm\", \"npm\", \"yarn\", \"unknown\"]),\n projectType: z.enum([\"nextjs\", \"vite-react\", \"unknown\"]),\n startCommand: z.string().min(1),\n healthPath: z.string().min(1),\n notes: z.array(z.string())\n});\n\nexport const planReportSchema = z.object({\n generatedAt: z.string(),\n intent: z.string().min(1),\n confidence: z.number().min(0).max(1),\n rationale: z.string().min(1),\n source: z.enum([\"llm-artifact\", \"heuristic\"]),\n selectedFlowId: z.string().optional(),\n generatedFlowId: z.string().optional(),\n pacing: flowPacingMetadataSchema.optional(),\n needsClarification: z.boolean(),\n clarifyingQuestion: z.string().optional()\n});\n\nexport const runArtifactIndexSchema = z.object({\n runId: z.string().min(1),\n status: z.enum([\"success\", \"failed\"]),\n startedAt: z.string(),\n endedAt: z.string(),\n files: z.record(z.string(), z.string())\n});\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport type { FlowDefinition, RecorderBackend, RunArtifactIndex } from \"@studioflow/contracts\";\nimport { appendJsonLine, createRunContext, writeJsonFile } from \"@studioflow/artifacts\";\nimport { executeStep, startBrowser } from \"@studioflow/adapters-playwright\";\nimport { exportRecording, startRecording, stopRecording } from \"@studioflow/adapters-screenstudio\";\nimport {\n exportQuickTimeRecording,\n startQuickTimeRecording,\n stopQuickTimeRecording\n} from \"@studioflow/adapters-desktop\";\nimport { withRetry } from \"./retry-policy.js\";\nimport type { EngineState } from \"./state-machine.js\";\n\nexport interface RunInput {\n intent: string;\n flows: FlowDefinition[];\n startApp: () => Promise<() => Promise<void>>;\n baseUrl: string;\n headless?: boolean;\n recorder?: RecorderBackend;\n}\n\nasync function startRecorder(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n await startRecording();\n return;\n }\n await startQuickTimeRecording();\n}\n\nasync function stopRecorder(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n await stopRecording();\n return;\n }\n await stopQuickTimeRecording();\n}\n\nasync function exportRecorder(recorder: RecorderBackend) {\n if (recorder === \"screenstudio\") {\n await exportRecording();\n return;\n }\n await exportQuickTimeRecording();\n}\n\nexport async function runEngine(input: RunInput): Promise<RunArtifactIndex & { runDir: string }> {\n const run = await createRunContext();\n let state: EngineState = \"INIT\";\n const recorder = input.recorder ?? \"screenstudio\";\n const shouldExport = input.flows.some((flow) => flow.steps.some((step) => step.action === \"recorder_export\"));\n const files: Record<string, string> = {\n events: run.eventsFile\n };\n\n const emit = async (event: string, payload: Record<string, unknown> = {}) => {\n await appendJsonLine(run.eventsFile, {\n ts: new Date().toISOString(),\n state,\n event,\n ...payload\n });\n };\n\n let closeApp: (() => Promise<void>) | null = null;\n const { browser, page } = await startBrowser(input.baseUrl, { headless: input.headless });\n\n try {\n state = \"START_APP\";\n await emit(\"start_app.begin\");\n closeApp = await input.startApp();\n await emit(\"start_app.done\");\n\n // Preload the initial route before recording so capture does not start on a blank tab.\n const firstStep = input.flows[0]?.steps[0];\n const firstRouteTarget =\n firstStep?.action === \"goto\" ? (firstStep.value?.trim().length ? firstStep.value.trim() : \"/\") : null;\n const preloadUrl =\n firstRouteTarget && /^https?:\\/\\//.test(firstRouteTarget)\n ? firstRouteTarget\n : new URL(firstRouteTarget ?? \"/\", input.baseUrl).toString();\n try {\n await page.goto(preloadUrl, { waitUntil: \"domcontentloaded\", timeout: 15_000 });\n } catch {\n // Best effort only; keep run behavior unchanged if preload cannot complete.\n }\n\n state = \"START_RECORDER\";\n await emit(\"recorder.start.begin\");\n await startRecorder(recorder);\n // Recorder startup can steal focus; return focus to the demo browser.\n await page.bringToFront();\n await emit(\"recorder.start.done\");\n\n state = \"RUN_FLOW\";\n const runtimePacingEnabled = (process.env.STUDIOFLOW_PACING_ADJUSTMENT ?? \"true\").toLowerCase() !== \"false\";\n for (const flow of input.flows) {\n await emit(\"flow.begin\", { flowId: flow.id });\n const flowMultiplier = runtimePacingEnabled ? flow.pacing?.durationMultiplier ?? 1 : 1;\n const strictPacing = flow.pacing?.strictPacing ?? false;\n for (const step of flow.steps) {\n await withRetry(\n async () => {\n await emit(\"step.begin\", { flowId: flow.id, stepId: step.id, action: step.action });\n await executeStep(page, step, run.runDir, input.baseUrl, {\n pacingMultiplier: flowMultiplier,\n strictPacing,\n jitterSeed: `${run.runId}:${flow.id}:${step.id}`\n });\n await emit(\"step.done\", { flowId: flow.id, stepId: step.id });\n },\n { retries: step.retries ?? 2 }\n );\n }\n await emit(\"flow.done\", { flowId: flow.id });\n }\n\n state = \"STOP_RECORDER\";\n await emit(\"recorder.stop.begin\");\n await stopRecorder(recorder);\n await emit(\"recorder.stop.done\");\n\n if (shouldExport) {\n state = \"EXPORT\";\n await emit(\"recorder.export.begin\");\n await exportRecorder(recorder);\n await emit(\"recorder.export.done\");\n }\n\n state = \"VERIFY_ARTIFACTS\";\n const planPath = path.join(run.runDir, \"plan.json\");\n await writeJsonFile(planPath, {\n intent: input.intent,\n flowIds: input.flows.map((f) => f.id),\n pacing: {\n runtimeAdjustmentEnabled: runtimePacingEnabled,\n flows: input.flows.map((flow) => ({\n flowId: flow.id,\n profile: flow.pacing?.profile ?? \"standard\",\n predictedDurationSec: flow.pacing?.predictedDurationSec,\n targetDurationSec: flow.pacing?.targetDurationSec,\n durationMultiplier: runtimePacingEnabled ? flow.pacing?.durationMultiplier ?? 1 : 1,\n strictPacing: flow.pacing?.strictPacing ?? false\n }))\n }\n });\n files.plan = planPath;\n\n state = \"DONE\";\n await emit(\"run.done\", { runId: run.runId });\n\n const result: RunArtifactIndex & { runDir: string } = {\n runId: run.runId,\n runDir: run.runDir,\n status: \"success\",\n startedAt: run.startedAt,\n endedAt: new Date().toISOString(),\n files\n };\n\n const resultPath = path.join(run.runDir, \"run.json\");\n files.run = resultPath;\n await writeJsonFile(resultPath, result);\n\n return result;\n } catch (error) {\n state = \"FAILED\";\n await emit(\"run.failed\", { message: error instanceof Error ? error.message : String(error) });\n\n const failShot = path.join(run.runDir, \"screenshots\", \"failure.png\");\n await page.screenshot({ path: failShot, fullPage: true });\n files.failureScreenshot = failShot;\n\n const result: RunArtifactIndex & { runDir: string } = {\n runId: run.runId,\n runDir: run.runDir,\n status: \"failed\",\n startedAt: run.startedAt,\n endedAt: new Date().toISOString(),\n files\n };\n\n const resultPath = path.join(run.runDir, \"run.json\");\n files.run = resultPath;\n await writeJsonFile(resultPath, result);\n\n throw Object.assign(new Error(error instanceof Error ? error.message : String(error)), {\n runDir: run.runDir,\n resultPath\n });\n } finally {\n await browser.close();\n if (closeApp) {\n await closeApp();\n }\n // Ensure run dir exists even on failure if nothing else touched it\n await fs.mkdir(run.runDir, { recursive: true });\n }\n}\n", "import os from \"node:os\";\nimport path from \"node:path\";\n\nexport function getRunsRoot() {\n const dataDir = process.env.STUDIOFLOW_DATA_DIR ?? process.env.STUDIOFLOW_HOME;\n const defaultRunsDir =\n dataDir && dataDir.trim()\n ? path.join(path.resolve(dataDir), \"runs\")\n : path.join(os.homedir(), \".studioflow\", \"runs\");\n const configured = process.env.STUDIOFLOW_RUNS_DIR || defaultRunsDir;\n if (path.isAbsolute(configured)) {\n return configured;\n }\n\n const initCwd = process.env.INIT_CWD;\n if (initCwd) {\n return path.resolve(initCwd, configured);\n }\n\n return path.resolve(process.cwd(), configured);\n}\n\nexport function getRunDir(runId: string) {\n return path.join(getRunsRoot(), runId);\n}\n", "import fs from \"node:fs/promises\";\n\nexport async function appendJsonLine(filePath: string, payload: unknown) {\n await fs.appendFile(filePath, `${JSON.stringify(payload)}\\n`, \"utf8\");\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { getRunDir } from \"./paths.js\";\n\nexport interface RunContext {\n runId: string;\n runDir: string;\n eventsFile: string;\n startedAt: string;\n}\n\nexport async function createRunContext() {\n const now = new Date();\n const runId = now.toISOString().replace(/[:.]/g, \"-\");\n const runDir = getRunDir(runId);\n const screenshotsDir = path.join(runDir, \"screenshots\");\n await fs.mkdir(screenshotsDir, { recursive: true });\n\n const eventsFile = path.join(runDir, \"events.jsonl\");\n await fs.writeFile(eventsFile, \"\", \"utf8\");\n\n return {\n runId,\n runDir,\n eventsFile,\n startedAt: now.toISOString()\n } satisfies RunContext;\n}\n\nexport async function writeJsonFile(filePath: string, payload: unknown) {\n await fs.writeFile(filePath, JSON.stringify(payload, null, 2), \"utf8\");\n}\n", "import { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script: string) {\n const { stdout, stderr } = await execFileAsync(\"osascript\", [\"-e\", script]);\n return { stdout: stdout.trim(), stderr: stderr.trim() };\n}\n", "import { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport { promisify } from \"node:util\";\nimport { runAppleScript } from \"./osascript.js\";\n\nconst execFileAsync = promisify(execFile);\n\nexport interface PermissionStatus {\n screenStudioInstalled: boolean;\n canRunAppleScript: boolean;\n canSendKeystrokes: boolean;\n notes: string[];\n}\n\nexport async function checkPermissions(): Promise<PermissionStatus> {\n const notes: string[] = [];\n let screenStudioInstalled = false;\n\n try {\n await fs.access(\"/Applications/Screen Studio.app\");\n screenStudioInstalled = true;\n } catch {\n notes.push(\"Screen Studio app not found at /Applications/Screen Studio.app\");\n }\n\n let canRunAppleScript = true;\n try {\n await runAppleScript('tell application \"System Events\" to get UI elements enabled');\n } catch {\n canRunAppleScript = false;\n notes.push(\"AppleScript execution failed. Accessibility/Automation permission may be missing.\");\n }\n\n let canSendKeystrokes = true;\n try {\n // Uses an unlikely key chord to validate keystroke permission with low side-effect risk.\n await runAppleScript(\n 'tell application \"System Events\" to keystroke \"9\" using {command down, option down, control down, shift down}'\n );\n } catch {\n canSendKeystrokes = false;\n notes.push(\"Keystroke automation is blocked. Grant Accessibility + Automation permissions.\");\n }\n\n return {\n screenStudioInstalled,\n canRunAppleScript,\n canSendKeystrokes,\n notes\n };\n}\n\nexport async function triggerPermissionPrompts() {\n const results = {\n automationPromptAttempted: false,\n accessibilityPromptAttempted: false\n };\n\n try {\n // Triggers Apple Events automation prompt when not yet approved.\n await runAppleScript('tell application \"System Events\" to get name of first process');\n results.automationPromptAttempted = true;\n } catch {\n results.automationPromptAttempted = true;\n }\n\n try {\n // Triggers keystroke permission path with a low-risk chord.\n await runAppleScript(\n 'tell application \"System Events\" to keystroke \"9\" using {command down, option down, control down, shift down}'\n );\n results.accessibilityPromptAttempted = true;\n } catch {\n results.accessibilityPromptAttempted = true;\n }\n\n return results;\n}\n\nexport async function openPermissionSettings() {\n const panes = [\n \"x-apple.systempreferences:com.apple.preference.security?Privacy_Automation\",\n \"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility\"\n ];\n\n for (const pane of panes) {\n try {\n await execFileAsync(\"open\", [pane]);\n } catch {\n // Best-effort only.\n }\n }\n}\n\nexport async function ensureAutomationPermissions() {\n const firstCheck = await checkPermissions();\n if (firstCheck.canRunAppleScript && firstCheck.canSendKeystrokes) {\n return firstCheck;\n }\n\n await triggerPermissionPrompts();\n const secondCheck = await checkPermissions();\n if (secondCheck.canRunAppleScript && secondCheck.canSendKeystrokes) {\n return secondCheck;\n }\n\n await openPermissionSettings();\n\n throw new Error(\n \"macOS automation permission is required. Approve Terminal/iTerm for System Events in Privacy & Security (Automation + Accessibility), then rerun the demo.\"\n );\n}\n", "import { runAppleScript } from \"./osascript.js\";\n\nconst defaultQuickTimeAppName = process.env.QUICKTIME_APP_NAME ?? \"QuickTime Player\";\n\nfunction int(value: string | undefined, fallback: number) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nfunction bool(value: string | undefined, fallback: boolean) {\n if (!value) return fallback;\n const normalized = value.trim().toLowerCase();\n if ([\"1\", \"true\", \"yes\", \"on\"].includes(normalized)) return true;\n if ([\"0\", \"false\", \"no\", \"off\"].includes(normalized)) return false;\n return fallback;\n}\n\nconst preConfirmDelay = int(process.env.QUICKTIME_PRE_CONFIRM_DELAY_MS, 700);\nconst postStartDelay = int(process.env.QUICKTIME_POST_START_DELAY_MS, 1200);\nconst postStopDelay = int(process.env.QUICKTIME_POST_STOP_DELAY_MS, 900);\nconst exportDialogConfirmDelay = int(process.env.QUICKTIME_EXPORT_DIALOG_CONFIRM_DELAY_MS, 900);\nconst exportDelay = int(process.env.QUICKTIME_EXPORT_DELAY_MS, 2500);\nconst fullScreenSelectDelay = int(process.env.QUICKTIME_FULL_SCREEN_SELECT_DELAY_MS, 160);\nconst forceRecordEntireScreen = bool(process.env.QUICKTIME_FORCE_RECORD_ENTIRE_SCREEN, true);\n\nfunction quote(value: string) {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\n\nfunction normalizeMenuItem(raw: string) {\n return raw.trim();\n}\n\nexport function parseQuickTimeMenuItems(stdout: string) {\n if (!stdout.trim()) {\n return [] as string[];\n }\n\n return stdout\n .split(\",\")\n .map(normalizeMenuItem)\n .filter((item) => item.length > 0 && item !== \"missing value\");\n}\n\nexport function buildActivateQuickTimeScript(appName: string) {\n return `tell application \"${quote(appName)}\" to activate`;\n}\n\nexport function buildListQuickTimeFileMenuItemsScript(appName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to get name of every menu item of menu \"File\" of menu bar 1`;\n}\n\nexport function buildClickQuickTimeFileMenuItemScript(appName: string, itemName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to click menu item \"${quote(itemName)}\" of menu \"File\" of menu bar 1`;\n}\n\nexport function buildQuickTimeStartShortcutScript() {\n return 'tell application \"System Events\" to keystroke \"n\" using {command down, control down}';\n}\n\nexport function buildQuickTimeStopShortcutScript() {\n return 'tell application \"System Events\" to key code 53 using {command down, control down}';\n}\n\nexport function buildQuickTimeSaveShortcutScript() {\n return 'tell application \"System Events\" to keystroke \"s\" using {command down}';\n}\n\nexport function buildPressReturnScript() {\n return 'tell application \"System Events\" to key code 36';\n}\n\ntype ScreenshotToolbarControlRole = \"button\" | \"checkbox\";\n\nexport function buildClickScreenshotToolbarControlScript(\n role: ScreenshotToolbarControlRole,\n controlName: string\n) {\n return `tell application \"System Events\"\n if exists process \"Screenshot\" then\n tell process \"Screenshot\" to tell window 1 to click ${role} \"${quote(controlName)}\"\n else if exists process \"screencaptureui\" then\n tell process \"screencaptureui\" to tell window 1 to click ${role} \"${quote(controlName)}\"\n else\n error \"Screenshot toolbar process not found.\"\n end if\nend tell`;\n}\n\nexport async function wait(ms: number) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction findMenuItem(items: string[], partial: string) {\n const needle = partial.toLowerCase();\n return items.find((item) => item.toLowerCase().includes(needle));\n}\n\nexport async function activateQuickTime(appName = defaultQuickTimeAppName) {\n await runAppleScript(buildActivateQuickTimeScript(appName));\n}\n\nexport async function listQuickTimeFileMenuItems(appName = defaultQuickTimeAppName) {\n const { stdout } = await runAppleScript(buildListQuickTimeFileMenuItemsScript(appName));\n return parseQuickTimeMenuItems(stdout);\n}\n\nexport async function clickQuickTimeFileMenuItem(appName: string, itemName: string) {\n const items = await listQuickTimeFileMenuItems(appName);\n\n if (!items.includes(itemName)) {\n const available = items.length > 0 ? items.join(\", \") : \"none\";\n throw new Error(\n `QuickTime File menu item \"${itemName}\" not available. Available items: ${available}`\n );\n }\n\n await runAppleScript(buildClickQuickTimeFileMenuItemScript(appName, itemName));\n}\n\nexport async function pressQuickTimeStartShortcut() {\n await runAppleScript(buildQuickTimeStartShortcutScript());\n}\n\nexport async function pressQuickTimeStopShortcut() {\n await runAppleScript(buildQuickTimeStopShortcutScript());\n}\n\nexport async function pressQuickTimeSaveShortcut() {\n await runAppleScript(buildQuickTimeSaveShortcutScript());\n}\n\nexport async function pressReturn() {\n await runAppleScript(buildPressReturnScript());\n}\n\nexport async function clickScreenshotToolbarControl(\n role: ScreenshotToolbarControlRole,\n controlName: string\n) {\n await runAppleScript(buildClickScreenshotToolbarControlScript(role, controlName));\n}\n\nexport async function startQuickTimeFullScreenCapture() {\n await clickScreenshotToolbarControl(\"checkbox\", \"Record Entire Screen\");\n await wait(fullScreenSelectDelay);\n await clickScreenshotToolbarControl(\"button\", \"Record\");\n}\n\nexport async function startQuickTimeRecording(appName = defaultQuickTimeAppName) {\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n const newScreenRecordingItem = findMenuItem(items, \"new screen recording\");\n\n if (newScreenRecordingItem) {\n await clickQuickTimeFileMenuItem(appName, newScreenRecordingItem);\n } else {\n await pressQuickTimeStartShortcut();\n }\n\n await wait(preConfirmDelay);\n\n if (forceRecordEntireScreen) {\n try {\n await startQuickTimeFullScreenCapture();\n await wait(postStartDelay);\n return;\n } catch {\n // Fall back to legacy confirm in environments where toolbar controls are unavailable.\n }\n }\n\n await pressReturn();\n await wait(postStartDelay);\n}\n\nexport async function stopQuickTimeRecording(appName = defaultQuickTimeAppName) {\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n const stopScreenRecordingItem = findMenuItem(items, \"stop screen recording\");\n\n if (stopScreenRecordingItem) {\n await clickQuickTimeFileMenuItem(appName, stopScreenRecordingItem);\n } else {\n await pressQuickTimeStopShortcut();\n }\n\n await wait(postStopDelay);\n}\n\nexport async function exportQuickTimeRecording(appName = defaultQuickTimeAppName) {\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n const saveItem = findMenuItem(items, \"save\");\n\n if (saveItem) {\n await clickQuickTimeFileMenuItem(appName, saveItem);\n } else {\n await pressQuickTimeSaveShortcut();\n }\n\n await wait(exportDialogConfirmDelay);\n await pressReturn();\n await wait(exportDelay);\n}\n", "import { runAppleScript } from \"@studioflow/adapters-desktop\";\n\nfunction quote(value: string) {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\n\nfunction normalizeMenuItem(raw: string) {\n return raw.trim();\n}\n\nexport function parseMenuItems(stdout: string) {\n if (!stdout.trim()) {\n return [] as string[];\n }\n\n return stdout\n .split(\",\")\n .map(normalizeMenuItem)\n .filter((item) => item.length > 0 && item !== \"missing value\");\n}\n\nexport function buildActivateScreenStudioScript(appName: string) {\n return `tell application \"${quote(appName)}\" to activate`;\n}\n\nexport function buildListRecordMenuItemsScript(appName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to get name of every menu item of menu \"Record\" of menu bar 1`;\n}\n\nexport function buildClickRecordMenuItemScript(appName: string, itemName: string) {\n return `tell application \"System Events\" to tell process \"${quote(appName)}\" to click menu item \"${quote(itemName)}\" of menu \"Record\" of menu bar 1`;\n}\n\nexport function buildPressReturnScript() {\n return 'tell application \"System Events\" to key code 36';\n}\n\nexport async function wait(ms: number) {\n await new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function activateScreenStudio(appName: string) {\n await runAppleScript(buildActivateScreenStudioScript(appName));\n}\n\nexport async function listRecordMenuItems(appName: string) {\n const { stdout } = await runAppleScript(buildListRecordMenuItemsScript(appName));\n return parseMenuItems(stdout);\n}\n\nexport async function clickRecordMenuItem(appName: string, itemName: string) {\n const items = await listRecordMenuItems(appName);\n\n if (!items.includes(itemName)) {\n const available = items.length > 0 ? items.join(\", \") : \"none\";\n throw new Error(\n `Screen Studio Record menu item \"${itemName}\" not available. Available items: ${available}`\n );\n }\n\n await runAppleScript(buildClickRecordMenuItemScript(appName, itemName));\n}\n\nexport async function pressReturn() {\n await runAppleScript(buildPressReturnScript());\n}\n", "import {\n activateScreenStudio,\n clickRecordMenuItem,\n pressReturn,\n wait\n} from \"./menu-controls.js\";\n\nconst appName = process.env.SCREENSTUDIO_APP_NAME ?? \"Screen Studio\";\n\nfunction int(value: string | undefined, fallback: number) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nconst preConfirmDelay = int(process.env.SCREENSTUDIO_PRE_CONFIRM_DELAY_MS, 800);\nconst postStartDelay = int(process.env.SCREENSTUDIO_POST_START_DELAY_MS, 1200);\nconst postStopDelay = int(process.env.SCREENSTUDIO_POST_STOP_DELAY_MS, 800);\nconst exportDialogConfirmDelay = int(process.env.SCREENSTUDIO_EXPORT_DIALOG_CONFIRM_DELAY_MS, 800);\nconst exportDelay = int(process.env.SCREENSTUDIO_EXPORT_DELAY_MS, 2500);\n\nexport async function startRecording() {\n await activateScreenStudio(appName);\n await clickRecordMenuItem(appName, \"Record display\");\n await wait(preConfirmDelay);\n await pressReturn();\n await wait(postStartDelay);\n}\n\nexport async function stopRecording() {\n await activateScreenStudio(appName);\n await clickRecordMenuItem(appName, \"Stop recording\");\n await wait(postStopDelay);\n}\n\nexport async function exportRecording() {\n await activateScreenStudio(appName);\n await clickRecordMenuItem(appName, \"Export and save to file\");\n await wait(exportDialogConfirmDelay);\n await pressReturn();\n await wait(exportDelay);\n}\n", "export async function withRetry<T>(\n fn: () => Promise<T>,\n opts: { retries?: number; delaysMs?: number[] } = {}\n): Promise<T> {\n const retries = opts.retries ?? 2;\n const delays = opts.delaysMs ?? [500, 1500, 2500];\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n lastError = error;\n if (attempt === retries) break;\n const delay = delays[Math.min(attempt, delays.length - 1)] ?? 800;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n\n throw lastError;\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { bootstrapReportSchema, type RecorderBackend } from \"@studioflow/contracts\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\nimport { getStudioflowDataDir } from \"./runtime-paths.js\";\n\nexport type ConfigSource = \"flag\" | \"project-config\" | \"user-config\" | \"bootstrap\" | \"default\";\n\ninterface RuntimeConfigFile {\n baseUrl?: string;\n startCommand?: string;\n healthPath?: string;\n headless?: boolean;\n recorder?: RecorderBackend;\n bootstrapReport?: string;\n runsDir?: string;\n}\n\ninterface RuntimeValues {\n baseUrl: string;\n startCommand: string | undefined;\n healthPath: string;\n headless: boolean;\n recorder: RecorderBackend;\n runsDir: string;\n}\n\ninterface RuntimeSources {\n baseUrl: ConfigSource;\n startCommand: ConfigSource;\n healthPath: ConfigSource;\n headless: ConfigSource;\n recorder: ConfigSource;\n runsDir: ConfigSource;\n}\n\nexport interface RuntimeConfigOverrides {\n baseUrl?: string;\n startCommand?: string;\n healthPath?: string;\n headless?: boolean;\n recorder?: RecorderBackend;\n bootstrapReportPath?: string;\n runsDir?: string;\n}\n\nexport interface ResolvedRuntimeConfig {\n values: RuntimeValues;\n sources: RuntimeSources;\n files: {\n projectConfigPath: string;\n projectConfigExists: boolean;\n userConfigPath: string;\n userConfigExists: boolean;\n bootstrapReportPath: string;\n bootstrapReportLoaded: boolean;\n };\n}\n\nfunction ensureObject(value: unknown, label: string) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction optionalString(value: unknown, key: string, label: string) {\n if (value === undefined) return undefined;\n if (typeof value !== \"string\") {\n throw new Error(`${label} field \"${key}\" must be a string.`);\n }\n return value;\n}\n\nfunction optionalBoolean(value: unknown, key: string, label: string) {\n if (value === undefined) return undefined;\n if (typeof value !== \"boolean\") {\n throw new Error(`${label} field \"${key}\" must be a boolean.`);\n }\n return value;\n}\n\nfunction optionalRecorder(value: unknown, key: string, label: string) {\n if (value === undefined) return undefined;\n if (value === \"quicktime\" || value === \"screenstudio\") {\n return value;\n }\n throw new Error(`${label} field \"${key}\" must be \"quicktime\" or \"screenstudio\".`);\n}\n\nfunction parseRuntimeConfigFile(value: unknown, label: string): RuntimeConfigFile {\n const obj = ensureObject(value, label);\n return {\n baseUrl: optionalString(obj.baseUrl, \"baseUrl\", label),\n startCommand: optionalString(obj.startCommand, \"startCommand\", label),\n healthPath: optionalString(obj.healthPath, \"healthPath\", label),\n headless: optionalBoolean(obj.headless, \"headless\", label),\n recorder: optionalRecorder(obj.recorder, \"recorder\", label),\n bootstrapReport: optionalString(obj.bootstrapReport, \"bootstrapReport\", label),\n runsDir: optionalString(obj.runsDir, \"runsDir\", label)\n };\n}\n\nasync function readConfigFile(filePath: string, label: string): Promise<{ exists: boolean; config: RuntimeConfigFile }> {\n try {\n const raw = await fs.readFile(filePath, \"utf8\");\n const parsed = JSON.parse(raw);\n return {\n exists: true,\n config: parseRuntimeConfigFile(parsed, label)\n };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code === \"ENOENT\") {\n return { exists: false, config: {} };\n }\n throw error;\n }\n}\n\nfunction chooseOptional(\n candidates: Array<{ value: string | undefined; source: ConfigSource }>\n): { value: string | undefined; source: ConfigSource } {\n for (const candidate of candidates) {\n if (candidate.value !== undefined) return candidate;\n }\n return { value: undefined, source: \"default\" };\n}\n\nfunction chooseString(\n candidates: Array<{ value: string | undefined; source: ConfigSource }>,\n fallback: string\n): { value: string; source: ConfigSource } {\n for (const candidate of candidates) {\n if (candidate.value !== undefined) return { value: candidate.value, source: candidate.source };\n }\n return { value: fallback, source: \"default\" };\n}\n\nfunction chooseBoolean(\n candidates: Array<{ value: boolean | undefined; source: ConfigSource }>,\n fallback: boolean\n): { value: boolean; source: ConfigSource } {\n for (const candidate of candidates) {\n if (candidate.value !== undefined) return { value: candidate.value, source: candidate.source };\n }\n return { value: fallback, source: \"default\" };\n}\n\nfunction validateBaseUrl(baseUrl: string) {\n try {\n new URL(baseUrl);\n } catch {\n throw new Error(`Invalid base URL: ${baseUrl}`);\n }\n}\n\nexport async function resolveRuntimeConfig(overrides: RuntimeConfigOverrides = {}): Promise<ResolvedRuntimeConfig> {\n const projectConfigPath = path.join(workspaceRoot(), \".studioflow\", \"config.json\");\n const userConfigPath = path.join(getStudioflowDataDir(), \"config.json\");\n\n const [project, user] = await Promise.all([\n readConfigFile(projectConfigPath, `Project config (${projectConfigPath})`),\n readConfigFile(userConfigPath, `User config (${userConfigPath})`)\n ]);\n\n const bootstrapPathField = chooseString(\n [\n { value: overrides.bootstrapReportPath, source: \"flag\" },\n { value: project.config.bootstrapReport, source: \"project-config\" },\n { value: user.config.bootstrapReport, source: \"user-config\" }\n ],\n \"artifacts/bootstrap.json\"\n );\n const bootstrapReportPath = resolveFromWorkspace(bootstrapPathField.value);\n\n let bootstrap:\n | {\n startCommand: string;\n healthPath: string;\n }\n | null = null;\n\n try {\n const raw = await fs.readFile(bootstrapReportPath, \"utf8\");\n const parsed = bootstrapReportSchema.parse(JSON.parse(raw));\n bootstrap = { startCommand: parsed.startCommand, healthPath: parsed.healthPath };\n } catch (error) {\n const err = error as NodeJS.ErrnoException;\n if (err.code !== \"ENOENT\") {\n throw error;\n }\n }\n\n const baseUrl = chooseString(\n [\n { value: overrides.baseUrl, source: \"flag\" },\n { value: project.config.baseUrl, source: \"project-config\" },\n { value: user.config.baseUrl, source: \"user-config\" }\n ],\n \"http://localhost:4173\"\n );\n\n const startCommand = chooseOptional([\n { value: overrides.startCommand, source: \"flag\" },\n { value: project.config.startCommand, source: \"project-config\" },\n { value: user.config.startCommand, source: \"user-config\" },\n { value: bootstrap?.startCommand, source: \"bootstrap\" }\n ]);\n\n const healthPath = chooseString(\n [\n { value: overrides.healthPath, source: \"flag\" },\n { value: project.config.healthPath, source: \"project-config\" },\n { value: user.config.healthPath, source: \"user-config\" },\n { value: bootstrap?.healthPath, source: \"bootstrap\" }\n ],\n \"/api/health\"\n );\n\n const headless = chooseBoolean(\n [\n { value: overrides.headless, source: \"flag\" },\n { value: project.config.headless, source: \"project-config\" },\n { value: user.config.headless, source: \"user-config\" }\n ],\n false\n );\n\n const recorder = chooseString(\n [\n { value: overrides.recorder, source: \"flag\" },\n { value: project.config.recorder, source: \"project-config\" },\n { value: user.config.recorder, source: \"user-config\" }\n ],\n \"quicktime\"\n );\n\n const runsDir = chooseString(\n [\n { value: overrides.runsDir, source: \"flag\" },\n { value: project.config.runsDir, source: \"project-config\" },\n { value: user.config.runsDir, source: \"user-config\" }\n ],\n path.join(getStudioflowDataDir(), \"runs\")\n );\n\n validateBaseUrl(baseUrl.value);\n\n return {\n values: {\n baseUrl: baseUrl.value,\n startCommand: startCommand.value,\n healthPath: healthPath.value,\n headless: headless.value,\n recorder: recorder.value as RecorderBackend,\n runsDir: runsDir.value\n },\n sources: {\n baseUrl: baseUrl.source,\n startCommand: startCommand.source,\n healthPath: healthPath.source,\n headless: headless.source,\n recorder: recorder.source,\n runsDir: runsDir.source\n },\n files: {\n projectConfigPath,\n projectConfigExists: project.exists,\n userConfigPath,\n userConfigExists: user.exists,\n bootstrapReportPath,\n bootstrapReportLoaded: Boolean(bootstrap)\n }\n };\n}\n\nexport async function configShowCommand(opts: { json?: boolean; overrides?: RuntimeConfigOverrides } = {}) {\n const resolved = await resolveRuntimeConfig(opts.overrides);\n if (opts.json) {\n console.log(JSON.stringify(resolved, null, 2));\n return resolved;\n }\n\n console.log(kleur.bold(\"StudioFlow configuration\"));\n console.log(`- baseUrl: ${resolved.values.baseUrl} (${resolved.sources.baseUrl})`);\n console.log(\n `- startCommand: ${resolved.values.startCommand ?? \"(not configured)\"} (${resolved.sources.startCommand})`\n );\n console.log(`- healthPath: ${resolved.values.healthPath} (${resolved.sources.healthPath})`);\n console.log(`- headless: ${String(resolved.values.headless)} (${resolved.sources.headless})`);\n console.log(`- recorder: ${resolved.values.recorder} (${resolved.sources.recorder})`);\n console.log(`- runsDir: ${resolved.values.runsDir} (${resolved.sources.runsDir})`);\n console.log(`- project config: ${resolved.files.projectConfigPath} (${resolved.files.projectConfigExists ? \"found\" : \"missing\"})`);\n console.log(`- user config: ${resolved.files.userConfigPath} (${resolved.files.userConfigExists ? \"found\" : \"missing\"})`);\n console.log(\n `- bootstrap report: ${resolved.files.bootstrapReportPath} (${resolved.files.bootstrapReportLoaded ? \"loaded\" : \"missing\"})`\n );\n return resolved;\n}\n\nexport async function configCheckCommand(opts: { json?: boolean; overrides?: RuntimeConfigOverrides } = {}) {\n const resolved = await resolveRuntimeConfig(opts.overrides);\n const warnings: string[] = [];\n\n if (!resolved.values.startCommand) {\n warnings.push(\"No startCommand resolved. Runs will require the app to already be healthy at baseUrl/healthPath.\");\n }\n if (!resolved.files.bootstrapReportLoaded) {\n warnings.push(\n `Bootstrap report not found at ${resolved.files.bootstrapReportPath}. Run \\`studioflow bootstrap\\` for project hints.`\n );\n }\n\n if (opts.json) {\n console.log(\n JSON.stringify(\n {\n ok: true,\n warnings,\n config: resolved\n },\n null,\n 2\n )\n );\n return { ok: true, warnings, config: resolved };\n }\n\n console.log(kleur.green(\"Configuration check passed.\"));\n console.log(`- baseUrl: ${resolved.values.baseUrl}`);\n console.log(`- healthPath: ${resolved.values.healthPath}`);\n console.log(`- headless: ${String(resolved.values.headless)}`);\n console.log(`- recorder: ${resolved.values.recorder}`);\n console.log(`- runsDir: ${resolved.values.runsDir}`);\n if (warnings.length > 0) {\n console.log(kleur.yellow(\"Warnings:\"));\n for (const warning of warnings) {\n console.log(`- ${warning}`);\n }\n }\n\n return { ok: true, warnings, config: resolved };\n}\n", "import path from \"node:path\";\n\nexport function workspaceRoot() {\n return process.env.INIT_CWD ? path.resolve(process.env.INIT_CWD) : process.cwd();\n}\n\nexport function resolveFromWorkspace(inputPath: string) {\n if (!inputPath) return workspaceRoot();\n return path.isAbsolute(inputPath) ? inputPath : path.resolve(workspaceRoot(), inputPath);\n}\n", "import os from \"node:os\";\nimport path from \"node:path\";\n\nexport function getStudioflowDataDir() {\n const configured = process.env.STUDIOFLOW_DATA_DIR ?? process.env.STUDIOFLOW_HOME;\n if (configured && configured.trim()) {\n return path.resolve(configured);\n }\n return path.join(os.homedir(), \".studioflow\");\n}\n\nfunction resolveAgentHome(envVar: string, defaultDir: string) {\n const configured = process.env[envVar];\n return configured && configured.trim() ? path.resolve(configured) : path.join(os.homedir(), defaultDir);\n}\n\nexport function getCodexSkillsDir() {\n return path.join(resolveAgentHome(\"CODEX_HOME\", \".codex\"), \"skills\");\n}\n\nexport function getClaudeSkillsDir() {\n return path.join(resolveAgentHome(\"CLAUDE_HOME\", \".claude\"), \"skills\");\n}\n", "import type { FlowDefinition, FlowStep } from \"@studioflow/contracts\";\n\nexport interface FlowValidationResult {\n valid: boolean;\n errors: string[];\n warnings: string[];\n}\n\nfunction validateStep(step: FlowStep, index: number) {\n const errors: string[] = [];\n const warnings: string[] = [];\n const at = `step[${index}] (${step.id})`;\n\n if ([\"click\", \"type\", \"assert_visible\"].includes(step.action) && !step.target) {\n errors.push(`${at}: action ${step.action} requires target`);\n }\n\n if ([\"assert_text\"].includes(step.action) && !step.value) {\n errors.push(`${at}: action ${step.action} requires value`);\n }\n\n if (step.action === \"wait_for\" && !step.target && !step.value) {\n errors.push(`${at}: action wait_for requires target or value`);\n }\n\n const pacingFields: Array<keyof FlowStep> = [\"preDelayMs\", \"postDelayMs\", \"mouseMoveMs\", \"highlightMs\", \"dwellMs\"];\n for (const field of pacingFields) {\n const value = step[field];\n if (typeof value === \"number\" && value > 20_000) {\n warnings.push(`${at}: ${field} is very high (${value}ms)`);\n }\n }\n\n return { errors, warnings };\n}\n\nexport function validateFlowDefinition(flow: FlowDefinition): FlowValidationResult {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n if (flow.steps.length === 0) {\n errors.push(\"flow has no steps\");\n }\n\n flow.steps.forEach((step, index) => {\n const result = validateStep(step, index);\n errors.push(...result.errors);\n warnings.push(...result.warnings);\n });\n\n return {\n valid: errors.length === 0,\n errors,\n warnings\n };\n}\n", "import kleur from \"kleur\";\nimport { ensureAutomationPermissions } from \"@studioflow/adapters-desktop\";\nimport { activateScreenStudio, listRecordMenuItems } from \"@studioflow/adapters-screenstudio\";\n\nexport const defaultScreenStudioAppName = process.env.SCREENSTUDIO_APP_NAME ?? \"Screen Studio\";\n\nexport interface ScreenStudioPrepOptions {\n appName?: string;\n ensurePermissions?: boolean;\n quiet?: boolean;\n}\n\nexport interface ScreenStudioPrepResult {\n appName: string;\n recordMenuItems: string[];\n}\n\nexport function hasRecordingEntry(items: string[]) {\n return items.includes(\"Record display\") || items.includes(\"Stop recording\");\n}\n\nexport async function runScreenStudioPreflight(\n opts: ScreenStudioPrepOptions = {}\n): Promise<ScreenStudioPrepResult> {\n const appName = opts.appName ?? defaultScreenStudioAppName;\n const ensurePermissions = opts.ensurePermissions ?? true;\n\n if (ensurePermissions) {\n await ensureAutomationPermissions();\n }\n\n await activateScreenStudio(appName);\n const items = await listRecordMenuItems(appName);\n\n if (items.length === 0) {\n throw new Error(\n `Screen Studio Record menu is empty for app \"${appName}\". Ensure Screen Studio is running and menu automation is allowed.`\n );\n }\n\n if (!hasRecordingEntry(items)) {\n throw new Error(\n `Screen Studio Record menu does not expose expected recording actions for \"${appName}\". Found: ${items.join(\", \")}`\n );\n }\n\n const result = {\n appName,\n recordMenuItems: items\n };\n\n if (!opts.quiet) {\n console.log(kleur.green(\"Screen Studio prep passed.\"));\n console.log(`- App: ${appName}`);\n console.log(`- Record menu items: ${items.join(\", \")}`);\n }\n\n return result;\n}\n\nexport async function screenstudioPrepCommand(appName = defaultScreenStudioAppName) {\n await runScreenStudioPreflight({ appName, ensurePermissions: true, quiet: false });\n}\n", "import kleur from \"kleur\";\nimport { ensureAutomationPermissions, activateQuickTime, listQuickTimeFileMenuItems } from \"@studioflow/adapters-desktop\";\n\nexport const defaultQuickTimeAppName = process.env.QUICKTIME_APP_NAME ?? \"QuickTime Player\";\n\nexport interface QuickTimePrepOptions {\n appName?: string;\n ensurePermissions?: boolean;\n quiet?: boolean;\n}\n\nexport interface QuickTimePrepResult {\n appName: string;\n fileMenuItems: string[];\n}\n\nexport function hasScreenRecordingEntry(items: string[]) {\n return items.some((item) => item.toLowerCase().includes(\"new screen recording\"));\n}\n\nexport async function runQuickTimePreflight(opts: QuickTimePrepOptions = {}): Promise<QuickTimePrepResult> {\n const appName = opts.appName ?? defaultQuickTimeAppName;\n const ensurePermissions = opts.ensurePermissions ?? true;\n\n if (ensurePermissions) {\n await ensureAutomationPermissions();\n }\n\n await activateQuickTime(appName);\n const items = await listQuickTimeFileMenuItems(appName);\n\n if (items.length === 0) {\n throw new Error(\n `QuickTime File menu is empty for app \"${appName}\". Ensure QuickTime Player is running and menu automation is allowed.`\n );\n }\n\n if (!hasScreenRecordingEntry(items)) {\n throw new Error(\n `QuickTime File menu does not expose \"New Screen Recording\" for \"${appName}\". Found: ${items.join(\", \")}`\n );\n }\n\n const result = {\n appName,\n fileMenuItems: items\n };\n\n if (!opts.quiet) {\n console.log(kleur.green(\"QuickTime prep passed.\"));\n console.log(`- App: ${appName}`);\n console.log(`- File menu items: ${items.join(\", \")}`);\n }\n\n return result;\n}\n\nexport async function quicktimePrepCommand(appName = defaultQuickTimeAppName) {\n await runQuickTimePreflight({ appName, ensurePermissions: true, quiet: false });\n}\n", "import kleur from \"kleur\";\nimport { loadFlows } from \"@studioflow/flow-registry\";\n\nexport async function listFlowsCommand() {\n const flows = await loadFlows();\n console.log(kleur.bold(\"Available deterministic flows:\"));\n for (const flow of flows) {\n console.log(`- ${flow.id}: ${flow.description}`);\n }\n}\n", "import kleur from \"kleur\";\nimport {\n checkPermissions,\n openPermissionSettings,\n triggerPermissionPrompts\n} from \"@studioflow/adapters-desktop\";\n\nexport async function doctorCommand() {\n const permissions = await checkPermissions();\n\n const checks = [\n {\n name: \"Screen Studio installed (optional)\",\n ok: permissions.screenStudioInstalled,\n required: false\n },\n {\n name: \"AppleScript available\",\n ok: permissions.canRunAppleScript,\n required: true\n },\n {\n name: \"Keystroke automation allowed\",\n ok: permissions.canSendKeystrokes,\n required: true\n }\n ];\n\n for (const check of checks) {\n const mark = check.ok ? kleur.green(\"PASS\") : check.required ? kleur.red(\"FAIL\") : kleur.yellow(\"WARN\");\n console.log(`${mark} ${check.name}`);\n }\n\n if (permissions.notes.length > 0) {\n console.log(kleur.yellow(\"Notes:\"));\n for (const note of permissions.notes) {\n console.log(`- ${note}`);\n }\n }\n\n const failed = checks.filter((c) => c.required && !c.ok);\n if (failed.length > 0) {\n await triggerPermissionPrompts();\n await openPermissionSettings();\n throw new Error(\n \"Doctor checks failed. Permission prompts were triggered and settings panes were opened. Approve access, then rerun doctor.\"\n );\n }\n\n console.log(kleur.green(\"Doctor checks passed.\"));\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { loadFlows } from \"@studioflow/flow-registry\";\nimport { structureReportSchema, navigationGraphSchema, type NavigationGraph, type StructureReport } from \"@studioflow/contracts\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\n\nasync function walk(dir: string, acc: string[] = []) {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if ([\"node_modules\", \".next\", \".git\", \"dist\", \".runs\"].includes(entry.name)) continue;\n const fullPath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n await walk(fullPath, acc);\n } else {\n acc.push(fullPath);\n }\n }\n return acc;\n}\n\nfunction routeFromAppFile(filePath: string): string | null {\n const normalized = filePath.replace(/\\\\/g, \"/\");\n const idx = normalized.indexOf(\"/app/\");\n if (idx === -1 || !normalized.endsWith(\"/page.tsx\")) return null;\n const routePart = normalized.slice(idx + 5, normalized.length - \"/page.tsx\".length);\n if (!routePart) return \"/\";\n return `/${routePart}`;\n}\n\nfunction normalizeTargetRoute(target: string): string | null {\n if (!target.startsWith(\"/\")) return null;\n const withoutQuery = target.split(\"?\")[0];\n if (!withoutQuery) return null;\n return withoutQuery;\n}\n\nfunction detectProjectType(pkg: Record<string, unknown>, files: string[]): \"nextjs\" | \"vite-react\" | \"unknown\" {\n const deps = {\n ...(typeof pkg.dependencies === \"object\" && pkg.dependencies ? (pkg.dependencies as Record<string, unknown>) : {}),\n ...(typeof pkg.devDependencies === \"object\" && pkg.devDependencies\n ? (pkg.devDependencies as Record<string, unknown>)\n : {})\n };\n\n if (deps.next || files.some((file) => file.includes(\"/app/\") && file.endsWith(\"/page.tsx\"))) {\n return \"nextjs\";\n }\n if (deps.vite && deps.react) {\n return \"vite-react\";\n }\n return \"unknown\";\n}\n\nasync function detectPackageManager(root: string): Promise<string> {\n const lockfiles = [\n { name: \"pnpm\", file: \"pnpm-lock.yaml\" },\n { name: \"npm\", file: \"package-lock.json\" },\n { name: \"yarn\", file: \"yarn.lock\" }\n ];\n\n for (const lock of lockfiles) {\n try {\n await fs.access(path.join(root, lock.file));\n return lock.name;\n } catch {\n // Keep checking.\n }\n }\n\n return \"unknown\";\n}\n\nfunction deriveStartCommands(pkg: Record<string, unknown>, packageManager: string) {\n const scripts =\n typeof pkg.scripts === \"object\" && pkg.scripts ? (pkg.scripts as Record<string, unknown>) : ({} as Record<string, unknown>);\n const pmRun = packageManager === \"npm\" ? \"npm run\" : packageManager === \"yarn\" ? \"yarn\" : \"pnpm\";\n const commands: string[] = [];\n\n if (typeof scripts[\"dev:sample\"] === \"string\") commands.push(`${pmRun} dev:sample`);\n if (typeof scripts.dev === \"string\") commands.push(`${pmRun} dev`);\n if (typeof scripts.start === \"string\") commands.push(`${pmRun} start`);\n\n if (commands.length === 0) {\n commands.push(\"pnpm dev:sample\", \"pnpm dev\");\n }\n\n return commands;\n}\n\nfunction inferEdgesFromSource(\n sourceRoute: string,\n sourceFile: string,\n content: string,\n knownRoutes: Set<string>\n): NavigationGraph[\"edges\"] {\n const edges: NavigationGraph[\"edges\"] = [];\n const addEdge = (to: string, via: string, confidence: number, evidence: string) => {\n if (!knownRoutes.has(to)) return;\n edges.push({ from: sourceRoute, to, via, confidence, evidence });\n };\n\n const hrefRegex = /\\bhref\\s*=\\s*[\"'`]([^\"'`]+)[\"'`]/g;\n for (const match of content.matchAll(hrefRegex)) {\n const raw = match[1];\n const to = normalizeTargetRoute(raw);\n if (!to) continue;\n addEdge(to, `href:${raw}`, 0.95, `${path.basename(sourceFile)} -> href=\"${raw}\"`);\n }\n\n const routerPushRegex = /router\\.push\\(\\s*[\"'`]([^\"'`]+)[\"'`]\\s*\\)/g;\n for (const match of content.matchAll(routerPushRegex)) {\n const raw = match[1];\n const to = normalizeTargetRoute(raw);\n if (!to) continue;\n addEdge(to, `router.push:${raw}`, 0.92, `${path.basename(sourceFile)} -> router.push(\"${raw}\")`);\n }\n\n const routerPushTemplateRegex = /router\\.push\\(\\s*`([^`]+)`\\s*\\)/g;\n for (const match of content.matchAll(routerPushTemplateRegex)) {\n const raw = match[1];\n const to = normalizeTargetRoute(raw);\n if (!to) continue;\n addEdge(to, `router.push:${raw}`, 0.88, `${path.basename(sourceFile)} -> router.push(\\`${raw}\\`)`);\n }\n\n return edges;\n}\n\nexport async function discoverCommand(outDir = \"artifacts\") {\n const root = workspaceRoot();\n const files = await walk(root);\n const pkgPath = path.join(root, \"package.json\");\n const pkg = JSON.parse(await fs.readFile(pkgPath, \"utf8\"));\n const packageManager = await detectPackageManager(root);\n const projectType = detectProjectType(pkg, files);\n\n const frameworkHints = [\n pkg.dependencies?.next || pkg.devDependencies?.next ? \"nextjs\" : null,\n pkg.dependencies?.react || pkg.devDependencies?.react ? \"react\" : null,\n files.some((f) => f.endsWith(\"playwright.config.ts\")) ? \"playwright\" : null\n ].filter(Boolean) as string[];\n\n const routeFiles = files.filter((f) => f.endsWith(\"/page.tsx\") && f.includes(\"/app/\"));\n const routes = routeFiles\n .map((file) => ({ route: routeFromAppFile(file), file: path.relative(root, file) }))\n .filter((item): item is { route: string; file: string } => Boolean(item.route));\n\n const componentFiles = files\n .filter((f) => /\\/components\\/.+\\.(tsx|ts|jsx|js)$/.test(f.replace(/\\\\/g, \"/\")))\n .map((file) => ({ name: path.basename(file).replace(/\\.(tsx|ts|jsx|js)$/, \"\"), file: path.relative(root, file) }));\n\n const flows = await loadFlows();\n\n const structureReport: StructureReport = {\n generatedAt: new Date().toISOString(),\n projectRoot: root,\n packageManager,\n projectType,\n frameworkHints,\n startCommands: [...deriveStartCommands(pkg, packageManager), \"pnpm demo -- \\\"<intent>\\\"\"],\n routes,\n components: componentFiles,\n existingFlowIds: flows.map((f) => f.id),\n notes: [\n \"Generated by studioflow discover.\",\n \"Use this report as context for studioflow-investigate routing and studioflow-author artifact generation.\"\n ]\n };\n\n const routeSet = new Set(routes.map((route) => route.route));\n const routeFilesWithPaths = routes.map((route) => ({\n route: route.route,\n filePath: path.join(root, route.file),\n file: route.file\n }));\n\n const inferredEdges: NavigationGraph[\"edges\"] = [];\n for (const routeFile of routeFilesWithPaths) {\n const raw = await fs.readFile(routeFile.filePath, \"utf8\");\n inferredEdges.push(...inferEdgesFromSource(routeFile.route, routeFile.filePath, raw, routeSet));\n }\n\n const deduped = Array.from(\n new Map(inferredEdges.map((edge) => [`${edge.from}|${edge.to}|${edge.via}`, edge])).values()\n );\n\n const graph: NavigationGraph = {\n generatedAt: new Date().toISOString(),\n nodes: routes.map((route) => ({ id: route.route, route: route.route, file: route.file })),\n edges: deduped\n };\n\n structureReportSchema.parse(structureReport);\n navigationGraphSchema.parse(graph);\n\n const outputDir = resolveFromWorkspace(outDir);\n await fs.mkdir(outputDir, { recursive: true });\n\n const structurePath = path.join(outputDir, \"structure-report.json\");\n const graphPath = path.join(outputDir, \"navigation-graph.json\");\n\n await fs.writeFile(structurePath, JSON.stringify(structureReport, null, 2), \"utf8\");\n await fs.writeFile(graphPath, JSON.stringify(graph, null, 2), \"utf8\");\n\n console.log(kleur.green(\"Discovery complete.\"));\n console.log(`- Structure report: ${structurePath}`);\n console.log(`- Navigation graph: ${graphPath}`);\n}\n", "import kleur from \"kleur\";\nimport { loadFlowFromFile } from \"@studioflow/flow-registry\";\nimport { validateFlowDefinition } from \"./flow-validation.js\";\nimport { resolveFromWorkspace } from \"./path-utils.js\";\n\nexport async function validateCommand(flowPath: string) {\n if (!flowPath) {\n throw new Error(\"Usage: studioflow validate --flow <path/to/flow.json|yaml>\");\n }\n\n const resolvedPath = resolveFromWorkspace(flowPath);\n const flow = await loadFlowFromFile(resolvedPath);\n const result = validateFlowDefinition(flow);\n\n if (result.warnings.length > 0) {\n console.log(kleur.yellow(`Validation warnings (${result.warnings.length}):`));\n result.warnings.forEach((warning) => console.log(`- ${warning}`));\n }\n\n if (!result.valid) {\n console.log(kleur.red(`Validation errors (${result.errors.length}):`));\n result.errors.forEach((error) => console.log(`- ${error}`));\n throw new Error(\"Flow validation failed\");\n }\n\n console.log(kleur.green(`Flow is valid: ${flow.id}`));\n console.log(`Source: ${resolvedPath}`);\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { bootstrapReportSchema, type BootstrapReport } from \"@studioflow/contracts\";\nimport { resolveFromWorkspace, workspaceRoot } from \"./path-utils.js\";\n\ntype PackageManager = BootstrapReport[\"packageManager\"];\ntype ProjectType = BootstrapReport[\"projectType\"];\n\nasync function detectPackageManager(root: string): Promise<PackageManager> {\n const lockfiles: Array<{ manager: PackageManager; file: string }> = [\n { manager: \"pnpm\", file: \"pnpm-lock.yaml\" },\n { manager: \"npm\", file: \"package-lock.json\" },\n { manager: \"yarn\", file: \"yarn.lock\" }\n ];\n\n for (const lock of lockfiles) {\n try {\n await fs.access(path.join(root, lock.file));\n return lock.manager;\n } catch {\n // Continue checking.\n }\n }\n\n return \"unknown\";\n}\n\nasync function walk(dir: string, acc: string[] = []) {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if ([\"node_modules\", \".next\", \".git\", \"dist\", \".runs\"].includes(entry.name)) continue;\n const fullPath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n await walk(fullPath, acc);\n } else {\n acc.push(fullPath);\n }\n }\n return acc;\n}\n\nfunction detectProjectType(pkg: Record<string, unknown>, files: string[]): ProjectType {\n const deps = {\n ...(typeof pkg.dependencies === \"object\" && pkg.dependencies ? (pkg.dependencies as Record<string, unknown>) : {}),\n ...(typeof pkg.devDependencies === \"object\" && pkg.devDependencies\n ? (pkg.devDependencies as Record<string, unknown>)\n : {})\n };\n\n if (deps.next || files.some((file) => file.includes(\"/app/\") && file.endsWith(\"/page.tsx\"))) {\n return \"nextjs\";\n }\n if (deps.vite && deps.react) {\n return \"vite-react\";\n }\n return \"unknown\";\n}\n\nfunction chooseStartCommand(\n pkg: Record<string, unknown>,\n packageManager: PackageManager\n): { command: string; note?: string } {\n const scripts =\n typeof pkg.scripts === \"object\" && pkg.scripts ? (pkg.scripts as Record<string, unknown>) : ({} as Record<string, unknown>);\n const pmRun = packageManager === \"npm\" ? \"npm run\" : packageManager === \"yarn\" ? \"yarn\" : \"pnpm\";\n\n if (typeof scripts[\"dev:sample\"] === \"string\") return { command: `${pmRun} dev:sample` };\n if (typeof scripts.dev === \"string\") return { command: `${pmRun} dev` };\n if (typeof scripts.start === \"string\") return { command: `${pmRun} start` };\n\n return { command: \"pnpm dev\", note: \"Fallback start command used because package scripts were not detected.\" };\n}\n\nfunction defaultHealthPath(projectType: ProjectType) {\n if (projectType === \"nextjs\") return \"/api/health\";\n return \"/\";\n}\n\nexport async function bootstrapCommand(outPath = \"artifacts/bootstrap.json\") {\n const root = workspaceRoot();\n const pkgPath = path.join(root, \"package.json\");\n const pkg = JSON.parse(await fs.readFile(pkgPath, \"utf8\"));\n const packageManager = await detectPackageManager(root);\n const files = await walk(root);\n const projectType = detectProjectType(pkg, files);\n const chosen = chooseStartCommand(pkg, packageManager);\n const healthPath = defaultHealthPath(projectType);\n\n const report: BootstrapReport = {\n generatedAt: new Date().toISOString(),\n projectRoot: root,\n packageManager,\n projectType,\n startCommand: chosen.command,\n healthPath,\n notes: [\n \"Generated by studioflow bootstrap.\",\n \"Override runtime values with .studioflow/config.json or run command flags.\",\n ...(chosen.note ? [chosen.note] : [])\n ]\n };\n\n const validated = bootstrapReportSchema.parse(report);\n const resolved = resolveFromWorkspace(outPath);\n await fs.mkdir(path.dirname(resolved), { recursive: true });\n await fs.writeFile(resolved, JSON.stringify(validated, null, 2), \"utf8\");\n\n console.log(kleur.green(\"Bootstrap report generated.\"));\n console.log(`- Output: ${resolved}`);\n console.log(`- Start command: ${validated.startCommand}`);\n console.log(`- Health path: ${validated.healthPath}`);\n}\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport kleur from \"kleur\";\nimport { checkPermissions } from \"@studioflow/adapters-desktop\";\nimport { ensureChromiumInstalled } from \"@studioflow/adapters-playwright\";\nimport type { SkillsAgentSelection } from \"./install-skills.js\";\nimport { installBundledSkills } from \"./install-skills.js\";\nimport { getStudioflowDataDir } from \"./runtime-paths.js\";\n\nexport interface SetupOptions {\n skipSkills?: boolean;\n forceSkills?: boolean;\n skillsTargetDir?: string;\n skillsAgent?: SkillsAgentSelection;\n codexSkillsTargetDir?: string;\n claudeSkillsTargetDir?: string;\n}\n\nfunction setupStatePath() {\n return path.join(getStudioflowDataDir(), \"setup-state.json\");\n}\n\nasync function writeSetupState(payload: Record<string, unknown>) {\n const statePath = setupStatePath();\n await fs.mkdir(path.dirname(statePath), { recursive: true });\n await fs.writeFile(statePath, JSON.stringify(payload, null, 2), \"utf8\");\n}\n\nexport async function setupCommand(opts: SetupOptions = {}) {\n console.log(kleur.bold(\"StudioFlow setup\"));\n\n const chromium = await ensureChromiumInstalled({ autoInstall: true });\n if (!chromium.installed) {\n throw new Error(\"Chromium installation is required but could not be completed.\");\n }\n\n if (chromium.installedNow) {\n console.log(kleur.green(\"Chromium installed for Playwright.\"));\n } else {\n console.log(kleur.green(\"Chromium already installed for Playwright.\"));\n }\n\n let skillsSummary:\n | {\n sourceDir: string;\n targets: Array<{\n targetId: string;\n targetDir: string;\n installed: string[];\n updated: string[];\n skipped: string[];\n }>;\n }\n | undefined;\n\n if (opts.skipSkills) {\n console.log(kleur.yellow(\"Skipped skill installation (--skip-skills).\"));\n } else {\n skillsSummary = await installBundledSkills({\n force: opts.forceSkills,\n targetDir: opts.skillsTargetDir,\n agent: opts.skillsAgent,\n codexTargetDir: opts.codexSkillsTargetDir,\n claudeTargetDir: opts.claudeSkillsTargetDir\n });\n\n console.log(kleur.green(\"Skills synchronized.\"));\n for (const target of skillsSummary.targets) {\n const label = target.targetId === \"custom\" ? \"custom\" : target.targetId;\n console.log(`- Target (${label}): ${target.targetDir}`);\n if (target.installed.length > 0) {\n console.log(`- Installed (${label}): ${target.installed.join(\", \")}`);\n }\n if (target.updated.length > 0) {\n console.log(`- Updated (${label}): ${target.updated.join(\", \")}`);\n }\n if (target.skipped.length > 0) {\n console.log(kleur.yellow(`- Skipped (${label}, up to date): ${target.skipped.join(\", \")}`));\n }\n }\n }\n\n const permissions = await checkPermissions();\n const permissionChecks = [\n { label: \"Screen Studio installed (optional)\", ok: permissions.screenStudioInstalled },\n { label: \"AppleScript available\", ok: permissions.canRunAppleScript },\n { label: \"Keystroke automation allowed\", ok: permissions.canSendKeystrokes }\n ];\n\n console.log(kleur.bold(\"Permission checks\"));\n for (const check of permissionChecks) {\n const mark = check.ok ? kleur.green(\"PASS\") : kleur.yellow(\"WARN\");\n console.log(`- ${mark} ${check.label}`);\n }\n\n if (permissions.notes.length > 0) {\n console.log(kleur.yellow(\"Notes:\"));\n for (const note of permissions.notes) {\n console.log(`- ${note}`);\n }\n console.log(\"Run `studioflow doctor` to trigger permission prompts and open settings panes.\");\n }\n\n await writeSetupState({\n completedAt: new Date().toISOString(),\n chromiumExecutablePath: chromium.executablePath,\n chromiumInstalledNow: chromium.installedNow,\n skills: skillsSummary\n ? {\n targets: skillsSummary.targets.map((target) => ({\n targetId: target.targetId,\n targetDir: target.targetDir,\n installed: target.installed,\n updated: target.updated,\n skipped: target.skipped\n }))\n }\n : { skipped: true }\n });\n\n console.log(kleur.green(\"Setup complete.\"));\n console.log(`- State file: ${setupStatePath()}`);\n}\n", "import { createHash } from \"node:crypto\";\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport kleur from \"kleur\";\nimport { getClaudeSkillsDir, getCodexSkillsDir } from \"./runtime-paths.js\";\n\nconst __dirname = path.dirname(fileURLToPath(import.meta.url));\nconst bundledSkillNames = [\"studioflow-cli\", \"studioflow-investigate\", \"studioflow-author\"] as const;\nconst skillManifestFile = \"manifest.json\";\nconst skillMetadataFile = \".studioflow-skill.json\";\nconst packageName = \"studioflow\";\n\ntype BundledSkillName = (typeof bundledSkillNames)[number];\n\nexport type SkillsAgent = \"codex\" | \"claude\";\nexport type SkillsAgentSelection = SkillsAgent | \"all\";\n\nexport interface InstallSkillsOptions {\n force?: boolean;\n targetDir?: string;\n agent?: SkillsAgentSelection;\n codexTargetDir?: string;\n claudeTargetDir?: string;\n sourceDir?: string;\n allowExternalSource?: boolean;\n quiet?: boolean;\n}\n\nexport interface InstallSkillsTargetResult {\n targetId: SkillsAgent | \"custom\";\n targetDir: string;\n installed: string[];\n updated: string[];\n skipped: string[];\n}\n\nexport interface InstallSkillsResult {\n sourceDir: string;\n targets: InstallSkillsTargetResult[];\n}\n\nasync function pathExists(target: string) {\n try {\n await fs.access(target);\n return true;\n } catch {\n return false;\n }\n}\n\ninterface BundledSkillManifestEntry {\n hash: string;\n}\n\ninterface BundledSkillManifest {\n schemaVersion: number;\n packageName: string;\n packageVersion: string;\n skills: Record<string, BundledSkillManifestEntry>;\n}\n\ninterface InstalledSkillMetadata {\n packageName: string;\n cliVersion: string;\n skillHash: string;\n installedAt: string;\n}\n\nfunction toPosixPath(value: string) {\n return value.split(path.sep).join(\"/\");\n}\n\nasync function listFilesRecursively(rootDir: string): Promise<string[]> {\n const entries = await fs.readdir(rootDir, { withFileTypes: true });\n const files: string[] = [];\n\n for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {\n const fullPath = path.join(rootDir, entry.name);\n if (entry.isDirectory()) {\n files.push(...(await listFilesRecursively(fullPath)));\n continue;\n }\n if (entry.isFile()) {\n files.push(fullPath);\n }\n }\n\n return files;\n}\n\nasync function hashDirectoryContents(rootDir: string): Promise<string> {\n const hasher = createHash(\"sha256\");\n const files = await listFilesRecursively(rootDir);\n\n for (const filePath of files) {\n const relativePath = toPosixPath(path.relative(rootDir, filePath));\n hasher.update(relativePath);\n hasher.update(\"\\n\");\n hasher.update(await fs.readFile(filePath));\n hasher.update(\"\\n\");\n }\n\n return hasher.digest(\"hex\");\n}\n\nasync function resolveCliPackageVersion(sourceDir: string): Promise<string> {\n const candidates = [\n path.resolve(sourceDir, \"../package.json\"),\n path.resolve(__dirname, \"../../package.json\"),\n path.resolve(process.cwd(), \"apps/cli/package.json\")\n ];\n\n for (const candidate of candidates) {\n try {\n const raw = await fs.readFile(candidate, \"utf8\");\n const parsed = JSON.parse(raw) as {\n name?: string;\n version?: string;\n };\n if (parsed.name === packageName && typeof parsed.version === \"string\") {\n return parsed.version;\n }\n } catch {\n // Try next candidate.\n }\n }\n\n return \"0.0.0\";\n}\n\nfunction isValidManifest(value: unknown): value is BundledSkillManifest {\n if (!value || typeof value !== \"object\") return false;\n const manifest = value as Partial<BundledSkillManifest>;\n if (\n manifest.schemaVersion !== 1 ||\n manifest.packageName !== packageName ||\n typeof manifest.packageVersion !== \"string\" ||\n !manifest.skills ||\n typeof manifest.skills !== \"object\"\n ) {\n return false;\n }\n\n return bundledSkillNames.every((name) => {\n const entry = (manifest.skills as Record<string, unknown>)[name] as Partial<BundledSkillManifestEntry> | undefined;\n return Boolean(entry && typeof entry.hash === \"string\" && entry.hash.length > 0);\n });\n}\n\nasync function resolveBundledSkillsManifest(sourceDir: string): Promise<BundledSkillManifest> {\n const manifestPath = path.join(sourceDir, skillManifestFile);\n if (await pathExists(manifestPath)) {\n try {\n const raw = await fs.readFile(manifestPath, \"utf8\");\n const parsed = JSON.parse(raw) as unknown;\n if (isValidManifest(parsed)) {\n return parsed;\n }\n } catch {\n // Fall back to a computed manifest when the bundled manifest is missing or invalid.\n }\n }\n\n const skills = {} as Record<BundledSkillName, BundledSkillManifestEntry>;\n for (const skillName of bundledSkillNames) {\n const skillPath = path.join(sourceDir, skillName);\n skills[skillName] = {\n hash: await hashDirectoryContents(skillPath)\n };\n }\n\n return {\n schemaVersion: 1,\n packageName,\n packageVersion: await resolveCliPackageVersion(sourceDir),\n skills\n };\n}\n\nasync function readInstalledSkillMetadata(skillDir: string): Promise<InstalledSkillMetadata | null> {\n const metadataPath = path.join(skillDir, skillMetadataFile);\n if (!(await pathExists(metadataPath))) {\n return null;\n }\n\n try {\n const raw = await fs.readFile(metadataPath, \"utf8\");\n const parsed = JSON.parse(raw) as Partial<InstalledSkillMetadata>;\n if (\n typeof parsed.packageName === \"string\" &&\n typeof parsed.cliVersion === \"string\" &&\n typeof parsed.skillHash === \"string\" &&\n typeof parsed.installedAt === \"string\"\n ) {\n return parsed as InstalledSkillMetadata;\n }\n } catch {\n // Treat invalid metadata as stale and reinstall.\n }\n\n return null;\n}\n\nasync function writeInstalledSkillMetadata(\n skillDir: string,\n expectedVersion: string,\n expectedHash: string\n): Promise<void> {\n const metadata: InstalledSkillMetadata = {\n packageName,\n cliVersion: expectedVersion,\n skillHash: expectedHash,\n installedAt: new Date().toISOString()\n };\n\n await fs.writeFile(path.join(skillDir, skillMetadataFile), `${JSON.stringify(metadata, null, 2)}\\n`);\n}\n\nasync function hasBundledSkills(candidate: string) {\n const hasAllSkills = await Promise.all(\n bundledSkillNames.map(async (name) => {\n const dir = path.join(candidate, name);\n return pathExists(path.join(dir, \"SKILL.md\"));\n })\n );\n return hasAllSkills.every(Boolean);\n}\n\nasync function resolveBundledSkillsDir(opts: { sourceDir?: string; allowExternalSource?: boolean } = {}): Promise<string> {\n if (opts.sourceDir) {\n if (!opts.allowExternalSource) {\n throw new Error(\"External skill source requires --allow-external-source true.\");\n }\n const resolved = path.resolve(opts.sourceDir);\n if (await hasBundledSkills(resolved)) {\n return resolved;\n }\n throw new Error(`External skill source is missing required bundled skills: ${resolved}`);\n }\n\n const candidates = [path.resolve(__dirname, \"../bundled/skills\"), path.resolve(__dirname, \"../../bundled/skills\")];\n\n for (const candidate of candidates) {\n if (await hasBundledSkills(candidate)) {\n return candidate;\n }\n }\n\n throw new Error(\n `Could not locate packaged bundled skills. Checked: ${candidates.join(\", \")}.`\n );\n}\n\nasync function syncSkillsToTarget(\n sourceDir: string,\n targetDir: string,\n force: boolean,\n manifest: BundledSkillManifest\n) {\n await fs.mkdir(targetDir, { recursive: true });\n\n const installed: string[] = [];\n const updated: string[] = [];\n const skipped: string[] = [];\n\n for (const skillName of bundledSkillNames) {\n const source = path.join(sourceDir, skillName);\n const target = path.join(targetDir, skillName);\n const exists = await pathExists(target);\n const expectedHash = manifest.skills[skillName]?.hash;\n if (!expectedHash) {\n throw new Error(`Missing skill hash in manifest for ${skillName}.`);\n }\n\n if (!exists) {\n await fs.cp(source, target, { recursive: true });\n await writeInstalledSkillMetadata(target, manifest.packageVersion, expectedHash);\n installed.push(skillName);\n continue;\n }\n\n if (force) {\n await fs.rm(target, { recursive: true, force: true });\n await fs.cp(source, target, { recursive: true });\n await writeInstalledSkillMetadata(target, manifest.packageVersion, expectedHash);\n installed.push(skillName);\n continue;\n }\n\n const currentMetadata = await readInstalledSkillMetadata(target);\n const matchesInstalledVersion =\n currentMetadata?.packageName === manifest.packageName &&\n currentMetadata.cliVersion === manifest.packageVersion &&\n currentMetadata.skillHash === expectedHash;\n\n if (matchesInstalledVersion) {\n skipped.push(skillName);\n continue;\n }\n\n await fs.rm(target, { recursive: true, force: true });\n await fs.cp(source, target, { recursive: true });\n await writeInstalledSkillMetadata(target, manifest.packageVersion, expectedHash);\n updated.push(skillName);\n }\n\n return { installed, updated, skipped };\n}\n\nexport async function installBundledSkills(opts: InstallSkillsOptions = {}): Promise<InstallSkillsResult> {\n const sourceDir = await resolveBundledSkillsDir({\n sourceDir: opts.sourceDir,\n allowExternalSource: opts.allowExternalSource\n });\n const manifest = await resolveBundledSkillsManifest(sourceDir);\n const force = opts.force ?? false;\n const targets: Array<{ targetId: SkillsAgent | \"custom\"; targetDir: string }> = [];\n\n if (opts.targetDir && (opts.agent || opts.codexTargetDir || opts.claudeTargetDir)) {\n throw new Error(\"Use either --target or --agent/--codex-target/--claude-target options, not both.\");\n }\n\n if (opts.targetDir) {\n targets.push({ targetId: \"custom\", targetDir: path.resolve(opts.targetDir) });\n } else {\n const agent = opts.agent ?? \"all\";\n\n if (agent === \"all\" || agent === \"codex\") {\n targets.push({\n targetId: \"codex\",\n targetDir: opts.codexTargetDir ? path.resolve(opts.codexTargetDir) : getCodexSkillsDir()\n });\n }\n if (agent === \"all\" || agent === \"claude\") {\n targets.push({\n targetId: \"claude\",\n targetDir: opts.claudeTargetDir ? path.resolve(opts.claudeTargetDir) : getClaudeSkillsDir()\n });\n }\n }\n\n const results: InstallSkillsTargetResult[] = [];\n for (const target of targets) {\n const synced = await syncSkillsToTarget(sourceDir, target.targetDir, force, manifest);\n results.push({\n targetId: target.targetId,\n targetDir: target.targetDir,\n installed: synced.installed,\n updated: synced.updated,\n skipped: synced.skipped\n });\n }\n\n return { sourceDir, targets: results };\n}\n\nexport async function installSkillsCommand(opts: InstallSkillsOptions = {}) {\n const result = await installBundledSkills(opts);\n if (opts.quiet) return result;\n\n console.log(kleur.green(\"Skill install complete.\"));\n console.log(`- Source: ${result.sourceDir}`);\n for (const target of result.targets) {\n const label = target.targetId === \"custom\" ? \"custom\" : target.targetId;\n console.log(`- Target (${label}): ${target.targetDir}`);\n if (target.installed.length > 0) {\n console.log(`- Installed (${label}): ${target.installed.join(\", \")}`);\n }\n if (target.updated.length > 0) {\n console.log(`- Updated (${label}): ${target.updated.join(\", \")}`);\n }\n if (target.skipped.length > 0) {\n console.log(kleur.yellow(`- Skipped (${label}, up to date): ${target.skipped.join(\", \")}`));\n }\n }\n if (result.targets.some((target) => target.skipped.length > 0)) {\n console.log(\"Use --force to overwrite existing skill directories.\");\n }\n\n return result;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["fs", "path", "fileURLToPath", "spawn", "fs", "path", "require", "fs", "fs", "fs", "path", "fileURLToPath", "util", "objectUtil", "path", "errorUtil", "path", "errorMap", "ctx", "result", "issues", "elements", "processed", "result", "r", "ZodFirstPartyTypeKind", "fileURLToPath", "path", "fs", "fs", "path", "os", "path", "fs", "fs", "path", "path", "fs", "execFile", "fs", "promisify", "execFileAsync", "promisify", "execFile", "fs", "appName", "wait", "quote", "normalizeMenuItem", "appName", "buildPressReturnScript", "wait", "pressReturn", "int", "preConfirmDelay", "postStartDelay", "postStopDelay", "exportDialogConfirmDelay", "exportDelay", "wait", "pressReturn", "run", "path", "fs", "fs", "path", "path", "os", "path", "fs", "path", "appName", "defaultQuickTimeAppName", "appName", "quote", "scriptName", "path", "fs", "spawn", "prep", "chromium", "fs", "path", "fs", "path", "fs", "path", "detectPackageManager", "fs", "path", "walk", "detectProjectType", "fs", "path", "fs", "path", "fileURLToPath", "__dirname", "path", "fileURLToPath", "fs", "rootDir", "path", "fs", "chromium", "path", "fileURLToPath", "fs", "appName"]
|
|
7
7
|
}
|