@hua-labs/tap 0.2.6 → 0.3.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/LICENSE +21 -0
- package/README.md +280 -194
- package/dist/bridges/codex-app-server-bridge.d.mts +9 -1
- package/dist/bridges/codex-app-server-bridge.mjs +189 -9
- package/dist/bridges/codex-app-server-bridge.mjs.map +1 -1
- package/dist/bridges/codex-bridge-runner.mjs +8 -16
- package/dist/bridges/codex-bridge-runner.mjs.map +1 -1
- package/dist/bridges/gemini-ide-companion-runner.d.mts +1 -0
- package/dist/bridges/gemini-ide-companion-runner.mjs +22501 -0
- package/dist/bridges/gemini-ide-companion-runner.mjs.map +1 -0
- package/dist/cli.mjs +1938 -989
- package/dist/cli.mjs.map +1 -1
- package/dist/index.d.mts +76 -22
- package/dist/index.mjs +26727 -3768
- package/dist/index.mjs.map +1 -1
- package/dist/mcp-server.mjs +303 -196
- package/dist/mcp-server.mjs.map +1 -1
- package/package.json +65 -65
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts","../src/config/resolve.ts","../src/config/index.ts","../src/state.ts","../src/adapters/common.ts","../src/runtime/resolve-node.ts","../src/runtime/index.ts","../src/engine/bridge.ts","../src/engine/dashboard.ts","../src/adapters/claude.ts","../src/artifact-backups.ts","../src/toml.ts","../src/adapters/codex.ts","../src/adapters/gemini.ts","../src/adapters/index.ts","../src/commands/bridge.ts","../src/commands/up.ts","../src/commands/down.ts","../src/index.ts","../src/version.ts","../src/api/state.ts","../src/api/http.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n AdapterContext,\n CommandCode,\n InstanceId,\n Platform,\n RuntimeName,\n TapState,\n} from \"./types.js\";\nimport { resolveConfig } from \"./config/index.js\";\n\nconst VALID_RUNTIMES: RuntimeName[] = [\"claude\", \"codex\", \"gemini\"];\n\nexport function isValidRuntime(name: string): name is RuntimeName {\n return VALID_RUNTIMES.includes(name as RuntimeName);\n}\n\nexport function detectPlatform(): Platform {\n return process.platform as Platform;\n}\n\n/** Shared flag: suppress duplicate no-git warnings across modules. */\nexport let _noGitWarned = false;\nconst _loggedWarnings = new Set<string>();\n\nexport function _setNoGitWarned() {\n _noGitWarned = true;\n}\n\nexport function resetLoggedWarnings() {\n _loggedWarnings.clear();\n}\n\nexport function wasWarningLogged(message: string): boolean {\n return _loggedWarnings.has(message);\n}\n\nexport function findRepoRoot(startDir: string = process.cwd()): string {\n let dir = path.resolve(startDir);\n while (true) {\n if (fs.existsSync(path.join(dir, \".git\"))) return dir;\n if (fs.existsSync(path.join(dir, \"package.json\"))) {\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No .git directory found. Resolved tap root via package.json. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return dir;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No git repository or package.json found. Using the current directory as tap root. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return process.cwd();\n}\n\nexport function resolveCommsDir(args: string[], repoRoot: string): string {\n // Check --comms-dir flag\n const idx = args.indexOf(\"--comms-dir\");\n if (idx !== -1 && args[idx + 1]) {\n return path.resolve(args[idx + 1]);\n }\n\n // Delegate to config resolution (env > local > shared > auto)\n const { config } = resolveConfig({}, repoRoot);\n return config.commsDir;\n}\n\nexport function createAdapterContext(\n commsDir: string,\n repoRoot: string,\n): AdapterContext {\n // Use config-resolved stateDir if available\n const { config } = resolveConfig({}, repoRoot);\n return {\n commsDir: path.resolve(commsDir),\n repoRoot: path.resolve(repoRoot),\n stateDir: config.stateDir,\n platform: detectPlatform(),\n };\n}\n\nexport function parseArgs(args: string[]): {\n positional: string[];\n flags: Record<string, string | boolean>;\n} {\n const positional: string[] = [];\n const flags: Record<string, string | boolean> = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg.startsWith(\"--\")) {\n const key = arg.slice(2);\n const next = args[i + 1];\n if (next && !next.startsWith(\"--\")) {\n flags[key] = next;\n i++;\n } else {\n flags[key] = true;\n }\n } else if (arg.startsWith(\"-\")) {\n flags[arg.slice(1)] = true;\n } else {\n positional.push(arg);\n }\n }\n\n return { positional, flags };\n}\n\n// ─── JSON mode suppression ──────────────────────────────────────\n\nlet _jsonMode = false;\n\nexport function setJsonMode(enabled: boolean): void {\n _jsonMode = enabled;\n}\n\nexport function log(message: string): void {\n if (!_jsonMode) console.log(` ${message}`);\n}\n\nexport function logSuccess(message: string): void {\n if (!_jsonMode) console.log(` + ${message}`);\n}\n\nexport function logWarn(message: string): void {\n if (_jsonMode) return;\n _loggedWarnings.add(message);\n console.log(` ! ${message}`);\n}\n\nexport function logError(message: string): void {\n if (!_jsonMode) console.error(` x ${message}`);\n}\n\nexport function logHeader(message: string): void {\n if (!_jsonMode) console.log(`\\n ${message}\\n`);\n}\n\n// ─── CLI argument validation ──────────────────────────────────\n\n/**\n * Parse and validate an integer CLI flag within a range.\n * Returns undefined if the flag is not provided, or the validated number.\n * Throws a descriptive error if invalid.\n */\nexport function parseIntFlag(\n value: string | undefined,\n name: string,\n min: number,\n max: number,\n): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < min || parsed > max) {\n throw new RangeError(\n `Invalid ${name}: ${value}. Must be an integer between ${min} and ${max}.`,\n );\n }\n return parsed;\n}\n\n/**\n * Parse and validate a port number (1-65535).\n */\nexport function parsePortFlag(value: string | undefined): number | null {\n if (value === undefined) return null;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65535) {\n throw new RangeError(\n `Invalid port: ${value}. Must be between 1 and 65535.`,\n );\n }\n return parsed;\n}\n\n// ─── Instance ID utilities ─────────────────────────────────────\n\nexport type ResolveResult =\n | { ok: true; instanceId: InstanceId }\n | { ok: false; code: CommandCode; message: string };\n\n/**\n * Resolve a user-provided identifier to an instance ID.\n * Accepts either an exact instance ID or a runtime name (if unambiguous).\n */\nexport function resolveInstanceId(\n identifier: string,\n state: TapState,\n): ResolveResult {\n // Exact match\n if (state.instances[identifier]) {\n return { ok: true, instanceId: identifier };\n }\n\n // Runtime name → find matching instances\n if (isValidRuntime(identifier)) {\n const matches = Object.values(state.instances).filter(\n (inst) => inst.runtime === identifier,\n );\n\n if (matches.length === 1) {\n return { ok: true, instanceId: matches[0].instanceId };\n }\n\n if (matches.length > 1) {\n const ids = matches.map((m) => m.instanceId).join(\", \");\n return {\n ok: false,\n code: \"TAP_INSTANCE_AMBIGUOUS\",\n message: `Multiple ${identifier} instances found: ${ids}. Specify one explicitly.`,\n };\n }\n }\n\n return {\n ok: false,\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `Instance not found: ${identifier}`,\n };\n}\n\n/** Build an instance ID from runtime + optional name. */\nexport function buildInstanceId(\n runtime: RuntimeName,\n name?: string,\n): InstanceId {\n return name ? `${runtime}-${name}` : runtime;\n}\n\n/** Extract the runtime name from an instance ID. */\nexport function extractRuntimeFromInstanceId(id: InstanceId): RuntimeName {\n for (const r of VALID_RUNTIMES) {\n if (id === r || id.startsWith(`${r}-`)) return r;\n }\n throw new Error(`Cannot extract runtime from instance ID: ${id}`);\n}\n\n/** Check if a port is already claimed by another instance. */\nexport function findPortConflict(\n state: TapState,\n port: number,\n excludeInstanceId?: InstanceId,\n): InstanceId | null {\n for (const [id, inst] of Object.entries(state.instances)) {\n if (id !== excludeInstanceId && inst.port === port) return id;\n }\n return null;\n}\n\n/** Find the next available port starting from basePort (default 4501). */\nexport function findNextAvailablePort(\n state: TapState,\n basePort: number = 4501,\n excludeInstanceId?: InstanceId,\n): number {\n let port = basePort;\n while (findPortConflict(state, port, excludeInstanceId) !== null) {\n port++;\n }\n return port;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n TapSharedConfig,\n TapLocalConfig,\n TapResolvedConfig,\n ConfigSource,\n ConfigResolution,\n} from \"./types.js\";\n\n// ─── File names ────────────────────────────────────────────────\n\nexport const SHARED_CONFIG_FILE = \"tap-config.json\";\nexport const LOCAL_CONFIG_FILE = \"tap-config.local.json\";\nexport const LEGACY_CONFIG_FILE = \".tap-config\";\n\n// ─── Defaults ──────────────────────────────────────────────────\n\nconst DEFAULT_RUNTIME_COMMAND = \"node\";\nconst DEFAULT_APP_SERVER_URL = \"ws://127.0.0.1:4501\";\n\n// ─── Repo root discovery ───────────────────────────────────────\n\nimport { _noGitWarned, _setNoGitWarned, log } from \"../utils.js\";\n\nexport function findRepoRoot(startDir: string = process.cwd()): string {\n let dir = path.resolve(startDir);\n while (true) {\n if (fs.existsSync(path.join(dir, \".git\"))) return dir;\n if (fs.existsSync(path.join(dir, \"package.json\"))) {\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No .git directory found. Resolved tap root via package.json. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return dir;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No git repository or package.json found. Using the current directory as tap root. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return process.cwd();\n}\n\n// ─── JSON file loading ─────────────────────────────────────────\n\nfunction loadJsonFile<T>(filePath: string): T | null {\n if (!fs.existsSync(filePath)) return null;\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n return JSON.parse(raw) as T;\n } catch {\n return null;\n }\n}\n\nexport function loadSharedConfig(repoRoot: string): TapSharedConfig | null {\n return loadJsonFile<TapSharedConfig>(path.join(repoRoot, SHARED_CONFIG_FILE));\n}\n\nexport function loadLocalConfig(repoRoot: string): TapLocalConfig | null {\n return loadJsonFile<TapLocalConfig>(path.join(repoRoot, LOCAL_CONFIG_FILE));\n}\n\nfunction readLegacyShellValue(configText: string, key: string): string | null {\n const match = configText.match(new RegExp(`^${key}=\"?(.+?)\"?$`, \"m\"));\n return match?.[1]?.trim() || null;\n}\n\nfunction loadLegacyShellConfig(repoRoot: string): TapSharedConfig | null {\n const filePath = path.join(repoRoot, LEGACY_CONFIG_FILE);\n if (!fs.existsSync(filePath)) return null;\n\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n const commsDir = readLegacyShellValue(raw, \"TAP_COMMS_DIR\");\n if (!commsDir) return null;\n return { commsDir };\n } catch {\n return null;\n }\n}\n\n// ─── CLI overrides ─────────────────────────────────────────────\n\nexport interface ConfigOverrides {\n commsDir?: string;\n stateDir?: string;\n runtimeCommand?: string;\n appServerUrl?: string;\n}\n\n// ─── Resolution ────────────────────────────────────────────────\n\n/**\n * Resolve config with priority: CLI flag > env > local config > shared config > auto.\n */\nexport function resolveConfig(\n overrides: ConfigOverrides = {},\n startDir?: string,\n): ConfigResolution {\n const repoRoot = findRepoRoot(startDir);\n const shared = loadSharedConfig(repoRoot) ?? {};\n const local = loadLocalConfig(repoRoot) ?? {};\n const legacy = loadLegacyShellConfig(repoRoot) ?? {};\n\n const sources: Record<keyof TapResolvedConfig, ConfigSource> = {\n repoRoot: \"auto\",\n commsDir: \"auto\",\n stateDir: \"auto\",\n runtimeCommand: \"auto\",\n appServerUrl: \"auto\",\n towerName: \"auto\",\n };\n\n // ─── commsDir ──────────────────────────────────────────────\n let commsDir: string;\n if (overrides.commsDir) {\n commsDir = resolvePath(repoRoot, overrides.commsDir);\n sources.commsDir = \"cli-flag\";\n } else if (process.env.TAP_COMMS_DIR) {\n commsDir = resolvePath(repoRoot, process.env.TAP_COMMS_DIR);\n sources.commsDir = \"env\";\n } else if (local.commsDir) {\n commsDir = resolvePath(repoRoot, local.commsDir);\n sources.commsDir = \"local-config\";\n } else if (shared.commsDir) {\n commsDir = resolvePath(repoRoot, shared.commsDir);\n sources.commsDir = \"shared-config\";\n } else if (legacy.commsDir) {\n commsDir = resolvePath(repoRoot, legacy.commsDir);\n sources.commsDir = \"legacy-shell-config\";\n } else {\n commsDir = path.join(repoRoot, \"tap-comms\");\n }\n\n // ─── stateDir ──────────────────────────────────────────────\n let stateDir: string;\n if (overrides.stateDir) {\n stateDir = resolvePath(repoRoot, overrides.stateDir);\n sources.stateDir = \"cli-flag\";\n } else if (process.env.TAP_STATE_DIR) {\n stateDir = resolvePath(repoRoot, process.env.TAP_STATE_DIR);\n sources.stateDir = \"env\";\n } else if (local.stateDir) {\n stateDir = resolvePath(repoRoot, local.stateDir);\n sources.stateDir = \"local-config\";\n } else if (shared.stateDir) {\n stateDir = resolvePath(repoRoot, shared.stateDir);\n sources.stateDir = \"shared-config\";\n } else {\n stateDir = path.join(repoRoot, \".tap-comms\");\n }\n\n // ─── runtimeCommand ────────────────────────────────────────\n let runtimeCommand: string;\n if (overrides.runtimeCommand) {\n runtimeCommand = overrides.runtimeCommand;\n sources.runtimeCommand = \"cli-flag\";\n } else if (process.env.TAP_RUNTIME_COMMAND) {\n runtimeCommand = process.env.TAP_RUNTIME_COMMAND;\n sources.runtimeCommand = \"env\";\n } else if (local.runtimeCommand) {\n runtimeCommand = local.runtimeCommand;\n sources.runtimeCommand = \"local-config\";\n } else if (shared.runtimeCommand) {\n runtimeCommand = shared.runtimeCommand;\n sources.runtimeCommand = \"shared-config\";\n } else {\n runtimeCommand = DEFAULT_RUNTIME_COMMAND;\n }\n\n // ─── appServerUrl ──────────────────────────────────────────\n let appServerUrl: string;\n if (overrides.appServerUrl) {\n appServerUrl = overrides.appServerUrl;\n sources.appServerUrl = \"cli-flag\";\n } else if (process.env.TAP_APP_SERVER_URL) {\n appServerUrl = process.env.TAP_APP_SERVER_URL;\n sources.appServerUrl = \"env\";\n } else if (local.appServerUrl) {\n appServerUrl = local.appServerUrl;\n sources.appServerUrl = \"local-config\";\n } else if (shared.appServerUrl) {\n appServerUrl = shared.appServerUrl;\n sources.appServerUrl = \"shared-config\";\n } else {\n appServerUrl = DEFAULT_APP_SERVER_URL;\n }\n\n // ─── towerName ──────────────────────────────────────────────\n const towerName = local.towerName ?? shared.towerName ?? null;\n\n return {\n config: {\n repoRoot,\n commsDir,\n stateDir,\n runtimeCommand,\n appServerUrl,\n towerName,\n },\n sources,\n };\n}\n\n// ─── Save helpers ──────────────────────────────────────────────\n\nexport function saveSharedConfig(\n repoRoot: string,\n config: TapSharedConfig,\n): void {\n const filePath = path.join(repoRoot, SHARED_CONFIG_FILE);\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, filePath);\n}\n\nexport function saveLocalConfig(\n repoRoot: string,\n config: TapLocalConfig,\n): void {\n const filePath = path.join(repoRoot, LOCAL_CONFIG_FILE);\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, filePath);\n}\n\n// ─── Helpers ───────────────────────────────────────────────────\n\n/** Resolve a path relative to repoRoot, or keep absolute as-is. */\nfunction resolvePath(repoRoot: string, p: string): string {\n const normalized = normalizeTapPath(p);\n return path.isAbsolute(normalized)\n ? normalized\n : path.resolve(repoRoot, normalized);\n}\n\nfunction normalizeTapPath(input: string): string {\n const trimmed = input.trim().replace(/^[\"'`]+|[\"'`]+$/g, \"\");\n if (/^[A-Za-z]:[\\\\/]/.test(trimmed)) {\n return trimmed;\n }\n\n // MSYS/Git Bash `/c/...` → `C:\\...` conversion — Windows only.\n // On POSIX, `/d/...` is a legitimate absolute path and must not be rewritten.\n if (process.platform === \"win32\") {\n const match = trimmed.match(/^\\/([A-Za-z])\\/(.*)$/);\n if (match) {\n return `${match[1].toUpperCase()}:\\\\${match[2].replace(/\\//g, \"\\\\\")}`;\n }\n }\n\n return trimmed;\n}\n","export type {\n TapSharedConfig,\n TapLocalConfig,\n TapResolvedConfig,\n ConfigSource,\n ConfigResolution,\n} from \"./types.js\";\n\nexport {\n LEGACY_CONFIG_FILE,\n SHARED_CONFIG_FILE,\n LOCAL_CONFIG_FILE,\n findRepoRoot,\n loadSharedConfig,\n loadLocalConfig,\n resolveConfig,\n saveSharedConfig,\n saveLocalConfig,\n} from \"./resolve.js\";\n\nexport type { ConfigOverrides } from \"./resolve.js\";\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as crypto from \"node:crypto\";\nimport type {\n TapState,\n TapStateV1,\n InstanceState,\n InstanceId,\n RuntimeName,\n OwnedArtifact,\n} from \"./types.js\";\nimport { resolveConfig } from \"./config/index.js\";\n\nconst STATE_FILE = \"state.json\";\nconst SCHEMA_VERSION = 2;\n\nexport function getStateDir(repoRoot: string): string {\n const { config } = resolveConfig({}, repoRoot);\n return config.stateDir;\n}\n\nexport function getStatePath(repoRoot: string): string {\n return path.join(getStateDir(repoRoot), STATE_FILE);\n}\n\nexport function stateExists(repoRoot: string): boolean {\n return fs.existsSync(getStatePath(repoRoot));\n}\n\n// ─── v1 → v2 Migration ────────────────────────────────────────\n\nexport function migrateStateV1toV2(v1: TapStateV1): TapState {\n const instances: Record<InstanceId, InstanceState> = {};\n\n for (const [runtime, rs] of Object.entries(v1.runtimes)) {\n if (!rs) continue;\n const instanceId = runtime as InstanceId; // default instance = runtime name\n instances[instanceId] = {\n instanceId,\n runtime: runtime as RuntimeName,\n agentName: null,\n port: null,\n headless: null,\n ...rs,\n };\n }\n\n return {\n schemaVersion: SCHEMA_VERSION,\n createdAt: v1.createdAt,\n updatedAt: v1.updatedAt,\n commsDir: v1.commsDir,\n repoRoot: v1.repoRoot,\n packageVersion: v1.packageVersion,\n instances,\n };\n}\n\n// ─── Load / Save ───────────────────────────────────────────────\n\nexport function loadState(repoRoot: string): TapState | null {\n const statePath = getStatePath(repoRoot);\n if (!fs.existsSync(statePath)) return null;\n\n const raw = fs.readFileSync(statePath, \"utf-8\");\n const parsed = JSON.parse(raw);\n\n // Auto-migrate v1 → v2\n if (parsed.schemaVersion === 1 || parsed.runtimes) {\n const migrated = migrateStateV1toV2(parsed as TapStateV1);\n saveState(repoRoot, migrated);\n return migrated;\n }\n\n return parsed as TapState;\n}\n\nexport function saveState(repoRoot: string, state: TapState): void {\n const stateDir = getStateDir(repoRoot);\n fs.mkdirSync(stateDir, { recursive: true });\n const statePath = getStatePath(repoRoot);\n const tmp = `${statePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(state, null, 2), \"utf-8\");\n fs.renameSync(tmp, statePath);\n}\n\nexport function createInitialState(\n commsDir: string,\n repoRoot: string,\n packageVersion: string,\n): TapState {\n const now = new Date().toISOString();\n return {\n schemaVersion: SCHEMA_VERSION,\n createdAt: now,\n updatedAt: now,\n commsDir: path.resolve(commsDir),\n repoRoot: path.resolve(repoRoot),\n packageVersion,\n instances: {},\n };\n}\n\n// ─── Instance CRUD ─────────────────────────────────────────────\n\nexport function updateInstanceState(\n state: TapState,\n instanceId: InstanceId,\n instanceState: InstanceState,\n): TapState {\n return {\n ...state,\n updatedAt: new Date().toISOString(),\n instances: {\n ...state.instances,\n [instanceId]: instanceState,\n },\n };\n}\n\nexport function removeInstanceState(\n state: TapState,\n instanceId: InstanceId,\n): TapState {\n const { [instanceId]: _removed, ...remaining } = state.instances;\n return {\n ...state,\n updatedAt: new Date().toISOString(),\n instances: remaining,\n };\n}\n\nexport function getInstalledInstances(state: TapState): InstanceId[] {\n return (Object.keys(state.instances) as InstanceId[]).filter(\n (id) => state.instances[id]?.installed,\n );\n}\n\nexport function getInstanceArtifacts(\n state: TapState,\n instanceId: InstanceId,\n): OwnedArtifact[] {\n return state.instances[instanceId]?.ownedArtifacts ?? [];\n}\n\n// ─── Backup ────────────────────────────────────────────────────\n\nexport function ensureBackupDir(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n const backupDir = path.join(stateDir, \"backups\", instanceId);\n fs.mkdirSync(backupDir, { recursive: true });\n return backupDir;\n}\n\nexport function backupFile(filePath: string, backupDir: string): string {\n const basename = path.basename(filePath);\n const hash = fileHash(filePath);\n const backupPath = path.join(backupDir, `${basename}.${hash}.bak`);\n fs.copyFileSync(filePath, backupPath);\n return backupPath;\n}\n\nexport function fileHash(filePath: string): string {\n if (!fs.existsSync(filePath)) return \"\";\n const content = fs.readFileSync(filePath);\n return crypto.createHash(\"sha256\").update(content).digest(\"hex\").slice(0, 16);\n}\n","import * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\nimport { fileURLToPath } from \"node:url\";\nimport type { AdapterContext } from \"../types.js\";\n\nexport interface CommandProbe {\n command: string | null;\n version: string | null;\n}\n\nexport interface ManagedMcpServerSpec {\n command: string | null;\n args: string[];\n env: Record<string, string>;\n sourcePath: string | null;\n warnings: string[];\n issues: string[];\n}\n\nexport function probeCommand(candidates: string[]): CommandProbe {\n for (const candidate of candidates) {\n const result = spawnSync(candidate, [\"--version\"], {\n encoding: \"utf-8\",\n shell: process.platform === \"win32\",\n });\n\n if (result.status === 0) {\n const version =\n `${result.stdout ?? \"\"}${result.stderr ?? \"\"}`.trim() || null;\n return { command: candidate, version };\n }\n }\n\n return { command: null, version: null };\n}\n\nexport function getHomeDir(): string {\n return os.homedir();\n}\n\nexport function toForwardSlashPath(filePath: string): string {\n return path.resolve(filePath).replace(/\\\\/g, \"/\");\n}\n\nexport function canWriteOrCreate(filePath: string): boolean {\n try {\n if (fs.existsSync(filePath)) {\n fs.accessSync(filePath, fs.constants.W_OK);\n return true;\n }\n\n const parent = path.dirname(filePath);\n fs.mkdirSync(parent, { recursive: true });\n fs.accessSync(parent, fs.constants.W_OK);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Detect paths that are ephemeral (npm _npx cache, fnm multishell, temp dirs). */\nfunction isEphemeralPath(p: string): boolean {\n const normalized = p.replace(/\\\\/g, \"/\").toLowerCase();\n return (\n normalized.includes(\"/_npx/\") ||\n normalized.includes(\"\\\\_npx\\\\\") ||\n normalized.includes(\"/fnm_multishells/\") ||\n normalized.includes(\"\\\\fnm_multishells\\\\\") ||\n normalized.includes(\"/tmp/\") ||\n normalized.includes(\"\\\\temp\\\\\")\n );\n}\n\nexport function findLocalTapCommsSource(ctx: AdapterContext): string | null {\n const candidates = [\n path.join(\n ctx.repoRoot,\n \"packages\",\n \"tap-plugin\",\n \"channels\",\n \"tap-comms.ts\",\n ),\n path.join(\n ctx.repoRoot,\n \"node_modules\",\n \"@hua-labs\",\n \"tap-plugin\",\n \"channels\",\n \"tap-comms.ts\",\n ),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate;\n }\n\n return null;\n}\n\nexport function findBundledTapCommsSource(\n metaUrl: string = import.meta.url,\n): string | null {\n const moduleDir = path.dirname(fileURLToPath(metaUrl));\n const candidates = [\n path.join(moduleDir, \"mcp-server.mjs\"),\n path.join(moduleDir, \"..\", \"mcp-server.mjs\"),\n path.join(moduleDir, \"..\", \"mcp-server.ts\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate;\n }\n\n return null;\n}\n\nexport function findTapCommsServerEntry(\n ctx: AdapterContext,\n metaUrl: string = import.meta.url,\n): string | null {\n return findBundledTapCommsSource(metaUrl) ?? findLocalTapCommsSource(ctx);\n}\n\nexport function findPreferredBunCommand(): string | null {\n const home = getHomeDir();\n const candidates =\n process.platform === \"win32\"\n ? [path.join(home, \".bun\", \"bin\", \"bun.exe\"), \"bun\", \"bun.cmd\"]\n : [path.join(home, \".bun\", \"bin\", \"bun\"), \"bun\"];\n\n for (const candidate of candidates) {\n if (path.isAbsolute(candidate) && !fs.existsSync(candidate)) continue;\n\n const result = spawnSync(candidate, [\"--version\"], {\n encoding: \"utf-8\",\n shell: process.platform === \"win32\",\n });\n if (result.status === 0) {\n return path.isAbsolute(candidate)\n ? toForwardSlashPath(candidate)\n : candidate;\n }\n }\n\n return null;\n}\n\nexport function buildManagedMcpServerSpec(\n ctx: AdapterContext,\n instanceId?: string,\n): ManagedMcpServerSpec {\n const sourcePath = findTapCommsServerEntry(ctx);\n const bunCommand = findPreferredBunCommand();\n const warnings: string[] = [];\n const issues: string[] = [];\n\n const env: Record<string, string> = {\n TAP_AGENT_NAME: ctx.agentName ?? \"<set-per-session>\",\n TAP_COMMS_DIR: toForwardSlashPath(ctx.commsDir),\n TAP_STATE_DIR: toForwardSlashPath(ctx.stateDir),\n TAP_REPO_ROOT: toForwardSlashPath(ctx.repoRoot),\n };\n if (instanceId) {\n env.TAP_AGENT_ID = instanceId;\n }\n\n if (!sourcePath) {\n issues.push(\n \"tap MCP server entry not found. Reinstall @hua-labs/tap or run from a repo with packages/tap-plugin/channels/ available.\",\n );\n return { command: null, args: [], env, sourcePath, warnings, issues };\n }\n\n // Prefer bun for .ts source files; for compiled .mjs, node works too\n const isBundled = sourcePath.endsWith(\".mjs\");\n const isEphemeralSource = isEphemeralPath(sourcePath);\n let command: string | null = bunCommand;\n let args: string[] = [toForwardSlashPath(sourcePath)];\n\n // Ephemeral source path (npx cache) → always use stable launcher, even with bun\n // This prevents persisting _npx cache paths in .mcp.json / config.toml\n if (isEphemeralSource && isBundled) {\n command = \"npx\";\n args = [\"@hua-labs/tap\", \"serve\"];\n warnings.push(\n \"Detected npx cache path. Using `npx @hua-labs/tap serve` as stable MCP launcher.\",\n );\n } else if (!command && isBundled) {\n // No bun, bundled .mjs — check node path stability\n const isEphemeralNode = isEphemeralPath(process.execPath);\n\n if (isEphemeralNode) {\n // fnm multishell node → use bare `node` (resolved from PATH at runtime)\n command = \"node\";\n warnings.push(\n \"Detected ephemeral node path. Using `node` from PATH for MCP config stability.\",\n );\n } else {\n command = toForwardSlashPath(process.execPath);\n }\n\n warnings.push(\n \"bun not found; using node to run the compiled MCP server. Install bun for better performance.\",\n );\n }\n\n if (!command) {\n issues.push(\n \"bun is required to run the repo-local tap MCP server (.ts source). Install bun: https://bun.sh\",\n );\n return { command: null, args: [], env, sourcePath, warnings, issues };\n }\n\n return {\n command,\n args,\n env,\n sourcePath,\n warnings,\n issues,\n };\n}\n","/**\n * Common Node.js runtime resolver for all tap-comms child processes.\n *\n * Resolution chain:\n * .node-version + fnm probe → configured command → tsx fallback\n *\n * Extracted from codex-bridge-runner.ts (M69) to share across:\n * - bridge engine spawn\n * - bridge runner spawn\n * - future CLI commands\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execSync } from \"node:child_process\";\n\n// ─── Types ─────────────────────────────────────────────────────\n\nexport type RuntimeSource = \"fnm\" | \"config\" | \"path\" | \"tsx-fallback\" | \"bun\";\n\nexport interface ResolvedRuntime {\n /** Absolute path or command name for the resolved runtime. */\n command: string;\n /** Whether --experimental-strip-types is supported and should be used. */\n supportsStripTypes: boolean;\n /** Where the runtime was resolved from (for diagnostics). */\n source: RuntimeSource;\n /** Detected major version, if available. */\n majorVersion: number | null;\n}\n\n// ─── .node-version ─────────────────────────────────────────────\n\nexport function readNodeVersion(repoRoot: string): string | null {\n const nvFile = path.join(repoRoot, \".node-version\");\n if (!fs.existsSync(nvFile)) return null;\n try {\n const raw = fs.readFileSync(nvFile, \"utf-8\").trim();\n return raw.length > 0 ? raw.replace(/^v/, \"\") : null;\n } catch {\n return null;\n }\n}\n\n// ─── fnm probe ─────────────────────────────────────────────────\n\nfunction fnmCandidateDirs(): string[] {\n if (process.platform === \"win32\") {\n return [\n process.env.FNM_DIR,\n process.env.APPDATA ? path.join(process.env.APPDATA, \"fnm\") : null,\n process.env.LOCALAPPDATA\n ? path.join(process.env.LOCALAPPDATA, \"fnm\")\n : null,\n process.env.USERPROFILE\n ? path.join(process.env.USERPROFILE, \"scoop\", \"persist\", \"fnm\")\n : null,\n ].filter(Boolean) as string[];\n }\n // macOS / Linux\n return [\n process.env.FNM_DIR,\n process.env.HOME\n ? path.join(process.env.HOME, \".local\", \"share\", \"fnm\")\n : null,\n process.env.HOME ? path.join(process.env.HOME, \".fnm\") : null,\n process.env.XDG_DATA_HOME\n ? path.join(process.env.XDG_DATA_HOME, \"fnm\")\n : null,\n ].filter(Boolean) as string[];\n}\n\nfunction nodeExecutableName(): string {\n return process.platform === \"win32\" ? \"node.exe\" : \"node\";\n}\n\nexport function probeFnmNode(desiredVersion: string): string | null {\n const dirs = fnmCandidateDirs();\n const exe = nodeExecutableName();\n\n for (const baseDir of dirs) {\n const candidate = path.join(\n baseDir,\n \"node-versions\",\n `v${desiredVersion}`,\n \"installation\",\n exe,\n );\n if (!fs.existsSync(candidate)) continue;\n\n try {\n const v = execSync(`\"${candidate}\" --version`, {\n encoding: \"utf-8\",\n timeout: 5000,\n }).trim();\n if (v.startsWith(`v${desiredVersion.split(\".\")[0]}.`)) {\n return candidate;\n }\n } catch {\n // candidate exists but doesn't work — skip\n }\n }\n\n return null;\n}\n\n// ─── Version detection ─────────────────────────────────────────\n\nexport function detectNodeMajorVersion(command: string): number | null {\n try {\n const version = execSync(`\"${command}\" --version`, {\n encoding: \"utf-8\",\n timeout: 5000,\n }).trim();\n const match = version.match(/^v?(\\d+)\\./);\n return match ? parseInt(match[1], 10) : null;\n } catch {\n return null;\n }\n}\n\nexport function checkStripTypesSupport(command: string): boolean {\n const major = detectNodeMajorVersion(command);\n if (major !== null && major >= 22) return true;\n try {\n execSync(`\"${command}\" --experimental-strip-types -e \"\"`, {\n timeout: 5000,\n stdio: \"pipe\",\n });\n return true;\n } catch {\n return false;\n }\n}\n\n// ─── tsx fallback ──────────────────────────────────────────────\n\nexport function findTsxFallback(repoRoot: string): string | null {\n const candidates = [\n path.join(repoRoot, \"node_modules\", \".bin\", \"tsx.exe\"),\n path.join(repoRoot, \"node_modules\", \".bin\", \"tsx.CMD\"),\n path.join(repoRoot, \"node_modules\", \".bin\", \"tsx\"),\n ];\n for (const c of candidates) {\n if (fs.existsSync(c)) return c;\n }\n return null;\n}\n\n// ─── fnm bin directory (for PATH prepending) ───────────────────\n\n/**\n * Returns the directory containing the fnm-managed node binary,\n * suitable for prepending to PATH in child processes.\n */\nexport function getFnmBinDir(repoRoot: string): string | null {\n const desiredVersion = readNodeVersion(repoRoot);\n if (!desiredVersion) return null;\n\n const nodePath = probeFnmNode(desiredVersion);\n if (!nodePath) return null;\n\n return path.dirname(nodePath);\n}\n\n// ─── Main resolver ─────────────────────────────────────────────\n\n/**\n * Resolve the Node.js runtime to use for spawning child processes.\n *\n * Priority: bun passthrough → .node-version + fnm → configured command → tsx fallback\n */\nexport function resolveNodeRuntime(\n configCommand: string,\n repoRoot: string,\n): ResolvedRuntime {\n // Bun: native TS support, no strip-types needed\n if (configCommand === \"bun\" || configCommand.endsWith(\"bun.exe\")) {\n return {\n command: configCommand,\n supportsStripTypes: false,\n source: \"bun\",\n majorVersion: null,\n };\n }\n\n // .node-version + fnm discovery\n const desiredVersion = readNodeVersion(repoRoot);\n if (desiredVersion) {\n const fnmNode = probeFnmNode(desiredVersion);\n if (fnmNode) {\n const major = detectNodeMajorVersion(fnmNode);\n return {\n command: fnmNode,\n supportsStripTypes: checkStripTypesSupport(fnmNode),\n source: \"fnm\",\n majorVersion: major,\n };\n }\n }\n\n // Configured command (from config or PATH)\n const major = detectNodeMajorVersion(configCommand);\n if (major !== null) {\n return {\n command: configCommand,\n supportsStripTypes: checkStripTypesSupport(configCommand),\n source: major === detectNodeMajorVersion(\"node\") ? \"path\" : \"config\",\n majorVersion: major,\n };\n }\n\n // tsx fallback\n const tsx = findTsxFallback(repoRoot);\n if (tsx) {\n return {\n command: tsx,\n supportsStripTypes: false,\n source: \"tsx-fallback\",\n majorVersion: null,\n };\n }\n\n // Last resort\n return {\n command: configCommand,\n supportsStripTypes: false,\n source: \"path\",\n majorVersion: null,\n };\n}\n\n// ─── Env builder for child processes ───────────────────────────\n\n/**\n * Build an env object with fnm Node prepended to PATH.\n * Use this when spawning child processes that need the correct Node.\n */\nexport function buildRuntimeEnv(\n repoRoot: string,\n baseEnv: NodeJS.ProcessEnv = process.env,\n): NodeJS.ProcessEnv {\n const fnmBin = getFnmBinDir(repoRoot);\n if (!fnmBin) return { ...baseEnv };\n\n const pathKey = process.platform === \"win32\" ? \"Path\" : \"PATH\";\n const currentPath = baseEnv[pathKey] ?? baseEnv.PATH ?? \"\";\n\n return {\n ...baseEnv,\n [pathKey]: `${fnmBin}${path.delimiter}${currentPath}`,\n };\n}\n","export type { ResolvedRuntime, RuntimeSource } from \"./resolve-node.js\";\n\nexport {\n resolveNodeRuntime,\n buildRuntimeEnv,\n readNodeVersion,\n probeFnmNode,\n detectNodeMajorVersion,\n checkStripTypesSupport,\n findTsxFallback,\n getFnmBinDir,\n} from \"./resolve-node.js\";\n","import * as fs from \"node:fs\";\nimport * as net from \"node:net\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport { spawn, spawnSync, execSync } from \"node:child_process\";\nimport { fileURLToPath } from \"node:url\";\nimport type {\n RuntimeName,\n InstanceId,\n BridgeState,\n AppServerState,\n AppServerAuthState,\n HeadlessConfig,\n Platform,\n TapState,\n} from \"../types.js\";\nimport { probeCommand } from \"../adapters/common.js\";\nimport { resolveNodeRuntime, buildRuntimeEnv } from \"../runtime/index.js\";\nimport { loadState } from \"../state.js\";\n\nexport interface BridgeStartOptions {\n instanceId: InstanceId;\n runtime: RuntimeName;\n stateDir: string;\n commsDir: string;\n bridgeScript: string;\n platform: Platform;\n agentName?: string;\n runtimeCommand?: string;\n appServerUrl?: string;\n repoRoot?: string;\n port?: number;\n /** Headless configuration. Passed as env vars to the bridge process. */\n headless?: HeadlessConfig | null;\n /** Bridge script operational flags (forwarded to codex-app-server-bridge.ts) */\n busyMode?: \"steer\" | \"wait\";\n pollSeconds?: number;\n reconnectSeconds?: number;\n messageLookbackMinutes?: number;\n threadId?: string;\n ephemeral?: boolean;\n processExistingMessages?: boolean;\n manageAppServer?: boolean;\n /** Skip auth gateway — app-server listens directly on the public port (localhost only). */\n noAuth?: boolean;\n}\n\nexport interface BridgeStopOptions {\n instanceId: InstanceId;\n stateDir: string;\n platform: Platform;\n}\n\ninterface EnsureCodexAppServerOptions {\n instanceId: InstanceId;\n stateDir: string;\n repoRoot: string;\n platform: Platform;\n appServerUrl: string;\n existingAppServer?: AppServerState | null;\n noAuth?: boolean;\n}\n\ninterface ManagedAppServerGatewayOptions {\n instanceId: InstanceId;\n stateDir: string;\n repoRoot: string;\n platform: Platform;\n publicUrl: string;\n}\n\ninterface WebSocketLike {\n addEventListener(\n type: \"open\" | \"error\" | \"close\",\n listener: () => void,\n options?: { once?: boolean },\n ): void;\n close(code?: number, reason?: string): void;\n}\n\ntype WebSocketCtor = new (\n url: string,\n protocols?: string | string[],\n) => WebSocketLike;\n\nconst DEFAULT_APP_SERVER_URL = \"ws://127.0.0.1:4501\";\nconst APP_SERVER_HEALTH_TIMEOUT_MS = 1_500;\nconst APP_SERVER_START_TIMEOUT_MS = 20_000;\nconst APP_SERVER_GATEWAY_START_TIMEOUT_MS = 5_000;\nconst APP_SERVER_HEALTH_RETRY_MS = 250;\nconst AUTH_SUBPROTOCOL_PREFIX = \"tap-auth-\";\nconst APP_SERVER_AUTH_FILE_MODE = 0o600;\nconst WINDOWS_SPAWN_WRAPPER_PREFIX = \"tap-spawn-\";\nconst WINDOWS_SPAWN_WRAPPER_STALE_MS = 60 * 60 * 1000;\n\nfunction appServerLogFilePath(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n return path.join(stateDir, \"logs\", `app-server-${instanceId}.log`);\n}\n\nfunction appServerGatewayLogFilePath(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n return path.join(stateDir, \"logs\", `app-server-gateway-${instanceId}.log`);\n}\n\nfunction appServerGatewayTokenFilePath(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n return path.join(\n stateDir,\n \"secrets\",\n `app-server-gateway-${instanceId}.token`,\n );\n}\n\nfunction stderrLogFilePath(logPath: string): string {\n return `${logPath}.stderr`;\n}\n\nfunction writeProtectedTextFile(filePath: string, content: string): void {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, content, {\n encoding: \"utf-8\",\n mode: APP_SERVER_AUTH_FILE_MODE,\n });\n fs.chmodSync(tmp, APP_SERVER_AUTH_FILE_MODE);\n fs.renameSync(tmp, filePath);\n fs.chmodSync(filePath, APP_SERVER_AUTH_FILE_MODE);\n}\n\nfunction removeFileIfExists(filePath: string | null | undefined): void {\n if (!filePath || !fs.existsSync(filePath)) {\n return;\n }\n\n try {\n fs.unlinkSync(filePath);\n } catch {\n // Best-effort cleanup only.\n }\n}\n\nfunction toPowerShellSingleQuotedString(value: string): string {\n return `'${value.replace(/'/g, \"''\")}'`;\n}\n\nfunction toPowerShellStringArrayLiteral(values: string[]): string {\n return `@(${values.map(toPowerShellSingleQuotedString).join(\", \")})`;\n}\n\nfunction cleanupStaleWindowsSpawnWrappers(now = Date.now()): void {\n let entries: string[];\n try {\n entries = fs.readdirSync(os.tmpdir());\n } catch {\n return;\n }\n\n for (const entry of entries) {\n if (\n !entry.startsWith(WINDOWS_SPAWN_WRAPPER_PREFIX) ||\n !/\\.(cmd|ps1)$/i.test(entry)\n ) {\n continue;\n }\n\n const wrapperPath = path.join(os.tmpdir(), entry);\n\n try {\n const stats = fs.statSync(wrapperPath);\n if (now - stats.mtimeMs < WINDOWS_SPAWN_WRAPPER_STALE_MS) {\n continue;\n }\n fs.unlinkSync(wrapperPath);\n } catch {\n // Best-effort cleanup only.\n }\n }\n}\n\nfunction buildWindowsDetachedWrapperScript(\n command: string,\n args: string[],\n logPath: string,\n stderrLogPath: string,\n env: NodeJS.ProcessEnv,\n): string {\n const lines = [\"$ErrorActionPreference = 'Stop'\"];\n\n for (const [key, value] of Object.entries(env)) {\n if (value !== undefined && value !== process.env[key]) {\n lines.push(\n `[Environment]::SetEnvironmentVariable(${toPowerShellSingleQuotedString(key)}, ${toPowerShellSingleQuotedString(value)}, 'Process')`,\n );\n }\n }\n\n lines.push(\n `$logPath = ${toPowerShellSingleQuotedString(logPath)}`,\n `$stderrLogPath = ${toPowerShellSingleQuotedString(stderrLogPath)}`,\n `$commandPath = ${toPowerShellSingleQuotedString(command)}`,\n `$commandArgs = ${toPowerShellStringArrayLiteral(args)}`,\n \"$exitCode = 1\",\n \"try {\",\n \" & $commandPath @commandArgs >> $logPath 2>> $stderrLogPath\",\n \" $exitCode = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { 0 }\",\n \"} finally {\",\n \" Remove-Item -LiteralPath $PSCommandPath -Force -ErrorAction SilentlyContinue\",\n \"}\",\n \"exit $exitCode\",\n );\n\n return `${lines.join(\"\\r\\n\")}\\r\\n`;\n}\n\nfunction getWebSocketCtor(): WebSocketCtor | null {\n const candidate = (globalThis as { WebSocket?: unknown }).WebSocket;\n return typeof candidate === \"function\" ? (candidate as WebSocketCtor) : null;\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction isLoopbackHost(hostname: string): boolean {\n return hostname === \"127.0.0.1\" || hostname === \"localhost\";\n}\n\nfunction resolveCodexCommand(platform: Platform): string | null {\n const candidates =\n platform === \"win32\"\n ? [\"codex.cmd\", \"codex.exe\", \"codex\", \"codex.ps1\"]\n : [\"codex\"];\n return probeCommand(candidates).command;\n}\n\nfunction formatCodexAppServerCommand(command: string, url: string): string {\n return `${command} app-server --listen ${url}`;\n}\n\nfunction resolvePowerShellCommand(): string {\n return (\n probeCommand([\"pwsh\", \"powershell\", \"powershell.exe\"]).command ??\n \"powershell\"\n );\n}\n\nfunction resolveAuthGatewayScript(repoRoot: string): string | null {\n const moduleDir = path.dirname(fileURLToPath(import.meta.url));\n const candidates = [\n // Bundled: dist/bridges/ sibling (npm install / built package)\n path.join(moduleDir, \"bridges\", \"codex-app-server-auth-gateway.mjs\"),\n // Source: src/bridges/ sibling (monorepo dev with ts runner)\n path.join(moduleDir, \"bridges\", \"codex-app-server-auth-gateway.ts\"),\n // Monorepo dist fallback\n path.join(\n repoRoot,\n \"packages\",\n \"tap-comms\",\n \"dist\",\n \"bridges\",\n \"codex-app-server-auth-gateway.mjs\",\n ),\n path.join(\n repoRoot,\n \"packages\",\n \"tap-comms\",\n \"src\",\n \"bridges\",\n \"codex-app-server-auth-gateway.ts\",\n ),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n}\n\nexport function getBridgeRuntimeStateDir(\n repoRoot: string,\n instanceId: InstanceId,\n): string {\n return path.join(repoRoot, \".tmp\", `codex-app-server-bridge-${instanceId}`);\n}\n\nasync function allocateLoopbackPort(hostname: string): Promise<number> {\n const bindHost = hostname === \"localhost\" ? \"127.0.0.1\" : hostname;\n return await new Promise<number>((resolve, reject) => {\n const server = net.createServer();\n server.unref();\n server.once(\"error\", reject);\n server.listen(0, bindHost, () => {\n const address = server.address();\n if (!address || typeof address === \"string\") {\n server.close(() => {\n reject(new Error(\"Failed to allocate a loopback port\"));\n });\n return;\n }\n\n const port = address.port;\n server.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(port);\n });\n });\n });\n}\n\nfunction buildProtectedAppServerUrl(publicUrl: string, _token: string): string {\n // Subprotocol auth: token is no longer embedded in the URL.\n // Kept for backward compatibility with state display — shows base URL only.\n return publicUrl;\n}\n\nfunction readGatewayTokenFromPath(tokenPath: string): string {\n return fs.readFileSync(tokenPath, \"utf8\").trim();\n}\n\nfunction readGatewayToken(\n auth: AppServerAuthState | null | undefined,\n): string | null {\n if (!auth) {\n return null;\n }\n\n const legacyToken = (auth as AppServerAuthState & { token?: string }).token;\n if (legacyToken?.trim()) {\n return legacyToken.trim();\n }\n\n if (!auth.tokenPath || !fs.existsSync(auth.tokenPath)) {\n return null;\n }\n\n const fileToken = readGatewayTokenFromPath(auth.tokenPath);\n return fileToken || null;\n}\n\nfunction materializeGatewayTokenFile(\n stateDir: string,\n instanceId: InstanceId,\n publicUrl: string,\n auth: AppServerAuthState,\n): AppServerAuthState {\n if (auth.tokenPath && fs.existsSync(auth.tokenPath)) {\n return auth;\n }\n\n const token = readGatewayToken(auth);\n if (!token) {\n throw new Error(`Missing auth gateway token for ${instanceId}`);\n }\n\n const tokenPath = appServerGatewayTokenFilePath(stateDir, instanceId);\n writeProtectedTextFile(tokenPath, `${token}\\n`);\n return {\n ...auth,\n protectedUrl: buildProtectedAppServerUrl(publicUrl, \"***\"),\n tokenPath,\n };\n}\n\nasync function createManagedAppServerAuth(\n options: ManagedAppServerGatewayOptions,\n): Promise<AppServerAuthState> {\n const publicUrl = new URL(options.publicUrl);\n const upstreamUrl = new URL(options.publicUrl);\n upstreamUrl.port = String(await allocateLoopbackPort(publicUrl.hostname));\n upstreamUrl.search = \"\";\n upstreamUrl.hash = \"\";\n\n const gatewayScript = resolveAuthGatewayScript(options.repoRoot);\n if (!gatewayScript) {\n throw new Error(\"Auth gateway script not found\");\n }\n\n const token = randomBytes(24).toString(\"base64url\");\n const tokenPath = appServerGatewayTokenFilePath(\n options.stateDir,\n options.instanceId,\n );\n writeProtectedTextFile(tokenPath, `${token}\\n`);\n const protectedUrl = buildProtectedAppServerUrl(options.publicUrl, \"***\");\n\n const gatewayLogPath = appServerGatewayLogFilePath(\n options.stateDir,\n options.instanceId,\n );\n fs.mkdirSync(path.dirname(gatewayLogPath), { recursive: true });\n rotateLog(gatewayLogPath);\n\n const runtime = resolveNodeRuntime(process.execPath, options.repoRoot);\n const gatewayArgs: string[] = [];\n if (gatewayScript.endsWith(\".ts\")) {\n if (!runtime.supportsStripTypes) {\n throw new Error(\n \"Current Node runtime cannot start the auth gateway from TypeScript source. Rebuild @hua-labs/tap or use Node 22.6+.\",\n );\n }\n gatewayArgs.push(\"--experimental-strip-types\");\n }\n gatewayArgs.push(gatewayScript);\n\n const gatewayEnv = {\n ...buildRuntimeEnv(options.repoRoot),\n TAP_GATEWAY_LISTEN_URL: options.publicUrl,\n TAP_GATEWAY_UPSTREAM_URL: upstreamUrl.toString().replace(/\\/$/, \"\"),\n TAP_GATEWAY_TOKEN_FILE: tokenPath,\n };\n\n let gatewayPid: number | null;\n {\n let logFd: number | null = null;\n try {\n if (options.platform === \"win32\") {\n gatewayPid = startWindowsDetachedProcess(\n runtime.command,\n gatewayArgs,\n options.repoRoot,\n gatewayLogPath,\n gatewayEnv,\n );\n } else {\n logFd = fs.openSync(gatewayLogPath, \"a\");\n const child = spawn(runtime.command, gatewayArgs, {\n cwd: options.repoRoot,\n detached: true,\n stdio: [\"ignore\", logFd, logFd],\n env: gatewayEnv,\n windowsHide: true,\n });\n child.unref();\n gatewayPid = child.pid ?? null;\n }\n } catch (error) {\n removeFileIfExists(tokenPath);\n throw error;\n } finally {\n if (logFd != null) {\n fs.closeSync(logFd);\n }\n }\n }\n\n if (gatewayPid == null) {\n removeFileIfExists(tokenPath);\n throw new Error(\"Failed to spawn app-server auth gateway\");\n }\n\n return {\n mode: \"subprotocol\",\n protectedUrl,\n upstreamUrl: upstreamUrl.toString().replace(/\\/$/, \"\"),\n tokenPath,\n gatewayPid,\n gatewayLogPath,\n };\n}\n\nfunction canReuseManagedAppServer(\n appServer: AppServerState | null | undefined,\n): boolean {\n if (!appServer?.managed) {\n return false;\n }\n\n // App-server process must be alive\n if (appServer.pid != null && !isProcessAlive(appServer.pid)) {\n return false;\n }\n\n const auth = appServer.auth;\n if (auth) {\n // Auth mode: verify gateway token and process are intact\n if (!auth.protectedUrl) {\n return false;\n }\n if (!readGatewayToken(auth)) {\n return false;\n }\n if (auth.gatewayPid != null && !isProcessAlive(auth.gatewayPid)) {\n return false;\n }\n }\n // No-auth mode (auth is null): only the app-server process check above is needed\n\n return true;\n}\n\nfunction markAppServerHealthy(appServer: AppServerState): AppServerState {\n const checkedAt = new Date().toISOString();\n return {\n ...appServer,\n healthy: true,\n lastCheckedAt: checkedAt,\n lastHealthyAt: checkedAt,\n };\n}\n\nfunction findReusableManagedAppServer(\n stateDir: string,\n publicUrl: string,\n): AppServerState | null {\n const pidDir = path.join(stateDir, \"pids\");\n if (!fs.existsSync(pidDir)) {\n return null;\n }\n\n for (const name of fs.readdirSync(pidDir)) {\n if (!name.startsWith(\"bridge-\") || !name.endsWith(\".json\")) {\n continue;\n }\n\n try {\n const raw = fs.readFileSync(path.join(pidDir, name), \"utf-8\");\n const parsed = JSON.parse(raw) as BridgeState;\n if (parsed.appServer?.url !== publicUrl) {\n continue;\n }\n if (canReuseManagedAppServer(parsed.appServer)) {\n return markAppServerHealthy(parsed.appServer!);\n }\n } catch {\n // Ignore stale or corrupted bridge state.\n }\n }\n\n return null;\n}\n\n/**\n * Start a background process on Windows without creating a visible console window.\n *\n * Node.js `spawn({ detached: true })` sets `DETACHED_PROCESS` in CreateProcess,\n * which forces Windows to allocate a new console for console apps — even with\n * `windowsHide: true` (which only sets SW_HIDE, not CREATE_NO_WINDOW).\n * These two flags are mutually exclusive in the Windows API.\n *\n * Instead, we use PowerShell `Start-Process -WindowStyle Hidden` which internally\n * sets `ProcessStartInfo.CreateNoWindow = true`, preventing console allocation\n * entirely. A temp `.ps1` wrapper handles environment variables, robust argument\n * passing, append-mode log redirection, and self-cleans on normal exit.\n *\n * The returned PID is of the hidden PowerShell wrapper process, which stays alive\n * while the child runs.\n * `taskkill /PID <pid> /F /T` (used by stopBridge) kills the entire tree.\n */\nfunction startWindowsDetachedProcess(\n command: string,\n args: string[],\n repoRoot: string,\n logPath: string,\n env: NodeJS.ProcessEnv = process.env,\n): number | null {\n const stderrLogPath = stderrLogFilePath(logPath);\n const powerShellCommand = resolvePowerShellCommand();\n\n cleanupStaleWindowsSpawnWrappers();\n\n const wrapperPath = path.join(\n os.tmpdir(),\n `${WINDOWS_SPAWN_WRAPPER_PREFIX}${randomBytes(4).toString(\"hex\")}.ps1`,\n );\n fs.writeFileSync(\n wrapperPath,\n buildWindowsDetachedWrapperScript(\n command,\n args,\n logPath,\n stderrLogPath,\n env,\n ),\n );\n\n // Use PowerShell Start-Process with -WindowStyle Hidden to launch without\n // a visible console window. -PassThru returns the process object for PID.\n const psCommand = [\n \"$p = Start-Process\",\n `-FilePath ${toPowerShellSingleQuotedString(powerShellCommand)}`,\n `-ArgumentList ${toPowerShellStringArrayLiteral([\"-NoLogo\", \"-NoProfile\", \"-File\", wrapperPath])}`,\n `-WorkingDirectory ${toPowerShellSingleQuotedString(repoRoot)}`,\n \"-WindowStyle Hidden\",\n \"-PassThru\",\n \"; Write-Output $p.Id\",\n ].join(\" \");\n\n const result = spawnSync(\n powerShellCommand,\n [\"-NoLogo\", \"-NoProfile\", \"-Command\", psCommand],\n {\n encoding: \"utf-8\",\n windowsHide: true,\n },\n );\n\n if (result.status !== 0) {\n removeFileIfExists(wrapperPath);\n return null;\n }\n\n const pid = parseInt(result.stdout.trim(), 10);\n if (!Number.isFinite(pid)) {\n removeFileIfExists(wrapperPath);\n return null;\n }\n\n return pid;\n}\n\nfunction startWindowsCodexAppServer(\n command: string,\n url: string,\n repoRoot: string,\n logPath: string,\n): number | null {\n return startWindowsDetachedProcess(\n command,\n [\"app-server\", \"--listen\", url],\n repoRoot,\n logPath,\n );\n}\n\nfunction findListeningProcessId(\n url: string,\n platform: Platform,\n): number | null {\n if (platform !== \"win32\") {\n return null;\n }\n\n let port: number | null;\n try {\n const parsed = new URL(url);\n port = parsed.port ? Number.parseInt(parsed.port, 10) : null;\n } catch {\n return null;\n }\n\n if (port == null || !Number.isFinite(port)) {\n return null;\n }\n\n const result = spawnSync(\n resolvePowerShellCommand(),\n [\n \"-NoLogo\",\n \"-NoProfile\",\n \"-Command\",\n [\n `$port = ${port}`,\n \"$processId = Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty OwningProcess\",\n \"if ($processId) { $processId }\",\n ].join(\"; \"),\n ],\n {\n encoding: \"utf-8\",\n windowsHide: true,\n },\n );\n\n if (result.status !== 0) {\n return null;\n }\n\n const parsedPid = Number.parseInt((result.stdout ?? \"\").trim(), 10);\n return Number.isFinite(parsedPid) ? parsedPid : null;\n}\n\nexport function resolveAppServerUrl(\n baseUrl: string | undefined,\n port?: number,\n): string {\n const resolvedBase = (baseUrl ?? DEFAULT_APP_SERVER_URL).replace(/\\/$/, \"\");\n if (port == null) {\n return resolvedBase;\n }\n\n try {\n const parsed = new URL(resolvedBase);\n parsed.port = String(port);\n return parsed.toString().replace(/\\/$/, \"\");\n } catch {\n return resolvedBase;\n }\n}\n\nexport async function isTcpPortAvailable(\n hostname: string,\n port: number,\n): Promise<boolean> {\n const bindHost = hostname === \"localhost\" ? \"127.0.0.1\" : hostname;\n return await new Promise<boolean>((resolve) => {\n const server = net.createServer();\n server.unref();\n server.once(\"error\", () => resolve(false));\n server.listen(port, bindHost, () => {\n server.close((error) => resolve(!error));\n });\n });\n}\n\nexport async function findNextAvailableAppServerPort(\n state: TapState,\n baseUrl: string | undefined,\n basePort: number = 4501,\n excludeInstanceId?: InstanceId,\n): Promise<number> {\n let hostname = \"127.0.0.1\";\n try {\n hostname = new URL(baseUrl ?? DEFAULT_APP_SERVER_URL).hostname;\n } catch {\n // Fall back to the default loopback host.\n }\n\n const maxAttempts = 1000;\n let port = basePort;\n for (let attempt = 0; attempt < maxAttempts; attempt += 1, port += 1) {\n const claimedInState = Object.entries(state.instances).some(\n ([id, inst]) => id !== excludeInstanceId && inst.port === port,\n );\n if (claimedInState) {\n continue;\n }\n\n if (!isLoopbackHost(hostname)) {\n return port;\n }\n\n if (await isTcpPortAvailable(hostname, port)) {\n return port;\n }\n }\n\n throw new Error(\n `Failed to find a free app-server port starting at ${basePort}`,\n );\n}\n\nexport async function checkAppServerHealth(\n url: string,\n timeoutMs: number = APP_SERVER_HEALTH_TIMEOUT_MS,\n gatewayToken?: string | null,\n): Promise<boolean> {\n const WebSocket = getWebSocketCtor();\n if (!WebSocket) {\n return false;\n }\n\n return new Promise<boolean>((resolve) => {\n let settled = false;\n let socket: WebSocketLike | null = null;\n\n const finish = (healthy: boolean) => {\n if (settled) {\n return;\n }\n settled = true;\n clearTimeout(timer);\n try {\n socket?.close();\n } catch {\n // Best-effort cleanup only.\n }\n resolve(healthy);\n };\n\n const timer = setTimeout(() => finish(false), timeoutMs);\n\n try {\n // Authenticate via WebSocket subprotocol when a gateway token is provided.\n const protocols = gatewayToken\n ? [`${AUTH_SUBPROTOCOL_PREFIX}${gatewayToken}`]\n : undefined;\n socket = new WebSocket(url, protocols);\n socket.addEventListener(\"open\", () => finish(true), { once: true });\n socket.addEventListener(\"error\", () => finish(false), { once: true });\n socket.addEventListener(\"close\", () => finish(false), { once: true });\n } catch {\n finish(false);\n }\n });\n}\n\nasync function waitForAppServerHealth(\n url: string,\n timeoutMs: number,\n gatewayToken?: string | null,\n): Promise<boolean> {\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() < deadline) {\n if (\n await checkAppServerHealth(\n url,\n APP_SERVER_HEALTH_TIMEOUT_MS,\n gatewayToken,\n )\n ) {\n return true;\n }\n await delay(APP_SERVER_HEALTH_RETRY_MS);\n }\n\n return false;\n}\n\nasync function terminateProcess(\n pid: number,\n platform: Platform,\n): Promise<boolean> {\n if (!isProcessAlive(pid)) {\n return false;\n }\n\n try {\n if (platform === \"win32\") {\n execSync(`taskkill /PID ${pid} /F /T`, { stdio: \"pipe\" });\n } else {\n process.kill(pid, \"SIGTERM\");\n await delay(2_000);\n if (isProcessAlive(pid)) {\n process.kill(pid, \"SIGKILL\");\n }\n }\n } catch {\n // Best effort. The caller only needs a boolean outcome.\n }\n\n return !isProcessAlive(pid);\n}\n\nexport async function stopManagedAppServer(\n appServer: AppServerState,\n platform: Platform,\n): Promise<boolean> {\n if (!appServer.managed) {\n return false;\n }\n\n let stopped = false;\n if (appServer.auth?.gatewayPid != null) {\n stopped =\n (await terminateProcess(appServer.auth.gatewayPid, platform)) || stopped;\n }\n if (appServer.pid != null) {\n stopped = (await terminateProcess(appServer.pid, platform)) || stopped;\n }\n removeFileIfExists(appServer.auth?.tokenPath);\n return stopped;\n}\n\nexport async function ensureCodexAppServer(\n options: EnsureCodexAppServerOptions,\n): Promise<AppServerState> {\n const effectiveUrl = resolveAppServerUrl(options.appServerUrl);\n const fallbackManualCommand = formatCodexAppServerCommand(\n \"codex\",\n effectiveUrl,\n );\n if (\n options.existingAppServer?.url === effectiveUrl &&\n canReuseManagedAppServer(options.existingAppServer)\n ) {\n return markAppServerHealthy(options.existingAppServer);\n }\n\n const sharedManaged = findReusableManagedAppServer(\n options.stateDir,\n effectiveUrl,\n );\n if (sharedManaged) {\n return sharedManaged;\n }\n\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(effectiveUrl);\n } catch {\n throw new Error(\n `Invalid app-server URL: ${effectiveUrl}\\nStart it manually:\\n ${fallbackManualCommand}`,\n );\n }\n\n if (!isLoopbackHost(parsedUrl.hostname)) {\n throw new Error(\n `Auto-start only supports loopback app-server URLs. Current URL: ${effectiveUrl}\\nStart it manually:\\n ${fallbackManualCommand}`,\n );\n }\n\n if (await checkAppServerHealth(effectiveUrl)) {\n const hint = options.noAuth\n ? \"Stop it first or use --no-server for an unmanaged external app-server.\"\n : \"A listener is already running, so tap cannot insert the auth gateway there.\\nStop it first or use --no-server for an unmanaged external app-server.\";\n throw new Error(`${effectiveUrl}: ${hint}`);\n }\n\n const resolvedCommand = resolveCodexCommand(options.platform);\n if (!resolvedCommand) {\n throw new Error(\n `Codex CLI not found in PATH.\\nStart the app-server manually:\\n ${fallbackManualCommand}`,\n );\n }\n\n const logPath = appServerLogFilePath(options.stateDir, options.instanceId);\n fs.mkdirSync(path.dirname(logPath), { recursive: true });\n rotateLog(logPath);\n\n // --no-auth: start app-server directly on the public URL (no gateway).\n // TUI and bridge both connect to the same port without token auth.\n if (options.noAuth) {\n const manualCommand = formatCodexAppServerCommand(\"codex\", effectiveUrl);\n let pid: number | null;\n\n if (options.platform === \"win32\") {\n try {\n pid = startWindowsCodexAppServer(\n resolvedCommand,\n effectiveUrl,\n options.repoRoot,\n logPath,\n );\n } catch (err) {\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n }\n } else {\n const logFd = fs.openSync(logPath, \"a\");\n try {\n const child = spawn(\n resolvedCommand,\n [\"app-server\", \"--listen\", effectiveUrl],\n {\n cwd: options.repoRoot,\n detached: true,\n stdio: [\"ignore\", logFd, logFd],\n env: process.env,\n windowsHide: true,\n },\n );\n child.unref();\n pid = child.pid ?? null;\n } catch (err) {\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n } finally {\n fs.closeSync(logFd);\n }\n }\n\n if (pid == null) {\n throw new Error(\n `Failed to spawn Codex app-server.\\nStart it manually:\\n ${manualCommand}`,\n );\n }\n\n const healthy = await waitForAppServerHealth(\n effectiveUrl,\n APP_SERVER_START_TIMEOUT_MS,\n );\n if (!healthy) {\n await terminateProcess(pid, options.platform);\n throw new Error(\n `Codex app-server did not become healthy at ${effectiveUrl}.\\nCheck ${logPath}\\nOr start it manually:\\n ${manualCommand}`,\n );\n }\n\n pid = findListeningProcessId(effectiveUrl, options.platform) ?? pid;\n const healthyAt = new Date().toISOString();\n return {\n url: effectiveUrl,\n pid,\n managed: true,\n healthy: true,\n lastCheckedAt: healthyAt,\n lastHealthyAt: healthyAt,\n logPath,\n manualCommand,\n auth: null,\n };\n }\n\n // Default: auth gateway mode — gateway on publicUrl, app-server on random upstream port\n const auth = await createManagedAppServerAuth({\n instanceId: options.instanceId,\n stateDir: options.stateDir,\n repoRoot: options.repoRoot,\n platform: options.platform,\n publicUrl: effectiveUrl,\n });\n const manualCommand = formatCodexAppServerCommand(\"codex\", auth.upstreamUrl);\n\n let pid: number | null;\n\n if (options.platform === \"win32\") {\n try {\n pid = startWindowsCodexAppServer(\n resolvedCommand,\n auth.upstreamUrl,\n options.repoRoot,\n logPath,\n );\n } catch (err) {\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n }\n } else {\n const logFd = fs.openSync(logPath, \"a\");\n\n try {\n const child = spawn(\n resolvedCommand,\n [\"app-server\", \"--listen\", auth.upstreamUrl],\n {\n cwd: options.repoRoot,\n detached: true,\n stdio: [\"ignore\", logFd, logFd],\n env: process.env,\n windowsHide: true,\n },\n );\n\n child.unref();\n pid = child.pid ?? null;\n } catch (err) {\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n } finally {\n fs.closeSync(logFd);\n }\n }\n\n if (pid == null) {\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Failed to spawn Codex app-server.\\nStart it manually:\\n ${manualCommand}`,\n );\n }\n\n const healthy = await waitForAppServerHealth(\n auth.upstreamUrl,\n APP_SERVER_START_TIMEOUT_MS,\n );\n\n if (!healthy) {\n await terminateProcess(pid, options.platform);\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Codex app-server did not become healthy at ${auth.upstreamUrl}.\\nCheck ${logPath}\\nOr start it manually:\\n ${manualCommand}`,\n );\n }\n\n const gatewayToken = readGatewayToken(auth);\n if (!gatewayToken) {\n await terminateProcess(pid, options.platform);\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\"Tap auth gateway token is missing after startup.\");\n }\n\n const gatewayHealthy = await waitForAppServerHealth(\n effectiveUrl,\n APP_SERVER_GATEWAY_START_TIMEOUT_MS,\n gatewayToken,\n );\n if (!gatewayHealthy) {\n await terminateProcess(pid, options.platform);\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Tap auth gateway did not become healthy at ${effectiveUrl}.\\nCheck ${auth.gatewayLogPath ?? \"the gateway log\"} and ${logPath}.`,\n );\n }\n\n const healthyAt = new Date().toISOString();\n pid = findListeningProcessId(auth.upstreamUrl, options.platform) ?? pid;\n return {\n url: effectiveUrl,\n pid,\n managed: true,\n healthy: true,\n lastCheckedAt: healthyAt,\n lastHealthyAt: healthyAt,\n logPath,\n manualCommand,\n auth,\n };\n}\n\nfunction pidFilePath(stateDir: string, instanceId: InstanceId): string {\n return path.join(stateDir, \"pids\", `bridge-${instanceId}.json`);\n}\n\nfunction logFilePath(stateDir: string, instanceId: InstanceId): string {\n return path.join(stateDir, \"logs\", `bridge-${instanceId}.log`);\n}\n\nfunction runtimeHeartbeatFilePath(runtimeStateDir: string): string {\n return path.join(runtimeStateDir, \"heartbeat.json\");\n}\n\nfunction runtimeThreadStateFilePath(runtimeStateDir: string): string {\n return path.join(runtimeStateDir, \"thread.json\");\n}\n\nexport interface RuntimeBridgeHeartbeat {\n updatedAt?: string;\n threadId?: string | null;\n threadCwd?: string | null;\n activeTurnId?: string | null;\n lastTurnStatus?: string | null;\n lastError?: string | null;\n connected?: boolean;\n initialized?: boolean;\n}\n\nexport interface RuntimeBridgeThreadState {\n threadId: string;\n updatedAt?: string;\n appServerUrl?: string;\n ephemeral?: boolean;\n cwd?: string | null;\n}\n\nexport function loadRuntimeBridgeHeartbeat(\n bridgeState:\n | {\n runtimeStateDir?: string | null;\n }\n | null\n | undefined,\n): RuntimeBridgeHeartbeat | null {\n const runtimeStateDir = bridgeState?.runtimeStateDir;\n if (!runtimeStateDir) {\n return null;\n }\n\n const heartbeatPath = runtimeHeartbeatFilePath(runtimeStateDir);\n if (!fs.existsSync(heartbeatPath)) {\n return null;\n }\n\n try {\n return JSON.parse(\n fs.readFileSync(heartbeatPath, \"utf-8\"),\n ) as RuntimeBridgeHeartbeat;\n } catch {\n return null;\n }\n}\n\nexport function loadRuntimeBridgeThreadState(\n bridgeState:\n | {\n runtimeStateDir?: string | null;\n }\n | null\n | undefined,\n): RuntimeBridgeThreadState | null {\n const runtimeStateDir = bridgeState?.runtimeStateDir;\n if (!runtimeStateDir) {\n return null;\n }\n\n const threadPath = runtimeThreadStateFilePath(runtimeStateDir);\n if (!fs.existsSync(threadPath)) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(\n fs.readFileSync(threadPath, \"utf-8\"),\n ) as RuntimeBridgeThreadState;\n return parsed.threadId ? parsed : null;\n } catch {\n return null;\n }\n}\n\nfunction loadRuntimeHeartbeatTimestamp(\n runtimeStateDir: string | null | undefined,\n): string | null {\n const heartbeat = loadRuntimeBridgeHeartbeat({ runtimeStateDir });\n return typeof heartbeat?.updatedAt === \"string\" ? heartbeat.updatedAt : null;\n}\n\nfunction resolveHeartbeatTimestamp(\n state: BridgeState | null | undefined,\n): string | null {\n return (\n loadRuntimeHeartbeatTimestamp(state?.runtimeStateDir) ??\n state?.lastHeartbeat ??\n null\n );\n}\n\nexport function loadBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n): BridgeState | null {\n const pidPath = pidFilePath(stateDir, instanceId);\n if (!fs.existsSync(pidPath)) return null;\n\n try {\n const raw = fs.readFileSync(pidPath, \"utf-8\");\n return JSON.parse(raw) as BridgeState;\n } catch {\n return null;\n }\n}\n\nexport function saveBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n state: BridgeState,\n): void {\n const pidPath = pidFilePath(stateDir, instanceId);\n const serializable = JSON.parse(JSON.stringify(state)) as BridgeState & {\n appServer?: { auth?: { token?: string } | null } | null;\n };\n if (serializable.appServer?.auth) {\n delete serializable.appServer.auth.token;\n }\n writeProtectedTextFile(pidPath, JSON.stringify(serializable, null, 2));\n}\n\nexport function clearBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n): void {\n const pidPath = pidFilePath(stateDir, instanceId);\n if (fs.existsSync(pidPath)) {\n fs.unlinkSync(pidPath);\n }\n}\n\nexport function isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isBridgeRunning(\n stateDir: string,\n instanceId: InstanceId,\n): boolean {\n const state = loadBridgeState(stateDir, instanceId);\n if (!state) return false;\n return isProcessAlive(state.pid);\n}\n\n// ─── Testable helpers (extracted for unit testing) ─────────────\n\n/**\n * Resolve agent name: explicit > state.json > env.\n * Exported for direct testing without spawning a process.\n */\nexport function resolveAgentName(\n instanceId: InstanceId,\n explicit?: string,\n context?: { repoRoot?: string; stateDir?: string },\n): string | null {\n if (explicit) return explicit;\n\n // state.json SSOT (#784 backwrite)\n try {\n const repoRoot =\n context?.repoRoot ??\n context?.stateDir?.replace(/[\\\\/].tap-comms$/, \"\") ??\n process.cwd();\n const state = loadState(repoRoot);\n const stateAgent = state?.instances[instanceId]?.agentName;\n if (stateAgent) return stateAgent;\n } catch {\n // state read failed — fall through\n }\n\n return process.env.TAP_AGENT_NAME || process.env.CODEX_TAP_AGENT_NAME || null;\n}\n\n/**\n * Infer restart mode from current bridge/instance state.\n * Priority: explicit flags > saved instance mode > bridge state inference > defaults.\n */\nexport function inferRestartMode(\n bridgeState: BridgeState | null,\n flags?: { noServer?: boolean; noAuth?: boolean },\n savedMode?: { manageAppServer?: boolean; noAuth?: boolean },\n): { manageAppServer: boolean; noAuth: boolean } {\n const wasManaged = bridgeState?.appServer != null;\n const hadAuth = bridgeState?.appServer?.auth != null;\n\n const manageAppServer =\n flags?.noServer === true\n ? false\n : flags?.noServer === undefined\n ? (savedMode?.manageAppServer ?? wasManaged)\n : true;\n const noAuth =\n flags?.noAuth === true\n ? true\n : flags?.noAuth === undefined\n ? (savedMode?.noAuth ?? !hadAuth)\n : false;\n\n return { manageAppServer, noAuth };\n}\n\n/**\n * Clean up headless dispatch files from inbox.\n * Matches YYYYMMDD-headless-{agent}-review-PR{n}.md pattern.\n */\nexport function cleanupHeadlessDispatch(\n inboxDir: string,\n agentName: string,\n): string[] {\n const removed: string[] = [];\n if (!fs.existsSync(inboxDir)) return removed;\n\n const normalizedAgent = agentName.replace(/-/g, \"_\");\n const marker = `-headless-${normalizedAgent}-review-`;\n\n try {\n for (const file of fs.readdirSync(inboxDir)) {\n if (file.includes(marker)) {\n fs.unlinkSync(path.join(inboxDir, file));\n removed.push(file);\n }\n }\n } catch {\n // best-effort\n }\n\n return removed;\n}\n\nexport async function startBridge(\n options: BridgeStartOptions,\n): Promise<BridgeState> {\n const {\n instanceId,\n runtime,\n stateDir,\n commsDir,\n bridgeScript,\n agentName,\n port,\n } = options;\n\n const resolvedAgent = resolveAgentName(instanceId, agentName, {\n repoRoot: options.repoRoot,\n stateDir,\n });\n\n if (!resolvedAgent) {\n throw new Error(\n `No agent name for ${instanceId} bridge. ` +\n `Set TAP_AGENT_NAME env var or pass --agent-name flag.`,\n );\n }\n\n // Check if already running\n if (isBridgeRunning(stateDir, instanceId)) {\n const existing = loadBridgeState(stateDir, instanceId)!;\n throw new Error(\n `Bridge for ${instanceId} is already running (PID: ${existing.pid})`,\n );\n }\n\n const previousBridgeState = loadBridgeState(stateDir, instanceId);\n const previousAppServer = previousBridgeState?.appServer ?? null;\n\n // Clear stale PID\n clearBridgeState(stateDir, instanceId);\n\n const logPath = logFilePath(stateDir, instanceId);\n fs.mkdirSync(path.dirname(logPath), { recursive: true });\n\n // Log rotation: rename existing log to .prev\n rotateLog(logPath);\n\n let logFd: number | null = null;\n\n // Use explicit repoRoot (not derived from stateDir — stateDir may be external)\n const repoRoot = options.repoRoot ?? path.resolve(stateDir, \"..\");\n const runtimeStateDir = getBridgeRuntimeStateDir(repoRoot, instanceId);\n const resolved = resolveNodeRuntime(\n options.runtimeCommand ?? \"node\",\n repoRoot,\n );\n const command = resolved.command;\n\n // Build env with fnm Node prepended to PATH so the bridge runner's\n // 2nd-stage spawn also finds the correct Node (결 finding: 2-stage spawn)\n const runtimeEnv = buildRuntimeEnv(repoRoot);\n const effectiveAppServerUrl = resolveAppServerUrl(options.appServerUrl, port);\n let appServer: AppServerState | null = null;\n let bridgeAppServerUrl = effectiveAppServerUrl;\n\n if (runtime === \"codex\" && options.manageAppServer) {\n appServer = await ensureCodexAppServer({\n instanceId,\n stateDir,\n repoRoot,\n platform: options.platform,\n appServerUrl: effectiveAppServerUrl,\n existingAppServer: previousAppServer,\n noAuth: options.noAuth,\n });\n if (appServer.auth) {\n appServer = {\n ...appServer,\n auth: materializeGatewayTokenFile(\n stateDir,\n instanceId,\n effectiveAppServerUrl,\n appServer.auth,\n ),\n };\n }\n bridgeAppServerUrl = effectiveAppServerUrl;\n }\n\n // Spawn detached process — pass both command and strip-types metadata\n // so the runner doesn't re-guess (avoids bun + --experimental-strip-types)\n try {\n const bridgeEnv = {\n ...runtimeEnv,\n TAP_COMMS_DIR: commsDir,\n TAP_STATE_DIR: runtimeStateDir,\n TAP_BRIDGE_RUNTIME: runtime,\n TAP_BRIDGE_INSTANCE_ID: instanceId,\n TAP_AGENT_ID: instanceId,\n TAP_AGENT_NAME: resolvedAgent,\n CODEX_TAP_AGENT_NAME: resolvedAgent,\n TAP_RESOLVED_NODE: resolved.command,\n TAP_STRIP_TYPES: resolved.supportsStripTypes ? \"1\" : \"0\",\n ...(bridgeAppServerUrl\n ? { CODEX_APP_SERVER_URL: bridgeAppServerUrl }\n : {}),\n ...(appServer?.auth?.tokenPath\n ? { TAP_GATEWAY_TOKEN_FILE: appServer.auth.tokenPath }\n : {}),\n ...(port != null ? { TAP_BRIDGE_PORT: String(port) } : {}),\n ...(options.headless?.enabled\n ? {\n TAP_HEADLESS: \"true\",\n TAP_AGENT_ROLE: options.headless.role,\n TAP_MAX_REVIEW_ROUNDS: String(options.headless.maxRounds),\n TAP_QUALITY_FLOOR: options.headless.qualitySeverityFloor,\n }\n : {}),\n ...(options.busyMode ? { TAP_BUSY_MODE: options.busyMode } : {}),\n ...(options.pollSeconds != null\n ? { TAP_POLL_SECONDS: String(options.pollSeconds) }\n : {}),\n ...(options.reconnectSeconds != null\n ? { TAP_RECONNECT_SECONDS: String(options.reconnectSeconds) }\n : {}),\n ...(options.messageLookbackMinutes != null\n ? {\n TAP_MESSAGE_LOOKBACK_MINUTES: String(\n options.messageLookbackMinutes,\n ),\n }\n : {}),\n ...(process.env.TAP_COLD_START_WARMUP === \"true\"\n ? { TAP_COLD_START_WARMUP: \"true\" }\n : {}),\n ...(options.threadId ? { TAP_THREAD_ID: options.threadId } : {}),\n ...(options.ephemeral ? { TAP_EPHEMERAL: \"true\" } : {}),\n ...(options.processExistingMessages\n ? { TAP_PROCESS_EXISTING: \"true\" }\n : {}),\n };\n\n let bridgePid: number | null = null;\n\n if (options.platform === \"win32\") {\n bridgePid = startWindowsDetachedProcess(\n command,\n [bridgeScript],\n repoRoot,\n logPath,\n bridgeEnv,\n );\n } else {\n logFd = fs.openSync(logPath, \"a\");\n const child = spawn(command, [bridgeScript], {\n detached: true,\n stdio: [\"ignore\", logFd, logFd],\n env: bridgeEnv,\n windowsHide: true,\n });\n\n child.unref();\n bridgePid = child.pid ?? null;\n }\n\n if (logFd != null) {\n fs.closeSync(logFd);\n logFd = null;\n }\n\n if (!bridgePid) {\n throw new Error(`Failed to spawn bridge process for ${instanceId}`);\n }\n\n const state: BridgeState = {\n pid: bridgePid,\n statePath: pidFilePath(stateDir, instanceId),\n lastHeartbeat: new Date().toISOString(),\n appServer,\n runtimeStateDir,\n };\n\n saveBridgeState(stateDir, instanceId, state);\n\n // NOTE: Heartbeat updates are the bridge process's responsibility.\n // The bridge script should periodically write to the PID file's lastHeartbeat field.\n // CLI only records the initial heartbeat at spawn time.\n\n return state;\n } catch (err) {\n if (logFd != null) {\n try {\n fs.closeSync(logFd);\n } catch {\n // Best-effort cleanup only.\n }\n }\n if (appServer?.managed) {\n await stopManagedAppServer(appServer, options.platform);\n }\n throw err;\n }\n}\n\nexport async function stopBridge(options: BridgeStopOptions): Promise<boolean> {\n const { instanceId, stateDir, platform } = options;\n const state = loadBridgeState(stateDir, instanceId);\n\n if (!state) {\n return false; // No PID file\n }\n\n if (!isProcessAlive(state.pid)) {\n clearBridgeState(stateDir, instanceId);\n return false; // Already dead\n }\n\n try {\n await terminateProcess(state.pid, platform);\n } catch {\n // Process may have already exited\n }\n\n clearBridgeState(stateDir, instanceId);\n return true;\n}\n\n// ─── Graceful restart ──────────────────────────────────────────\n\nexport interface RestartBridgeOptions extends BridgeStartOptions {\n /** Max seconds to wait for active turn to complete before killing. Default: 30 */\n drainTimeoutSeconds?: number;\n}\n\n/**\n * Graceful bridge restart: wait for active turn → cleanup → stop → start.\n * Prevents message loss during restart by draining active work first\n * and replaying unprocessed messages on the new instance.\n *\n * For headless instances: drain phase cleans up headless dispatch files\n * to prevent the new bridge from re-injecting completed review requests.\n * (별 finding: eager marking + replay collision)\n */\nexport async function restartBridge(\n options: RestartBridgeOptions,\n): Promise<BridgeState> {\n const { instanceId, stateDir, platform } = options;\n const drainTimeout = (options.drainTimeoutSeconds ?? 30) * 1000;\n const repoRoot = options.repoRoot ?? stateDir.replace(/[\\\\/].tap-comms$/, \"\");\n\n // Phase 1: Drain — wait for active turn to complete\n const runtimeStateDir = getBridgeRuntimeStateDir(repoRoot, instanceId);\n const heartbeatPath = path.join(runtimeStateDir, \"heartbeat.json\");\n\n if (fs.existsSync(heartbeatPath)) {\n const startWait = Date.now();\n while (Date.now() - startWait < drainTimeout) {\n try {\n const hb = JSON.parse(fs.readFileSync(heartbeatPath, \"utf-8\"));\n if (!hb.activeTurnId) break; // No active turn — safe to stop\n } catch {\n break; // Can't read heartbeat — proceed with stop\n }\n await new Promise((r) => setTimeout(r, 1000));\n }\n }\n\n // Phase 1.5: Clean up headless dispatch files (uses extracted helper)\n if (options.headless?.enabled && options.commsDir) {\n const agentName = options.agentName ?? instanceId;\n cleanupHeadlessDispatch(path.join(options.commsDir, \"inbox\"), agentName);\n }\n\n // Phase 2: Stop existing bridge\n await stopBridge({ instanceId, stateDir, platform });\n\n // Phase 3: Start new bridge with --process-existing-messages\n // This replays any messages that arrived during drain/restart\n const restartOptions: BridgeStartOptions = {\n ...options,\n processExistingMessages: true,\n };\n\n return startBridge(restartOptions);\n}\n\n// ─── Log rotation ──────────────────────────────────────────────\n\nexport function rotateLog(logPath: string): void {\n if (!fs.existsSync(logPath)) return;\n try {\n const stats = fs.statSync(logPath);\n if (stats.size === 0) return;\n const prevPath = `${logPath}.prev`;\n fs.renameSync(logPath, prevPath);\n } catch {\n // Best-effort: don't fail bridge start if rotation fails\n }\n}\n\n// ─── Heartbeat ─────────────────────────────────────────────────\n\n/**\n * Update the heartbeat timestamp for a running bridge.\n * Bridge processes should call this periodically.\n *\n * Only the owning process (matching PID) can update the heartbeat.\n * This prevents state dir collision when multiple writers exist.\n * See: 묵 finding — bridge-heartbeat-state-dir-collision\n */\nexport function updateBridgeHeartbeat(\n stateDir: string,\n instanceId: InstanceId,\n): void {\n const state = loadBridgeState(stateDir, instanceId);\n if (!state) return;\n\n // Guard: only the owning process may update heartbeat\n if (state.pid !== process.pid) return;\n\n state.lastHeartbeat = new Date().toISOString();\n saveBridgeState(stateDir, instanceId, state);\n}\n\n/**\n * Get heartbeat age in seconds. Returns null if no state or no heartbeat.\n */\nexport function getHeartbeatAge(\n stateDir: string,\n instanceId: InstanceId,\n): number | null {\n const state = loadBridgeState(stateDir, instanceId);\n const heartbeat = resolveHeartbeatTimestamp(state);\n if (!heartbeat) return null;\n const heartbeatTime = new Date(heartbeat).getTime();\n if (isNaN(heartbeatTime)) return null;\n return Math.floor((Date.now() - heartbeatTime) / 1000);\n}\n\nexport function getBridgeHeartbeatTimestamp(\n stateDir: string,\n instanceId: InstanceId,\n): string | null {\n return resolveHeartbeatTimestamp(loadBridgeState(stateDir, instanceId));\n}\n\nexport function getBridgeStatus(\n stateDir: string,\n instanceId: InstanceId,\n): \"running\" | \"stopped\" | \"stale\" {\n const state = loadBridgeState(stateDir, instanceId);\n if (!state) return \"stopped\";\n\n // Primary check: is the process actually alive?\n if (!isProcessAlive(state.pid)) {\n clearBridgeState(stateDir, instanceId);\n return \"stale\";\n }\n\n // Process is alive → running.\n // Heartbeat staleness is informational only — the bridge process\n // is responsible for updating lastHeartbeat. If it doesn't,\n // PID alive is still the authoritative signal.\n return \"running\";\n}\n","/**\n * Dashboard data collection engine.\n * Aggregates: agents (comms presence), bridges (state + PID), PRs (gh CLI).\n *\n * Ref: tap public repo tap-ops-dashboard.ps1 (single-agent view)\n * M74 extends to control-tower view (all agents, all bridges, all PRs).\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execSync } from \"node:child_process\";\nimport { resolveConfig } from \"../config/index.js\";\nimport {\n loadBridgeState,\n getBridgeStatus,\n getHeartbeatAge,\n isProcessAlive,\n} from \"./bridge.js\";\nimport type { InstanceId } from \"../types.js\";\nimport { loadState } from \"../state.js\";\n\n// ─── Types ─────────────────────────────────────────────────────\n\nexport interface AgentInfo {\n name: string;\n status: string | null;\n lastActivity: string | null;\n joinedAt: string | null;\n}\n\nexport interface BridgeInfo {\n instanceId: string;\n runtime: string;\n status: \"running\" | \"stopped\" | \"stale\";\n pid: number | null;\n port: number | null;\n heartbeatAge: number | null;\n headless: boolean;\n}\n\nexport interface PRInfo {\n number: number;\n title: string;\n author: string;\n state: string;\n url: string;\n}\n\nexport interface DashboardWarning {\n level: \"warn\" | \"error\";\n message: string;\n}\n\nexport interface DashboardSnapshot {\n generatedAt: string;\n repoRoot: string;\n commsDir: string;\n agents: AgentInfo[];\n bridges: BridgeInfo[];\n prs: PRInfo[];\n warnings: DashboardWarning[];\n}\n\n// ─── Agent collection ──────────────────────────────────────────\n\nfunction collectAgents(commsDir: string): AgentInfo[] {\n // Read heartbeats.json (written by tap-comms MCP server)\n const heartbeatsPath = path.join(commsDir, \"heartbeats.json\");\n if (!fs.existsSync(heartbeatsPath)) return [];\n\n try {\n const raw = fs.readFileSync(heartbeatsPath, \"utf-8\");\n const data = JSON.parse(raw) as Record<\n string,\n {\n agent?: string;\n timestamp?: string;\n lastActivity?: string;\n status?: string;\n joinedAt?: string;\n }\n >;\n\n return Object.entries(data).map(([name, info]) => ({\n name: info.agent ?? name,\n status: info.status ?? null,\n lastActivity: info.lastActivity ?? info.timestamp ?? null,\n joinedAt: info.joinedAt ?? null,\n }));\n } catch {\n return [];\n }\n}\n\n// ─── Bridge collection ─────────────────────────────────────────\n\nfunction collectBridges(repoRoot: string): BridgeInfo[] {\n const state = loadState(repoRoot);\n const { config } = resolveConfig({}, repoRoot);\n const stateDir = config.stateDir;\n const bridges: BridgeInfo[] = [];\n\n // Collect from state.json instances (if initialized)\n if (state) {\n for (const [id, inst] of Object.entries(state.instances)) {\n if (!inst?.installed) continue;\n if (inst.bridgeMode !== \"app-server\") continue;\n\n const instanceId = id as InstanceId;\n const status = getBridgeStatus(stateDir, instanceId);\n const bridgeState = loadBridgeState(stateDir, instanceId);\n const age = getHeartbeatAge(stateDir, instanceId);\n\n bridges.push({\n instanceId: id,\n runtime: inst.runtime,\n status,\n pid: bridgeState?.pid ?? null,\n port: inst.port ?? null,\n heartbeatAge: age,\n headless: inst.headless?.enabled ?? false,\n });\n }\n }\n\n // Also scan .tmp/ for daemon state dirs (catches externally-launched bridges)\n const tmpDir = path.join(repoRoot, \".tmp\");\n if (fs.existsSync(tmpDir)) {\n try {\n const dirs = fs\n .readdirSync(tmpDir)\n .filter((d) => d.startsWith(\"codex-app-server-bridge\"));\n\n for (const dir of dirs) {\n const daemonPath = path.join(tmpDir, dir, \"bridge-daemon.json\");\n if (!fs.existsSync(daemonPath)) continue;\n\n try {\n const raw = fs.readFileSync(daemonPath, \"utf-8\");\n const daemon = JSON.parse(raw) as {\n pid?: number;\n startedAt?: string;\n appServerUrl?: string;\n };\n\n // Skip if already covered by state.json instances\n const alreadyCovered = bridges.some(\n (b) => b.pid === daemon.pid && b.pid !== null,\n );\n if (alreadyCovered) continue;\n\n const agentFile = path.join(tmpDir, dir, \"agent-name.txt\");\n const agentName = fs.existsSync(agentFile)\n ? fs.readFileSync(agentFile, \"utf-8\").trim()\n : dir;\n\n const running = daemon.pid ? isProcessAlive(daemon.pid) : false;\n const portMatch = daemon.appServerUrl?.match(/:(\\d+)/);\n const port = portMatch ? parseInt(portMatch[1], 10) : null;\n\n bridges.push({\n instanceId: agentName,\n runtime: \"codex\",\n status: running ? \"running\" : \"stale\",\n pid: daemon.pid ?? null,\n port,\n heartbeatAge: null,\n headless: false,\n });\n } catch {\n // Skip corrupted daemon files\n }\n }\n } catch {\n // .tmp/ read failed\n }\n }\n\n return bridges;\n}\n\n// ─── PR collection ─────────────────────────────────────────────\n\nfunction collectPRs(): PRInfo[] {\n try {\n const output = execSync(\n \"gh pr list --state all --limit 10 --json number,title,author,state,url\",\n { encoding: \"utf-8\", timeout: 10000, stdio: [\"pipe\", \"pipe\", \"pipe\"] },\n );\n\n const prs = JSON.parse(output) as Array<{\n number: number;\n title: string;\n author: { login: string };\n state: string;\n url: string;\n }>;\n\n return prs.map((pr) => ({\n number: pr.number,\n title: pr.title,\n author: pr.author.login,\n state: pr.state,\n url: pr.url,\n }));\n } catch {\n return [];\n }\n}\n\n// ─── Warnings ──────────────────────────────────────────────────\n\nfunction collectWarnings(\n bridges: BridgeInfo[],\n agents: AgentInfo[],\n): DashboardWarning[] {\n const warnings: DashboardWarning[] = [];\n\n for (const bridge of bridges) {\n if (bridge.status === \"stale\") {\n warnings.push({\n level: \"warn\",\n message: `Bridge ${bridge.instanceId} is stale (PID ${bridge.pid} dead)`,\n });\n }\n if (\n bridge.status === \"running\" &&\n bridge.heartbeatAge !== null &&\n bridge.heartbeatAge > 60\n ) {\n warnings.push({\n level: \"warn\",\n message: `Bridge ${bridge.instanceId} heartbeat stale (${bridge.heartbeatAge}s ago)`,\n });\n }\n }\n\n if (bridges.length === 0) {\n warnings.push({\n level: \"warn\",\n message: \"No bridges configured\",\n });\n }\n\n if (agents.length === 0) {\n warnings.push({\n level: \"warn\",\n message: \"No agent heartbeats found\",\n });\n }\n\n return warnings;\n}\n\n// ─── Snapshot ──────────────────────────────────────────────────\n\nexport function collectDashboardSnapshot(\n repoRoot?: string,\n commsDirOverride?: string,\n): DashboardSnapshot {\n const { config } = resolveConfig(\n commsDirOverride ? { commsDir: commsDirOverride } : {},\n repoRoot,\n );\n const resolved = config;\n\n const agents = collectAgents(resolved.commsDir);\n const bridges = collectBridges(resolved.repoRoot);\n const prs = collectPRs();\n const warnings = collectWarnings(bridges, agents);\n\n return {\n generatedAt: new Date().toISOString(),\n repoRoot: resolved.repoRoot,\n commsDir: resolved.commsDir,\n agents,\n bridges,\n prs,\n warnings,\n };\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execSync } from \"node:child_process\";\nimport { fileHash, backupFile, ensureBackupDir } from \"../state.js\";\nimport { buildManagedMcpServerSpec } from \"./common.js\";\nimport type {\n RuntimeAdapter,\n AdapterContext,\n ProbeResult,\n PatchPlan,\n ApplyResult,\n VerifyResult,\n BridgeMode,\n OwnedArtifact,\n PatchOp,\n VerifyCheck,\n} from \"../types.js\";\n\nconst MCP_SERVER_KEY = \"tap\";\n\n// Legacy key name — used for auto-migration from pre-0.3 configs\nconst OLD_MCP_SERVER_KEY = \"tap-comms\";\n\nfunction findMcpJsonPath(ctx: AdapterContext): string {\n return path.join(ctx.repoRoot, \".mcp.json\");\n}\n\nfunction findClaudeCommand(): string | null {\n try {\n execSync(\"claude --version\", { stdio: \"pipe\" });\n return \"claude\";\n } catch {\n return null;\n }\n}\n\nfunction buildMcpServerEntry(\n ctx: AdapterContext,\n): Record<string, unknown> | null {\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n if (!managed.command) return null;\n\n return {\n type: \"stdio\",\n command: managed.command,\n args: managed.args,\n env: managed.env,\n };\n}\n\nexport const claudeAdapter: RuntimeAdapter = {\n runtime: \"claude\",\n\n async probe(ctx: AdapterContext): Promise<ProbeResult> {\n const warnings: string[] = [];\n const issues: string[] = [];\n\n const configPath = findMcpJsonPath(ctx);\n const configExists = fs.existsSync(configPath);\n const runtimeCommand = findClaudeCommand();\n const canWrite = configExists\n ? (() => {\n try {\n fs.accessSync(configPath, fs.constants.W_OK);\n return true;\n } catch {\n return false;\n }\n })()\n : true; // Can create new file\n\n if (!runtimeCommand) {\n warnings.push(\n \"Claude CLI not found in PATH. Config will be created but may need manual setup.\",\n );\n }\n\n const managed = buildManagedMcpServerSpec(ctx);\n warnings.push(...managed.warnings);\n issues.push(...managed.issues);\n\n // Check if comms dir exists\n if (!fs.existsSync(ctx.commsDir)) {\n issues.push(\n `Comms directory not found: ${ctx.commsDir}. Run \"init\" first.`,\n );\n }\n\n return {\n installed: true, // Claude adapter always \"installed\" — .mcp.json is per-project\n configPath,\n configExists,\n runtimeCommand,\n version: null,\n canWrite,\n warnings,\n issues,\n };\n },\n\n async plan(ctx: AdapterContext, probe: ProbeResult): Promise<PatchPlan> {\n const configPath = probe.configPath ?? findMcpJsonPath(ctx);\n const conflicts: string[] = [];\n const warnings: string[] = [];\n const operations: PatchOp[] = [];\n const ownedArtifacts: OwnedArtifact[] = [];\n\n // Check for existing tap entry\n if (probe.configExists) {\n const raw = fs.readFileSync(configPath, \"utf-8\");\n try {\n const config = JSON.parse(raw);\n if (config.mcpServers?.[MCP_SERVER_KEY]) {\n conflicts.push(\n `Existing \"${MCP_SERVER_KEY}\" entry in .mcp.json will be overwritten.`,\n );\n }\n if (config.mcpServers?.[OLD_MCP_SERVER_KEY]) {\n conflicts.push(\n `Legacy \"${OLD_MCP_SERVER_KEY}\" entry will be migrated to \"${MCP_SERVER_KEY}\".`,\n );\n }\n } catch {\n warnings.push(\n \".mcp.json exists but is not valid JSON. Will be overwritten.\",\n );\n }\n }\n\n const serverEntry = buildMcpServerEntry(ctx);\n\n if (!serverEntry) {\n warnings.push(\n \"tap MCP server entry not found. Skipping .mcp.json patch. \" +\n \"Reinstall @hua-labs/tap or run from a repo with packages/tap-plugin/channels/ available.\",\n );\n return {\n runtime: \"claude\",\n operations: [],\n ownedArtifacts: [],\n backupDir: ensureBackupDir(ctx.stateDir, \"claude\"),\n restartRequired: false,\n conflicts,\n warnings,\n };\n }\n\n operations.push({\n type: probe.configExists ? \"merge\" : \"set\",\n path: configPath,\n key: `mcpServers.${MCP_SERVER_KEY}`,\n value: serverEntry,\n });\n\n ownedArtifacts.push({\n kind: \"json-path\",\n path: configPath,\n selector: `mcpServers.${MCP_SERVER_KEY}`,\n });\n\n const backupDir = ensureBackupDir(ctx.stateDir, \"claude\");\n\n return {\n runtime: \"claude\",\n operations,\n ownedArtifacts,\n backupDir,\n restartRequired: true,\n conflicts,\n warnings,\n };\n },\n\n async apply(_ctx: AdapterContext, plan: PatchPlan): Promise<ApplyResult> {\n const changedFiles: string[] = [];\n const warnings: string[] = [];\n let appliedOps = 0;\n\n for (const op of plan.operations) {\n try {\n if (op.type === \"set\" || op.type === \"merge\") {\n // Read or create .mcp.json\n let config: Record<string, unknown> = {};\n if (fs.existsSync(op.path)) {\n // Backup first\n backupFile(op.path, plan.backupDir);\n const raw = fs.readFileSync(op.path, \"utf-8\");\n try {\n config = JSON.parse(raw);\n } catch {\n // Invalid JSON, start fresh but backup the original\n warnings.push(\n `${op.path} was invalid JSON. Created backup and starting fresh.`,\n );\n }\n }\n\n // Migrate: remove legacy \"tap-comms\" key if present\n const servers = config.mcpServers as\n | Record<string, unknown>\n | undefined;\n if (servers?.[OLD_MCP_SERVER_KEY]) {\n delete servers[OLD_MCP_SERVER_KEY];\n }\n\n // Set nested key\n if (op.key) {\n setNestedKey(config, op.key, op.value);\n }\n\n // Write atomically\n const tmp = `${op.path}.tmp.${process.pid}`;\n fs.writeFileSync(\n tmp,\n JSON.stringify(config, null, 2) + \"\\n\",\n \"utf-8\",\n );\n fs.renameSync(tmp, op.path);\n changedFiles.push(op.path);\n appliedOps++;\n }\n } catch (err) {\n warnings.push(\n `Failed to apply op on ${op.path}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n const lastAppliedHash =\n changedFiles.length > 0 ? fileHash(changedFiles[0]) : \"\";\n\n return {\n success: appliedOps > 0,\n appliedOps,\n backupCreated: true,\n lastAppliedHash,\n ownedArtifacts: plan.ownedArtifacts,\n changedFiles,\n restartRequired: plan.restartRequired,\n warnings,\n };\n },\n\n async verify(ctx: AdapterContext, plan: PatchPlan): Promise<VerifyResult> {\n const checks: VerifyCheck[] = [];\n const warnings: string[] = [];\n\n // 1. Config file exists\n const configPath = plan.operations[0]?.path;\n if (configPath) {\n checks.push({\n name: \"Config file exists\",\n passed: fs.existsSync(configPath),\n message: fs.existsSync(configPath)\n ? undefined\n : `${configPath} not found`,\n });\n\n // 2. Config is valid JSON\n if (fs.existsSync(configPath)) {\n try {\n const raw = fs.readFileSync(configPath, \"utf-8\");\n const config = JSON.parse(raw);\n checks.push({ name: \"Config is valid JSON\", passed: true });\n\n // 3. Managed entry present\n const entry = config.mcpServers?.[MCP_SERVER_KEY];\n checks.push({\n name: \"tap entry present\",\n passed: !!entry,\n message: entry\n ? undefined\n : `mcpServers.${MCP_SERVER_KEY} not found`,\n });\n\n // 4. Entry has correct env\n if (entry) {\n const hasCommsDir =\n normalizeTapCommsDir(entry.env?.TAP_COMMS_DIR) ===\n normalizeTapCommsDir(ctx.commsDir);\n checks.push({\n name: \"TAP_COMMS_DIR configured\",\n passed: hasCommsDir,\n message: hasCommsDir ? undefined : `Expected ${ctx.commsDir}`,\n });\n }\n } catch {\n checks.push({\n name: \"Config is valid JSON\",\n passed: false,\n message: \"Parse error\",\n });\n }\n }\n }\n\n // 5. Comms dir exists\n checks.push({\n name: \"Comms directory exists\",\n passed: fs.existsSync(ctx.commsDir),\n message: fs.existsSync(ctx.commsDir)\n ? undefined\n : `${ctx.commsDir} not found`,\n });\n\n // 6. Runtime command found\n const cmd = findClaudeCommand();\n checks.push({\n name: \"Claude CLI found\",\n passed: !!cmd,\n message: cmd ? undefined : \"claude not in PATH (non-blocking)\",\n });\n if (!cmd) {\n warnings.push(\n \"Claude CLI not in PATH. Config is ready but cannot verify runtime reads it.\",\n );\n }\n\n const ok = checks\n .filter((c) => c.name !== \"Claude CLI found\")\n .every((c) => c.passed);\n\n return { ok, checks, restartRequired: true, warnings };\n },\n\n bridgeMode(): BridgeMode {\n return \"native-push\";\n },\n};\n\n// ─── Helpers ────────────────────────────────────────────────────\n\nfunction setNestedKey(\n obj: Record<string, unknown>,\n keyPath: string,\n value: unknown,\n): void {\n const keys = keyPath.split(\".\");\n let current = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (typeof current[key] !== \"object\" || current[key] === null) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n current[keys[keys.length - 1]] = value;\n}\n\nfunction normalizeTapCommsDir(value: unknown): string {\n return typeof value === \"string\"\n ? path.resolve(value).replace(/\\\\/g, \"/\")\n : \"\";\n}\n","import * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ArtifactKind } from \"./types.js\";\n\ntype BackupPayload =\n | {\n kind: \"json-path\";\n selector: string;\n existed: boolean;\n value?: unknown;\n }\n | {\n kind: \"toml-table\";\n selector: string;\n existed: boolean;\n content?: string;\n }\n | {\n kind: \"file\";\n selector: string;\n existed: boolean;\n };\n\nfunction selectorHash(selector: string): string {\n return crypto.createHash(\"sha256\").update(selector).digest(\"hex\").slice(0, 12);\n}\n\nexport function artifactBackupPath(\n backupDir: string,\n kind: ArtifactKind,\n selector: string,\n): string {\n const safeKind = kind.replace(/[^a-z-]/gi, \"-\");\n return path.join(backupDir, `${safeKind}-${selectorHash(selector)}.json`);\n}\n\nexport function writeArtifactBackup(\n backupPath: string,\n payload: BackupPayload,\n): void {\n fs.mkdirSync(path.dirname(backupPath), { recursive: true });\n const tmp = `${backupPath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(payload, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, backupPath);\n}\n\nexport function readArtifactBackup(backupPath: string): BackupPayload | null {\n if (!fs.existsSync(backupPath)) return null;\n\n try {\n const raw = fs.readFileSync(backupPath, \"utf-8\");\n return JSON.parse(raw) as BackupPayload;\n } catch {\n return null;\n }\n}\n","function splitLines(content: string): string[] {\n return content.replace(/\\r\\n/g, \"\\n\").split(\"\\n\");\n}\n\nfunction tableHeader(selector: string): string {\n return `[${selector}]`;\n}\n\nfunction findTableRange(\n lines: string[],\n selector: string,\n): { start: number; end: number } | null {\n const header = tableHeader(selector);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].trim() !== header) continue;\n\n let end = lines.length;\n for (let j = i + 1; j < lines.length; j++) {\n const trimmed = lines[j].trim();\n if (trimmed.startsWith(\"[\") && trimmed.endsWith(\"]\")) {\n end = j;\n break;\n }\n }\n return { start: i, end };\n }\n return null;\n}\n\nfunction escapeBasicString(value: string): string {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\n\nfunction renderValue(value: string | string[]): string {\n if (Array.isArray(value)) {\n return `[${value.map((item) => `\"${escapeBasicString(item)}\"`).join(\", \")}]`;\n }\n return `\"${escapeBasicString(value)}\"`;\n}\n\nexport function extractTomlTable(\n content: string,\n selector: string,\n): string | null {\n const lines = splitLines(content);\n const range = findTableRange(lines, selector);\n if (!range) return null;\n return `${lines.slice(range.start, range.end).join(\"\\n\")}\\n`;\n}\n\nexport function removeTomlTable(content: string, selector: string): string {\n const lines = splitLines(content);\n const range = findTableRange(lines, selector);\n if (!range) return content;\n\n const next = [...lines.slice(0, range.start), ...lines.slice(range.end)];\n return `${trimTomlDocument(next.join(\"\\n\"))}\\n`;\n}\n\nexport function replaceTomlTable(\n content: string,\n selector: string,\n replacement: string,\n): string {\n const lines = splitLines(content);\n const range = findTableRange(lines, selector);\n const replacementLines = replacement.replace(/\\r\\n/g, \"\\n\").trimEnd().split(\"\\n\");\n\n if (!range) {\n const doc = trimTomlDocument(content);\n if (!doc) return `${replacement.trimEnd()}\\n`;\n return `${doc}\\n\\n${replacement.trimEnd()}\\n`;\n }\n\n const next = [\n ...lines.slice(0, range.start),\n ...replacementLines,\n ...lines.slice(range.end),\n ];\n return `${trimTomlDocument(next.join(\"\\n\"))}\\n`;\n}\n\nexport function renderTomlTable(\n selector: string,\n entries: Record<string, string | string[]>,\n existingContent?: string | null,\n): string {\n const preserved = parseTomlAssignments(existingContent ?? \"\");\n const merged: Record<string, string | string[]> = { ...preserved, ...entries };\n\n const lines = [tableHeader(selector)];\n for (const [key, value] of Object.entries(merged)) {\n lines.push(`${key} = ${renderValue(value)}`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function parseTomlAssignments(\n tableContent: string,\n): Record<string, string | string[]> {\n const lines = splitLines(tableContent);\n const values: Record<string, string | string[]> = {};\n\n for (const rawLine of lines) {\n const line = rawLine.trim();\n if (!line || line.startsWith(\"#\") || (line.startsWith(\"[\") && line.endsWith(\"]\"))) {\n continue;\n }\n\n const match = line.match(/^([A-Za-z0-9_.-]+)\\s*=\\s*(.+)$/);\n if (!match) continue;\n\n const [, key, rawValue] = match;\n const value = rawValue.trim();\n\n if (value.startsWith(\"[\") && value.endsWith(\"]\")) {\n const items = value\n .slice(1, -1)\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean)\n .map(unquoteTomlString);\n values[key] = items;\n continue;\n }\n\n values[key] = unquoteTomlString(value);\n }\n\n return values;\n}\n\nexport function trimTomlDocument(content: string): string {\n return content.replace(/\\s+$/g, \"\").replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\nfunction unquoteTomlString(value: string): string {\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n const inner = value.slice(1, -1);\n return value.startsWith('\"')\n ? inner.replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, \"\\\\\")\n : inner;\n }\n return value;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { backupFile, ensureBackupDir, fileHash } from \"../state.js\";\nimport {\n artifactBackupPath,\n writeArtifactBackup,\n} from \"../artifact-backups.js\";\nimport {\n extractTomlTable,\n removeTomlTable,\n renderTomlTable,\n replaceTomlTable,\n} from \"../toml.js\";\nimport type {\n AdapterContext,\n ApplyResult,\n BridgeMode,\n OwnedArtifact,\n PatchOp,\n PatchPlan,\n ProbeResult,\n RuntimeAdapter,\n VerifyCheck,\n VerifyResult,\n} from \"../types.js\";\nimport {\n buildManagedMcpServerSpec,\n canWriteOrCreate,\n getHomeDir,\n probeCommand,\n} from \"./common.js\";\n\nconst MCP_SELECTOR = \"mcp_servers.tap\";\nconst ENV_SELECTOR = \"mcp_servers.tap.env\";\n\n// Legacy key names — used for auto-migration from pre-0.3 configs\nconst OLD_MCP_SELECTOR = \"mcp_servers.tap-comms\";\nconst OLD_ENV_SELECTOR = \"mcp_servers.tap-comms.env\";\n\nfunction findCodexConfigPath(): string {\n return path.join(getHomeDir(), \".codex\", \"config.toml\");\n}\n\nfunction canonicalizeTrustPath(targetPath: string): string {\n let resolved = path.resolve(targetPath).replace(/\\//g, \"\\\\\");\n const driveRoot = /^[A-Za-z]:\\\\$/;\n if (!driveRoot.test(resolved)) {\n resolved = resolved.replace(/\\\\+$/g, \"\");\n }\n return resolved.startsWith(\"\\\\\\\\?\\\\\") ? resolved : `\\\\\\\\?\\\\${resolved}`;\n}\n\nfunction trustSelector(targetPath: string): string {\n return `projects.'${canonicalizeTrustPath(targetPath)}'`;\n}\n\nfunction getTrustTargets(ctx: AdapterContext): string[] {\n const targets = [ctx.repoRoot, process.cwd()];\n return [...new Set(targets.map((value) => path.resolve(value)))];\n}\n\nfunction buildManagedArtifacts(\n configPath: string,\n ctx: AdapterContext,\n): OwnedArtifact[] {\n const artifacts: OwnedArtifact[] = [\n { kind: \"toml-table\", path: configPath, selector: MCP_SELECTOR },\n { kind: \"toml-table\", path: configPath, selector: ENV_SELECTOR },\n ];\n\n for (const target of getTrustTargets(ctx)) {\n artifacts.push({\n kind: \"toml-table\",\n path: configPath,\n selector: trustSelector(target),\n });\n }\n\n return artifacts;\n}\n\nfunction readConfigOrEmpty(configPath: string): string {\n if (!fs.existsSync(configPath)) return \"\";\n return fs.readFileSync(configPath, \"utf-8\");\n}\n\nfunction writeTomlFile(filePath: string, content: string): void {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, content, \"utf-8\");\n fs.renameSync(tmp, filePath);\n}\n\nfunction verifyManagedToml(\n content: string,\n ctx: AdapterContext,\n configPath: string,\n): VerifyCheck[] {\n const checks: VerifyCheck[] = [];\n const managed = buildManagedMcpServerSpec(ctx);\n const mainTable = extractTomlTable(content, MCP_SELECTOR);\n const envTable = extractTomlTable(content, ENV_SELECTOR);\n\n checks.push({\n name: \"Codex config exists\",\n passed: fs.existsSync(configPath),\n message: fs.existsSync(configPath) ? undefined : `${configPath} not found`,\n });\n checks.push({\n name: \"tap MCP table present\",\n passed: !!mainTable,\n message: mainTable ? undefined : `${MCP_SELECTOR} not found`,\n });\n checks.push({\n name: \"tap env table present\",\n passed: !!envTable,\n message: envTable ? undefined : `${ENV_SELECTOR} not found`,\n });\n\n for (const target of getTrustTargets(ctx)) {\n const selector = trustSelector(target);\n const trustTable = extractTomlTable(content, selector);\n checks.push({\n name: `Trust table present: ${canonicalizeTrustPath(target)}`,\n passed: !!trustTable && trustTable.includes('trust_level = \"trusted\"'),\n message:\n trustTable && trustTable.includes('trust_level = \"trusted\"')\n ? undefined\n : `${selector} missing trust_level = \"trusted\"`,\n });\n }\n\n if (mainTable && managed.command) {\n const expectedArgs = managed.args\n .map((a) => `\"${a.replace(/\\\\/g, \"\\\\\\\\\")}\"`)\n .join(\", \");\n checks.push({\n name: \"Managed command configured\",\n passed:\n mainTable.includes(\n `command = \"${managed.command.replace(/\\\\/g, \"\\\\\\\\\")}\"`,\n ) && mainTable.includes(`args = [${expectedArgs}]`),\n message: \"Managed tap command/args do not match expected values\",\n });\n }\n\n return checks;\n}\n\nexport const codexAdapter: RuntimeAdapter = {\n runtime: \"codex\",\n\n async probe(ctx: AdapterContext): Promise<ProbeResult> {\n const warnings: string[] = [];\n const issues: string[] = [];\n const configPath = findCodexConfigPath();\n const configExists = fs.existsSync(configPath);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"codex\", \"codex.cmd\"] : [\"codex\"],\n );\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Codex CLI not found in PATH. Config can still be written, but runtime verification will be limited.\",\n );\n }\n\n if (!fs.existsSync(ctx.commsDir)) {\n issues.push(\n `Comms directory not found: ${ctx.commsDir}. Run \"init\" first.`,\n );\n }\n\n const managed = buildManagedMcpServerSpec(ctx);\n warnings.push(...managed.warnings);\n issues.push(...managed.issues);\n\n return {\n installed: true,\n configPath,\n configExists,\n runtimeCommand: runtimeProbe.command,\n version: runtimeProbe.version,\n canWrite: canWriteOrCreate(configPath),\n warnings,\n issues,\n };\n },\n\n async plan(ctx: AdapterContext, probe: ProbeResult): Promise<PatchPlan> {\n const configPath = probe.configPath ?? findCodexConfigPath();\n const conflicts: string[] = [];\n const warnings: string[] = [];\n const operations: PatchOp[] = [];\n const ownedArtifacts = buildManagedArtifacts(configPath, ctx);\n\n if (probe.configExists) {\n const content = readConfigOrEmpty(configPath);\n if (extractTomlTable(content, MCP_SELECTOR)) {\n conflicts.push(`Existing ${MCP_SELECTOR} table will be updated.`);\n }\n if (extractTomlTable(content, OLD_MCP_SELECTOR)) {\n conflicts.push(\n `Legacy ${OLD_MCP_SELECTOR} table will be migrated to ${MCP_SELECTOR}.`,\n );\n }\n if (extractTomlTable(content, ENV_SELECTOR)) {\n conflicts.push(`Existing ${ENV_SELECTOR} table will be updated.`);\n }\n for (const target of getTrustTargets(ctx)) {\n const selector = trustSelector(target);\n if (extractTomlTable(content, selector)) {\n conflicts.push(`Existing ${selector} table will be updated.`);\n }\n }\n }\n\n for (const artifact of ownedArtifacts) {\n operations.push({\n type: probe.configExists ? \"merge\" : \"set\",\n path: configPath,\n key: artifact.selector,\n });\n }\n\n return {\n runtime: \"codex\",\n operations,\n ownedArtifacts,\n backupDir: ensureBackupDir(ctx.stateDir, \"codex\"),\n restartRequired: true,\n conflicts,\n warnings,\n };\n },\n\n async apply(ctx: AdapterContext, plan: PatchPlan): Promise<ApplyResult> {\n const configPath = plan.operations[0]?.path ?? findCodexConfigPath();\n const warnings: string[] = [];\n const changedFiles: string[] = [];\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n\n warnings.push(...managed.warnings);\n if (managed.issues.length > 0 || !managed.command) {\n return {\n success: false,\n appliedOps: 0,\n backupCreated: false,\n lastAppliedHash: \"\",\n ownedArtifacts: [],\n changedFiles,\n restartRequired: false,\n warnings: [...managed.warnings, ...managed.issues],\n };\n }\n\n const existingContent = readConfigOrEmpty(configPath);\n if (fs.existsSync(configPath) && existingContent) {\n backupFile(configPath, plan.backupDir);\n }\n\n const artifactsWithBackups = plan.ownedArtifacts.map((artifact) => {\n const previousContent =\n artifact.kind === \"toml-table\"\n ? extractTomlTable(existingContent, artifact.selector)\n : null;\n const backupPath = artifactBackupPath(\n plan.backupDir,\n artifact.kind,\n artifact.selector,\n );\n\n writeArtifactBackup(backupPath, {\n kind: \"toml-table\",\n selector: artifact.selector,\n existed: previousContent !== null,\n content: previousContent ?? undefined,\n });\n\n return { ...artifact, backupPath };\n });\n\n let nextContent = existingContent;\n\n // Migrate: remove legacy \"tap-comms\" keys if present\n if (extractTomlTable(nextContent, OLD_ENV_SELECTOR)) {\n nextContent = removeTomlTable(nextContent, OLD_ENV_SELECTOR);\n }\n if (extractTomlTable(nextContent, OLD_MCP_SELECTOR)) {\n nextContent = removeTomlTable(nextContent, OLD_MCP_SELECTOR);\n }\n\n nextContent = replaceTomlTable(\n nextContent,\n MCP_SELECTOR,\n renderTomlTable(\n MCP_SELECTOR,\n {\n command: managed.command,\n args: managed.args,\n },\n extractTomlTable(existingContent, MCP_SELECTOR),\n ),\n );\n nextContent = replaceTomlTable(\n nextContent,\n ENV_SELECTOR,\n renderTomlTable(\n ENV_SELECTOR,\n managed.env,\n extractTomlTable(existingContent, ENV_SELECTOR),\n ),\n );\n\n for (const target of getTrustTargets(ctx)) {\n const selector = trustSelector(target);\n nextContent = replaceTomlTable(\n nextContent,\n selector,\n renderTomlTable(\n selector,\n { trust_level: \"trusted\" },\n extractTomlTable(existingContent, selector),\n ),\n );\n }\n\n writeTomlFile(configPath, nextContent);\n changedFiles.push(configPath);\n\n return {\n success: true,\n appliedOps: plan.operations.length,\n backupCreated: true,\n lastAppliedHash: fileHash(configPath),\n ownedArtifacts: artifactsWithBackups,\n changedFiles,\n restartRequired: true,\n warnings,\n };\n },\n\n async verify(ctx: AdapterContext, plan: PatchPlan): Promise<VerifyResult> {\n const warnings: string[] = [];\n const configPath = plan.operations[0]?.path ?? findCodexConfigPath();\n const content = readConfigOrEmpty(configPath);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"codex\", \"codex.cmd\"] : [\"codex\"],\n );\n\n const checks = verifyManagedToml(content, ctx, configPath);\n checks.push({\n name: \"Comms directory exists\",\n passed: fs.existsSync(ctx.commsDir),\n message: fs.existsSync(ctx.commsDir)\n ? undefined\n : `${ctx.commsDir} not found`,\n });\n checks.push({\n name: \"Codex CLI found\",\n passed: !!runtimeProbe.command,\n message: runtimeProbe.command\n ? undefined\n : \"codex not in PATH (non-blocking)\",\n });\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Codex CLI not in PATH. Config is written, but runtime verification is partial.\",\n );\n }\n\n return {\n ok: checks\n .filter((check) => check.name !== \"Codex CLI found\")\n .every((check) => check.passed),\n checks,\n restartRequired: true,\n warnings,\n };\n },\n\n bridgeMode(): BridgeMode {\n return \"app-server\";\n },\n\n resolveBridgeScript(ctx: AdapterContext): string | null {\n const distDir = path.dirname(fileURLToPath(import.meta.url));\n const candidates = [\n // 1. Relative to bundled CLI (npm install / npx)\n path.join(distDir, \"bridges\", \"codex-bridge-runner.mjs\"),\n // 2. Monorepo development — dist inside repo\n path.join(\n ctx.repoRoot,\n \"packages\",\n \"tap-comms\",\n \"dist\",\n \"bridges\",\n \"codex-bridge-runner.mjs\",\n ),\n // 3. Source file — dev mode with strip-types\n path.join(\n ctx.repoRoot,\n \"packages\",\n \"tap-comms\",\n \"src\",\n \"bridges\",\n \"codex-bridge-runner.ts\",\n ),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate;\n }\n\n return null;\n },\n};\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { backupFile, ensureBackupDir, fileHash } from \"../state.js\";\nimport {\n artifactBackupPath,\n writeArtifactBackup,\n} from \"../artifact-backups.js\";\nimport type {\n AdapterContext,\n ApplyResult,\n BridgeMode,\n OwnedArtifact,\n PatchOp,\n PatchPlan,\n ProbeResult,\n RuntimeAdapter,\n VerifyCheck,\n VerifyResult,\n} from \"../types.js\";\nimport {\n buildManagedMcpServerSpec,\n canWriteOrCreate,\n getHomeDir,\n probeCommand,\n} from \"./common.js\";\n\nconst GEMINI_SELECTOR = \"mcpServers.tap\";\n\n// Legacy key name — used for auto-migration from pre-0.3 configs\nconst OLD_GEMINI_SELECTOR = \"mcpServers.tap-comms\";\n\nfunction candidateConfigPaths(ctx: AdapterContext): string[] {\n const home = getHomeDir();\n return [\n path.join(ctx.repoRoot, \".gemini\", \"settings.json\"),\n path.join(home, \".gemini\", \"settings.json\"),\n path.join(home, \".gemini\", \"antigravity\", \"mcp_config.json\"),\n ];\n}\n\nfunction chooseGeminiConfigPath(ctx: AdapterContext): string {\n const [workspaceConfig, homeConfig, antigravityConfig] =\n candidateConfigPaths(ctx);\n\n if (fs.existsSync(workspaceConfig)) return workspaceConfig;\n if (fs.existsSync(homeConfig)) return homeConfig;\n\n if (fs.existsSync(antigravityConfig)) {\n const raw = fs.readFileSync(antigravityConfig, \"utf-8\").trim();\n if (raw) {\n try {\n JSON.parse(raw);\n return antigravityConfig;\n } catch {\n // Fall through to workspace-managed config.\n }\n }\n }\n\n return workspaceConfig;\n}\n\nfunction readJsonFile(filePath: string): Record<string, unknown> {\n if (!fs.existsSync(filePath)) return {};\n const raw = fs.readFileSync(filePath, \"utf-8\").trim();\n if (!raw) return {};\n return JSON.parse(raw) as Record<string, unknown>;\n}\n\nfunction setNestedKey(\n obj: Record<string, unknown>,\n keyPath: string,\n value: unknown,\n): void {\n const keys = keyPath.split(\".\");\n let current = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (typeof current[key] !== \"object\" || current[key] === null) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n current[keys[keys.length - 1]] = value;\n}\n\nfunction readNestedKey(obj: Record<string, unknown>, keyPath: string): unknown {\n let current: unknown = obj;\n for (const key of keyPath.split(\".\")) {\n if (typeof current !== \"object\" || current === null || !(key in current)) {\n return undefined;\n }\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\nfunction verifyGeminiConfig(\n config: Record<string, unknown>,\n configPath: string,\n ctx: AdapterContext,\n): VerifyCheck[] {\n const checks: VerifyCheck[] = [];\n const entry = readNestedKey(config, GEMINI_SELECTOR) as\n | Record<string, unknown>\n | undefined;\n\n checks.push({\n name: \"Gemini config exists\",\n passed: fs.existsSync(configPath),\n message: fs.existsSync(configPath) ? undefined : `${configPath} not found`,\n });\n checks.push({\n name: \"tap entry present\",\n passed: !!entry,\n message: entry ? undefined : `${GEMINI_SELECTOR} not found`,\n });\n checks.push({\n name: \"Comms directory exists\",\n passed: fs.existsSync(ctx.commsDir),\n message: fs.existsSync(ctx.commsDir)\n ? undefined\n : `${ctx.commsDir} not found`,\n });\n\n if (entry?.env && typeof entry.env === \"object\") {\n checks.push({\n name: \"TAP_COMMS_DIR configured\",\n passed:\n (entry.env as Record<string, unknown>).TAP_COMMS_DIR ===\n ctx.commsDir.replace(/\\\\/g, \"/\"),\n message: `Expected ${ctx.commsDir.replace(/\\\\/g, \"/\")}`,\n });\n }\n\n return checks;\n}\n\nexport const geminiAdapter: RuntimeAdapter = {\n runtime: \"gemini\",\n\n async probe(ctx: AdapterContext): Promise<ProbeResult> {\n const warnings: string[] = [];\n const issues: string[] = [];\n const configPath = chooseGeminiConfigPath(ctx);\n const configExists = fs.existsSync(configPath);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"gemini\", \"gemini.cmd\"] : [\"gemini\"],\n );\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Gemini CLI not found in PATH. Config can still be written, but runtime verification will be limited.\",\n );\n }\n\n if (!fs.existsSync(ctx.commsDir)) {\n issues.push(\n `Comms directory not found: ${ctx.commsDir}. Run \"init\" first.`,\n );\n }\n\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n warnings.push(...managed.warnings);\n issues.push(...managed.issues);\n\n return {\n installed: true,\n configPath,\n configExists,\n runtimeCommand: runtimeProbe.command,\n version: runtimeProbe.version,\n canWrite: canWriteOrCreate(configPath),\n warnings,\n issues,\n };\n },\n\n async plan(ctx: AdapterContext, probe: ProbeResult): Promise<PatchPlan> {\n const configPath = probe.configPath ?? chooseGeminiConfigPath(ctx);\n const conflicts: string[] = [];\n const warnings: string[] = [];\n const operations: PatchOp[] = [];\n const ownedArtifacts: OwnedArtifact[] = [\n { kind: \"json-path\", path: configPath, selector: GEMINI_SELECTOR },\n ];\n\n if (probe.configExists) {\n try {\n const config = readJsonFile(configPath);\n if (readNestedKey(config, GEMINI_SELECTOR) !== undefined) {\n conflicts.push(`Existing ${GEMINI_SELECTOR} entry will be updated.`);\n }\n if (readNestedKey(config, OLD_GEMINI_SELECTOR) !== undefined) {\n conflicts.push(\n `Legacy ${OLD_GEMINI_SELECTOR} entry will be migrated to ${GEMINI_SELECTOR}.`,\n );\n }\n } catch {\n warnings.push(\n `${configPath} exists but is not valid JSON. It will be replaced.`,\n );\n }\n }\n\n operations.push({\n type: probe.configExists ? \"merge\" : \"set\",\n path: configPath,\n key: GEMINI_SELECTOR,\n });\n\n return {\n runtime: \"gemini\",\n operations,\n ownedArtifacts,\n backupDir: ensureBackupDir(ctx.stateDir, \"gemini\"),\n restartRequired: true,\n conflicts,\n warnings,\n };\n },\n\n async apply(ctx: AdapterContext, plan: PatchPlan): Promise<ApplyResult> {\n const configPath = plan.operations[0]?.path ?? chooseGeminiConfigPath(ctx);\n const warnings: string[] = [];\n const changedFiles: string[] = [];\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n\n warnings.push(...managed.warnings);\n if (managed.issues.length > 0 || !managed.command) {\n return {\n success: false,\n appliedOps: 0,\n backupCreated: false,\n lastAppliedHash: \"\",\n ownedArtifacts: [],\n changedFiles,\n restartRequired: false,\n warnings: [...managed.warnings, ...managed.issues],\n };\n }\n\n let config: Record<string, unknown> = {};\n let previousValue: unknown = undefined;\n\n if (fs.existsSync(configPath)) {\n if (fs.readFileSync(configPath, \"utf-8\").trim()) {\n backupFile(configPath, plan.backupDir);\n }\n try {\n config = readJsonFile(configPath);\n } catch {\n warnings.push(\n `${configPath} was invalid JSON. Created backup and starting fresh.`,\n );\n config = {};\n }\n previousValue = readNestedKey(config, GEMINI_SELECTOR);\n }\n\n const artifact = plan.ownedArtifacts[0];\n const backupPath = artifactBackupPath(\n plan.backupDir,\n artifact.kind,\n artifact.selector,\n );\n writeArtifactBackup(backupPath, {\n kind: \"json-path\",\n selector: artifact.selector,\n existed: previousValue !== undefined,\n value: previousValue,\n });\n\n // Migrate: remove legacy \"tap-comms\" key if present\n const oldValue = readNestedKey(config, OLD_GEMINI_SELECTOR);\n if (oldValue !== undefined) {\n const servers = config.mcpServers as Record<string, unknown> | undefined;\n if (servers) {\n delete servers[\"tap-comms\"];\n }\n }\n\n setNestedKey(config, GEMINI_SELECTOR, {\n command: managed.command,\n args: managed.args,\n env: managed.env,\n });\n\n fs.mkdirSync(path.dirname(configPath), { recursive: true });\n const tmp = `${configPath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, configPath);\n changedFiles.push(configPath);\n\n return {\n success: true,\n appliedOps: plan.operations.length,\n backupCreated: true,\n lastAppliedHash: fileHash(configPath),\n ownedArtifacts: [{ ...artifact, backupPath }],\n changedFiles,\n restartRequired: true,\n warnings,\n };\n },\n\n async verify(ctx: AdapterContext, plan: PatchPlan): Promise<VerifyResult> {\n const warnings: string[] = [];\n const configPath = plan.operations[0]?.path ?? chooseGeminiConfigPath(ctx);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"gemini\", \"gemini.cmd\"] : [\"gemini\"],\n );\n\n let checks: VerifyCheck[];\n try {\n const config = readJsonFile(configPath);\n checks = verifyGeminiConfig(config, configPath, ctx);\n } catch {\n checks = [\n {\n name: \"Gemini config is valid JSON\",\n passed: false,\n message: \"Parse error\",\n },\n ];\n }\n\n checks.push({\n name: \"Gemini CLI found\",\n passed: !!runtimeProbe.command,\n message: runtimeProbe.command\n ? undefined\n : \"gemini not in PATH (non-blocking)\",\n });\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Gemini CLI not in PATH. Config is written, but runtime verification is partial.\",\n );\n }\n\n return {\n ok: checks\n .filter((check) => check.name !== \"Gemini CLI found\")\n .every((check) => check.passed),\n checks,\n restartRequired: true,\n warnings,\n };\n },\n\n bridgeMode(): BridgeMode {\n return \"polling\";\n },\n};\n","import type { RuntimeAdapter, RuntimeName } from \"../types.js\";\nimport { claudeAdapter } from \"./claude.js\";\nimport { codexAdapter } from \"./codex.js\";\nimport { geminiAdapter } from \"./gemini.js\";\n\nconst adapters: Partial<Record<RuntimeName, RuntimeAdapter>> = {\n claude: claudeAdapter,\n codex: codexAdapter,\n gemini: geminiAdapter,\n};\n\nexport function getAdapter(runtime: RuntimeName): RuntimeAdapter {\n const adapter = adapters[runtime];\n if (!adapter) {\n throw new Error(\n `Adapter for \"${runtime}\" is not yet available. ` +\n `Supported: ${Object.keys(adapters).join(\", \")}`,\n );\n }\n return adapter;\n}\n\nexport function listAdapters(): RuntimeName[] {\n return Object.keys(adapters) as RuntimeName[];\n}\n","import * as path from \"node:path\";\nimport { loadState, saveState, updateInstanceState } from \"../state.js\";\nimport {\n startBridge,\n stopBridge,\n restartBridge,\n inferRestartMode,\n getBridgeStatus,\n loadBridgeState,\n getHeartbeatAge,\n getBridgeHeartbeatTimestamp,\n loadRuntimeBridgeHeartbeat,\n loadRuntimeBridgeThreadState,\n saveBridgeState,\n stopManagedAppServer,\n resolveAppServerUrl,\n checkAppServerHealth,\n findNextAvailableAppServerPort,\n} from \"../engine/bridge.js\";\nimport { resolveConfig } from \"../config/index.js\";\nimport { getAdapter } from \"../adapters/index.js\";\nimport {\n findRepoRoot,\n createAdapterContext,\n resolveInstanceId,\n parseArgs,\n parseIntFlag,\n log,\n logSuccess,\n logError,\n logHeader,\n} from \"../utils.js\";\nimport type {\n InstanceId,\n HeadlessConfig,\n AgentRole,\n CommandResult,\n AppServerState,\n BridgeState,\n TapState,\n} from \"../types.js\";\n\nfunction formatAge(seconds: number): string {\n if (seconds < 60) return `${seconds}s ago`;\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`;\n return `${Math.floor(seconds / 3600)}h ${Math.floor((seconds % 3600) / 60)}m ago`;\n}\n\nconst BRIDGE_HELP = `\nUsage:\n tap bridge <subcommand> [instance] [options]\n\nSubcommands:\n start <instance> Start bridge for an instance (e.g. codex, codex-reviewer)\n start --all Start all registered app-server instances\n stop <instance> Stop bridge for an instance\n stop Stop all running bridges\n status Show bridge status for all instances\n status <instance> Show bridge status for a specific instance\n\nOptions:\n --agent-name <name> Agent identity for bridge (or set TAP_AGENT_NAME env)\n Overrides the stored name from 'tap add' when needed\n --all Start all registered app-server instances\n --busy-mode <steer|wait> How to handle active turns (default: steer)\n --poll-seconds <n> Inbox poll interval (default: 5)\n --reconnect-seconds <n> Reconnect delay after disconnect (default: 5)\n --message-lookback-minutes <n> Process messages from last N minutes (default: 10)\n --thread-id <id> Resume specific thread\n --ephemeral Use ephemeral thread (no persistence)\n --process-existing-messages Process all existing inbox messages\n --no-server Skip app-server auto-start and connect only\n --no-auth Skip auth gateway (app-server listens directly, localhost only)\n\nPort Assignment:\n Ports are auto-assigned from 4501 on first bridge start if not set via --port\n during 'tap add'. Auto-assigned ports are saved to state for future starts.\n\nExamples:\n npx @hua-labs/tap bridge start codex --agent-name myAgent\n npx @hua-labs/tap bridge start --all\n npx @hua-labs/tap bridge start codex --agent-name myAgent --no-server\n npx @hua-labs/tap bridge start codex-reviewer --agent-name reviewer --busy-mode steer\n npx @hua-labs/tap bridge stop codex\n npx @hua-labs/tap bridge stop\n npx @hua-labs/tap bridge status\n`.trim();\n\nfunction formatAppServerState(appServer: AppServerState): string {\n const ownership = appServer.managed ? \"managed\" : \"external\";\n const pid = appServer.pid != null ? ` pid:${appServer.pid}` : \"\";\n const health = appServer.healthy ? \"healthy\" : \"unhealthy\";\n const auth =\n appServer.auth != null\n ? `, auth gateway:${appServer.auth.gatewayPid ?? \"-\"} -> ${appServer.auth.upstreamUrl}`\n : \"\";\n return `${health}, ${ownership}${pid}, ${appServer.url}${auth}`;\n}\n\nfunction redactProtectedUrl(url: string): string {\n // Subprotocol auth: token is no longer in the URL.\n // Keep function for backward compat with old state files that may contain query tokens.\n try {\n const parsed = new URL(url);\n if (parsed.searchParams.has(\"tap_token\")) {\n parsed.searchParams.delete(\"tap_token\");\n }\n return parsed.toString().replace(/\\/$/, \"\");\n } catch {\n return url.replace(/[?&]tap_token=[^&]+/g, \"\");\n }\n}\n\nfunction loadCurrentBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n fallback: BridgeState | null | undefined,\n): BridgeState | null {\n return loadBridgeState(stateDir, instanceId) ?? fallback ?? null;\n}\n\nfunction formatThreadSummary(\n threadId: string | null | undefined,\n cwd: string | null | undefined,\n): string {\n if (!threadId) {\n return \"-\";\n }\n\n return cwd ? `${threadId} (${cwd})` : threadId;\n}\n\nfunction normalizeComparablePath(value: string): string {\n return path.resolve(value).replace(/\\\\/g, \"/\").toLowerCase();\n}\n\nfunction sameOptionalPath(\n left: string | null | undefined,\n right: string | null | undefined,\n): boolean {\n if (!left || !right) {\n return left === right;\n }\n\n return normalizeComparablePath(left) === normalizeComparablePath(right);\n}\n\nfunction getSharedAppServerUsers(\n state: TapState,\n stateDir: string,\n currentInstanceId: InstanceId,\n appServerUrl: string,\n): InstanceId[] {\n const shared: InstanceId[] = [];\n\n for (const [id, inst] of Object.entries(state.instances)) {\n if (id === currentInstanceId || !inst?.installed) {\n continue;\n }\n\n const instanceId = id as InstanceId;\n if (getBridgeStatus(stateDir, instanceId) !== \"running\") {\n continue;\n }\n\n const bridgeState = loadCurrentBridgeState(\n stateDir,\n instanceId,\n inst.bridge,\n );\n if (bridgeState?.appServer?.url === appServerUrl) {\n shared.push(instanceId);\n }\n }\n\n return shared;\n}\n\nfunction transferManagedAppServerOwnership(\n state: TapState,\n stateDir: string,\n recipientId: InstanceId,\n appServer: AppServerState,\n): boolean {\n const recipient = state.instances[recipientId];\n if (!recipient) {\n return false;\n }\n\n const bridgeState = loadCurrentBridgeState(\n stateDir,\n recipientId,\n recipient.bridge,\n );\n if (!bridgeState) {\n return false;\n }\n\n const transferredAppServer: AppServerState = {\n ...appServer,\n managed: true,\n healthy: true,\n lastCheckedAt: new Date().toISOString(),\n lastHealthyAt: appServer.lastHealthyAt ?? new Date().toISOString(),\n };\n\n const updatedBridge: BridgeState = {\n ...bridgeState,\n appServer: transferredAppServer,\n };\n\n saveBridgeState(stateDir, recipientId, updatedBridge);\n state.instances[recipientId] = {\n ...recipient,\n bridge: updatedBridge,\n };\n return true;\n}\n\n// ─── Subcommand: start ─────────────────────────────────────────\n\nasync function bridgeStart(\n identifier: string,\n agentName?: string,\n flags: Record<string, string | boolean | undefined> = {},\n): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n let state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n let instance = state.instances[instanceId];\n\n if (!instance?.installed) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance?.runtime,\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `${instanceId} is not installed. Run: npx @hua-labs/tap add ${instance?.runtime ?? identifier}`,\n warnings: [],\n data: {},\n };\n }\n\n const adapter = getAdapter(instance.runtime);\n const mode = adapter.bridgeMode();\n\n if (mode !== \"app-server\") {\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_NO_OP\",\n message: `${instanceId} uses ${mode} mode — no bridge needed.`,\n warnings: [],\n data: { bridgeMode: mode },\n };\n }\n\n // Resolve agent name: explicit flag > stored in state > env\n const resolvedAgentName = agentName ?? instance.agentName ?? undefined;\n\n // Persist agent-name to state if explicitly provided\n if (agentName && agentName !== instance.agentName) {\n instance = { ...instance, agentName };\n const updatedState = updateInstanceState(state, instanceId, instance);\n saveState(repoRoot, updatedState);\n state = updatedState;\n }\n\n const ctx = createAdapterContext(state.commsDir, repoRoot);\n const bridgeScript = adapter.resolveBridgeScript?.(ctx);\n\n if (!bridgeScript) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_SCRIPT_MISSING\",\n message: `Bridge script not found for ${instanceId}. Ensure the runtime is properly configured.`,\n warnings: [],\n data: {},\n };\n }\n\n // Resolve runtime command + appServerUrl from config\n const { config: resolvedConfig } = resolveConfig({}, repoRoot);\n const runtimeCommand = resolvedConfig.runtimeCommand;\n const manageAppServer =\n instance.runtime === \"codex\" && flags[\"no-server\"] !== true;\n\n // Auto-assign port only for managed app-server mode (local instances).\n // External servers (--no-server) keep the configured appServerUrl as-is.\n let effectivePort = instance.port;\n if (effectivePort == null && manageAppServer) {\n effectivePort = await findNextAvailableAppServerPort(\n state,\n resolvedConfig.appServerUrl,\n 4501,\n instanceId,\n );\n instance = { ...instance, port: effectivePort };\n const updatedState = updateInstanceState(state, instanceId, instance);\n saveState(repoRoot, updatedState);\n state = updatedState;\n }\n\n const appServerUrl = resolveAppServerUrl(\n resolvedConfig.appServerUrl,\n effectivePort ?? undefined,\n );\n\n logHeader(`@hua-labs/tap bridge start ${instanceId}`);\n log(`Bridge script: ${bridgeScript}`);\n log(`Bridge mode: ${mode}`);\n log(`Runtime cmd: ${runtimeCommand}`);\n log(`App server: ${appServerUrl}`);\n if (effectivePort != null) log(`Port: ${effectivePort}`);\n if (resolvedAgentName) log(`Agent name: ${resolvedAgentName}`);\n const noAuth = flags[\"no-auth\"] === true;\n if (!manageAppServer && instance.runtime === \"codex\") {\n log(\"Auto server: disabled (--no-server)\");\n }\n if (noAuth && manageAppServer) {\n log(\"Auth gateway: disabled (--no-auth)\");\n }\n // Show headless status from instance config or --headless flag (resolved below)\n const willBeHeadless =\n flags[\"headless\"] === true || instance.headless?.enabled;\n if (willBeHeadless) {\n const role =\n (typeof flags[\"role\"] === \"string\" ? flags[\"role\"] : null) ??\n instance.headless?.role ??\n \"reviewer\";\n log(`Headless: ${role}`);\n }\n\n try {\n // Startup validation: health check before bridge start\n if (!manageAppServer && instance.runtime === \"codex\") {\n log(\"Checking app-server health...\");\n const healthy = await checkAppServerHealth(appServerUrl);\n if (healthy) {\n logSuccess(\"App server reachable\");\n } else {\n logError(`App server not reachable at ${appServerUrl}`);\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_START_FAILED\",\n message: `App server not reachable at ${appServerUrl}. Start it first: codex app-server --listen ${appServerUrl}`,\n warnings: [],\n data: {},\n };\n }\n }\n\n // Parse bridge operational flags from CLI\n\n // --busy-mode validation (PS1 parity: ValidateSet(\"wait\", \"steer\"))\n const busyModeRaw = flags[\"busy-mode\"];\n if (\n busyModeRaw !== undefined &&\n busyModeRaw !== \"steer\" &&\n busyModeRaw !== \"wait\"\n ) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Invalid --busy-mode: ${String(busyModeRaw)}. Must be \"steer\" or \"wait\".`,\n warnings: [],\n data: {},\n };\n }\n const busyMode = busyModeRaw as \"steer\" | \"wait\" | undefined;\n const pollSecondsRaw =\n typeof flags[\"poll-seconds\"] === \"string\"\n ? flags[\"poll-seconds\"]\n : undefined;\n const reconnectSecondsRaw =\n typeof flags[\"reconnect-seconds\"] === \"string\"\n ? flags[\"reconnect-seconds\"]\n : undefined;\n const lookbackRaw =\n typeof flags[\"message-lookback-minutes\"] === \"string\"\n ? flags[\"message-lookback-minutes\"]\n : undefined;\n\n let pollSeconds: number | undefined;\n let reconnectSeconds: number | undefined;\n let messageLookbackMinutes: number | undefined;\n try {\n pollSeconds = parseIntFlag(pollSecondsRaw, \"--poll-seconds\", 1, 3600);\n reconnectSeconds = parseIntFlag(\n reconnectSecondsRaw,\n \"--reconnect-seconds\",\n 1,\n 3600,\n );\n messageLookbackMinutes = parseIntFlag(\n lookbackRaw,\n \"--message-lookback-minutes\",\n 1,\n 10080,\n );\n } catch (err) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: err instanceof Error ? err.message : String(err),\n warnings: [],\n data: {},\n };\n }\n const threadId =\n typeof flags[\"thread-id\"] === \"string\" ? flags[\"thread-id\"] : undefined;\n const ephemeral = flags[\"ephemeral\"] === true;\n const processExistingMessages = flags[\"process-existing-messages\"] === true;\n\n // --headless flag on bridge start: create ad-hoc headless config\n // even if instance wasn't created with `tap add --headless`\n const headlessFlag = flags[\"headless\"] === true;\n const roleArg =\n typeof flags[\"role\"] === \"string\" ? flags[\"role\"] : undefined;\n const validRoles: AgentRole[] = [\"reviewer\", \"validator\", \"long-running\"];\n if (roleArg && !validRoles.includes(roleArg as AgentRole)) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Invalid --role: ${roleArg}. Must be: ${validRoles.join(\", \")}`,\n warnings: [],\n data: {},\n };\n }\n\n const headless: HeadlessConfig | null = headlessFlag\n ? {\n enabled: true,\n role: (roleArg as AgentRole) ?? \"reviewer\",\n maxRounds: 5,\n qualitySeverityFloor: \"high\",\n }\n : instance.headless;\n\n const bridge = await startBridge({\n instanceId,\n runtime: instance.runtime,\n stateDir: ctx.stateDir,\n commsDir: ctx.commsDir,\n bridgeScript,\n platform: ctx.platform,\n agentName: resolvedAgentName,\n runtimeCommand,\n appServerUrl,\n repoRoot,\n port: effectivePort ?? undefined,\n manageAppServer,\n noAuth,\n headless,\n busyMode,\n pollSeconds,\n reconnectSeconds,\n messageLookbackMinutes,\n threadId,\n ephemeral,\n processExistingMessages,\n });\n\n logSuccess(`Bridge started (PID: ${bridge.pid})`);\n log(`Log: ${path.join(ctx.stateDir, \"logs\", `bridge-${instanceId}.log`)}`);\n if (bridge.appServer) {\n log(`App server: ${formatAppServerState(bridge.appServer)}`);\n if (bridge.appServer.logPath) {\n log(`Server log: ${bridge.appServer.logPath}`);\n }\n if (bridge.appServer.auth) {\n log(\n `Protected: ${redactProtectedUrl(bridge.appServer.auth.protectedUrl)}`,\n );\n if (bridge.appServer.auth.gatewayLogPath) {\n log(`Gateway log: ${bridge.appServer.auth.gatewayLogPath}`);\n }\n // TUI must connect to upstream (no token needed) — gateway blocks unauthenticated clients\n log(`TUI connect: ${bridge.appServer.auth.upstreamUrl}`);\n }\n if (bridge.appServer.managed && !bridge.appServer.auth) {\n // --no-auth mode: TUI connects to the same URL as the bridge\n log(`TUI connect: ${bridge.appServer.url}`);\n }\n }\n\n // Update state with bridge info + mode for restart preservation\n const updated = { ...instance, bridge, manageAppServer, noAuth };\n const newState = updateInstanceState(state, instanceId, updated);\n saveState(repoRoot, newState);\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_START_OK\",\n message: `Bridge for ${instanceId} started (PID: ${bridge.pid})`,\n warnings: [],\n data: { pid: bridge.pid, appServer: bridge.appServer ?? null },\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logError(msg);\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_START_FAILED\",\n message: msg,\n warnings: [],\n data: {},\n };\n }\n}\n\n// ─── Subcommand: start --all ───────────────────────────────────\n\nasync function bridgeStartAll(\n flags: Record<string, string | boolean | undefined> = {},\n): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const instanceIds = Object.keys(state.instances) as InstanceId[];\n const appServerInstances = instanceIds.filter((id) => {\n const inst = state.instances[id];\n if (!inst?.installed) return false;\n const adapter = getAdapter(inst.runtime);\n return adapter.bridgeMode() === \"app-server\";\n });\n\n if (appServerInstances.length === 0) {\n return {\n ok: true,\n command: \"bridge\",\n code: \"TAP_NO_OP\",\n message: \"No app-server instances found to start.\",\n warnings: [],\n data: {},\n };\n }\n\n logHeader(\"@hua-labs/tap bridge start --all\");\n log(\n `Found ${appServerInstances.length} app-server instance(s): ${appServerInstances.join(\", \")}`,\n );\n log(\"\");\n\n const started: string[] = [];\n const failed: string[] = [];\n const warnings: string[] = [];\n\n for (const instanceId of appServerInstances) {\n const inst = state.instances[instanceId];\n const storedName = inst?.agentName ?? undefined;\n\n if (!storedName) {\n const msg = `${instanceId}: skipped — no stored agent-name. Set it first: tap bridge start ${instanceId} --agent-name <name>`;\n log(msg);\n warnings.push(msg);\n continue;\n }\n\n log(`Starting ${instanceId} (agent: ${storedName})...`);\n const result = await bridgeStart(instanceId, storedName, flags);\n\n if (result.ok) {\n started.push(instanceId);\n logSuccess(`${instanceId} started`);\n } else {\n failed.push(instanceId);\n logError(`${instanceId}: ${result.message}`);\n }\n log(\"\");\n }\n\n const message =\n started.length > 0\n ? `Started ${started.length}/${appServerInstances.length} bridge(s): ${started.join(\", \")}` +\n (failed.length > 0 ? `. Failed: ${failed.join(\", \")}` : \"\")\n : `No bridges started. Failed: ${failed.join(\", \")}`;\n\n return {\n ok: failed.length === 0 && started.length > 0,\n command: \"bridge\",\n code:\n started.length > 0 ? \"TAP_BRIDGE_START_OK\" : \"TAP_BRIDGE_START_FAILED\",\n message,\n warnings,\n data: { started, failed },\n };\n}\n\n// ─── Subcommand: stop ──────────────────────────────────────────\n\nasync function bridgeStopOne(identifier: string): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n const ctx = createAdapterContext(state.commsDir, repoRoot);\n const instance = state.instances[instanceId];\n const bridgeState = loadCurrentBridgeState(\n ctx.stateDir,\n instanceId,\n instance?.bridge,\n );\n const appServer = bridgeState?.appServer ?? null;\n\n logHeader(`@hua-labs/tap bridge stop ${instanceId}`);\n\n const stopped = await stopBridge({\n instanceId,\n stateDir: ctx.stateDir,\n platform: ctx.platform,\n });\n\n let appServerStopped = false;\n let appServerTransferredTo: InstanceId | null = null;\n\n if (stopped) {\n logSuccess(`Bridge for ${instanceId} stopped`);\n } else {\n log(`No running bridge for ${instanceId}`);\n }\n\n if (appServer?.managed) {\n const sharedUsers = getSharedAppServerUsers(\n state,\n ctx.stateDir,\n instanceId,\n appServer.url,\n );\n\n if (sharedUsers.length > 0) {\n const recipient = sharedUsers[0];\n if (\n transferManagedAppServerOwnership(\n state,\n ctx.stateDir,\n recipient,\n appServer,\n )\n ) {\n appServerTransferredTo = recipient;\n log(`Managed app-server ownership moved to ${recipient}`);\n } else {\n log(\n `Managed app-server left running at ${appServer.url} because ownership transfer failed`,\n );\n }\n } else {\n appServerStopped = await stopManagedAppServer(appServer, ctx.platform);\n if (appServerStopped) {\n const gatewayNote =\n appServer.auth?.gatewayPid != null\n ? `, gateway PID: ${appServer.auth.gatewayPid}`\n : \"\";\n logSuccess(\n `Managed app-server stopped (PID: ${appServer.pid ?? \"-\"}${gatewayNote})`,\n );\n }\n }\n }\n\n // Clear bridge from state\n if (instance) {\n const updated = { ...instance, bridge: null };\n const newState = updateInstanceState(state, instanceId, updated);\n saveState(repoRoot, newState);\n }\n\n if (stopped) {\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_STOP_OK\",\n message: `Bridge for ${instanceId} stopped`,\n warnings: [],\n data: {\n appServerStopped,\n appServerTransferredTo,\n },\n };\n }\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_NOT_RUNNING\",\n message: `No running bridge for ${instanceId}`,\n warnings: [],\n data: {\n appServerStopped,\n appServerTransferredTo,\n },\n };\n}\n\nasync function bridgeStopAll(): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const ctx = createAdapterContext(state.commsDir, repoRoot);\n const instanceIds = Object.keys(state.instances) as InstanceId[];\n const stopped: string[] = [];\n const managedAppServers = new Map<string, AppServerState>();\n\n logHeader(\"@hua-labs/tap bridge stop (all)\");\n\n let stateChanged = false;\n\n for (const instanceId of instanceIds) {\n const bridgeState = loadCurrentBridgeState(\n ctx.stateDir,\n instanceId,\n state.instances[instanceId]?.bridge,\n );\n const appServer = bridgeState?.appServer;\n if (appServer?.managed && appServer.pid != null) {\n managedAppServers.set(\n `${appServer.url}:${appServer.pid}:${appServer.auth?.gatewayPid ?? \"-\"}`,\n appServer,\n );\n }\n\n const didStop = await stopBridge({\n instanceId,\n stateDir: ctx.stateDir,\n platform: ctx.platform,\n });\n\n if (didStop) {\n logSuccess(`Stopped bridge for ${instanceId}`);\n stopped.push(instanceId);\n }\n\n // Clear stale bridge metadata regardless of whether process was alive\n const instance = state.instances[instanceId];\n if (instance?.bridge) {\n state.instances[instanceId] = { ...instance, bridge: null };\n stateChanged = true;\n }\n }\n\n const stoppedAppServers: number[] = [];\n for (const appServer of managedAppServers.values()) {\n if (await stopManagedAppServer(appServer, ctx.platform)) {\n stoppedAppServers.push(appServer.pid!);\n const gatewayNote =\n appServer.auth?.gatewayPid != null\n ? `, gateway PID ${appServer.auth.gatewayPid}`\n : \"\";\n logSuccess(\n `Stopped app-server PID ${appServer.pid} (${appServer.url}${gatewayNote})`,\n );\n }\n }\n\n if (stateChanged) {\n state.updatedAt = new Date().toISOString();\n saveState(repoRoot, state);\n }\n\n const message =\n stopped.length > 0\n ? `Stopped ${stopped.length} bridge(s): ${stopped.join(\", \")}`\n : \"No running bridges found\";\n\n log(message);\n\n return {\n ok: true,\n command: \"bridge\",\n code: stopped.length > 0 ? \"TAP_BRIDGE_STOP_OK\" : \"TAP_BRIDGE_NOT_RUNNING\",\n message,\n warnings: [],\n data: { stopped, stoppedAppServers },\n };\n}\n\n// ─── Subcommand: status ────────────────────────────────────────\n\nfunction bridgeStatusAll(): CommandResult {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const { config: resolvedCfg } = resolveConfig({}, repoRoot);\n const stateDir = resolvedCfg.stateDir;\n const instanceIds = Object.keys(state.instances) as InstanceId[];\n const bridges: Record<\n string,\n {\n status: string;\n runtime: string;\n pid: number | null;\n port: number | null;\n lastHeartbeat: string | null;\n threadId: string | null;\n threadCwd: string | null;\n savedThreadId: string | null;\n savedThreadCwd: string | null;\n appServer: AppServerState | null;\n }\n > = {};\n\n logHeader(\"@hua-labs/tap bridge status\");\n log(\n `${\"Instance\".padEnd(20)} ${\"Runtime\".padEnd(8)} ${\"Status\".padEnd(10)} ${\"PID\".padEnd(8)} ${\"Port\".padEnd(6)} ${\"Last Heartbeat\"}`,\n );\n log(\n `${\"─\".repeat(20)} ${\"─\".repeat(8)} ${\"─\".repeat(10)} ${\"─\".repeat(8)} ${\"─\".repeat(6)} ${\"─\".repeat(20)}`,\n );\n\n for (const instanceId of instanceIds) {\n const inst = state.instances[instanceId];\n if (!inst?.installed) continue;\n\n if (inst.bridgeMode !== \"app-server\") {\n log(\n `${instanceId.padEnd(20)} ${inst.runtime.padEnd(8)} ${\"n/a\".padEnd(10)} ${\"-\".padEnd(8)} ${\"-\".padEnd(6)} ${inst.bridgeMode} mode`,\n );\n bridges[instanceId] = {\n status: \"n/a\",\n runtime: inst.runtime,\n pid: null,\n port: inst.port,\n lastHeartbeat: null,\n threadId: null,\n threadCwd: null,\n savedThreadId: null,\n savedThreadCwd: null,\n appServer: null,\n };\n continue;\n }\n\n const status = getBridgeStatus(stateDir, instanceId);\n const bridgeState = loadBridgeState(stateDir, instanceId);\n const runtimeHeartbeat = loadRuntimeBridgeHeartbeat(bridgeState);\n const savedThread = loadRuntimeBridgeThreadState(bridgeState);\n const age = getHeartbeatAge(stateDir, instanceId);\n\n const pid = bridgeState?.pid ?? null;\n const heartbeat = getBridgeHeartbeatTimestamp(stateDir, instanceId);\n const pidStr = pid ? String(pid) : \"-\";\n const portStr = inst.port ? String(inst.port) : \"-\";\n const ageStr = age !== null ? formatAge(age) : \"-\";\n\n const statusColor =\n status === \"running\"\n ? \"running\"\n : status === \"stale\"\n ? \"stale!\"\n : \"stopped\";\n\n log(\n `${instanceId.padEnd(20)} ${inst.runtime.padEnd(8)} ${statusColor.padEnd(10)} ${pidStr.padEnd(8)} ${portStr.padEnd(6)} ${ageStr}`,\n );\n if (bridgeState?.appServer) {\n log(` App server: ${formatAppServerState(bridgeState.appServer)}`);\n if (bridgeState.appServer.logPath) {\n log(` Server log: ${bridgeState.appServer.logPath}`);\n }\n if (bridgeState.appServer.auth) {\n log(\n ` Protected: ${redactProtectedUrl(bridgeState.appServer.auth.protectedUrl)}`,\n );\n }\n }\n if (runtimeHeartbeat?.threadId) {\n log(\n ` Thread: ${formatThreadSummary(runtimeHeartbeat.threadId, runtimeHeartbeat.threadCwd)}`,\n );\n }\n if (\n savedThread?.threadId &&\n (savedThread.threadId !== runtimeHeartbeat?.threadId ||\n !sameOptionalPath(savedThread.cwd, runtimeHeartbeat?.threadCwd))\n ) {\n log(\n ` Saved: ${formatThreadSummary(savedThread.threadId, savedThread.cwd)}`,\n );\n }\n\n bridges[instanceId] = {\n status,\n runtime: inst.runtime,\n pid,\n port: inst.port,\n lastHeartbeat: heartbeat,\n threadId: runtimeHeartbeat?.threadId ?? null,\n threadCwd: runtimeHeartbeat?.threadCwd ?? null,\n savedThreadId: savedThread?.threadId ?? null,\n savedThreadCwd: savedThread?.cwd ?? null,\n appServer: bridgeState?.appServer ?? null,\n };\n }\n\n if (instanceIds.length === 0) {\n log(\"No instances installed.\");\n }\n\n log(\"\");\n\n return {\n ok: true,\n command: \"bridge\",\n code: \"TAP_BRIDGE_STATUS_OK\",\n message: `${instanceIds.length} instance(s) checked`,\n warnings: [],\n data: { bridges },\n };\n}\n\nfunction bridgeStatusOne(identifier: string): CommandResult {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n const inst = state.instances[instanceId];\n\n if (!inst?.installed) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `${instanceId} is not installed.`,\n warnings: [],\n data: {},\n };\n }\n\n logHeader(`@hua-labs/tap bridge status ${instanceId}`);\n log(`Instance: ${instanceId}`);\n log(`Runtime: ${inst.runtime}`);\n log(`Bridge mode: ${inst.bridgeMode}`);\n if (inst.port) log(`Port: ${inst.port}`);\n\n // Non-app-server instances don't use bridges\n if (inst.bridgeMode !== \"app-server\") {\n log(`Status: n/a (${inst.bridgeMode} mode)`);\n log(\"\");\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: inst.runtime,\n code: \"TAP_BRIDGE_STATUS_OK\",\n message: `${instanceId} bridge: n/a (${inst.bridgeMode} mode)`,\n warnings: [],\n data: {\n status: \"n/a\",\n bridgeMode: inst.bridgeMode,\n pid: null,\n port: inst.port,\n lastHeartbeat: null,\n threadId: null,\n threadCwd: null,\n savedThreadId: null,\n savedThreadCwd: null,\n appServer: null,\n },\n };\n }\n\n const { config: resolvedCfg2 } = resolveConfig({}, repoRoot);\n const stateDir = resolvedCfg2.stateDir;\n const status = getBridgeStatus(stateDir, instanceId);\n const bridgeState = loadBridgeState(stateDir, instanceId);\n const runtimeHeartbeat = loadRuntimeBridgeHeartbeat(bridgeState);\n const savedThread = loadRuntimeBridgeThreadState(bridgeState);\n const age = getHeartbeatAge(stateDir, instanceId);\n const heartbeat = getBridgeHeartbeatTimestamp(stateDir, instanceId);\n\n log(`Status: ${status}`);\n\n if (bridgeState) {\n log(`PID: ${bridgeState.pid}`);\n log(\n `Heartbeat: ${heartbeat ?? \"-\"}${age !== null ? ` (${formatAge(age)})` : \"\"}`,\n );\n if (runtimeHeartbeat?.threadId) {\n log(\n `Thread: ${formatThreadSummary(runtimeHeartbeat.threadId, runtimeHeartbeat.threadCwd)}`,\n );\n }\n if (\n savedThread?.threadId &&\n (savedThread.threadId !== runtimeHeartbeat?.threadId ||\n !sameOptionalPath(savedThread.cwd, runtimeHeartbeat?.threadCwd))\n ) {\n log(\n `Saved: ${formatThreadSummary(savedThread.threadId, savedThread.cwd)}`,\n );\n }\n log(\n `Log: ${path.join(stateDir, \"logs\", `bridge-${instanceId}.log`)}`,\n );\n if (bridgeState.appServer) {\n log(`App server: ${bridgeState.appServer.url}`);\n log(`Server PID: ${bridgeState.appServer.pid ?? \"-\"}`);\n log(\n `Server mode: ${bridgeState.appServer.managed ? \"managed\" : \"external\"}`,\n );\n log(\n `Health: ${bridgeState.appServer.healthy ? \"healthy\" : \"unhealthy\"}`,\n );\n log(`Checked: ${bridgeState.appServer.lastCheckedAt}`);\n if (bridgeState.appServer.logPath) {\n log(`Server log: ${bridgeState.appServer.logPath}`);\n }\n if (bridgeState.appServer.auth) {\n log(`Auth: ${bridgeState.appServer.auth.mode}`);\n log(\n `Protected: ${redactProtectedUrl(bridgeState.appServer.auth.protectedUrl)}`,\n );\n log(`Upstream: ${bridgeState.appServer.auth.upstreamUrl}`);\n log(`TUI connect: ${bridgeState.appServer.auth.upstreamUrl}`);\n log(`Gateway PID: ${bridgeState.appServer.auth.gatewayPid ?? \"-\"}`);\n if (bridgeState.appServer.auth.gatewayLogPath) {\n log(`Gateway log: ${bridgeState.appServer.auth.gatewayLogPath}`);\n }\n } else if (bridgeState.appServer.managed) {\n log(`Auth: none (--no-auth)`);\n log(`TUI connect: ${bridgeState.appServer.url}`);\n }\n }\n }\n\n log(\"\");\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: inst.runtime,\n code: \"TAP_BRIDGE_STATUS_OK\",\n message: `${instanceId} bridge: ${status}`,\n warnings: [],\n data: {\n status,\n bridgeMode: inst.bridgeMode,\n pid: bridgeState?.pid ?? null,\n port: inst.port,\n lastHeartbeat: heartbeat,\n threadId: runtimeHeartbeat?.threadId ?? null,\n threadCwd: runtimeHeartbeat?.threadCwd ?? null,\n savedThreadId: savedThread?.threadId ?? null,\n savedThreadCwd: savedThread?.cwd ?? null,\n appServer: bridgeState?.appServer ?? null,\n },\n };\n}\n\n// ─── Command Router ────────────────────────────────────────────\n\nasync function bridgeRestart(\n identifier: string,\n flags: Record<string, string | boolean>,\n): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n const inst = state.instances[instanceId];\n if (!inst) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `Instance not found: ${instanceId}`,\n warnings: [],\n data: {},\n };\n }\n\n const adapter = getAdapter(inst.runtime);\n const ctx = {\n ...createAdapterContext(state.commsDir, repoRoot),\n instanceId,\n };\n const bridgeScript = adapter.resolveBridgeScript?.(ctx);\n\n if (!bridgeScript) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_SCRIPT_MISSING\",\n message: `Bridge script not found for ${instanceId}`,\n warnings: [],\n data: {},\n };\n }\n\n const { config: resolvedConfig } = resolveConfig({}, repoRoot);\n const drainStr =\n typeof flags[\"drain-timeout\"] === \"string\"\n ? flags[\"drain-timeout\"]\n : undefined;\n let drainTimeout: number;\n try {\n drainTimeout = parseIntFlag(drainStr, \"--drain-timeout\", 1, 300) ?? 30;\n } catch (err) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: err instanceof Error ? err.message : String(err),\n warnings: [],\n data: {},\n };\n }\n\n logHeader(`@hua-labs/tap bridge restart ${instanceId}`);\n log(`Drain timeout: ${drainTimeout}s`);\n\n try {\n // Use production helper for mode inference (tested in identity-restart.test.ts)\n // Priority: flags > saved instance mode > bridge state inference\n const currentBridgeState = loadBridgeState(ctx.stateDir, instanceId);\n const { manageAppServer, noAuth } = inferRestartMode(\n currentBridgeState,\n {\n noServer: flags[\"no-server\"] === true ? true : undefined,\n noAuth: flags[\"no-auth\"] === true ? true : undefined,\n },\n {\n manageAppServer: inst.manageAppServer,\n noAuth: inst.noAuth,\n },\n );\n\n const bridge = await restartBridge({\n instanceId,\n runtime: inst.runtime,\n stateDir: ctx.stateDir,\n commsDir: ctx.commsDir,\n bridgeScript,\n platform: ctx.platform,\n agentName: inst.agentName ?? undefined,\n runtimeCommand: resolvedConfig.runtimeCommand,\n appServerUrl: resolvedConfig.appServerUrl,\n repoRoot,\n port: inst.port ?? undefined,\n headless: inst.headless,\n drainTimeoutSeconds: drainTimeout,\n manageAppServer,\n noAuth,\n });\n\n logSuccess(`Bridge restarted (PID: ${bridge.pid})`);\n\n // Save bridge mode for next restart (#799 follow-up)\n const updated = { ...inst, bridge, manageAppServer, noAuth };\n const newState = updateInstanceState(state, instanceId, updated);\n saveState(repoRoot, newState);\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_START_OK\",\n message: `Bridge for ${instanceId} restarted (PID: ${bridge.pid})`,\n warnings: [],\n data: { pid: bridge.pid },\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logError(msg);\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_START_FAILED\",\n message: msg,\n warnings: [],\n data: {},\n };\n }\n}\n\nexport async function bridgeCommand(args: string[]): Promise<CommandResult> {\n const { positional, flags } = parseArgs(args);\n const subcommand = positional[0];\n const identifierArg = positional[1];\n const agentName =\n typeof flags[\"agent-name\"] === \"string\" ? flags[\"agent-name\"] : undefined;\n\n if (!subcommand || subcommand === \"--help\" || subcommand === \"-h\") {\n log(BRIDGE_HELP);\n return {\n ok: true,\n command: \"bridge\",\n code: \"TAP_NO_OP\",\n message: BRIDGE_HELP,\n warnings: [],\n data: {},\n };\n }\n\n switch (subcommand) {\n case \"start\": {\n const wantsAll = flags[\"all\"] === true || identifierArg === \"--all\";\n const hasInstance = identifierArg && identifierArg !== \"--all\";\n\n if (wantsAll && hasInstance) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Cannot combine <instance> with --all. Use either:\\n tap bridge start ${identifierArg}\\n tap bridge start --all`,\n warnings: [],\n data: {},\n };\n }\n if (wantsAll) {\n return bridgeStartAll(flags);\n }\n if (!identifierArg) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message:\n \"Missing instance. Usage: npx @hua-labs/tap bridge start <instance> or --all\",\n warnings: [],\n data: {},\n };\n }\n return bridgeStart(identifierArg, agentName, flags);\n }\n\n case \"stop\": {\n if (!identifierArg) {\n return bridgeStopAll();\n }\n return bridgeStopOne(identifierArg);\n }\n\n case \"status\": {\n if (identifierArg) {\n return bridgeStatusOne(identifierArg);\n }\n return bridgeStatusAll();\n }\n\n case \"restart\": {\n if (!identifierArg) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message:\n \"Missing instance. Usage: npx @hua-labs/tap bridge restart <instance>\",\n warnings: [],\n data: {},\n };\n }\n return bridgeRestart(identifierArg, flags);\n }\n\n default:\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Unknown bridge subcommand: ${subcommand}. Use: start, stop, restart, status`,\n warnings: [],\n data: {},\n };\n }\n}\n","import { bridgeCommand } from \"./bridge.js\";\nimport {\n collectDashboardSnapshot,\n type DashboardSnapshot,\n} from \"../engine/dashboard.js\";\nimport { findRepoRoot, log } from \"../utils.js\";\nimport type { CommandResult } from \"../types.js\";\n\nconst UP_HELP = `\nUsage:\n tap up [bridge-start options]\n\nDescription:\n Start all registered app-server bridge daemons with one command.\n This is the orchestration entrypoint for headless/background TAP operation.\n\nExamples:\n npx @hua-labs/tap up\n npx @hua-labs/tap up --no-auth\n npx @hua-labs/tap up --busy-mode wait\n`.trim();\n\ntype UpResultData = Record<string, unknown> & {\n snapshot: DashboardSnapshot;\n};\n\nexport async function upCommand(args: string[]): Promise<CommandResult> {\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n log(UP_HELP);\n return {\n ok: true,\n command: \"up\",\n code: \"TAP_NO_OP\",\n message: UP_HELP,\n warnings: [],\n data: {},\n };\n }\n\n const repoRoot = findRepoRoot();\n const previousColdStartWarmup = process.env.TAP_COLD_START_WARMUP;\n process.env.TAP_COLD_START_WARMUP = \"true\";\n let result: CommandResult;\n try {\n result = await bridgeCommand([\"start\", \"--all\", ...args]);\n } finally {\n if (previousColdStartWarmup === undefined) {\n delete process.env.TAP_COLD_START_WARMUP;\n } else {\n process.env.TAP_COLD_START_WARMUP = previousColdStartWarmup;\n }\n }\n const snapshot = collectDashboardSnapshot(repoRoot);\n const activeBridges = snapshot.bridges.filter(\n (bridge) => bridge.status === \"running\",\n ).length;\n\n if (!result.ok) {\n return {\n ...result,\n command: \"up\",\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies UpResultData,\n };\n }\n\n return {\n ok: true,\n command: \"up\",\n code: \"TAP_UP_OK\",\n message: `tap up: ${activeBridges} bridge(s) running`,\n warnings: result.warnings,\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies UpResultData,\n };\n}\n","import { bridgeCommand } from \"./bridge.js\";\nimport {\n collectDashboardSnapshot,\n type DashboardSnapshot,\n} from \"../engine/dashboard.js\";\nimport { findRepoRoot, log } from \"../utils.js\";\nimport type { CommandResult } from \"../types.js\";\n\nconst DOWN_HELP = `\nUsage:\n tap down\n\nDescription:\n Stop all running bridge daemons and managed app-servers.\n\nExamples:\n npx @hua-labs/tap down\n`.trim();\n\ntype DownResultData = Record<string, unknown> & {\n snapshot: DashboardSnapshot;\n};\n\nexport async function downCommand(args: string[]): Promise<CommandResult> {\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n log(DOWN_HELP);\n return {\n ok: true,\n command: \"down\",\n code: \"TAP_NO_OP\",\n message: DOWN_HELP,\n warnings: [],\n data: {},\n };\n }\n\n const repoRoot = findRepoRoot();\n const result = await bridgeCommand([\"stop\"]);\n const snapshot = collectDashboardSnapshot(repoRoot);\n\n if (!result.ok) {\n return {\n ...result,\n command: \"down\",\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies DownResultData,\n };\n }\n\n return {\n ok: true,\n command: \"down\",\n code: \"TAP_DOWN_OK\",\n message: `tap down: ${snapshot.bridges.filter((bridge) => bridge.status === \"running\").length} bridge(s) still running`,\n warnings: result.warnings,\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies DownResultData,\n };\n}\n","export type {\n RuntimeName,\n BridgeMode,\n Platform,\n InstanceId,\n AdapterContext,\n ProbeResult,\n PatchPlan,\n PatchOp,\n PatchOpType,\n OwnedArtifact,\n ArtifactKind,\n ApplyResult,\n VerifyResult,\n VerifyCheck,\n RuntimeAdapter,\n TapState,\n TapStateV1,\n InstanceState,\n /** @deprecated Use InstanceState. Will be removed in 0.2.0. */\n RuntimeState,\n BridgeState,\n AppServerState,\n AppServerAuthState,\n CommandName,\n CommandCode,\n CommandResult,\n} from \"./types.js\";\n\nexport {\n loadState,\n saveState,\n createInitialState,\n stateExists,\n} from \"./state.js\";\nexport { version } from \"./version.js\";\n\n// Config\nexport type {\n TapSharedConfig,\n TapLocalConfig,\n TapResolvedConfig,\n ConfigSource,\n ConfigResolution,\n ConfigOverrides,\n} from \"./config/index.js\";\nexport {\n resolveConfig,\n loadSharedConfig,\n loadLocalConfig,\n saveSharedConfig,\n saveLocalConfig,\n SHARED_CONFIG_FILE,\n LOCAL_CONFIG_FILE,\n} from \"./config/index.js\";\n\n// Bridge engine\nexport {\n /** @deprecated Internal use only. Will be removed in 0.2.0. */\n updateBridgeHeartbeat,\n getHeartbeatAge,\n rotateLog,\n restartBridge,\n} from \"./engine/bridge.js\";\n\n// Dashboard / State API\nexport type {\n AgentInfo,\n BridgeInfo,\n PRInfo,\n DashboardWarning,\n DashboardSnapshot,\n} from \"./engine/dashboard.js\";\nexport { collectDashboardSnapshot } from \"./engine/dashboard.js\";\n\n// State/Control API (M105)\nexport type {\n StateApiOptions,\n EventStreamOptions,\n AgentControlOptions,\n AgentControlResult,\n HealthReport,\n} from \"./api/state.js\";\nexport {\n getDashboardSnapshot,\n streamEvents,\n getConfig,\n getHealthReport,\n startAgents,\n stopAgents,\n} from \"./api/state.js\";\nexport type { HttpServerOptions } from \"./api/http.js\";\nexport { startHttpServer } from \"./api/http.js\";\n\n// Runtime resolver\nexport type { ResolvedRuntime, RuntimeSource } from \"./runtime/index.js\";\nexport {\n resolveNodeRuntime,\n buildRuntimeEnv,\n readNodeVersion,\n probeFnmNode,\n getFnmBinDir,\n} from \"./runtime/index.js\";\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst FALLBACK_VERSION = \"0.0.0\";\n\nexport function resolvePackageVersion(\n metaUrl: string = import.meta.url,\n): string {\n const moduleDir = path.dirname(fileURLToPath(metaUrl));\n const packageJsonPath = path.join(moduleDir, \"..\", \"package.json\");\n\n try {\n const parsed = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\")) as {\n version?: unknown;\n };\n if (typeof parsed.version === \"string\" && parsed.version.trim()) {\n return parsed.version;\n }\n } catch {\n // Fall through to the fixed fallback below.\n }\n\n return FALLBACK_VERSION;\n}\n\nexport const version = resolvePackageVersion();\n","/**\n * State/Control API — programmatic access to tap state.\n * GUI and autopilot consume these functions instead of shelling out to CLI.\n *\n * M105 P1: getDashboardSnapshot, streamEvents (read-only)\n * M105 P2: startAgents, stopAgents (write — wraps tap up/down)\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { collectDashboardSnapshot } from \"../engine/dashboard.js\";\nimport type { DashboardSnapshot } from \"../engine/dashboard.js\";\nimport { findRepoRoot } from \"../utils.js\";\nimport { resolveConfig } from \"../config/index.js\";\nimport { loadState } from \"../state.js\";\nimport type { CommandResult } from \"../types.js\";\n\nexport interface StateApiOptions {\n repoRoot?: string;\n commsDir?: string;\n}\n\n/**\n * Get a point-in-time snapshot of all tap state:\n * agents, bridges, PRs, and warnings.\n *\n * This is the read-only entry point for GUI dashboards and autopilot.\n */\nexport function getDashboardSnapshot(\n options?: StateApiOptions,\n): DashboardSnapshot {\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n return collectDashboardSnapshot(repoRoot, options?.commsDir);\n}\n\nexport interface EventStreamOptions extends StateApiOptions {\n /** Poll interval in milliseconds (default: 2000) */\n intervalMs?: number;\n /** AbortSignal to stop the stream */\n signal?: AbortSignal;\n}\n\n/**\n * Async generator that yields dashboard snapshots at regular intervals.\n * Useful for SSE or WebSocket push to GUI clients.\n *\n * Stops when the AbortSignal fires or the consumer breaks out.\n */\nexport async function* streamEvents(\n options?: EventStreamOptions,\n): AsyncGenerator<DashboardSnapshot> {\n const intervalMs = options?.intervalMs ?? 2000;\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n\n while (!options?.signal?.aborted) {\n yield collectDashboardSnapshot(repoRoot, options?.commsDir);\n await new Promise<void>((resolve) => {\n const onAbort = () => {\n clearTimeout(timer);\n resolve();\n };\n const timer = setTimeout(() => {\n options?.signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, intervalMs);\n options?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n }\n}\n\n// ── Write API ───────────────────────────────────────────────────\n\nexport interface AgentControlOptions {\n /** Extra CLI args forwarded to `tap up` (e.g. `[\"--no-auth\"]`) */\n args?: string[];\n}\n\nexport interface AgentControlResult {\n ok: boolean;\n message: string;\n snapshot: DashboardSnapshot;\n commandResult: CommandResult;\n}\n\n/**\n * Start all registered bridge daemons.\n * Equivalent to `tap up [...args]`.\n *\n * Always operates on the cwd-based repo (same as CLI commands).\n * Use read-only APIs (getDashboardSnapshot) for cross-repo queries.\n */\nexport async function startAgents(\n options?: AgentControlOptions,\n): Promise<AgentControlResult> {\n const { upCommand } = await import(\"../commands/up.js\");\n const result = await upCommand(options?.args ?? []);\n const repoRoot = findRepoRoot();\n const snapshot = collectDashboardSnapshot(repoRoot);\n return {\n ok: result.ok,\n message: result.message,\n snapshot,\n commandResult: result,\n };\n}\n\n/**\n * Stop all running bridge daemons.\n * Equivalent to `tap down`.\n *\n * Always operates on the cwd-based repo (same as CLI commands).\n */\nexport async function stopAgents(): Promise<AgentControlResult> {\n const { downCommand } = await import(\"../commands/down.js\");\n const result = await downCommand([]);\n const repoRoot = findRepoRoot();\n const snapshot = collectDashboardSnapshot(repoRoot);\n return {\n ok: result.ok,\n message: result.message,\n snapshot,\n commandResult: result,\n };\n}\n\n// ── Health ──────────────────────────────────────────────────────\n\nexport interface HealthReport {\n ok: boolean;\n timestamp: string;\n bridges: DashboardSnapshot[\"bridges\"];\n agents: DashboardSnapshot[\"agents\"];\n warnings: DashboardSnapshot[\"warnings\"];\n headless: Record<string, unknown>[];\n}\n\n/**\n * Health check that combines dashboard snapshot with headless state.\n * Consumed by monitoring tools (Uptime Kuma, cron, autopilot).\n */\nexport function getHealthReport(options?: StateApiOptions): HealthReport {\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n const snapshot = collectDashboardSnapshot(repoRoot, options?.commsDir);\n\n // Collect headless state from .tmp/ dirs — active instances only\n // (same filter as doctor checkBridgeTurnHealth to avoid stale session debris)\n const headlessStates: Record<string, unknown>[] = [];\n try {\n const state = loadState(repoRoot);\n const activeMatchers = new Set<string>();\n if (state) {\n for (const [id, inst] of Object.entries(state.instances)) {\n if (inst?.installed && inst.bridgeMode === \"app-server\") {\n activeMatchers.add(id);\n if (inst.agentName) activeMatchers.add(inst.agentName);\n }\n }\n }\n\n const tmpDir = path.join(repoRoot, \".tmp\");\n if (fs.existsSync(tmpDir)) {\n for (const dir of fs.readdirSync(tmpDir)) {\n if (!dir.startsWith(\"codex-app-server-bridge\")) continue;\n const suffix = dir.replace(\"codex-app-server-bridge-\", \"\");\n // Filter to active instances (skip past session debris)\n if (activeMatchers.size > 0) {\n let matched = false;\n for (const matcher of activeMatchers) {\n if (suffix === matcher || suffix.startsWith(matcher)) {\n matched = true;\n break;\n }\n }\n if (!matched) continue;\n }\n const hsPath = path.join(tmpDir, dir, \"headless-state.json\");\n if (!fs.existsSync(hsPath)) continue;\n try {\n const hs = JSON.parse(fs.readFileSync(hsPath, \"utf-8\"));\n headlessStates.push({ instanceDir: dir, ...hs });\n } catch {\n // skip corrupted\n }\n }\n }\n } catch {\n // .tmp doesn't exist or state load failed\n }\n\n const hasFailures = snapshot.warnings.some((w) => w.level === \"error\");\n const hasBridgeDown = snapshot.bridges.some(\n (b) => b.status === \"stale\" || b.status === \"stopped\",\n );\n\n return {\n ok: !hasFailures && !hasBridgeDown,\n timestamp: snapshot.generatedAt,\n bridges: snapshot.bridges,\n agents: snapshot.agents,\n warnings: snapshot.warnings,\n headless: headlessStates,\n };\n}\n\n// ── Config ──────────────────────────────────────────────────────\n\n/**\n * Resolve tap configuration for API consumers.\n * Returns paths and settings without requiring CLI args.\n */\nexport function getConfig(options?: StateApiOptions) {\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n const { config } = resolveConfig({}, repoRoot);\n return {\n repoRoot,\n commsDir: options?.commsDir ?? config.commsDir,\n stateDir: config.stateDir,\n appServerUrl: config.appServerUrl,\n };\n}\n","/**\n * Minimal HTTP transport for tap State API.\n * localhost-only, no external dependencies (uses node:http).\n *\n * Endpoints:\n * GET /api/snapshot — DashboardSnapshot JSON\n * GET /api/events — SSE stream of snapshots\n * GET /api/config — Resolved tap configuration\n * GET /health — Health check\n */\n\nimport {\n createServer,\n type IncomingMessage,\n type ServerResponse,\n} from \"node:http\";\nimport { randomBytes, timingSafeEqual } from \"node:crypto\";\nimport {\n getDashboardSnapshot,\n streamEvents,\n getConfig,\n getHealthReport,\n startAgents,\n stopAgents,\n} from \"./state.js\";\nimport type { StateApiOptions } from \"./state.js\";\n\nexport interface HttpServerOptions extends StateApiOptions {\n /** Port to listen on (default: 4580) */\n port?: number;\n /** Pre-set API token (default: auto-generated) */\n token?: string;\n}\n\nconst CORS_HEADERS = {\n \"Access-Control-Allow-Origin\": \"http://localhost:3000\",\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\n};\n\nfunction tokensMatch(\n presentedToken: string | null,\n expectedToken: string,\n): boolean {\n if (!presentedToken) {\n return false;\n }\n const presented = Buffer.from(presentedToken, \"utf8\");\n const expected = Buffer.from(expectedToken, \"utf8\");\n if (presented.length !== expected.length) {\n return false;\n }\n return timingSafeEqual(presented, expected);\n}\n\nfunction verifyBearerToken(\n req: IncomingMessage,\n expectedToken: string,\n): boolean {\n const header = req.headers.authorization;\n if (!header?.startsWith(\"Bearer \")) {\n return false;\n }\n return tokensMatch(header.slice(7), expectedToken);\n}\n\nfunction verifySseToken(\n req: IncomingMessage,\n expectedToken: string,\n serverUrl: string,\n): boolean {\n // EventSource can't set custom headers — accept ?token= query param for SSE only\n if (verifyBearerToken(req, expectedToken)) {\n return true;\n }\n const url = new URL(req.url ?? \"/\", serverUrl);\n const queryToken = url.searchParams.get(\"token\");\n return tokensMatch(queryToken, expectedToken);\n}\n\nfunction jsonResponse(res: ServerResponse, data: unknown, status = 200): void {\n res.writeHead(status, {\n \"Content-Type\": \"application/json\",\n ...CORS_HEADERS,\n });\n res.end(JSON.stringify(data));\n}\n\nfunction handleSnapshot(\n res: ServerResponse,\n apiOptions: StateApiOptions,\n): void {\n const snapshot = getDashboardSnapshot(apiOptions);\n jsonResponse(res, snapshot);\n}\n\nfunction handleConfig(res: ServerResponse, apiOptions: StateApiOptions): void {\n const config = getConfig(apiOptions);\n jsonResponse(res, config);\n}\n\nasync function handleEvents(\n req: IncomingMessage,\n res: ServerResponse,\n apiOptions: StateApiOptions,\n): Promise<void> {\n res.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n ...CORS_HEADERS,\n });\n\n const controller = new AbortController();\n req.on(\"close\", () => controller.abort());\n\n for await (const snapshot of streamEvents({\n ...apiOptions,\n signal: controller.signal,\n })) {\n if (controller.signal.aborted) break;\n res.write(`data: ${JSON.stringify(snapshot)}\\n\\n`);\n }\n\n res.end();\n}\n\nfunction handleHealth(res: ServerResponse, apiOptions: StateApiOptions): void {\n const report = getHealthReport(apiOptions);\n jsonResponse(res, report);\n}\n\n/**\n * Start a localhost-only HTTP server for the tap State API.\n * Resolves after the server is listening. Rejects on bind failure (e.g. EADDRINUSE).\n */\nexport async function startHttpServer(options?: HttpServerOptions): Promise<{\n port: number;\n token: string;\n close: () => Promise<void>;\n}> {\n const port = options?.port ?? 4580;\n // Security: always bind to loopback — no auth layer beyond bearer token\n const host = \"127.0.0.1\";\n const token = options?.token ?? randomBytes(24).toString(\"base64url\");\n const apiOptions: StateApiOptions = {\n repoRoot: options?.repoRoot,\n commsDir: options?.commsDir,\n };\n\n const server = createServer(\n async (req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url ?? \"/\", `http://${host}:${port}`);\n const pathname = url.pathname;\n\n if (req.method === \"OPTIONS\") {\n res.writeHead(204, CORS_HEADERS);\n res.end();\n return;\n }\n\n // Health endpoint is public (no auth required)\n if (req.method === \"GET\" && pathname === \"/health\") {\n handleHealth(res, apiOptions);\n return;\n }\n\n // SSE endpoint: accepts Bearer header OR ?token= query param (EventSource can't set headers)\n if (req.method === \"GET\" && pathname === \"/api/events\") {\n const serverUrl = `http://${host}:${port}`;\n if (!verifySseToken(req, token, serverUrl)) {\n jsonResponse(res, { error: \"Unauthorized\" }, 401);\n return;\n }\n await handleEvents(req, res, apiOptions);\n return;\n }\n\n // All other endpoints require Bearer token only (no query param fallback)\n if (!verifyBearerToken(req, token)) {\n jsonResponse(res, { error: \"Unauthorized\" }, 401);\n return;\n }\n\n try {\n // GET endpoints\n if (req.method === \"GET\") {\n switch (pathname) {\n case \"/api/snapshot\":\n handleSnapshot(res, apiOptions);\n return;\n case \"/api/config\":\n handleConfig(res, apiOptions);\n return;\n // /health handled above (public, no auth)\n }\n }\n\n // POST endpoints (write API)\n // Require application/json Content-Type to prevent CSRF via browser forms\n // (HTML forms cannot send application/json, forcing preflight on cross-origin)\n if (req.method === \"POST\") {\n const contentType = req.headers[\"content-type\"] ?? \"\";\n if (!contentType.includes(\"application/json\")) {\n jsonResponse(\n res,\n { error: \"Content-Type must be application/json\" },\n 415,\n );\n return;\n }\n\n switch (pathname) {\n case \"/api/start\":\n jsonResponse(res, await startAgents());\n return;\n case \"/api/stop\":\n jsonResponse(res, await stopAgents());\n return;\n }\n }\n\n jsonResponse(res, { error: \"Not found\" }, 404);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n jsonResponse(res, { error: message }, 500);\n }\n },\n );\n\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, host, () => {\n server.removeListener(\"error\", reject);\n resolve();\n });\n });\n\n return {\n port,\n token,\n close: () =>\n new Promise<void>((resolve, reject) => {\n server.close((err) => (err ? reject(err) : resolve()));\n }),\n };\n}\n"],"mappings":"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","names":["fs","path","findRepoRoot","fs","path","basename","fs","path","fileURLToPath","version","fs","path","version","major","fs","os","path","spawnSync","execSync","fileURLToPath","resolve","DEFAULT_APP_SERVER_URL","manualCommand","pid","healthy","healthyAt","fs","path","execSync","fs","path","execSync","crypto","fs","path","fs","path","fileURLToPath","fs","path","setNestedKey","path","instance","init_bridge","init_bridge","init_bridge","fs","path","fs","path","resolve","upCommand","downCommand","createServer","randomBytes","randomBytes","createServer","resolve"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/config/resolve.ts","../src/config/index.ts","../src/state.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/util.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/names.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/errors.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/rules.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js","../../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/compile/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/data.json","../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js","../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js","../../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/core.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/.pnpm/ajv@8.18.0/node_modules/ajv/lib/ajv.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/src/formats.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/src/limit.ts","../../../node_modules/.pnpm/ajv-formats@3.0.1_ajv@8.18.0/node_modules/ajv-formats/src/index.ts","../src/engine/bridge-paths.ts","../src/engine/bridge-file-io.ts","../src/engine/bridge-port-network.ts","../src/engine/bridge-process-control.ts","../src/engine/bridge-state.ts","../src/engine/bridge-observability.ts","../src/adapters/common.ts","../src/engine/bridge-codex-command.ts","../src/engine/bridge-windows-spawn.ts","../src/engine/bridge-unix-spawn.ts","../src/engine/bridge-config.ts","../src/engine/bridge-app-server-health.ts","../src/runtime/resolve-node.ts","../src/runtime/index.ts","../src/engine/bridge-app-server-auth.ts","../src/engine/bridge-app-server-lifecycle.ts","../src/engine/bridge-startup.ts","../src/engine/bridge-orchestrator.ts","../src/engine/bridge.ts","../src/engine/dashboard.ts","../src/adapters/claude.ts","../src/artifact-backups.ts","../src/toml.ts","../src/adapters/codex.ts","../src/adapters/gemini.ts","../src/adapters/index.ts","../src/commands/bridge.ts","../src/commands/up.ts","../src/commands/down.ts","../src/index.ts","../src/version.ts","../src/bridges/gemini-ide-companion.ts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/ZodError.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/locales/en.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/errors.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v3/types.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/parse.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/regexes.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/doc.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/en.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/api.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/to-json-schema.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema-processors.js","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/server/zod-compat.ts","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/schemas.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/checks.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/iso.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/errors.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/parse.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/compat.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js","../../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/external.js","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/types.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/interfaces.ts","../../../node_modules/.pnpm/zod-to-json-schema@3.25.1_zod@4.3.6/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/server/zod-json-schema-compat.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/shared/protocol.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/validation/ajv-provider.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/server.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/experimental/tasks/helpers.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/server/index.ts","../../../node_modules/.pnpm/@hono+node-server@1.19.9_hono@4.11.4/node_modules/@hono/node-server/dist/index.mjs","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/server/webStandardStreamableHttp.ts","../../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.27.1_zod@4.3.6/node_modules/@modelcontextprotocol/sdk/src/server/streamableHttp.ts","../src/bridges/gemini-ide-process.ts","../src/api/state.ts","../src/api/http.ts"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n AdapterContext,\n CommandCode,\n InstanceId,\n Platform,\n RuntimeName,\n TapState,\n} from \"./types.js\";\nimport { resolveConfig } from \"./config/index.js\";\n\nconst VALID_RUNTIMES: RuntimeName[] = [\"claude\", \"codex\", \"gemini\"];\n\nexport function isValidRuntime(name: string): name is RuntimeName {\n return VALID_RUNTIMES.includes(name as RuntimeName);\n}\n\nexport function detectPlatform(): Platform {\n return process.platform as Platform;\n}\n\n/** Shared flag: suppress duplicate no-git warnings across modules. */\nexport let _noGitWarned = false;\nconst _loggedWarnings = new Set<string>();\n\nexport function _setNoGitWarned() {\n _noGitWarned = true;\n}\n\nexport function resetLoggedWarnings() {\n _loggedWarnings.clear();\n}\n\nexport function wasWarningLogged(message: string): boolean {\n return _loggedWarnings.has(message);\n}\n\nexport function findRepoRoot(startDir: string = process.cwd()): string {\n let dir = path.resolve(startDir);\n while (true) {\n if (fs.existsSync(path.join(dir, \".git\"))) return dir;\n if (fs.existsSync(path.join(dir, \"package.json\"))) {\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No .git directory found. Resolved tap root via package.json. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return dir;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No git repository or package.json found. Using the current directory as tap root. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return process.cwd();\n}\n\nexport function resolveCommsDir(args: string[], repoRoot: string): string {\n // Check --comms-dir flag\n const idx = args.indexOf(\"--comms-dir\");\n if (idx !== -1 && args[idx + 1]) {\n return path.resolve(args[idx + 1]);\n }\n\n // Delegate to config resolution (env > local > shared > auto)\n const { config } = resolveConfig({}, repoRoot);\n return config.commsDir;\n}\n\nexport function createAdapterContext(\n commsDir: string,\n repoRoot: string,\n): AdapterContext {\n // Use config-resolved stateDir if available\n const { config } = resolveConfig({}, repoRoot);\n return {\n commsDir: path.resolve(commsDir),\n repoRoot: path.resolve(repoRoot),\n stateDir: config.stateDir,\n platform: detectPlatform(),\n };\n}\n\nexport function parseArgs(args: string[]): {\n positional: string[];\n flags: Record<string, string | boolean>;\n} {\n const positional: string[] = [];\n const flags: Record<string, string | boolean> = {};\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (arg.startsWith(\"--\")) {\n const key = arg.slice(2);\n const next = args[i + 1];\n if (next && !next.startsWith(\"--\")) {\n flags[key] = next;\n i++;\n } else {\n flags[key] = true;\n }\n } else if (arg.startsWith(\"-\")) {\n flags[arg.slice(1)] = true;\n } else {\n positional.push(arg);\n }\n }\n\n return { positional, flags };\n}\n\n// ─── JSON mode suppression ──────────────────────────────────────\n\nlet _jsonMode = false;\n\nexport function setJsonMode(enabled: boolean): void {\n _jsonMode = enabled;\n}\n\nexport function log(message: string): void {\n if (!_jsonMode) console.log(` ${message}`);\n}\n\nexport function logSuccess(message: string): void {\n if (!_jsonMode) console.log(` + ${message}`);\n}\n\nexport function logWarn(message: string): void {\n if (_jsonMode) return;\n _loggedWarnings.add(message);\n console.log(` ! ${message}`);\n}\n\nexport function logError(message: string): void {\n if (!_jsonMode) console.error(` x ${message}`);\n}\n\nexport function logHeader(message: string): void {\n if (!_jsonMode) console.log(`\\n ${message}\\n`);\n}\n\n// ─── CLI argument validation ──────────────────────────────────\n\n/**\n * Parse and validate an integer CLI flag within a range.\n * Returns undefined if the flag is not provided, or the validated number.\n * Throws a descriptive error if invalid.\n */\nexport function parseIntFlag(\n value: string | undefined,\n name: string,\n min: number,\n max: number,\n): number | undefined {\n if (value === undefined) return undefined;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < min || parsed > max) {\n throw new RangeError(\n `Invalid ${name}: ${value}. Must be an integer between ${min} and ${max}.`,\n );\n }\n return parsed;\n}\n\n/**\n * Parse and validate a port number (1-65535).\n */\nexport function parsePortFlag(value: string | undefined): number | null {\n if (value === undefined) return null;\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65535) {\n throw new RangeError(\n `Invalid port: ${value}. Must be between 1 and 65535.`,\n );\n }\n return parsed;\n}\n\n// ─── Instance ID utilities ─────────────────────────────────────\n\nexport type ResolveResult =\n | { ok: true; instanceId: InstanceId }\n | { ok: false; code: CommandCode; message: string };\n\n/**\n * Resolve a user-provided identifier to an instance ID.\n * Accepts either an exact instance ID or a runtime name (if unambiguous).\n */\nexport function resolveInstanceId(\n identifier: string,\n state: TapState,\n): ResolveResult {\n // Exact match\n if (state.instances[identifier]) {\n return { ok: true, instanceId: identifier };\n }\n\n // Runtime name → find matching instances\n if (isValidRuntime(identifier)) {\n const matches = Object.values(state.instances).filter(\n (inst) => inst.runtime === identifier,\n );\n\n if (matches.length === 1) {\n return { ok: true, instanceId: matches[0].instanceId };\n }\n\n if (matches.length > 1) {\n const ids = matches.map((m) => m.instanceId).join(\", \");\n return {\n ok: false,\n code: \"TAP_INSTANCE_AMBIGUOUS\",\n message: `Multiple ${identifier} instances found: ${ids}. Specify one explicitly.`,\n };\n }\n }\n\n return {\n ok: false,\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `Instance not found: ${identifier}`,\n };\n}\n\n/** Build an instance ID from runtime + optional name. */\nexport function buildInstanceId(\n runtime: RuntimeName,\n name?: string,\n): InstanceId {\n return name ? `${runtime}-${name}` : runtime;\n}\n\n/** Extract the runtime name from an instance ID. */\nexport function extractRuntimeFromInstanceId(id: InstanceId): RuntimeName {\n for (const r of VALID_RUNTIMES) {\n if (id === r || id.startsWith(`${r}-`)) return r;\n }\n throw new Error(`Cannot extract runtime from instance ID: ${id}`);\n}\n\n/** Check if a port is already claimed by another instance. */\nexport function findPortConflict(\n state: TapState,\n port: number,\n excludeInstanceId?: InstanceId,\n): InstanceId | null {\n for (const [id, inst] of Object.entries(state.instances)) {\n if (id !== excludeInstanceId && inst.port === port) return id;\n }\n return null;\n}\n\n/** Find the next available port starting from basePort (default 4501). */\nexport function findNextAvailablePort(\n state: TapState,\n basePort: number = 4501,\n excludeInstanceId?: InstanceId,\n): number {\n let port = basePort;\n while (findPortConflict(state, port, excludeInstanceId) !== null) {\n port++;\n }\n return port;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n TapSharedConfig,\n TapLocalConfig,\n TapResolvedConfig,\n ConfigSource,\n ConfigResolution,\n} from \"./types.js\";\n\n// ─── File names ────────────────────────────────────────────────\n\nexport const SHARED_CONFIG_FILE = \"tap-config.json\";\nexport const LOCAL_CONFIG_FILE = \"tap-config.local.json\";\nexport const LEGACY_CONFIG_FILE = \".tap-config\";\n\n// ─── Defaults ──────────────────────────────────────────────────\n\nconst DEFAULT_RUNTIME_COMMAND = \"node\";\nconst DEFAULT_APP_SERVER_URL = \"ws://127.0.0.1:4501\";\n\n// ─── Repo root discovery ───────────────────────────────────────\n\nimport { _noGitWarned, _setNoGitWarned, log } from \"../utils.js\";\n\nexport function findRepoRoot(startDir: string = process.cwd()): string {\n let dir = path.resolve(startDir);\n while (true) {\n if (fs.existsSync(path.join(dir, \".git\"))) return dir;\n if (fs.existsSync(path.join(dir, \"package.json\"))) {\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No .git directory found. Resolved tap root via package.json. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return dir;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n if (!_noGitWarned) {\n _setNoGitWarned();\n log(\n \"No git repository or package.json found. Using the current directory as tap root. \" +\n \"That's fine outside git; use --comms-dir to choose a different comms location.\",\n );\n }\n return process.cwd();\n}\n\n// ─── JSON file loading ─────────────────────────────────────────\n\nfunction loadJsonFile<T>(filePath: string): T | null {\n if (!fs.existsSync(filePath)) return null;\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n return JSON.parse(raw) as T;\n } catch {\n return null;\n }\n}\n\nexport function loadSharedConfig(repoRoot: string): TapSharedConfig | null {\n return loadJsonFile<TapSharedConfig>(path.join(repoRoot, SHARED_CONFIG_FILE));\n}\n\nexport function loadLocalConfig(repoRoot: string): TapLocalConfig | null {\n return loadJsonFile<TapLocalConfig>(path.join(repoRoot, LOCAL_CONFIG_FILE));\n}\n\nfunction readLegacyShellValue(configText: string, key: string): string | null {\n const match = configText.match(new RegExp(`^${key}=\"?(.+?)\"?$`, \"m\"));\n return match?.[1]?.trim() || null;\n}\n\nfunction loadLegacyShellConfig(repoRoot: string): TapSharedConfig | null {\n const filePath = path.join(repoRoot, LEGACY_CONFIG_FILE);\n if (!fs.existsSync(filePath)) return null;\n\n try {\n const raw = fs.readFileSync(filePath, \"utf-8\");\n const commsDir = readLegacyShellValue(raw, \"TAP_COMMS_DIR\");\n if (!commsDir) return null;\n return { commsDir };\n } catch {\n return null;\n }\n}\n\n// ─── CLI overrides ─────────────────────────────────────────────\n\nexport interface ConfigOverrides {\n commsDir?: string;\n stateDir?: string;\n runtimeCommand?: string;\n appServerUrl?: string;\n}\n\n// ─── Resolution ────────────────────────────────────────────────\n\n/**\n * Resolve config with priority: CLI flag > env > local config > shared config > auto.\n */\nexport function resolveConfig(\n overrides: ConfigOverrides = {},\n startDir?: string,\n): ConfigResolution {\n const repoRoot = findRepoRoot(startDir);\n const shared = loadSharedConfig(repoRoot) ?? {};\n const local = loadLocalConfig(repoRoot) ?? {};\n const legacy = loadLegacyShellConfig(repoRoot) ?? {};\n\n const sources: Record<keyof TapResolvedConfig, ConfigSource> = {\n repoRoot: \"auto\",\n commsDir: \"auto\",\n stateDir: \"auto\",\n runtimeCommand: \"auto\",\n appServerUrl: \"auto\",\n towerName: \"auto\",\n };\n\n // ─── commsDir ──────────────────────────────────────────────\n let commsDir: string;\n if (overrides.commsDir) {\n commsDir = resolvePath(repoRoot, overrides.commsDir);\n sources.commsDir = \"cli-flag\";\n } else if (process.env.TAP_COMMS_DIR) {\n commsDir = resolvePath(repoRoot, process.env.TAP_COMMS_DIR);\n sources.commsDir = \"env\";\n } else if (local.commsDir) {\n commsDir = resolvePath(repoRoot, local.commsDir);\n sources.commsDir = \"local-config\";\n } else if (shared.commsDir) {\n commsDir = resolvePath(repoRoot, shared.commsDir);\n sources.commsDir = \"shared-config\";\n } else if (legacy.commsDir) {\n commsDir = resolvePath(repoRoot, legacy.commsDir);\n sources.commsDir = \"legacy-shell-config\";\n } else {\n commsDir = path.join(repoRoot, \"tap-comms\");\n }\n\n // ─── stateDir ──────────────────────────────────────────────\n let stateDir: string;\n if (overrides.stateDir) {\n stateDir = resolvePath(repoRoot, overrides.stateDir);\n sources.stateDir = \"cli-flag\";\n } else if (process.env.TAP_STATE_DIR) {\n stateDir = resolvePath(repoRoot, process.env.TAP_STATE_DIR);\n sources.stateDir = \"env\";\n } else if (local.stateDir) {\n stateDir = resolvePath(repoRoot, local.stateDir);\n sources.stateDir = \"local-config\";\n } else if (shared.stateDir) {\n stateDir = resolvePath(repoRoot, shared.stateDir);\n sources.stateDir = \"shared-config\";\n } else {\n stateDir = path.join(repoRoot, \".tap-comms\");\n }\n\n // ─── runtimeCommand ────────────────────────────────────────\n let runtimeCommand: string;\n if (overrides.runtimeCommand) {\n runtimeCommand = overrides.runtimeCommand;\n sources.runtimeCommand = \"cli-flag\";\n } else if (process.env.TAP_RUNTIME_COMMAND) {\n runtimeCommand = process.env.TAP_RUNTIME_COMMAND;\n sources.runtimeCommand = \"env\";\n } else if (local.runtimeCommand) {\n runtimeCommand = local.runtimeCommand;\n sources.runtimeCommand = \"local-config\";\n } else if (shared.runtimeCommand) {\n runtimeCommand = shared.runtimeCommand;\n sources.runtimeCommand = \"shared-config\";\n } else {\n runtimeCommand = DEFAULT_RUNTIME_COMMAND;\n }\n\n // ─── appServerUrl ──────────────────────────────────────────\n let appServerUrl: string;\n if (overrides.appServerUrl) {\n appServerUrl = overrides.appServerUrl;\n sources.appServerUrl = \"cli-flag\";\n } else if (process.env.TAP_APP_SERVER_URL) {\n appServerUrl = process.env.TAP_APP_SERVER_URL;\n sources.appServerUrl = \"env\";\n } else if (local.appServerUrl) {\n appServerUrl = local.appServerUrl;\n sources.appServerUrl = \"local-config\";\n } else if (shared.appServerUrl) {\n appServerUrl = shared.appServerUrl;\n sources.appServerUrl = \"shared-config\";\n } else {\n appServerUrl = DEFAULT_APP_SERVER_URL;\n }\n\n // ─── towerName ──────────────────────────────────────────────\n const towerName = local.towerName ?? shared.towerName ?? null;\n\n return {\n config: {\n repoRoot,\n commsDir,\n stateDir,\n runtimeCommand,\n appServerUrl,\n towerName,\n },\n sources,\n };\n}\n\n// ─── Save helpers ──────────────────────────────────────────────\n\nexport function saveSharedConfig(\n repoRoot: string,\n config: TapSharedConfig,\n): void {\n const filePath = path.join(repoRoot, SHARED_CONFIG_FILE);\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, filePath);\n}\n\nexport function saveLocalConfig(\n repoRoot: string,\n config: TapLocalConfig,\n): void {\n const filePath = path.join(repoRoot, LOCAL_CONFIG_FILE);\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, filePath);\n}\n\n// ─── Helpers ───────────────────────────────────────────────────\n\n/** Resolve a path relative to repoRoot, or keep absolute as-is. */\nfunction resolvePath(repoRoot: string, p: string): string {\n const normalized = normalizeTapPath(p);\n return path.isAbsolute(normalized)\n ? normalized\n : path.resolve(repoRoot, normalized);\n}\n\nfunction normalizeTapPath(input: string): string {\n const trimmed = input.trim().replace(/^[\"'`]+|[\"'`]+$/g, \"\");\n if (/^[A-Za-z]:[\\\\/]/.test(trimmed)) {\n return trimmed;\n }\n\n // MSYS/Git Bash `/c/...` → `C:\\...` conversion — Windows only.\n // On POSIX, `/d/...` is a legitimate absolute path and must not be rewritten.\n if (process.platform === \"win32\") {\n const match = trimmed.match(/^\\/([A-Za-z])\\/(.*)$/);\n if (match) {\n return `${match[1].toUpperCase()}:\\\\${match[2].replace(/\\//g, \"\\\\\")}`;\n }\n }\n\n return trimmed;\n}\n","export type {\n TapSharedConfig,\n TapLocalConfig,\n TapResolvedConfig,\n ConfigSource,\n ConfigResolution,\n} from \"./types.js\";\n\nexport {\n LEGACY_CONFIG_FILE,\n SHARED_CONFIG_FILE,\n LOCAL_CONFIG_FILE,\n findRepoRoot,\n loadSharedConfig,\n loadLocalConfig,\n resolveConfig,\n saveSharedConfig,\n saveLocalConfig,\n} from \"./resolve.js\";\n\nexport type { ConfigOverrides } from \"./resolve.js\";\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as crypto from \"node:crypto\";\nimport type {\n TapState,\n TapStateV1,\n InstanceState,\n InstanceId,\n RuntimeName,\n OwnedArtifact,\n} from \"./types.js\";\nimport { resolveConfig } from \"./config/index.js\";\n\nconst STATE_FILE = \"state.json\";\nconst SCHEMA_VERSION = 2;\n\nexport function getStateDir(repoRoot: string): string {\n const { config } = resolveConfig({}, repoRoot);\n return config.stateDir;\n}\n\nexport function getStatePath(repoRoot: string): string {\n return path.join(getStateDir(repoRoot), STATE_FILE);\n}\n\nexport function stateExists(repoRoot: string): boolean {\n return fs.existsSync(getStatePath(repoRoot));\n}\n\n// ─── v1 → v2 Migration ────────────────────────────────────────\n\nexport function migrateStateV1toV2(v1: TapStateV1): TapState {\n const instances: Record<InstanceId, InstanceState> = {};\n\n for (const [runtime, rs] of Object.entries(v1.runtimes)) {\n if (!rs) continue;\n const instanceId = runtime as InstanceId; // default instance = runtime name\n instances[instanceId] = {\n instanceId,\n runtime: runtime as RuntimeName,\n agentName: null,\n port: null,\n headless: null,\n ...rs,\n };\n }\n\n return {\n schemaVersion: SCHEMA_VERSION,\n createdAt: v1.createdAt,\n updatedAt: v1.updatedAt,\n commsDir: v1.commsDir,\n repoRoot: v1.repoRoot,\n packageVersion: v1.packageVersion,\n instances,\n };\n}\n\n// ─── Load / Save ───────────────────────────────────────────────\n\nexport function loadState(repoRoot: string): TapState | null {\n const statePath = getStatePath(repoRoot);\n if (!fs.existsSync(statePath)) return null;\n\n const raw = fs.readFileSync(statePath, \"utf-8\");\n const parsed = JSON.parse(raw);\n\n // Auto-migrate v1 → v2\n if (parsed.schemaVersion === 1 || parsed.runtimes) {\n const migrated = migrateStateV1toV2(parsed as TapStateV1);\n saveState(repoRoot, migrated);\n return migrated;\n }\n\n return parsed as TapState;\n}\n\nexport function saveState(repoRoot: string, state: TapState): void {\n const stateDir = getStateDir(repoRoot);\n fs.mkdirSync(stateDir, { recursive: true });\n const statePath = getStatePath(repoRoot);\n const tmp = `${statePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(state, null, 2), \"utf-8\");\n fs.renameSync(tmp, statePath);\n}\n\nexport function createInitialState(\n commsDir: string,\n repoRoot: string,\n packageVersion: string,\n): TapState {\n const now = new Date().toISOString();\n return {\n schemaVersion: SCHEMA_VERSION,\n createdAt: now,\n updatedAt: now,\n commsDir: path.resolve(commsDir),\n repoRoot: path.resolve(repoRoot),\n packageVersion,\n instances: {},\n };\n}\n\n// ─── Instance CRUD ─────────────────────────────────────────────\n\nexport function updateInstanceState(\n state: TapState,\n instanceId: InstanceId,\n instanceState: InstanceState,\n): TapState {\n return {\n ...state,\n updatedAt: new Date().toISOString(),\n instances: {\n ...state.instances,\n [instanceId]: instanceState,\n },\n };\n}\n\nexport function removeInstanceState(\n state: TapState,\n instanceId: InstanceId,\n): TapState {\n const { [instanceId]: _removed, ...remaining } = state.instances;\n return {\n ...state,\n updatedAt: new Date().toISOString(),\n instances: remaining,\n };\n}\n\nexport function getInstalledInstances(state: TapState): InstanceId[] {\n return (Object.keys(state.instances) as InstanceId[]).filter(\n (id) => state.instances[id]?.installed,\n );\n}\n\nexport function getInstanceArtifacts(\n state: TapState,\n instanceId: InstanceId,\n): OwnedArtifact[] {\n return state.instances[instanceId]?.ownedArtifacts ?? [];\n}\n\n// ─── Backup ────────────────────────────────────────────────────\n\nexport function ensureBackupDir(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n const backupDir = path.join(stateDir, \"backups\", instanceId);\n fs.mkdirSync(backupDir, { recursive: true });\n return backupDir;\n}\n\nexport function backupFile(filePath: string, backupDir: string): string {\n const basename = path.basename(filePath);\n const hash = fileHash(filePath);\n const backupPath = path.join(backupDir, `${basename}.${hash}.bak`);\n fs.copyFileSync(filePath, backupPath);\n return backupPath;\n}\n\nexport function fileHash(filePath: string): string {\n if (!fs.existsSync(filePath)) return \"\";\n const content = fs.readFileSync(filePath);\n return crypto.createHash(\"sha256\").update(content).digest(\"hex\").slice(0, 16);\n}\n","// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n const func = esc !== true ? escape : unescape\n if (component.scheme !== undefined) {\n component.scheme = func(component.scheme)\n }\n if (component.userinfo !== undefined) {\n component.userinfo = func(component.userinfo)\n }\n if (component.host !== undefined) {\n component.host = func(component.host)\n }\n if (component.path !== undefined) {\n component.path = func(component.path)\n }\n if (component.query !== undefined) {\n component.query = func(component.query)\n }\n if (component.fragment !== undefined) {\n component.fragment = func(component.fragment)\n }\n return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = component.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (serialize(parse(uri, options), options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escape(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = unescape(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n specialNumbers?: \"fast\" | \"null\" // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = {}\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n if ($data) {\n const {regExp} = it.opts.code\n const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n const valid = gen.let(\"valid\")\n gen.try(\n () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n () => gen.assign(valid, false)\n )\n cxt.fail$data(_`!${valid}`)\n } else {\n const regExp = usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n | \"date\"\n | \"time\"\n | \"date-time\"\n | \"iso-time\"\n | \"iso-date-time\"\n | \"duration\"\n | \"uri\"\n | \"uri-reference\"\n | \"uri-template\"\n | \"url\"\n | \"email\"\n | \"hostname\"\n | \"ipv4\"\n | \"ipv6\"\n | \"regex\"\n | \"uuid\"\n | \"json-pointer\"\n | \"json-pointer-uri-fragment\"\n | \"relative-json-pointer\"\n | \"byte\"\n | \"int32\"\n | \"int64\"\n | \"float\"\n | \"double\"\n | \"password\"\n | \"binary\"\n\nexport type DefinedFormats = {\n [key in FormatName]: Format\n}\n\nfunction fmtDef(\n validate: RegExp | FormatValidator<string>,\n compare: FormatCompare<string>\n): FormatDefinition<string> {\n return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: fmtDef(date, compareDate),\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: fmtDef(getTime(true), compareTime),\n \"date-time\": fmtDef(getDateTime(true), compareDateTime),\n \"iso-time\": fmtDef(getTime(), compareIsoTime),\n \"iso-date-time\": fmtDef(getDateTime(), compareIsoDateTime),\n // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n uri,\n \"uri-reference\":\n /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n // uri-template: https://tools.ietf.org/html/rfc6570\n \"uri-template\":\n /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n // For the source: https://gist.github.com/dperini/729294\n // For test cases: https://mathiasbynens.be/demo/url-regex\n url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n email:\n /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname:\n /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/,\n ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n // byte: https://github.com/miguelmota/is-base64\n byte,\n // signed 32 bit integer\n int32: {type: \"number\", validate: validateInt32},\n // signed 64 bit integer\n int64: {type: \"number\", validate: validateInt64},\n // C-type float\n float: {type: \"number\", validate: validateNumber},\n // C-type double\n double: {type: \"number\", validate: validateNumber},\n // hint to the UI to hide input strings\n password: true,\n // unchecked string payload\n binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n ...fullFormats,\n date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n time: fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareTime\n ),\n \"date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\dt(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n compareDateTime\n ),\n \"iso-time\": fmtDef(\n /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoTime\n ),\n \"iso-date-time\": fmtDef(\n /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n compareIsoDateTime\n ),\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n email:\n /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n const matches: string[] | null = DATE.exec(str)\n if (!matches) return false\n const year: number = +matches[1]\n const month: number = +matches[2]\n const day: number = +matches[3]\n return (\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n if (!(d1 && d2)) return undefined\n if (d1 > d2) return 1\n if (d1 < d2) return -1\n return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d(?:\\.\\d+)?)(z|([+-])(\\d\\d)(?::?(\\d\\d))?)?$/i\n\nfunction getTime(strictTimeZone?: boolean): (str: string) => boolean {\n return function time(str: string): boolean {\n const matches: string[] | null = TIME.exec(str)\n if (!matches) return false\n const hr: number = +matches[1]\n const min: number = +matches[2]\n const sec: number = +matches[3]\n const tz: string | undefined = matches[4]\n const tzSign: number = matches[5] === \"-\" ? -1 : 1\n const tzH: number = +(matches[6] || 0)\n const tzM: number = +(matches[7] || 0)\n if (tzH > 23 || tzM > 59 || (strictTimeZone && !tz)) return false\n if (hr <= 23 && min <= 59 && sec < 60) return true\n // leap second\n const utcMin = min - tzM * tzSign\n const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0)\n return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61\n }\n}\n\nfunction compareTime(s1: string, s2: string): number | undefined {\n if (!(s1 && s2)) return undefined\n const t1 = new Date(\"2020-01-01T\" + s1).valueOf()\n const t2 = new Date(\"2020-01-01T\" + s2).valueOf()\n if (!(t1 && t2)) return undefined\n return t1 - t2\n}\n\nfunction compareIsoTime(t1: string, t2: string): number | undefined {\n if (!(t1 && t2)) return undefined\n const a1 = TIME.exec(t1)\n const a2 = TIME.exec(t2)\n if (!(a1 && a2)) return undefined\n t1 = a1[1] + a1[2] + a1[3]\n t2 = a2[1] + a2[2] + a2[3]\n if (t1 > t2) return 1\n if (t1 < t2) return -1\n return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction getDateTime(strictTimeZone?: boolean): (str: string) => boolean {\n const time = getTime(strictTimeZone)\n\n return function date_time(str: string): boolean {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1])\n }\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const d1 = new Date(dt1).valueOf()\n const d2 = new Date(dt2).valueOf()\n if (!(d1 && d2)) return undefined\n return d1 - d2\n}\n\nfunction compareIsoDateTime(dt1: string, dt2: string): number | undefined {\n if (!(dt1 && dt2)) return undefined\n const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n const res = compareDate(d1, d2)\n if (res === undefined) return undefined\n return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n BYTE.lastIndex = 0\n return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n if (Z_ANCHOR.test(str)) return false\n try {\n new RegExp(str)\n return true\n } catch (e) {\n return false\n }\n}\n","import type Ajv from \"ajv\"\nimport type {\n Plugin,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n Code,\n Name,\n ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const {gen, data, schemaCode, keyword, it} = cxt\n const {opts, self} = it\n if (!opts.validateFormats) return\n\n const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n if (fCxt.$data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n cxt.fail$data(\n or(\n _`typeof ${fmt} != \"object\"`,\n _`${fmt} instanceof RegExp`,\n _`typeof ${fmt}.compare != \"function\"`,\n compareCode(fmt)\n )\n )\n }\n\n function validateFormat(): void {\n const format = fCxt.schema as string\n const fmtDef: AddedFormat | undefined = self.formats[format]\n if (!fmtDef || fmtDef === true) return\n if (\n typeof fmtDef != \"object\" ||\n fmtDef instanceof RegExp ||\n typeof fmtDef.compare != \"function\"\n ) {\n throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n }\n const fmt = gen.scopeValue(\"formats\", {\n key: format,\n ref: fmtDef,\n code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n })\n\n cxt.fail$data(compareCode(fmt))\n }\n\n function compareCode(fmt: Name): Code {\n return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n }\n },\n dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n ajv.addKeyword(formatLimitDefinition)\n return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n DefinedFormats,\n FormatMode,\n FormatName,\n formatNames,\n fastFormats,\n fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n mode?: FormatMode\n formats?: FormatName[]\n keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n ajv: Ajv,\n opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n if (Array.isArray(opts)) {\n addFormats(ajv, opts, fullFormats, fullName)\n return ajv\n }\n const [formats, exportName] =\n opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n const list = opts.formats || formatNames\n addFormats(ajv, list, formats, exportName)\n if (opts.keywords) formatLimit(ajv)\n return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n const formats = mode === \"fast\" ? fastFormats : fullFormats\n const f = formats[name]\n if (!f) throw new Error(`Unknown format \"${name}\"`)\n return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","import * as path from \"node:path\";\nimport type { InstanceId } from \"../types.js\";\n\nexport function appServerLogFilePath(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n return path.join(stateDir, \"logs\", `app-server-${instanceId}.log`);\n}\n\nexport function appServerGatewayLogFilePath(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n return path.join(stateDir, \"logs\", `app-server-gateway-${instanceId}.log`);\n}\n\nexport function appServerGatewayTokenFilePath(\n stateDir: string,\n instanceId: InstanceId,\n): string {\n return path.join(\n stateDir,\n \"secrets\",\n `app-server-gateway-${instanceId}.token`,\n );\n}\n\nexport function stderrLogFilePath(logPath: string): string {\n return `${logPath}.stderr`;\n}\n\nexport function pidFilePath(stateDir: string, instanceId: InstanceId): string {\n return path.join(stateDir, \"pids\", `bridge-${instanceId}.json`);\n}\n\nexport function logFilePath(stateDir: string, instanceId: InstanceId): string {\n return path.join(stateDir, \"logs\", `bridge-${instanceId}.log`);\n}\n\nexport function runtimeHeartbeatFilePath(runtimeStateDir: string): string {\n return path.join(runtimeStateDir, \"heartbeat.json\");\n}\n\nexport function runtimeThreadStateFilePath(runtimeStateDir: string): string {\n return path.join(runtimeStateDir, \"thread.json\");\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nconst APP_SERVER_AUTH_FILE_MODE = 0o600;\n\nexport function writeProtectedTextFile(filePath: string, content: string): void {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, content, {\n encoding: \"utf-8\",\n mode: APP_SERVER_AUTH_FILE_MODE,\n });\n fs.chmodSync(tmp, APP_SERVER_AUTH_FILE_MODE);\n fs.renameSync(tmp, filePath);\n fs.chmodSync(filePath, APP_SERVER_AUTH_FILE_MODE);\n}\n\nexport function removeFileIfExists(filePath: string | null | undefined): void {\n if (!filePath || !fs.existsSync(filePath)) {\n return;\n }\n\n try {\n fs.unlinkSync(filePath);\n } catch {\n // Best-effort cleanup only.\n }\n}\n\nexport function toPowerShellSingleQuotedString(value: string): string {\n return `'${value.replace(/'/g, \"''\")}'`;\n}\n\nexport function toPowerShellStringArrayLiteral(values: string[]): string {\n return `@(${values.map(toPowerShellSingleQuotedString).join(\", \")})`;\n}\n","import * as net from \"node:net\";\nimport type { TapState, InstanceId } from \"../types.js\";\n\nconst DEFAULT_APP_SERVER_URL = \"ws://127.0.0.1:4501\";\n\ninterface WebSocketLike {\n addEventListener(\n type: \"open\" | \"error\" | \"close\",\n listener: () => void,\n options?: { once?: boolean },\n ): void;\n close(code?: number, reason?: string): void;\n}\n\nexport type WebSocketCtor = new (\n url: string,\n protocols?: string | string[],\n) => WebSocketLike;\n\nexport function getWebSocketCtor(): WebSocketCtor | null {\n const candidate = (globalThis as { WebSocket?: unknown }).WebSocket;\n return typeof candidate === \"function\" ? (candidate as WebSocketCtor) : null;\n}\n\nexport function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function isLoopbackHost(hostname: string): boolean {\n return hostname === \"127.0.0.1\" || hostname === \"localhost\";\n}\n\nexport async function allocateLoopbackPort(hostname: string): Promise<number> {\n const bindHost = hostname === \"localhost\" ? \"127.0.0.1\" : hostname;\n return await new Promise<number>((resolve, reject) => {\n const server = net.createServer();\n server.unref();\n server.once(\"error\", reject);\n server.listen(0, bindHost, () => {\n const address = server.address();\n if (!address || typeof address === \"string\") {\n server.close(() => {\n reject(new Error(\"Failed to allocate a loopback port\"));\n });\n return;\n }\n\n const port = address.port;\n server.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve(port);\n });\n });\n });\n}\n\nexport async function isTcpPortAvailable(\n hostname: string,\n port: number,\n): Promise<boolean> {\n const bindHost = hostname === \"localhost\" ? \"127.0.0.1\" : hostname;\n return await new Promise<boolean>((resolve) => {\n const server = net.createServer();\n server.unref();\n server.once(\"error\", () => resolve(false));\n server.listen(port, bindHost, () => {\n server.close((error) => resolve(!error));\n });\n });\n}\n\n/**\n * Wait for a TCP port to become available after a process is stopped.\n * Polls isTcpPortAvailable at intervals until the port is free or timeout.\n * Returns true if the port was released, false if timeout expired.\n */\nexport async function waitForPortRelease(\n url: string,\n timeoutMs: number = 10_000,\n intervalMs: number = 500,\n): Promise<boolean> {\n let hostname: string;\n let port: number;\n try {\n const parsed = new URL(url);\n hostname = parsed.hostname;\n port = parseInt(parsed.port, 10);\n } catch {\n return true; // Can't parse URL — assume port is free\n }\n\n if (!port || !Number.isFinite(port)) return true;\n\n const deadline = Date.now() + timeoutMs;\n while (Date.now() < deadline) {\n if (await isTcpPortAvailable(hostname, port)) {\n return true;\n }\n await delay(intervalMs);\n }\n return false;\n}\n\nexport async function findNextAvailableAppServerPort(\n state: TapState,\n baseUrl: string | undefined,\n basePort: number = 4501,\n excludeInstanceId?: InstanceId,\n): Promise<number> {\n let hostname = \"127.0.0.1\";\n try {\n hostname = new URL(baseUrl ?? DEFAULT_APP_SERVER_URL).hostname;\n } catch {\n // Fall back to the default loopback host.\n }\n\n const maxAttempts = 1000;\n let port = basePort;\n for (let attempt = 0; attempt < maxAttempts; attempt += 1, port += 1) {\n const claimedInState = Object.entries(state.instances).some(\n ([id, inst]) => id !== excludeInstanceId && inst.port === port,\n );\n if (claimedInState) {\n continue;\n }\n\n if (!isLoopbackHost(hostname)) {\n return port;\n }\n\n if (await isTcpPortAvailable(hostname, port)) {\n return port;\n }\n }\n\n throw new Error(\n `Failed to find a free app-server port starting at ${basePort}`,\n );\n}\n","import { execSync } from \"node:child_process\";\nimport type { AppServerState, Platform } from \"../types.js\";\nimport { delay } from \"./bridge-port-network.js\";\nimport { removeFileIfExists } from \"./bridge-file-io.js\";\n\nexport function isProcessAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch {\n return false;\n }\n}\n\nexport async function terminateProcess(\n pid: number,\n platform: Platform,\n): Promise<boolean> {\n if (!isProcessAlive(pid)) {\n return false;\n }\n\n try {\n if (platform === \"win32\") {\n execSync(`taskkill /PID ${pid} /F /T`, { stdio: \"pipe\" });\n } else {\n process.kill(pid, \"SIGTERM\");\n await delay(2_000);\n if (isProcessAlive(pid)) {\n process.kill(pid, \"SIGKILL\");\n }\n }\n } catch {\n // Best effort. The caller only needs a boolean outcome.\n }\n\n return !isProcessAlive(pid);\n}\n\nexport async function stopManagedAppServer(\n appServer: AppServerState,\n platform: Platform,\n): Promise<boolean> {\n if (!appServer.managed) {\n return false;\n }\n\n let stopped = false;\n if (appServer.auth?.gatewayPid != null) {\n stopped =\n (await terminateProcess(appServer.auth.gatewayPid, platform)) || stopped;\n }\n if (appServer.pid != null) {\n stopped = (await terminateProcess(appServer.pid, platform)) || stopped;\n }\n removeFileIfExists(appServer.auth?.tokenPath);\n return stopped;\n}\n","/**\n * Bridge state management — persistence, process liveness, runtime state readers.\n *\n * Extracted from engine/bridge.ts (Phase 2) to isolate state CRUD and\n * runtime heartbeat/thread readers.\n * Observability helpers (heartbeat age, turn stuck, log rotation) live in\n * bridge-observability.ts.\n *\n * @module engine/bridge-state\n */\n\nimport * as fs from \"node:fs\";\nimport type { InstanceId, BridgeState } from \"../types.js\";\nimport {\n pidFilePath,\n runtimeHeartbeatFilePath,\n runtimeThreadStateFilePath,\n} from \"./bridge-paths.js\";\nimport { writeProtectedTextFile } from \"./bridge-file-io.js\";\nimport { isProcessAlive } from \"./bridge-process-control.js\";\n\n// ─── Types ────────────────────────────────────────────────────\n\nexport interface RuntimeBridgeHeartbeat {\n updatedAt?: string;\n threadId?: string | null;\n threadCwd?: string | null;\n activeTurnId?: string | null;\n turnStartedAt?: string | null;\n lastTurnStatus?: string | null;\n lastError?: string | null;\n connected?: boolean;\n initialized?: boolean;\n}\n\nexport interface RuntimeBridgeThreadState {\n threadId: string;\n updatedAt?: string;\n appServerUrl?: string;\n ephemeral?: boolean;\n cwd?: string | null;\n}\n\n// ─── Runtime state readers ────────────────────────────────────\n\nexport function loadRuntimeBridgeHeartbeat(\n bridgeState:\n | {\n runtimeStateDir?: string | null;\n }\n | null\n | undefined,\n): RuntimeBridgeHeartbeat | null {\n const runtimeStateDir = bridgeState?.runtimeStateDir;\n if (!runtimeStateDir) {\n return null;\n }\n\n const heartbeatPath = runtimeHeartbeatFilePath(runtimeStateDir);\n if (!fs.existsSync(heartbeatPath)) {\n return null;\n }\n\n try {\n return JSON.parse(\n fs.readFileSync(heartbeatPath, \"utf-8\"),\n ) as RuntimeBridgeHeartbeat;\n } catch {\n return null;\n }\n}\n\nexport function loadRuntimeBridgeThreadState(\n bridgeState:\n | {\n runtimeStateDir?: string | null;\n }\n | null\n | undefined,\n): RuntimeBridgeThreadState | null {\n const runtimeStateDir = bridgeState?.runtimeStateDir;\n if (!runtimeStateDir) {\n return null;\n }\n\n const threadPath = runtimeThreadStateFilePath(runtimeStateDir);\n if (!fs.existsSync(threadPath)) {\n return null;\n }\n\n try {\n const parsed = JSON.parse(\n fs.readFileSync(threadPath, \"utf-8\"),\n ) as RuntimeBridgeThreadState;\n return parsed.threadId ? parsed : null;\n } catch {\n return null;\n }\n}\n\n// ─── Bridge state CRUD ────────────────────────────────────────\n\nexport function loadBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n): BridgeState | null {\n const pidPath = pidFilePath(stateDir, instanceId);\n if (!fs.existsSync(pidPath)) return null;\n\n try {\n const raw = fs.readFileSync(pidPath, \"utf-8\");\n return JSON.parse(raw) as BridgeState;\n } catch {\n return null;\n }\n}\n\nexport function saveBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n state: BridgeState,\n): void {\n const pidPath = pidFilePath(stateDir, instanceId);\n const serializable = JSON.parse(JSON.stringify(state)) as BridgeState & {\n appServer?: { auth?: { token?: string } | null } | null;\n };\n if (serializable.appServer?.auth) {\n delete serializable.appServer.auth.token;\n }\n writeProtectedTextFile(pidPath, JSON.stringify(serializable, null, 2));\n}\n\nexport function clearBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n): void {\n const pidPath = pidFilePath(stateDir, instanceId);\n if (fs.existsSync(pidPath)) {\n fs.unlinkSync(pidPath);\n }\n}\n\n// ─── Process liveness ─────────────────────────────────────────\n\nexport function isBridgeRunning(\n stateDir: string,\n instanceId: InstanceId,\n): boolean {\n const state = loadBridgeState(stateDir, instanceId);\n if (!state) return false;\n return isProcessAlive(state.pid);\n}\n","/**\n * Bridge observability — heartbeat monitoring, turn stuck detection, log rotation.\n *\n * Consolidated from bridge-state.ts (heartbeat/turn functions) and\n * bridge-log-rotate.ts into a single observability module.\n *\n * @module engine/bridge-observability\n */\n\nimport * as fs from \"node:fs\";\nimport type { InstanceId, BridgeState } from \"../types.js\";\nimport {\n loadBridgeState,\n saveBridgeState,\n clearBridgeState,\n loadRuntimeBridgeHeartbeat,\n} from \"./bridge-state.js\";\nimport { isProcessAlive } from \"./bridge-process-control.js\";\n\n// ─── Re-export for convenience (moved from bridge-state.ts) ──\n\n// ─── Heartbeat ────────────────────────────────────────────────\n\n/**\n * Resolve the most recent heartbeat timestamp from runtime or persisted state.\n */\nfunction loadRuntimeHeartbeatTimestamp(\n runtimeStateDir: string | null | undefined,\n): string | null {\n const heartbeat = loadRuntimeBridgeHeartbeat({ runtimeStateDir });\n return typeof heartbeat?.updatedAt === \"string\" ? heartbeat.updatedAt : null;\n}\n\nfunction resolveHeartbeatTimestamp(\n state: BridgeState | null | undefined,\n): string | null {\n return (\n loadRuntimeHeartbeatTimestamp(state?.runtimeStateDir) ??\n state?.lastHeartbeat ??\n null\n );\n}\n\n/**\n * Update the heartbeat timestamp for a running bridge.\n * Only the owning process (matching PID) can update the heartbeat.\n */\nexport function updateBridgeHeartbeat(\n stateDir: string,\n instanceId: InstanceId,\n): void {\n const state = loadBridgeState(stateDir, instanceId);\n if (!state) return;\n\n if (state.pid !== process.pid) return;\n\n state.lastHeartbeat = new Date().toISOString();\n saveBridgeState(stateDir, instanceId, state);\n}\n\n/**\n * Get heartbeat age in seconds. Returns null if no state or no heartbeat.\n */\nexport function getHeartbeatAge(\n stateDir: string,\n instanceId: InstanceId,\n): number | null {\n const state = loadBridgeState(stateDir, instanceId);\n const heartbeat = resolveHeartbeatTimestamp(state);\n if (!heartbeat) return null;\n const heartbeatTime = new Date(heartbeat).getTime();\n if (isNaN(heartbeatTime)) return null;\n return Math.floor((Date.now() - heartbeatTime) / 1000);\n}\n\nexport function getBridgeHeartbeatTimestamp(\n stateDir: string,\n instanceId: InstanceId,\n): string | null {\n return resolveHeartbeatTimestamp(loadBridgeState(stateDir, instanceId));\n}\n\n// ─── Bridge status ────────────────────────────────────────────\n\nexport function getBridgeStatus(\n stateDir: string,\n instanceId: InstanceId,\n): \"running\" | \"stopped\" | \"stale\" {\n const state = loadBridgeState(stateDir, instanceId);\n if (!state) return \"stopped\";\n\n if (!isProcessAlive(state.pid)) {\n clearBridgeState(stateDir, instanceId);\n return \"stale\";\n }\n\n return \"running\";\n}\n\n// ─── Turn stuck detection ─────────────────────────────────────\n\nexport interface TurnInfo {\n activeTurnId: string | null;\n lastTurnStatus: string | null;\n updatedAt: string | null;\n ageSeconds: number | null;\n stuck: boolean;\n}\n\n/**\n * Get current turn info from runtime heartbeat.\n * A turn is considered stuck if activeTurnId is set and turnStartedAt\n * exceeds the threshold.\n */\nexport function getTurnInfo(\n stateDir: string,\n instanceId: InstanceId,\n stuckThresholdSeconds: number = 300,\n): TurnInfo | null {\n const state = loadBridgeState(stateDir, instanceId);\n if (!state) return null;\n\n const heartbeat = loadRuntimeBridgeHeartbeat(state);\n if (!heartbeat) return null;\n\n const activeTurnId = heartbeat.activeTurnId ?? null;\n const lastTurnStatus = heartbeat.lastTurnStatus ?? null;\n const turnTimestamp = heartbeat.turnStartedAt ?? null;\n const updatedAt = turnTimestamp ?? heartbeat.updatedAt ?? null;\n\n let ageSeconds: number | null = null;\n if (turnTimestamp) {\n const ts = new Date(turnTimestamp).getTime();\n if (!isNaN(ts)) {\n ageSeconds = Math.floor((Date.now() - ts) / 1000);\n }\n }\n\n const stuck =\n activeTurnId !== null &&\n ageSeconds !== null &&\n ageSeconds > stuckThresholdSeconds;\n\n return { activeTurnId, lastTurnStatus, updatedAt, ageSeconds, stuck };\n}\n\n/**\n * Check if a bridge's current turn is stuck.\n */\nexport function isTurnStuck(\n stateDir: string,\n instanceId: InstanceId,\n thresholdSeconds: number = 300,\n): boolean {\n const info = getTurnInfo(stateDir, instanceId, thresholdSeconds);\n return info?.stuck ?? false;\n}\n\n// ─── Log rotation ─────────────────────────────────────────────\n\nexport function rotateLog(logPath: string): void {\n if (!fs.existsSync(logPath)) return;\n try {\n const stats = fs.statSync(logPath);\n if (stats.size === 0) return;\n const prevPath = `${logPath}.prev`;\n fs.renameSync(logPath, prevPath);\n } catch {\n // Best-effort: don't fail bridge start if rotation fails\n }\n}\n","import * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { spawnSync } from \"node:child_process\";\nimport { fileURLToPath } from \"node:url\";\nimport type { AdapterContext } from \"../types.js\";\n\nexport interface CommandProbe {\n command: string | null;\n version: string | null;\n}\n\nexport interface ManagedMcpServerSpec {\n command: string | null;\n args: string[];\n env: Record<string, string>;\n sourcePath: string | null;\n warnings: string[];\n issues: string[];\n}\n\nexport function probeCommand(candidates: string[]): CommandProbe {\n for (const candidate of candidates) {\n const result = spawnSync(candidate, [\"--version\"], {\n encoding: \"utf-8\",\n shell: process.platform === \"win32\",\n });\n\n if (result.status === 0) {\n const version =\n `${result.stdout ?? \"\"}${result.stderr ?? \"\"}`.trim() || null;\n const absolutePath = resolveCommandPath(candidate);\n return { command: absolutePath ?? candidate, version };\n }\n }\n\n return { command: null, version: null };\n}\n\n/**\n * Resolve a command name to its absolute filesystem path.\n * Uses `where.exe` on Windows, `which` on Unix.\n * Returns null if resolution fails (falls back to original candidate).\n */\nfunction resolveCommandPath(command: string): string | null {\n // Skip if already absolute\n if (path.isAbsolute(command)) return command;\n\n const whichCmd = process.platform === \"win32\" ? \"where.exe\" : \"which\";\n try {\n const result = spawnSync(whichCmd, [command], {\n encoding: \"utf-8\",\n windowsHide: true,\n });\n if (result.status !== 0) return null;\n const lines = result.stdout\n .trim()\n .split(/\\r?\\n/)\n .map((l) => l.trim())\n .filter(Boolean);\n\n if (lines.length === 0) return null;\n\n if (process.platform === \"win32\") {\n // On Windows, where.exe may return extensionless shims before .cmd/.exe.\n // Extensionless shims work with `shell: true` but fail with direct spawn.\n // Always prefer .cmd/.exe results that are directly executable.\n const candidateExt = path.extname(command).toLowerCase();\n\n // 1. If candidate has extension, match it exactly\n if (candidateExt) {\n const extMatch = lines.find(\n (l) =>\n path.extname(l).toLowerCase() === candidateExt && fs.existsSync(l),\n );\n if (extMatch) return extMatch;\n }\n\n // 2. For bare names (no extension), prefer .cmd or .exe over extensionless\n const executableMatch = lines.find(\n (l) => /\\.(cmd|exe|ps1)$/i.test(l) && fs.existsSync(l),\n );\n if (executableMatch) return executableMatch;\n }\n\n // Fallback: first existing result\n const firstValid = lines.find((l) => fs.existsSync(l));\n return firstValid ?? null;\n } catch {\n return null;\n }\n}\n\nexport function getHomeDir(): string {\n return os.homedir();\n}\n\nexport function toForwardSlashPath(filePath: string): string {\n return path.resolve(filePath).replace(/\\\\/g, \"/\");\n}\n\nexport function canWriteOrCreate(filePath: string): boolean {\n try {\n if (fs.existsSync(filePath)) {\n fs.accessSync(filePath, fs.constants.W_OK);\n return true;\n }\n\n const parent = path.dirname(filePath);\n fs.mkdirSync(parent, { recursive: true });\n fs.accessSync(parent, fs.constants.W_OK);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Detect paths that are ephemeral (npm _npx cache, fnm multishell, temp dirs). */\nfunction isEphemeralPath(p: string): boolean {\n const normalized = p.replace(/\\\\/g, \"/\").toLowerCase();\n return (\n normalized.includes(\"/_npx/\") ||\n normalized.includes(\"\\\\_npx\\\\\") ||\n normalized.includes(\"/fnm_multishells/\") ||\n normalized.includes(\"\\\\fnm_multishells\\\\\") ||\n normalized.includes(\"/tmp/\") ||\n normalized.includes(\"\\\\temp\\\\\")\n );\n}\n\nexport function findLocalTapCommsSource(ctx: AdapterContext): string | null {\n const candidates = [\n path.join(\n ctx.repoRoot,\n \"packages\",\n \"tap-plugin\",\n \"channels\",\n \"tap-comms.ts\",\n ),\n path.join(\n ctx.repoRoot,\n \"node_modules\",\n \"@hua-labs\",\n \"tap-plugin\",\n \"channels\",\n \"tap-comms.ts\",\n ),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate;\n }\n\n return null;\n}\n\nexport function findBundledTapCommsSource(\n metaUrl: string = import.meta.url,\n): string | null {\n const moduleDir = path.dirname(fileURLToPath(metaUrl));\n const candidates = [\n path.join(moduleDir, \"mcp-server.mjs\"),\n path.join(moduleDir, \"..\", \"mcp-server.mjs\"),\n path.join(moduleDir, \"..\", \"mcp-server.ts\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate;\n }\n\n return null;\n}\n\nexport function findTapCommsServerEntry(\n ctx: AdapterContext,\n metaUrl: string = import.meta.url,\n): string | null {\n return findBundledTapCommsSource(metaUrl) ?? findLocalTapCommsSource(ctx);\n}\n\nexport function findPreferredBunCommand(): string | null {\n const home = getHomeDir();\n const candidates =\n process.platform === \"win32\"\n ? [path.join(home, \".bun\", \"bin\", \"bun.exe\"), \"bun\", \"bun.cmd\"]\n : [path.join(home, \".bun\", \"bin\", \"bun\"), \"bun\"];\n\n for (const candidate of candidates) {\n if (path.isAbsolute(candidate) && !fs.existsSync(candidate)) continue;\n\n const result = spawnSync(candidate, [\"--version\"], {\n encoding: \"utf-8\",\n shell: process.platform === \"win32\",\n });\n if (result.status === 0) {\n return path.isAbsolute(candidate)\n ? toForwardSlashPath(candidate)\n : candidate;\n }\n }\n\n return null;\n}\n\nexport function buildManagedMcpServerSpec(\n ctx: AdapterContext,\n instanceId?: string,\n): ManagedMcpServerSpec {\n const sourcePath = findTapCommsServerEntry(ctx);\n const bunCommand = findPreferredBunCommand();\n const warnings: string[] = [];\n const issues: string[] = [];\n\n const env: Record<string, string> = {\n TAP_AGENT_NAME: ctx.agentName ?? \"<set-per-session>\",\n TAP_COMMS_DIR: toForwardSlashPath(ctx.commsDir),\n TAP_STATE_DIR: toForwardSlashPath(ctx.stateDir),\n TAP_REPO_ROOT: toForwardSlashPath(ctx.repoRoot),\n };\n if (instanceId) {\n env.TAP_AGENT_ID = instanceId;\n }\n\n if (!sourcePath) {\n issues.push(\n \"tap MCP server entry not found. Reinstall @hua-labs/tap or run from a repo with packages/tap-plugin/channels/ available.\",\n );\n return { command: null, args: [], env, sourcePath, warnings, issues };\n }\n\n // Prefer bun for .ts source files; for compiled .mjs, node works too\n const isBundled = sourcePath.endsWith(\".mjs\");\n const isEphemeralSource = isEphemeralPath(sourcePath);\n let command: string | null = bunCommand;\n let args: string[] = [toForwardSlashPath(sourcePath)];\n\n // Ephemeral source path (npx cache) → always use stable launcher, even with bun\n // This prevents persisting _npx cache paths in .mcp.json / config.toml\n if (isEphemeralSource && isBundled) {\n command = \"npx\";\n args = [\"@hua-labs/tap\", \"serve\"];\n warnings.push(\n \"Detected npx cache path. Using `npx @hua-labs/tap serve` as stable MCP launcher.\",\n );\n } else if (!command && isBundled) {\n // No bun, bundled .mjs — check node path stability\n const isEphemeralNode = isEphemeralPath(process.execPath);\n\n if (isEphemeralNode) {\n // fnm multishell node → use bare `node` (resolved from PATH at runtime)\n command = \"node\";\n warnings.push(\n \"Detected ephemeral node path. Using `node` from PATH for MCP config stability.\",\n );\n } else {\n command = toForwardSlashPath(process.execPath);\n }\n\n warnings.push(\n \"bun not found; using node to run the compiled MCP server. Install bun for better performance.\",\n );\n }\n\n if (!command) {\n issues.push(\n \"bun is required to run the repo-local tap MCP server (.ts source). Install bun: https://bun.sh\",\n );\n return { command: null, args: [], env, sourcePath, warnings, issues };\n }\n\n return {\n command,\n args,\n env,\n sourcePath,\n warnings,\n issues,\n };\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport type { Platform } from \"../types.js\";\nimport { probeCommand } from \"../adapters/common.js\";\n\n/**\n * Resolve the codex CLI command for the given platform.\n *\n * On Windows, npm-installed `codex.cmd` wrappers launch through cmd.exe,\n * which prevents PowerShell `Start-Process -WindowStyle Hidden` from properly\n * detaching the app-server process. When a `.cmd` wrapper is found, we parse\n * it to extract the underlying `node <script>` invocation and return that\n * instead, so the caller can spawn node directly.\n */\nexport function resolveCodexCommand(platform: Platform): string | null {\n const candidates =\n platform === \"win32\"\n ? [\"codex.cmd\", \"codex.exe\", \"codex\", \"codex.ps1\"]\n : [\"codex\"];\n const resolved = probeCommand(candidates).command;\n if (!resolved) return null;\n\n // Unwrap .cmd wrappers on Windows to avoid cmd.exe intermediate shell.\n // probeCommand() now returns absolute paths, so resolved is already\n // e.g. \"C:\\Users\\...\\npm\\codex.cmd\" — no extra where.exe lookup needed.\n if (platform === \"win32\" && resolved.endsWith(\".cmd\")) {\n const unwrapped = unwrapNpmCmdShim(resolved);\n if (unwrapped) return unwrapped;\n }\n\n return resolved;\n}\n\n/**\n * Parse an npm `.cmd` shim to extract the node + script path.\n *\n * npm `.cmd` shims follow this pattern:\n * ```\n * \"%_prog%\" \"%dp0%\\node_modules\\...\\bin\\script.js\" %*\n * ```\n *\n * Returns a space-separated `\"node /abs/path/to/script.js\"` string that\n * callers can split on the first space, or null if parsing fails.\n */\nexport function unwrapNpmCmdShim(cmdPath: string): string | null {\n let content: string;\n try {\n content = fs.readFileSync(cmdPath, \"utf-8\");\n } catch {\n return null;\n }\n\n // Match the final line: \"%_prog%\" \"%dp0%\\...\\script.js\" %*\n // npm shims use %dp0% (directory of the .cmd file) as base\n const match = content.match(\n /\"%_prog%\"\\s+\"(%dp0%\\\\[^\"]+)\"\\s+%\\*/,\n );\n if (!match) return null;\n\n const dp0 = path.dirname(cmdPath);\n const scriptRelative = match[1].replace(/%dp0%\\\\/g, \"\");\n const scriptPath = path.resolve(dp0, scriptRelative);\n\n if (!fs.existsSync(scriptPath)) return null;\n\n // Resolve node: prefer the local node next to the .cmd, else PATH node\n const localNode = path.join(dp0, \"node.exe\");\n const nodeCommand = fs.existsSync(localNode)\n ? localNode\n : (probeCommand([\"node.exe\", \"node\"]).command ?? \"node\");\n\n return `${nodeCommand}\\0${scriptPath}`;\n}\n\n/**\n * Split a resolved codex command into executable + prefix args.\n * If the command contains a NUL separator (from unwrapNpmCmdShim),\n * split on it. Otherwise return as-is with empty prefix args.\n */\nexport function splitResolvedCommand(resolved: string): {\n command: string;\n prefixArgs: string[];\n} {\n const parts = resolved.split(\"\\0\");\n if (parts.length === 2) {\n return { command: parts[0], prefixArgs: [parts[1]] };\n }\n return { command: resolved, prefixArgs: [] };\n}\n\nexport function resolvePowerShellCommand(): string {\n return (\n probeCommand([\"pwsh\", \"powershell\", \"powershell.exe\"]).command ??\n \"powershell\"\n );\n}\n\nexport function resolveAuthGatewayScript(repoRoot: string): string | null {\n const moduleDir = path.dirname(fileURLToPath(import.meta.url));\n const candidates = [\n // Bundled: dist/bridges/ sibling (npm install / built package)\n path.join(moduleDir, \"bridges\", \"codex-app-server-auth-gateway.mjs\"),\n // Source: src/bridges/ sibling (monorepo dev with ts runner)\n path.join(moduleDir, \"bridges\", \"codex-app-server-auth-gateway.ts\"),\n // Monorepo dist fallback\n path.join(\n repoRoot,\n \"packages\",\n \"tap-comms\",\n \"dist\",\n \"bridges\",\n \"codex-app-server-auth-gateway.mjs\",\n ),\n path.join(\n repoRoot,\n \"packages\",\n \"tap-comms\",\n \"src\",\n \"bridges\",\n \"codex-app-server-auth-gateway.ts\",\n ),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n}\n","/**\n * Windows detached background spawn utilities for bridge/app-server processes.\n *\n * Extracted from engine/bridge.ts (Phase 3) to isolate wrapper generation,\n * hidden PowerShell launch, and listening PID discovery.\n *\n * @module engine/bridge-windows-spawn\n */\n\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport { spawnSync } from \"node:child_process\";\nimport type { Platform } from \"../types.js\";\nimport { stderrLogFilePath } from \"./bridge-paths.js\";\nimport {\n toPowerShellSingleQuotedString,\n toPowerShellStringArrayLiteral,\n removeFileIfExists,\n} from \"./bridge-file-io.js\";\nimport {\n resolvePowerShellCommand,\n splitResolvedCommand,\n} from \"./bridge-codex-command.js\";\n\nconst WINDOWS_SPAWN_WRAPPER_PREFIX = \"tap-spawn-\";\nconst WINDOWS_SPAWN_WRAPPER_STALE_MS = 60 * 60 * 1000;\n\nexport function cleanupStaleWindowsSpawnWrappers(now = Date.now()): void {\n let entries: string[];\n try {\n entries = fs.readdirSync(os.tmpdir());\n } catch {\n return;\n }\n\n for (const entry of entries) {\n if (\n !entry.startsWith(WINDOWS_SPAWN_WRAPPER_PREFIX) ||\n !/\\.(cmd|ps1)$/i.test(entry)\n ) {\n continue;\n }\n\n const wrapperPath = path.join(os.tmpdir(), entry);\n\n try {\n const stats = fs.statSync(wrapperPath);\n if (now - stats.mtimeMs < WINDOWS_SPAWN_WRAPPER_STALE_MS) {\n continue;\n }\n fs.unlinkSync(wrapperPath);\n } catch {\n // Best-effort cleanup only.\n }\n }\n}\n\nexport function buildWindowsDetachedWrapperScript(\n command: string,\n args: string[],\n logPath: string,\n stderrLogPath: string,\n env: NodeJS.ProcessEnv,\n): string {\n const lines = [\"$ErrorActionPreference = 'Stop'\"];\n\n for (const [key, value] of Object.entries(env)) {\n if (value !== undefined && value !== process.env[key]) {\n lines.push(\n `[Environment]::SetEnvironmentVariable(${toPowerShellSingleQuotedString(key)}, ${toPowerShellSingleQuotedString(value)}, 'Process')`,\n );\n }\n }\n\n lines.push(\n `$logPath = ${toPowerShellSingleQuotedString(logPath)}`,\n `$stderrLogPath = ${toPowerShellSingleQuotedString(stderrLogPath)}`,\n `$commandPath = ${toPowerShellSingleQuotedString(command)}`,\n `$commandArgs = ${toPowerShellStringArrayLiteral(args)}`,\n \"$exitCode = 1\",\n \"try {\",\n \" & $commandPath @commandArgs >> $logPath 2>> $stderrLogPath\",\n \" $exitCode = if ($null -ne $LASTEXITCODE) { $LASTEXITCODE } else { 0 }\",\n \"} finally {\",\n \" Remove-Item -LiteralPath $PSCommandPath -Force -ErrorAction SilentlyContinue\",\n \"}\",\n \"exit $exitCode\",\n );\n\n return `${lines.join(\"\\r\\n\")}\\r\\n`;\n}\n\n/**\n * Start a background process on Windows without creating a visible console window.\n *\n * Node.js `spawn({ detached: true })` sets `DETACHED_PROCESS` in CreateProcess,\n * which forces Windows to allocate a new console for console apps — even with\n * `windowsHide: true` (which only sets SW_HIDE, not CREATE_NO_WINDOW).\n * These two flags are mutually exclusive in the Windows API.\n *\n * Instead, we use PowerShell `Start-Process -WindowStyle Hidden` which internally\n * sets `ProcessStartInfo.CreateNoWindow = true`, preventing console allocation\n * entirely. A temp `.ps1` wrapper handles environment variables, robust argument\n * passing, append-mode log redirection, and self-cleans on normal exit.\n *\n * The returned PID is of the hidden PowerShell wrapper process, which stays alive\n * while the child runs.\n * `taskkill /PID <pid> /F /T` kills the entire tree.\n */\nexport function startWindowsDetachedProcess(\n command: string,\n args: string[],\n repoRoot: string,\n logPath: string,\n env: NodeJS.ProcessEnv = process.env,\n): number | null {\n const stderrLogPath = stderrLogFilePath(logPath);\n const powerShellCommand = resolvePowerShellCommand();\n\n cleanupStaleWindowsSpawnWrappers();\n\n const wrapperPath = path.join(\n os.tmpdir(),\n `${WINDOWS_SPAWN_WRAPPER_PREFIX}${randomBytes(4).toString(\"hex\")}.ps1`,\n );\n fs.writeFileSync(\n wrapperPath,\n buildWindowsDetachedWrapperScript(\n command,\n args,\n logPath,\n stderrLogPath,\n env,\n ),\n );\n\n const psCommand = [\n \"$p = Start-Process\",\n `-FilePath ${toPowerShellSingleQuotedString(powerShellCommand)}`,\n `-ArgumentList ${toPowerShellStringArrayLiteral([\"-NoLogo\", \"-NoProfile\", \"-File\", wrapperPath])}`,\n `-WorkingDirectory ${toPowerShellSingleQuotedString(repoRoot)}`,\n \"-WindowStyle Hidden\",\n \"-PassThru\",\n \"; Write-Output $p.Id\",\n ].join(\" \");\n\n const result = spawnSync(\n powerShellCommand,\n [\"-NoLogo\", \"-NoProfile\", \"-Command\", psCommand],\n {\n encoding: \"utf-8\",\n windowsHide: true,\n },\n );\n\n if (result.status !== 0) {\n removeFileIfExists(wrapperPath);\n return null;\n }\n\n const pid = parseInt(result.stdout.trim(), 10);\n if (!Number.isFinite(pid)) {\n removeFileIfExists(wrapperPath);\n return null;\n }\n\n return pid;\n}\n\nexport function startWindowsCodexAppServer(\n command: string,\n url: string,\n repoRoot: string,\n logPath: string,\n): number | null {\n const { command: exe, prefixArgs } = splitResolvedCommand(command);\n return startWindowsDetachedProcess(\n exe,\n [...prefixArgs, \"app-server\", \"--listen\", url],\n repoRoot,\n logPath,\n );\n}\n\nexport function findListeningProcessId(\n url: string,\n platform: Platform,\n): number | null {\n if (platform !== \"win32\") {\n return null;\n }\n\n let port: number | null;\n try {\n const parsed = new URL(url);\n port = parsed.port ? Number.parseInt(parsed.port, 10) : null;\n } catch {\n return null;\n }\n\n if (port == null || !Number.isFinite(port)) {\n return null;\n }\n\n const result = spawnSync(\n resolvePowerShellCommand(),\n [\n \"-NoLogo\",\n \"-NoProfile\",\n \"-Command\",\n [\n `$port = ${port}`,\n \"$processId = Get-NetTCPConnection -LocalPort $port -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty OwningProcess\",\n \"if ($processId) { $processId }\",\n ].join(\"; \"),\n ],\n {\n encoding: \"utf-8\",\n windowsHide: true,\n },\n );\n\n if (result.status !== 0) {\n return null;\n }\n\n const parsedPid = Number.parseInt((result.stdout ?? \"\").trim(), 10);\n return Number.isFinite(parsedPid) ? parsedPid : null;\n}\n","/**\n * Unix detached background spawn utilities for bridge/app-server processes.\n *\n * Extracted from inline non-Windows spawn paths to centralize detached launch\n * and listening PID discovery for macOS/Linux.\n *\n * @module engine/bridge-unix-spawn\n */\n\nimport * as fs from \"node:fs\";\nimport { spawn, spawnSync } from \"node:child_process\";\nimport type { Platform } from \"../types.js\";\nimport { splitResolvedCommand } from \"./bridge-codex-command.js\";\nimport { stderrLogFilePath } from \"./bridge-paths.js\";\n\nexport function startUnixDetachedProcess(\n command: string,\n args: string[],\n repoRoot: string,\n logPath: string,\n env: NodeJS.ProcessEnv = process.env,\n): number | null {\n const stderrPath = stderrLogFilePath(logPath);\n let logFd: number | null = null;\n let stderrFd: number | null = null;\n\n try {\n logFd = fs.openSync(logPath, \"a\");\n stderrFd = fs.openSync(stderrPath, \"a\");\n\n const child = spawn(command, args, {\n cwd: repoRoot,\n detached: true,\n stdio: [\"ignore\", logFd, stderrFd],\n env,\n windowsHide: true,\n });\n\n child.unref();\n return child.pid ?? null;\n } finally {\n if (logFd != null) {\n fs.closeSync(logFd);\n }\n if (stderrFd != null) {\n fs.closeSync(stderrFd);\n }\n }\n}\n\nexport function startUnixCodexAppServer(\n command: string,\n url: string,\n repoRoot: string,\n logPath: string,\n): number | null {\n const { command: exe, prefixArgs } = splitResolvedCommand(command);\n return startUnixDetachedProcess(\n exe,\n [...prefixArgs, \"app-server\", \"--listen\", url],\n repoRoot,\n logPath,\n );\n}\n\nexport function findUnixListeningProcessId(\n url: string,\n platform: Platform,\n): number | null {\n if (platform === \"win32\") {\n return null;\n }\n\n let port: number | null;\n try {\n const parsed = new URL(url);\n port = parsed.port ? Number.parseInt(parsed.port, 10) : null;\n } catch {\n return null;\n }\n\n if (port == null || !Number.isFinite(port)) {\n return null;\n }\n\n const result = spawnSync(\n \"lsof\",\n [\"-nP\", `-iTCP:${port}`, \"-sTCP:LISTEN\", \"-t\"],\n {\n encoding: \"utf-8\",\n windowsHide: true,\n },\n );\n\n if (!result || result.status !== 0) {\n return null;\n }\n\n const parsedPid = Number.parseInt((result.stdout ?? \"\").trim(), 10);\n return Number.isFinite(parsedPid) ? parsedPid : null;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { InstanceId, BridgeState } from \"../types.js\";\nimport { loadState } from \"../state.js\";\n\n/**\n * Resolve agent name: explicit > state.json > env.\n * Exported for direct testing without spawning a process.\n */\nexport function resolveAgentName(\n instanceId: InstanceId,\n explicit?: string,\n context?: { repoRoot?: string; stateDir?: string },\n): string | null {\n if (explicit) return explicit;\n\n // state.json SSOT (#784 backwrite)\n try {\n const repoRoot =\n context?.repoRoot ??\n context?.stateDir?.replace(/[\\\\/].tap-comms$/, \"\") ??\n process.cwd();\n const state = loadState(repoRoot);\n const stateAgent = state?.instances[instanceId]?.agentName;\n if (stateAgent) return stateAgent;\n } catch {\n // state read failed — fall through\n }\n\n return process.env.TAP_AGENT_NAME || process.env.CODEX_TAP_AGENT_NAME || null;\n}\n\n/**\n * Infer restart mode from current bridge/instance state.\n * Priority: explicit flags > saved instance mode > bridge state inference > defaults.\n */\nexport function inferRestartMode(\n bridgeState: BridgeState | null,\n flags?: { noServer?: boolean; noAuth?: boolean },\n savedMode?: { manageAppServer?: boolean; noAuth?: boolean },\n): { manageAppServer: boolean; noAuth: boolean } {\n const wasManaged = bridgeState?.appServer != null;\n const hadAuth = bridgeState?.appServer?.auth != null;\n\n const manageAppServer =\n flags?.noServer === true\n ? false\n : flags?.noServer === undefined\n ? (savedMode?.manageAppServer ?? wasManaged)\n : true;\n const noAuth =\n flags?.noAuth === true\n ? true\n : flags?.noAuth === undefined\n ? (savedMode?.noAuth ?? !hadAuth)\n : false;\n\n return { manageAppServer, noAuth };\n}\n\n/**\n * Clean up headless dispatch files from inbox.\n * Matches YYYYMMDD-headless-{agent}-review-PR{n}.md pattern.\n */\nexport function cleanupHeadlessDispatch(\n inboxDir: string,\n agentName: string,\n): string[] {\n const removed: string[] = [];\n if (!fs.existsSync(inboxDir)) return removed;\n\n const normalizedAgent = agentName.replace(/-/g, \"_\");\n const marker = `-headless-${normalizedAgent}-review-`;\n\n try {\n for (const file of fs.readdirSync(inboxDir)) {\n if (file.includes(marker)) {\n fs.unlinkSync(path.join(inboxDir, file));\n removed.push(file);\n }\n }\n } catch {\n // best-effort\n }\n\n return removed;\n}\n","import type { AppServerState } from \"../types.js\";\nimport { getWebSocketCtor, delay } from \"./bridge-port-network.js\";\n\nexport interface WebSocketLike {\n addEventListener(\n type: \"open\" | \"error\" | \"close\",\n listener: () => void,\n options?: { once?: boolean },\n ): void;\n close(code?: number, reason?: string): void;\n}\n\nexport type WebSocketCtor = new (\n url: string,\n protocols?: string | string[],\n) => WebSocketLike;\n\nexport const APP_SERVER_HEALTH_TIMEOUT_MS = 1_500;\nexport const APP_SERVER_HEALTH_RETRY_MS = 250;\n\nexport const AUTH_SUBPROTOCOL_PREFIX = \"tap-auth-\";\n\nexport async function checkAppServerHealth(\n url: string,\n timeoutMs: number = APP_SERVER_HEALTH_TIMEOUT_MS,\n gatewayToken?: string | null,\n): Promise<boolean> {\n const WebSocket = getWebSocketCtor();\n if (!WebSocket) {\n return false;\n }\n\n return new Promise<boolean>((resolve) => {\n let settled = false;\n let socket: WebSocketLike | null = null;\n\n const finish = (healthy: boolean) => {\n if (settled) {\n return;\n }\n settled = true;\n clearTimeout(timer);\n try {\n socket?.close();\n } catch {\n // Best-effort cleanup only.\n }\n resolve(healthy);\n };\n\n const timer = setTimeout(() => finish(false), timeoutMs);\n\n try {\n // Authenticate via WebSocket subprotocol when a gateway token is provided.\n const protocols = gatewayToken\n ? [`${AUTH_SUBPROTOCOL_PREFIX}${gatewayToken}`]\n : undefined;\n socket = new WebSocket(url, protocols);\n socket.addEventListener(\"open\", () => finish(true), { once: true });\n socket.addEventListener(\"error\", () => finish(false), { once: true });\n socket.addEventListener(\"close\", () => finish(false), { once: true });\n } catch {\n finish(false);\n }\n });\n}\n\nexport async function waitForAppServerHealth(\n url: string,\n timeoutMs: number,\n gatewayToken?: string | null,\n): Promise<boolean> {\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() < deadline) {\n if (\n await checkAppServerHealth(url, APP_SERVER_HEALTH_TIMEOUT_MS, gatewayToken)\n ) {\n return true;\n }\n await delay(APP_SERVER_HEALTH_RETRY_MS);\n }\n\n return false;\n}\n\nexport function markAppServerHealthy(appServer: AppServerState): AppServerState {\n const checkedAt = new Date().toISOString();\n return {\n ...appServer,\n healthy: true,\n lastCheckedAt: checkedAt,\n lastHealthyAt: checkedAt,\n };\n}\n","/**\n * Common Node.js runtime resolver for all tap-comms child processes.\n *\n * Resolution chain:\n * .node-version + fnm probe → configured command → tsx fallback\n *\n * Extracted from codex-bridge-runner.ts (M69) to share across:\n * - bridge engine spawn\n * - bridge runner spawn\n * - future CLI commands\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execSync } from \"node:child_process\";\n\n// ─── Types ─────────────────────────────────────────────────────\n\nexport type RuntimeSource = \"fnm\" | \"config\" | \"path\" | \"tsx-fallback\" | \"bun\";\n\nexport interface ResolvedRuntime {\n /** Absolute path or command name for the resolved runtime. */\n command: string;\n /** Whether --experimental-strip-types is supported and should be used. */\n supportsStripTypes: boolean;\n /** Where the runtime was resolved from (for diagnostics). */\n source: RuntimeSource;\n /** Detected major version, if available. */\n majorVersion: number | null;\n}\n\n// ─── .node-version ─────────────────────────────────────────────\n\nexport function readNodeVersion(repoRoot: string): string | null {\n const nvFile = path.join(repoRoot, \".node-version\");\n if (!fs.existsSync(nvFile)) return null;\n try {\n const raw = fs.readFileSync(nvFile, \"utf-8\").trim();\n return raw.length > 0 ? raw.replace(/^v/, \"\") : null;\n } catch {\n return null;\n }\n}\n\n// ─── fnm probe ─────────────────────────────────────────────────\n\nfunction fnmCandidateDirs(): string[] {\n if (process.platform === \"win32\") {\n return [\n process.env.FNM_DIR,\n process.env.APPDATA ? path.join(process.env.APPDATA, \"fnm\") : null,\n process.env.LOCALAPPDATA\n ? path.join(process.env.LOCALAPPDATA, \"fnm\")\n : null,\n process.env.USERPROFILE\n ? path.join(process.env.USERPROFILE, \"scoop\", \"persist\", \"fnm\")\n : null,\n ].filter(Boolean) as string[];\n }\n // macOS / Linux\n return [\n process.env.FNM_DIR,\n process.env.HOME\n ? path.join(process.env.HOME, \".local\", \"share\", \"fnm\")\n : null,\n process.env.HOME ? path.join(process.env.HOME, \".fnm\") : null,\n process.env.XDG_DATA_HOME\n ? path.join(process.env.XDG_DATA_HOME, \"fnm\")\n : null,\n ].filter(Boolean) as string[];\n}\n\nfunction nodeExecutableName(): string {\n return process.platform === \"win32\" ? \"node.exe\" : \"node\";\n}\n\nexport function probeFnmNode(desiredVersion: string): string | null {\n const dirs = fnmCandidateDirs();\n const exe = nodeExecutableName();\n\n for (const baseDir of dirs) {\n const candidate = path.join(\n baseDir,\n \"node-versions\",\n `v${desiredVersion}`,\n \"installation\",\n exe,\n );\n if (!fs.existsSync(candidate)) continue;\n\n try {\n const v = execSync(`\"${candidate}\" --version`, {\n encoding: \"utf-8\",\n timeout: 5000,\n }).trim();\n if (v.startsWith(`v${desiredVersion.split(\".\")[0]}.`)) {\n return candidate;\n }\n } catch {\n // candidate exists but doesn't work — skip\n }\n }\n\n return null;\n}\n\n// ─── Version detection ─────────────────────────────────────────\n\nexport function detectNodeMajorVersion(command: string): number | null {\n try {\n const version = execSync(`\"${command}\" --version`, {\n encoding: \"utf-8\",\n timeout: 5000,\n }).trim();\n const match = version.match(/^v?(\\d+)\\./);\n return match ? parseInt(match[1], 10) : null;\n } catch {\n return null;\n }\n}\n\nexport function checkStripTypesSupport(command: string): boolean {\n const major = detectNodeMajorVersion(command);\n if (major !== null && major >= 22) return true;\n try {\n execSync(`\"${command}\" --experimental-strip-types -e \"\"`, {\n timeout: 5000,\n stdio: \"pipe\",\n });\n return true;\n } catch {\n return false;\n }\n}\n\n// ─── tsx fallback ──────────────────────────────────────────────\n\nexport function findTsxFallback(repoRoot: string): string | null {\n const candidates = [\n path.join(repoRoot, \"node_modules\", \".bin\", \"tsx.exe\"),\n path.join(repoRoot, \"node_modules\", \".bin\", \"tsx.CMD\"),\n path.join(repoRoot, \"node_modules\", \".bin\", \"tsx\"),\n ];\n for (const c of candidates) {\n if (fs.existsSync(c)) return c;\n }\n return null;\n}\n\n// ─── fnm bin directory (for PATH prepending) ───────────────────\n\n/**\n * Returns the directory containing the fnm-managed node binary,\n * suitable for prepending to PATH in child processes.\n */\nexport function getFnmBinDir(repoRoot: string): string | null {\n const desiredVersion = readNodeVersion(repoRoot);\n if (!desiredVersion) return null;\n\n const nodePath = probeFnmNode(desiredVersion);\n if (!nodePath) return null;\n\n return path.dirname(nodePath);\n}\n\n// ─── Main resolver ─────────────────────────────────────────────\n\n/**\n * Resolve the Node.js runtime to use for spawning child processes.\n *\n * Priority: bun passthrough → .node-version + fnm → configured command → tsx fallback\n */\nexport function resolveNodeRuntime(\n configCommand: string,\n repoRoot: string,\n): ResolvedRuntime {\n // Bun: native TS support, no strip-types needed\n if (configCommand === \"bun\" || configCommand.endsWith(\"bun.exe\")) {\n return {\n command: configCommand,\n supportsStripTypes: false,\n source: \"bun\",\n majorVersion: null,\n };\n }\n\n // .node-version + fnm discovery\n const desiredVersion = readNodeVersion(repoRoot);\n if (desiredVersion) {\n const fnmNode = probeFnmNode(desiredVersion);\n if (fnmNode) {\n const major = detectNodeMajorVersion(fnmNode);\n return {\n command: fnmNode,\n supportsStripTypes: checkStripTypesSupport(fnmNode),\n source: \"fnm\",\n majorVersion: major,\n };\n }\n }\n\n // Configured command (from config or PATH)\n const major = detectNodeMajorVersion(configCommand);\n if (major !== null) {\n return {\n command: configCommand,\n supportsStripTypes: checkStripTypesSupport(configCommand),\n source: major === detectNodeMajorVersion(\"node\") ? \"path\" : \"config\",\n majorVersion: major,\n };\n }\n\n // tsx fallback\n const tsx = findTsxFallback(repoRoot);\n if (tsx) {\n return {\n command: tsx,\n supportsStripTypes: false,\n source: \"tsx-fallback\",\n majorVersion: null,\n };\n }\n\n // Last resort\n return {\n command: configCommand,\n supportsStripTypes: false,\n source: \"path\",\n majorVersion: null,\n };\n}\n\n// ─── Env builder for child processes ───────────────────────────\n\n/**\n * Build an env object with fnm Node prepended to PATH.\n * Use this when spawning child processes that need the correct Node.\n */\nexport function buildRuntimeEnv(\n repoRoot: string,\n baseEnv: NodeJS.ProcessEnv = process.env,\n): NodeJS.ProcessEnv {\n const fnmBin = getFnmBinDir(repoRoot);\n if (!fnmBin) return { ...baseEnv };\n\n const pathKey = process.platform === \"win32\" ? \"Path\" : \"PATH\";\n const currentPath = baseEnv[pathKey] ?? baseEnv.PATH ?? \"\";\n\n return {\n ...baseEnv,\n [pathKey]: `${fnmBin}${path.delimiter}${currentPath}`,\n };\n}\n","export type { ResolvedRuntime, RuntimeSource } from \"./resolve-node.js\";\n\nexport {\n resolveNodeRuntime,\n buildRuntimeEnv,\n readNodeVersion,\n probeFnmNode,\n detectNodeMajorVersion,\n checkStripTypesSupport,\n findTsxFallback,\n getFnmBinDir,\n} from \"./resolve-node.js\";\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport type {\n InstanceId,\n AppServerState,\n AppServerAuthState,\n Platform,\n} from \"../types.js\";\nimport { resolveNodeRuntime, buildRuntimeEnv } from \"../runtime/index.js\";\nimport {\n appServerGatewayTokenFilePath,\n appServerGatewayLogFilePath,\n} from \"./bridge-paths.js\";\nimport {\n writeProtectedTextFile,\n removeFileIfExists,\n} from \"./bridge-file-io.js\";\nimport { allocateLoopbackPort } from \"./bridge-port-network.js\";\nimport { resolveAuthGatewayScript } from \"./bridge-codex-command.js\";\nimport { isProcessAlive } from \"./bridge-process-control.js\";\nimport { startWindowsDetachedProcess } from \"./bridge-windows-spawn.js\";\nimport { startUnixDetachedProcess } from \"./bridge-unix-spawn.js\";\nimport { rotateLog } from \"./bridge-observability.js\";\nimport {\n checkAppServerHealth,\n waitForAppServerHealth,\n} from \"./bridge-app-server-health.js\";\n\nexport { AUTH_SUBPROTOCOL_PREFIX } from \"./bridge-app-server-health.js\";\n\ninterface ManagedAppServerGatewayOptions {\n instanceId: InstanceId;\n stateDir: string;\n repoRoot: string;\n platform: Platform;\n publicUrl: string;\n}\n\nexport function buildProtectedAppServerUrl(\n publicUrl: string,\n _token: string,\n): string {\n // Subprotocol auth: token is no longer embedded in the URL.\n // Kept for backward compatibility with state display — shows base URL only.\n return publicUrl;\n}\n\nexport function readGatewayTokenFromPath(tokenPath: string): string {\n return fs.readFileSync(tokenPath, \"utf8\").trim();\n}\n\nexport function readGatewayToken(\n auth: AppServerAuthState | null | undefined,\n): string | null {\n if (!auth) {\n return null;\n }\n\n const legacyToken = (auth as AppServerAuthState & { token?: string }).token;\n if (legacyToken?.trim()) {\n return legacyToken.trim();\n }\n\n if (!auth.tokenPath || !fs.existsSync(auth.tokenPath)) {\n return null;\n }\n\n const fileToken = readGatewayTokenFromPath(auth.tokenPath);\n return fileToken || null;\n}\n\nexport function materializeGatewayTokenFile(\n stateDir: string,\n instanceId: InstanceId,\n publicUrl: string,\n auth: AppServerAuthState,\n): AppServerAuthState {\n if (auth.tokenPath && fs.existsSync(auth.tokenPath)) {\n return auth;\n }\n\n const token = readGatewayToken(auth);\n if (!token) {\n throw new Error(`Missing auth gateway token for ${instanceId}`);\n }\n\n const tokenPath = appServerGatewayTokenFilePath(stateDir, instanceId);\n writeProtectedTextFile(tokenPath, `${token}\\n`);\n return {\n ...auth,\n protectedUrl: buildProtectedAppServerUrl(publicUrl, \"***\"),\n tokenPath,\n };\n}\n\nexport async function createManagedAppServerAuth(\n options: ManagedAppServerGatewayOptions,\n): Promise<AppServerAuthState> {\n const publicUrl = new URL(options.publicUrl);\n const upstreamUrl = new URL(options.publicUrl);\n upstreamUrl.port = String(await allocateLoopbackPort(publicUrl.hostname));\n upstreamUrl.search = \"\";\n upstreamUrl.hash = \"\";\n\n const gatewayScript = resolveAuthGatewayScript(options.repoRoot);\n if (!gatewayScript) {\n throw new Error(\"Auth gateway script not found\");\n }\n\n const token = randomBytes(24).toString(\"base64url\");\n const tokenPath = appServerGatewayTokenFilePath(\n options.stateDir,\n options.instanceId,\n );\n writeProtectedTextFile(tokenPath, `${token}\\n`);\n const protectedUrl = buildProtectedAppServerUrl(options.publicUrl, \"***\");\n\n const gatewayLogPath = appServerGatewayLogFilePath(\n options.stateDir,\n options.instanceId,\n );\n fs.mkdirSync(path.dirname(gatewayLogPath), { recursive: true });\n rotateLog(gatewayLogPath);\n\n const runtime = resolveNodeRuntime(process.execPath, options.repoRoot);\n const gatewayArgs: string[] = [];\n if (gatewayScript.endsWith(\".ts\")) {\n if (!runtime.supportsStripTypes) {\n throw new Error(\n \"Current Node runtime cannot start the auth gateway from TypeScript source. Rebuild @hua-labs/tap or use Node 22.6+.\",\n );\n }\n gatewayArgs.push(\"--experimental-strip-types\");\n }\n gatewayArgs.push(gatewayScript);\n\n const gatewayEnv = {\n ...buildRuntimeEnv(options.repoRoot),\n TAP_GATEWAY_LISTEN_URL: options.publicUrl,\n TAP_GATEWAY_UPSTREAM_URL: upstreamUrl.toString().replace(/\\/$/, \"\"),\n TAP_GATEWAY_TOKEN_FILE: tokenPath,\n };\n\n let gatewayPid: number | null;\n try {\n gatewayPid =\n options.platform === \"win32\"\n ? startWindowsDetachedProcess(\n runtime.command,\n gatewayArgs,\n options.repoRoot,\n gatewayLogPath,\n gatewayEnv,\n )\n : startUnixDetachedProcess(\n runtime.command,\n gatewayArgs,\n options.repoRoot,\n gatewayLogPath,\n gatewayEnv,\n );\n } catch (error) {\n removeFileIfExists(tokenPath);\n throw error;\n }\n\n if (gatewayPid == null) {\n removeFileIfExists(tokenPath);\n throw new Error(\"Failed to spawn app-server auth gateway\");\n }\n\n return {\n mode: \"subprotocol\",\n protectedUrl,\n upstreamUrl: upstreamUrl.toString().replace(/\\/$/, \"\"),\n tokenPath,\n gatewayPid,\n gatewayLogPath,\n };\n}\n\nexport function canReuseManagedAppServer(\n appServer: AppServerState | null | undefined,\n): boolean {\n if (!appServer?.managed) {\n return false;\n }\n\n // App-server process must be alive\n if (appServer.pid != null && !isProcessAlive(appServer.pid)) {\n return false;\n }\n\n const auth = appServer.auth;\n if (auth) {\n // Auth mode: verify gateway token and process are intact\n if (!auth.protectedUrl) {\n return false;\n }\n if (!readGatewayToken(auth)) {\n return false;\n }\n if (auth.gatewayPid != null && !isProcessAlive(auth.gatewayPid)) {\n return false;\n }\n }\n // No-auth mode (auth is null): only the app-server process check above is needed\n\n return true;\n}\n\nexport { checkAppServerHealth, waitForAppServerHealth };\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type {\n InstanceId,\n BridgeState,\n AppServerState,\n Platform,\n} from \"../types.js\";\n\nimport { appServerLogFilePath } from \"./bridge-paths.js\";\nimport { removeFileIfExists } from \"./bridge-file-io.js\";\nimport { isLoopbackHost } from \"./bridge-port-network.js\";\nimport { resolveCodexCommand } from \"./bridge-codex-command.js\";\nimport {\n startWindowsCodexAppServer,\n findListeningProcessId,\n} from \"./bridge-windows-spawn.js\";\nimport {\n startUnixCodexAppServer,\n findUnixListeningProcessId,\n} from \"./bridge-unix-spawn.js\";\nimport { terminateProcess, isProcessAlive } from \"./bridge-process-control.js\";\nimport {\n checkAppServerHealth,\n waitForAppServerHealth,\n markAppServerHealthy,\n} from \"./bridge-app-server-health.js\";\nimport {\n readGatewayToken,\n createManagedAppServerAuth,\n canReuseManagedAppServer,\n} from \"./bridge-app-server-auth.js\";\nimport { rotateLog } from \"./bridge-observability.js\";\n\nexport interface EnsureCodexAppServerOptions {\n instanceId: InstanceId;\n stateDir: string;\n repoRoot: string;\n platform: Platform;\n appServerUrl: string;\n existingAppServer?: AppServerState | null;\n noAuth?: boolean;\n}\n\nexport const DEFAULT_APP_SERVER_URL = \"ws://127.0.0.1:4501\";\nexport const APP_SERVER_START_TIMEOUT_MS = 20_000;\nexport const APP_SERVER_GATEWAY_START_TIMEOUT_MS = 5_000;\n\n/**\n * Check if any OTHER running bridge is using the same managed app-server.\n * Used to prevent killing a shared app-server when one bridge fails to start.\n */\nexport function isAppServerUsedByOtherBridge(\n stateDir: string,\n excludeInstanceId: InstanceId,\n appServer: AppServerState,\n): boolean {\n const pidDir = path.join(stateDir, \"pids\");\n if (!fs.existsSync(pidDir)) return false;\n\n for (const name of fs.readdirSync(pidDir)) {\n if (!name.startsWith(\"bridge-\") || !name.endsWith(\".json\")) continue;\n const otherId = name.slice(\"bridge-\".length, -\".json\".length);\n if (otherId === excludeInstanceId) continue;\n\n try {\n const raw = fs.readFileSync(path.join(pidDir, name), \"utf-8\");\n const state = JSON.parse(raw) as BridgeState;\n if (\n state.appServer?.url === appServer.url &&\n state.appServer?.pid === appServer.pid &&\n isProcessAlive(state.pid)\n ) {\n return true;\n }\n } catch {\n continue;\n }\n }\n return false;\n}\n\nexport function findReusableManagedAppServer(\n stateDir: string,\n publicUrl: string,\n): AppServerState | null {\n const pidDir = path.join(stateDir, \"pids\");\n if (!fs.existsSync(pidDir)) {\n return null;\n }\n\n for (const name of fs.readdirSync(pidDir)) {\n if (!name.startsWith(\"bridge-\") || !name.endsWith(\".json\")) {\n continue;\n }\n\n try {\n const raw = fs.readFileSync(path.join(pidDir, name), \"utf-8\");\n const parsed = JSON.parse(raw) as BridgeState;\n if (parsed.appServer?.url !== publicUrl) {\n continue;\n }\n if (canReuseManagedAppServer(parsed.appServer)) {\n return markAppServerHealthy(parsed.appServer!);\n }\n } catch {\n // Ignore stale or corrupted bridge state.\n }\n }\n\n return null;\n}\n\nexport function resolveAppServerUrl(\n baseUrl: string | undefined,\n port?: number,\n): string {\n const resolvedBase = (baseUrl ?? DEFAULT_APP_SERVER_URL).replace(/\\/$/, \"\");\n if (port == null) {\n return resolvedBase;\n }\n\n try {\n const parsed = new URL(resolvedBase);\n parsed.port = String(port);\n return parsed.toString().replace(/\\/$/, \"\");\n } catch {\n return resolvedBase;\n }\n}\n\nexport async function ensureCodexAppServer(\n options: EnsureCodexAppServerOptions,\n): Promise<AppServerState> {\n const effectiveUrl = resolveAppServerUrl(options.appServerUrl);\n const fallbackManualCommand = formatCodexAppServerCommand(\n \"codex\",\n effectiveUrl,\n );\n if (\n options.existingAppServer?.url === effectiveUrl &&\n canReuseManagedAppServer(options.existingAppServer)\n ) {\n return markAppServerHealthy(options.existingAppServer);\n }\n\n const sharedManaged = findReusableManagedAppServer(\n options.stateDir,\n effectiveUrl,\n );\n if (sharedManaged) {\n return sharedManaged;\n }\n\n let parsedUrl: URL;\n try {\n parsedUrl = new URL(effectiveUrl);\n } catch {\n throw new Error(\n `Invalid app-server URL: ${effectiveUrl}\\nStart it manually:\\n ${fallbackManualCommand}`,\n );\n }\n\n if (!isLoopbackHost(parsedUrl.hostname)) {\n throw new Error(\n `Auto-start only supports loopback app-server URLs. Current URL: ${effectiveUrl}\\nStart it manually:\\n ${fallbackManualCommand}`,\n );\n }\n\n if (await checkAppServerHealth(effectiveUrl)) {\n const hint = options.noAuth\n ? \"Stop it first or use --no-server for an unmanaged external app-server.\"\n : \"A listener is already running, so tap cannot insert the auth gateway there.\\nStop it first or use --no-server for an unmanaged external app-server.\";\n throw new Error(`${effectiveUrl}: ${hint}`);\n }\n\n const resolvedCommand = resolveCodexCommand(options.platform);\n if (!resolvedCommand) {\n throw new Error(\n `Codex CLI not found in PATH.\\nStart the app-server manually:\\n ${fallbackManualCommand}`,\n );\n }\n\n const logPath = appServerLogFilePath(options.stateDir, options.instanceId);\n fs.mkdirSync(path.dirname(logPath), { recursive: true });\n rotateLog(logPath);\n\n // --no-auth: start app-server directly on the public URL (no gateway).\n // TUI and bridge both connect to the same port without token auth.\n if (options.noAuth) {\n const manualCommand = formatCodexAppServerCommand(\"codex\", effectiveUrl);\n let pid: number | null;\n\n if (options.platform === \"win32\") {\n try {\n pid = startWindowsCodexAppServer(\n resolvedCommand,\n effectiveUrl,\n options.repoRoot,\n logPath,\n );\n } catch (err) {\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n }\n } else {\n try {\n pid = startUnixCodexAppServer(\n resolvedCommand,\n effectiveUrl,\n options.repoRoot,\n logPath,\n );\n } catch (err) {\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n }\n }\n\n if (pid == null) {\n throw new Error(\n `Failed to spawn Codex app-server.\\nStart it manually:\\n ${manualCommand}`,\n );\n }\n\n const healthy = await waitForAppServerHealth(\n effectiveUrl,\n APP_SERVER_START_TIMEOUT_MS,\n );\n if (!healthy) {\n await terminateProcess(pid, options.platform);\n throw new Error(\n `Codex app-server did not become healthy at ${effectiveUrl}.\\nCheck ${logPath}\\nOr start it manually:\\n ${manualCommand}`,\n );\n }\n\n pid =\n (options.platform === \"win32\"\n ? findListeningProcessId(effectiveUrl, options.platform)\n : findUnixListeningProcessId(effectiveUrl, options.platform)) ?? pid;\n const healthyAt = new Date().toISOString();\n return {\n url: effectiveUrl,\n pid,\n managed: true,\n healthy: true,\n lastCheckedAt: healthyAt,\n lastHealthyAt: healthyAt,\n logPath,\n manualCommand,\n auth: null,\n };\n }\n\n // Default: auth gateway mode — gateway on publicUrl, app-server on random upstream port\n const auth = await createManagedAppServerAuth({\n instanceId: options.instanceId,\n stateDir: options.stateDir,\n repoRoot: options.repoRoot,\n platform: options.platform,\n publicUrl: effectiveUrl,\n });\n const manualCommand = formatCodexAppServerCommand(\"codex\", auth.upstreamUrl);\n\n let pid: number | null;\n\n if (options.platform === \"win32\") {\n try {\n pid = startWindowsCodexAppServer(\n resolvedCommand,\n auth.upstreamUrl,\n options.repoRoot,\n logPath,\n );\n } catch (err) {\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n }\n } else {\n try {\n pid = startUnixCodexAppServer(\n resolvedCommand,\n auth.upstreamUrl,\n options.repoRoot,\n logPath,\n );\n } catch (err) {\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Failed to spawn Codex app-server: ${err instanceof Error ? err.message : String(err)}\\nStart it manually:\\n ${manualCommand}`,\n { cause: err },\n );\n }\n }\n\n if (pid == null) {\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Failed to spawn Codex app-server.\\nStart it manually:\\n ${manualCommand}`,\n );\n }\n\n const healthy = await waitForAppServerHealth(\n auth.upstreamUrl,\n APP_SERVER_START_TIMEOUT_MS,\n );\n\n if (!healthy) {\n await terminateProcess(pid, options.platform);\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Codex app-server did not become healthy at ${auth.upstreamUrl}.\\nCheck ${logPath}\\nOr start it manually:\\n ${manualCommand}`,\n );\n }\n\n const gatewayToken = readGatewayToken(auth);\n if (!gatewayToken) {\n await terminateProcess(pid, options.platform);\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\"Tap auth gateway token is missing after startup.\");\n }\n\n const gatewayHealthy = await waitForAppServerHealth(\n effectiveUrl,\n APP_SERVER_GATEWAY_START_TIMEOUT_MS,\n gatewayToken,\n );\n if (!gatewayHealthy) {\n await terminateProcess(pid, options.platform);\n if (auth.gatewayPid != null) {\n await terminateProcess(auth.gatewayPid, options.platform);\n }\n removeFileIfExists(auth.tokenPath);\n throw new Error(\n `Tap auth gateway did not become healthy at ${effectiveUrl}.\\nCheck ${auth.gatewayLogPath ?? \"the gateway log\"} and ${logPath}.`,\n );\n }\n\n const healthyAt = new Date().toISOString();\n pid =\n (options.platform === \"win32\"\n ? findListeningProcessId(auth.upstreamUrl, options.platform)\n : findUnixListeningProcessId(auth.upstreamUrl, options.platform)) ?? pid;\n return {\n url: effectiveUrl,\n pid,\n managed: true,\n healthy: true,\n lastCheckedAt: healthyAt,\n lastHealthyAt: healthyAt,\n logPath,\n manualCommand,\n auth,\n };\n}\n\nexport function formatCodexAppServerCommand(\n command: string,\n url: string,\n): string {\n return `${command} app-server --listen ${url}`;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport type {\n RuntimeName,\n InstanceId,\n BridgeState,\n AppServerState,\n HeadlessConfig,\n Platform,\n} from \"../types.js\";\nimport { resolveNodeRuntime, buildRuntimeEnv } from \"../runtime/index.js\";\n\nimport { pidFilePath, logFilePath } from \"./bridge-paths.js\";\nimport { startWindowsDetachedProcess } from \"./bridge-windows-spawn.js\";\nimport { startUnixDetachedProcess } from \"./bridge-unix-spawn.js\";\nimport { stopManagedAppServer } from \"./bridge-process-control.js\";\nimport { resolveAgentName } from \"./bridge-config.js\";\nimport {\n loadBridgeState,\n saveBridgeState,\n clearBridgeState,\n isBridgeRunning,\n} from \"./bridge-state.js\";\nimport { materializeGatewayTokenFile } from \"./bridge-app-server-auth.js\";\nimport { rotateLog } from \"./bridge-observability.js\";\nimport {\n isAppServerUsedByOtherBridge,\n resolveAppServerUrl,\n ensureCodexAppServer,\n} from \"./bridge-app-server-lifecycle.js\";\n\nexport interface BridgeStartOptions {\n instanceId: InstanceId;\n runtime: RuntimeName;\n stateDir: string;\n commsDir: string;\n bridgeScript: string;\n platform: Platform;\n agentName?: string;\n runtimeCommand?: string;\n appServerUrl?: string;\n repoRoot?: string;\n port?: number;\n /** Headless configuration. Passed as env vars to the bridge process. */\n headless?: HeadlessConfig | null;\n /** Bridge script operational flags (forwarded to codex-app-server-bridge.ts) */\n busyMode?: \"steer\" | \"wait\";\n pollSeconds?: number;\n reconnectSeconds?: number;\n messageLookbackMinutes?: number;\n threadId?: string;\n ephemeral?: boolean;\n processExistingMessages?: boolean;\n manageAppServer?: boolean;\n /** Skip auth gateway — app-server listens directly on the public port (localhost only). */\n noAuth?: boolean;\n}\n\nexport function getBridgeRuntimeStateDir(\n repoRoot: string,\n instanceId: InstanceId,\n): string {\n return path.join(repoRoot, \".tmp\", `codex-app-server-bridge-${instanceId}`);\n}\n\nexport async function startBridge(\n options: BridgeStartOptions,\n): Promise<BridgeState> {\n const {\n instanceId,\n runtime,\n stateDir,\n commsDir,\n bridgeScript,\n agentName,\n port,\n } = options;\n\n const resolvedAgent = resolveAgentName(instanceId, agentName, {\n repoRoot: options.repoRoot,\n stateDir,\n });\n\n if (!resolvedAgent) {\n throw new Error(\n `No agent name for ${instanceId} bridge. ` +\n `Set TAP_AGENT_NAME env var or pass --agent-name flag.`,\n );\n }\n\n if (isBridgeRunning(stateDir, instanceId)) {\n const existing = loadBridgeState(stateDir, instanceId)!;\n throw new Error(\n `Bridge for ${instanceId} is already running (PID: ${existing.pid})`,\n );\n }\n\n const previousBridgeState = loadBridgeState(stateDir, instanceId);\n const previousAppServer = previousBridgeState?.appServer ?? null;\n\n clearBridgeState(stateDir, instanceId);\n\n const logPath = logFilePath(stateDir, instanceId);\n fs.mkdirSync(path.dirname(logPath), { recursive: true });\n rotateLog(logPath);\n\n const repoRoot = options.repoRoot ?? path.resolve(stateDir, \"..\");\n const runtimeStateDir = getBridgeRuntimeStateDir(repoRoot, instanceId);\n const resolved = resolveNodeRuntime(\n options.runtimeCommand ?? \"node\",\n repoRoot,\n );\n const command = resolved.command;\n\n const runtimeEnv = buildRuntimeEnv(repoRoot);\n const effectiveAppServerUrl = resolveAppServerUrl(options.appServerUrl, port);\n let appServer: AppServerState | null = null;\n let bridgeAppServerUrl = effectiveAppServerUrl;\n\n if (runtime === \"codex\" && options.manageAppServer) {\n appServer = await ensureCodexAppServer({\n instanceId,\n stateDir,\n repoRoot,\n platform: options.platform,\n appServerUrl: effectiveAppServerUrl,\n existingAppServer: previousAppServer,\n noAuth: options.noAuth,\n });\n if (appServer.auth) {\n appServer = {\n ...appServer,\n auth: materializeGatewayTokenFile(\n stateDir,\n instanceId,\n effectiveAppServerUrl,\n appServer.auth,\n ),\n };\n }\n bridgeAppServerUrl = effectiveAppServerUrl;\n }\n\n try {\n const bridgeEnv = {\n ...runtimeEnv,\n TAP_COMMS_DIR: commsDir,\n TAP_STATE_DIR: runtimeStateDir,\n TAP_BRIDGE_RUNTIME: runtime,\n TAP_BRIDGE_INSTANCE_ID: instanceId,\n TAP_AGENT_ID: instanceId,\n TAP_AGENT_NAME: resolvedAgent,\n CODEX_TAP_AGENT_NAME: resolvedAgent,\n TAP_RESOLVED_NODE: resolved.command,\n TAP_STRIP_TYPES: resolved.supportsStripTypes ? \"1\" : \"0\",\n ...(bridgeAppServerUrl\n ? { CODEX_APP_SERVER_URL: bridgeAppServerUrl }\n : {}),\n ...(appServer?.auth?.tokenPath\n ? { TAP_GATEWAY_TOKEN_FILE: appServer.auth.tokenPath }\n : {}),\n ...(port != null ? { TAP_BRIDGE_PORT: String(port) } : {}),\n ...(options.headless?.enabled\n ? {\n TAP_HEADLESS: \"true\",\n TAP_AGENT_ROLE: options.headless.role,\n TAP_MAX_REVIEW_ROUNDS: String(options.headless.maxRounds),\n TAP_QUALITY_FLOOR: options.headless.qualitySeverityFloor,\n }\n : {}),\n ...(options.busyMode ? { TAP_BUSY_MODE: options.busyMode } : {}),\n ...(options.pollSeconds != null\n ? { TAP_POLL_SECONDS: String(options.pollSeconds) }\n : {}),\n ...(options.reconnectSeconds != null\n ? { TAP_RECONNECT_SECONDS: String(options.reconnectSeconds) }\n : {}),\n ...(options.messageLookbackMinutes != null\n ? {\n TAP_MESSAGE_LOOKBACK_MINUTES: String(\n options.messageLookbackMinutes,\n ),\n }\n : {}),\n ...(process.env.TAP_COLD_START_WARMUP === \"true\"\n ? { TAP_COLD_START_WARMUP: \"true\" }\n : {}),\n ...(options.threadId ? { TAP_THREAD_ID: options.threadId } : {}),\n ...(options.ephemeral ? { TAP_EPHEMERAL: \"true\" } : {}),\n ...(options.processExistingMessages\n ? { TAP_PROCESS_EXISTING: \"true\" }\n : {}),\n };\n\n const bridgePid =\n options.platform === \"win32\"\n ? startWindowsDetachedProcess(\n command,\n [bridgeScript],\n repoRoot,\n logPath,\n bridgeEnv,\n )\n : startUnixDetachedProcess(\n command,\n [bridgeScript],\n repoRoot,\n logPath,\n bridgeEnv,\n );\n\n if (!bridgePid) {\n throw new Error(`Failed to spawn bridge process for ${instanceId}`);\n }\n\n const state: BridgeState = {\n pid: bridgePid,\n statePath: pidFilePath(stateDir, instanceId),\n lastHeartbeat: new Date().toISOString(),\n appServer,\n runtimeStateDir,\n };\n\n saveBridgeState(stateDir, instanceId, state);\n\n return state;\n } catch (err) {\n if (appServer?.managed) {\n const shared = isAppServerUsedByOtherBridge(\n stateDir,\n instanceId,\n appServer,\n );\n if (!shared) {\n await stopManagedAppServer(appServer, options.platform);\n }\n }\n throw err;\n }\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\nimport type { InstanceId, BridgeState, Platform } from \"../types.js\";\n\nimport { isProcessAlive, terminateProcess } from \"./bridge-process-control.js\";\nimport { cleanupHeadlessDispatch } from \"./bridge-config.js\";\nimport { loadBridgeState, clearBridgeState } from \"./bridge-state.js\";\nimport {\n getBridgeRuntimeStateDir,\n startBridge,\n type BridgeStartOptions,\n} from \"./bridge-startup.js\";\n\nexport interface BridgeStopOptions {\n instanceId: InstanceId;\n stateDir: string;\n platform: Platform;\n}\n\nexport async function stopBridge(options: BridgeStopOptions): Promise<boolean> {\n const { instanceId, stateDir, platform } = options;\n const state = loadBridgeState(stateDir, instanceId);\n\n if (!state) {\n return false;\n }\n\n if (!isProcessAlive(state.pid)) {\n clearBridgeState(stateDir, instanceId);\n return false;\n }\n\n try {\n await terminateProcess(state.pid, platform);\n } catch {\n // Process may have already exited.\n }\n\n clearBridgeState(stateDir, instanceId);\n return true;\n}\n\nexport interface RestartBridgeOptions extends BridgeStartOptions {\n /** Max seconds to wait for active turn to complete before killing. Default: 30 */\n drainTimeoutSeconds?: number;\n}\n\n/**\n * Graceful bridge restart: wait for active turn -> cleanup -> stop -> start.\n * Prevents message loss during restart by draining active work first\n * and replaying unprocessed messages on the new instance.\n */\nexport async function restartBridge(\n options: RestartBridgeOptions,\n): Promise<BridgeState> {\n const { instanceId, stateDir, platform } = options;\n const drainTimeout = (options.drainTimeoutSeconds ?? 30) * 1000;\n const repoRoot = options.repoRoot ?? stateDir.replace(/[\\\\/].tap-comms$/, \"\");\n\n const runtimeStateDir = getBridgeRuntimeStateDir(repoRoot, instanceId);\n const heartbeatPath = path.join(runtimeStateDir, \"heartbeat.json\");\n\n if (fs.existsSync(heartbeatPath)) {\n const startWait = Date.now();\n while (Date.now() - startWait < drainTimeout) {\n try {\n const hb = JSON.parse(fs.readFileSync(heartbeatPath, \"utf-8\"));\n if (!hb.activeTurnId) break;\n } catch {\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, 1000));\n }\n }\n\n if (options.headless?.enabled && options.commsDir) {\n const agentName = options.agentName ?? instanceId;\n cleanupHeadlessDispatch(path.join(options.commsDir, \"inbox\"), agentName);\n }\n\n await stopBridge({ instanceId, stateDir, platform });\n\n return startBridge({\n ...options,\n processExistingMessages: true,\n });\n}\n","// ─── Extracted modules ─────────────────────────────────────────\n\nexport {\n appServerLogFilePath,\n appServerGatewayLogFilePath,\n appServerGatewayTokenFilePath,\n stderrLogFilePath,\n pidFilePath,\n logFilePath,\n runtimeHeartbeatFilePath,\n runtimeThreadStateFilePath,\n} from \"./bridge-paths.js\";\n\nexport {\n writeProtectedTextFile,\n removeFileIfExists,\n toPowerShellSingleQuotedString,\n toPowerShellStringArrayLiteral,\n} from \"./bridge-file-io.js\";\n\nexport {\n getWebSocketCtor,\n delay,\n isLoopbackHost,\n allocateLoopbackPort,\n isTcpPortAvailable,\n findNextAvailableAppServerPort,\n waitForPortRelease,\n} from \"./bridge-port-network.js\";\n\nexport {\n resolveCodexCommand,\n splitResolvedCommand,\n resolvePowerShellCommand,\n resolveAuthGatewayScript,\n} from \"./bridge-codex-command.js\";\n\nexport {\n cleanupStaleWindowsSpawnWrappers,\n buildWindowsDetachedWrapperScript,\n startWindowsDetachedProcess,\n startWindowsCodexAppServer,\n findListeningProcessId,\n} from \"./bridge-windows-spawn.js\";\n\nexport {\n startUnixDetachedProcess,\n startUnixCodexAppServer,\n findUnixListeningProcessId,\n} from \"./bridge-unix-spawn.js\";\n\nexport {\n isProcessAlive,\n terminateProcess,\n stopManagedAppServer,\n} from \"./bridge-process-control.js\";\n\nexport {\n resolveAgentName,\n inferRestartMode,\n cleanupHeadlessDispatch,\n} from \"./bridge-config.js\";\n\nexport {\n loadBridgeState,\n saveBridgeState,\n clearBridgeState,\n isBridgeRunning,\n loadRuntimeBridgeHeartbeat,\n loadRuntimeBridgeThreadState,\n} from \"./bridge-state.js\";\n\nexport type {\n RuntimeBridgeHeartbeat,\n RuntimeBridgeThreadState,\n} from \"./bridge-state.js\";\n\nexport {\n updateBridgeHeartbeat,\n getHeartbeatAge,\n getBridgeHeartbeatTimestamp,\n getBridgeStatus,\n getTurnInfo,\n isTurnStuck,\n rotateLog,\n} from \"./bridge-observability.js\";\n\nexport type { TurnInfo } from \"./bridge-observability.js\";\n\nexport {\n checkAppServerHealth,\n waitForAppServerHealth,\n markAppServerHealthy,\n APP_SERVER_HEALTH_TIMEOUT_MS,\n APP_SERVER_HEALTH_RETRY_MS,\n} from \"./bridge-app-server-health.js\";\n\nexport type {\n WebSocketLike,\n WebSocketCtor,\n} from \"./bridge-app-server-health.js\";\n\nexport {\n buildProtectedAppServerUrl,\n readGatewayTokenFromPath,\n readGatewayToken,\n materializeGatewayTokenFile,\n createManagedAppServerAuth,\n canReuseManagedAppServer,\n AUTH_SUBPROTOCOL_PREFIX,\n} from \"./bridge-app-server-auth.js\";\n\nexport type { EnsureCodexAppServerOptions } from \"./bridge-app-server-lifecycle.js\";\n\nexport {\n DEFAULT_APP_SERVER_URL,\n APP_SERVER_START_TIMEOUT_MS,\n APP_SERVER_GATEWAY_START_TIMEOUT_MS,\n isAppServerUsedByOtherBridge,\n findReusableManagedAppServer,\n resolveAppServerUrl,\n ensureCodexAppServer,\n formatCodexAppServerCommand,\n} from \"./bridge-app-server-lifecycle.js\";\n\nexport type { BridgeStartOptions } from \"./bridge-startup.js\";\n\nexport { getBridgeRuntimeStateDir, startBridge } from \"./bridge-startup.js\";\nexport type {\n BridgeStopOptions,\n RestartBridgeOptions,\n} from \"./bridge-orchestrator.js\";\n\nexport { stopBridge, restartBridge } from \"./bridge-orchestrator.js\";\n","/**\n * Dashboard data collection engine.\n * Aggregates: agents (comms presence), bridges (state + PID), PRs (gh CLI).\n *\n * Ref: tap public repo tap-ops-dashboard.ps1 (single-agent view)\n * M74 extends to control-tower view (all agents, all bridges, all PRs).\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execSync } from \"node:child_process\";\nimport { resolveConfig } from \"../config/index.js\";\nimport {\n loadBridgeState,\n getBridgeStatus,\n getHeartbeatAge,\n isProcessAlive,\n} from \"./bridge.js\";\nimport type { InstanceId } from \"../types.js\";\nimport { loadState } from \"../state.js\";\n\n// ─── Types ─────────────────────────────────────────────────────\n\nexport interface AgentInfo {\n name: string;\n status: string | null;\n lastActivity: string | null;\n joinedAt: string | null;\n}\n\nexport interface BridgeInfo {\n instanceId: string;\n runtime: string;\n status: \"running\" | \"stopped\" | \"stale\";\n pid: number | null;\n port: number | null;\n heartbeatAge: number | null;\n headless: boolean;\n}\n\nexport interface PRInfo {\n number: number;\n title: string;\n author: string;\n state: string;\n url: string;\n}\n\nexport interface DashboardWarning {\n level: \"warn\" | \"error\";\n message: string;\n}\n\nexport interface DashboardSnapshot {\n generatedAt: string;\n repoRoot: string;\n commsDir: string;\n agents: AgentInfo[];\n bridges: BridgeInfo[];\n prs: PRInfo[];\n warnings: DashboardWarning[];\n}\n\n// ─── Agent collection ──────────────────────────────────────────\n\nfunction collectAgents(commsDir: string): AgentInfo[] {\n // Read heartbeats.json (written by tap-comms MCP server)\n const heartbeatsPath = path.join(commsDir, \"heartbeats.json\");\n if (!fs.existsSync(heartbeatsPath)) return [];\n\n try {\n const raw = fs.readFileSync(heartbeatsPath, \"utf-8\");\n const data = JSON.parse(raw) as Record<\n string,\n {\n agent?: string;\n timestamp?: string;\n lastActivity?: string;\n status?: string;\n joinedAt?: string;\n }\n >;\n\n return Object.entries(data).map(([name, info]) => ({\n name: info.agent ?? name,\n status: info.status ?? null,\n lastActivity: info.lastActivity ?? info.timestamp ?? null,\n joinedAt: info.joinedAt ?? null,\n }));\n } catch {\n return [];\n }\n}\n\n// ─── Bridge collection ─────────────────────────────────────────\n\nfunction collectBridges(repoRoot: string): BridgeInfo[] {\n const state = loadState(repoRoot);\n const { config } = resolveConfig({}, repoRoot);\n const stateDir = config.stateDir;\n const bridges: BridgeInfo[] = [];\n\n // Collect from state.json instances (if initialized)\n if (state) {\n for (const [id, inst] of Object.entries(state.instances)) {\n if (!inst?.installed) continue;\n if (inst.bridgeMode !== \"app-server\") continue;\n\n const instanceId = id as InstanceId;\n const status = getBridgeStatus(stateDir, instanceId);\n const bridgeState = loadBridgeState(stateDir, instanceId);\n const age = getHeartbeatAge(stateDir, instanceId);\n\n bridges.push({\n instanceId: id,\n runtime: inst.runtime,\n status,\n pid: bridgeState?.pid ?? null,\n port: inst.port ?? null,\n heartbeatAge: age,\n headless: inst.headless?.enabled ?? false,\n });\n }\n }\n\n // Also scan .tmp/ for daemon state dirs (catches externally-launched bridges)\n const tmpDir = path.join(repoRoot, \".tmp\");\n if (fs.existsSync(tmpDir)) {\n try {\n const dirs = fs\n .readdirSync(tmpDir)\n .filter((d) => d.startsWith(\"codex-app-server-bridge\"));\n\n for (const dir of dirs) {\n const daemonPath = path.join(tmpDir, dir, \"bridge-daemon.json\");\n if (!fs.existsSync(daemonPath)) continue;\n\n try {\n const raw = fs.readFileSync(daemonPath, \"utf-8\");\n const daemon = JSON.parse(raw) as {\n pid?: number;\n startedAt?: string;\n appServerUrl?: string;\n };\n\n // Skip if already covered by state.json instances\n const alreadyCovered = bridges.some(\n (b) => b.pid === daemon.pid && b.pid !== null,\n );\n if (alreadyCovered) continue;\n\n const agentFile = path.join(tmpDir, dir, \"agent-name.txt\");\n const agentName = fs.existsSync(agentFile)\n ? fs.readFileSync(agentFile, \"utf-8\").trim()\n : dir;\n\n const running = daemon.pid ? isProcessAlive(daemon.pid) : false;\n const portMatch = daemon.appServerUrl?.match(/:(\\d+)/);\n const port = portMatch ? parseInt(portMatch[1], 10) : null;\n\n bridges.push({\n instanceId: agentName,\n runtime: \"codex\",\n status: running ? \"running\" : \"stale\",\n pid: daemon.pid ?? null,\n port,\n heartbeatAge: null,\n headless: false,\n });\n } catch {\n // Skip corrupted daemon files\n }\n }\n } catch {\n // .tmp/ read failed\n }\n }\n\n return bridges;\n}\n\n// ─── PR collection ─────────────────────────────────────────────\n\nfunction collectPRs(): PRInfo[] {\n try {\n const output = execSync(\n \"gh pr list --state all --limit 10 --json number,title,author,state,url\",\n { encoding: \"utf-8\", timeout: 10000, stdio: [\"pipe\", \"pipe\", \"pipe\"] },\n );\n\n const prs = JSON.parse(output) as Array<{\n number: number;\n title: string;\n author: { login: string };\n state: string;\n url: string;\n }>;\n\n return prs.map((pr) => ({\n number: pr.number,\n title: pr.title,\n author: pr.author.login,\n state: pr.state,\n url: pr.url,\n }));\n } catch {\n return [];\n }\n}\n\n// ─── Warnings ──────────────────────────────────────────────────\n\nfunction collectWarnings(\n bridges: BridgeInfo[],\n agents: AgentInfo[],\n): DashboardWarning[] {\n const warnings: DashboardWarning[] = [];\n\n for (const bridge of bridges) {\n if (bridge.status === \"stale\") {\n warnings.push({\n level: \"warn\",\n message: `Bridge ${bridge.instanceId} is stale (PID ${bridge.pid} dead)`,\n });\n }\n if (\n bridge.status === \"running\" &&\n bridge.heartbeatAge !== null &&\n bridge.heartbeatAge > 60\n ) {\n warnings.push({\n level: \"warn\",\n message: `Bridge ${bridge.instanceId} heartbeat stale (${bridge.heartbeatAge}s ago)`,\n });\n }\n }\n\n if (bridges.length === 0) {\n warnings.push({\n level: \"warn\",\n message: \"No bridges configured\",\n });\n }\n\n if (agents.length === 0) {\n warnings.push({\n level: \"warn\",\n message: \"No agent heartbeats found\",\n });\n }\n\n return warnings;\n}\n\n// ─── Snapshot ──────────────────────────────────────────────────\n\nexport function collectDashboardSnapshot(\n repoRoot?: string,\n commsDirOverride?: string,\n): DashboardSnapshot {\n const { config } = resolveConfig(\n commsDirOverride ? { commsDir: commsDirOverride } : {},\n repoRoot,\n );\n const resolved = config;\n\n const agents = collectAgents(resolved.commsDir);\n const bridges = collectBridges(resolved.repoRoot);\n const prs = collectPRs();\n const warnings = collectWarnings(bridges, agents);\n\n return {\n generatedAt: new Date().toISOString(),\n repoRoot: resolved.repoRoot,\n commsDir: resolved.commsDir,\n agents,\n bridges,\n prs,\n warnings,\n };\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { execSync } from \"node:child_process\";\nimport { fileHash, backupFile, ensureBackupDir } from \"../state.js\";\nimport { buildManagedMcpServerSpec } from \"./common.js\";\nimport type {\n RuntimeAdapter,\n AdapterContext,\n ProbeResult,\n PatchPlan,\n ApplyResult,\n VerifyResult,\n BridgeMode,\n OwnedArtifact,\n PatchOp,\n VerifyCheck,\n} from \"../types.js\";\n\nconst MCP_SERVER_KEY = \"tap\";\n\n// Legacy key name — used for auto-migration from pre-0.3 configs\nconst OLD_MCP_SERVER_KEY = \"tap-comms\";\n\nfunction findMcpJsonPath(ctx: AdapterContext): string {\n return path.join(ctx.repoRoot, \".mcp.json\");\n}\n\nfunction findClaudeCommand(): string | null {\n try {\n execSync(\"claude --version\", { stdio: \"pipe\" });\n return \"claude\";\n } catch {\n return null;\n }\n}\n\nfunction buildMcpServerEntry(\n ctx: AdapterContext,\n): Record<string, unknown> | null {\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n if (!managed.command) return null;\n\n return {\n type: \"stdio\",\n command: managed.command,\n args: managed.args,\n env: managed.env,\n };\n}\n\nexport const claudeAdapter: RuntimeAdapter = {\n runtime: \"claude\",\n\n async probe(ctx: AdapterContext): Promise<ProbeResult> {\n const warnings: string[] = [];\n const issues: string[] = [];\n\n const configPath = findMcpJsonPath(ctx);\n const configExists = fs.existsSync(configPath);\n const runtimeCommand = findClaudeCommand();\n const canWrite = configExists\n ? (() => {\n try {\n fs.accessSync(configPath, fs.constants.W_OK);\n return true;\n } catch {\n return false;\n }\n })()\n : true; // Can create new file\n\n if (!runtimeCommand) {\n warnings.push(\n \"Claude CLI not found in PATH. Config will be created but may need manual setup.\",\n );\n }\n\n const managed = buildManagedMcpServerSpec(ctx);\n warnings.push(...managed.warnings);\n issues.push(...managed.issues);\n\n // Check if comms dir exists\n if (!fs.existsSync(ctx.commsDir)) {\n issues.push(\n `Comms directory not found: ${ctx.commsDir}. Run \"init\" first.`,\n );\n }\n\n return {\n installed: true, // Claude adapter always \"installed\" — .mcp.json is per-project\n configPath,\n configExists,\n runtimeCommand,\n version: null,\n canWrite,\n warnings,\n issues,\n };\n },\n\n async plan(ctx: AdapterContext, probe: ProbeResult): Promise<PatchPlan> {\n const configPath = probe.configPath ?? findMcpJsonPath(ctx);\n const conflicts: string[] = [];\n const warnings: string[] = [];\n const operations: PatchOp[] = [];\n const ownedArtifacts: OwnedArtifact[] = [];\n\n // Check for existing tap entry\n if (probe.configExists) {\n const raw = fs.readFileSync(configPath, \"utf-8\");\n try {\n const config = JSON.parse(raw);\n if (config.mcpServers?.[MCP_SERVER_KEY]) {\n conflicts.push(\n `Existing \"${MCP_SERVER_KEY}\" entry in .mcp.json will be overwritten.`,\n );\n }\n if (config.mcpServers?.[OLD_MCP_SERVER_KEY]) {\n conflicts.push(\n `Legacy \"${OLD_MCP_SERVER_KEY}\" entry will be migrated to \"${MCP_SERVER_KEY}\".`,\n );\n }\n } catch {\n warnings.push(\n \".mcp.json exists but is not valid JSON. Will be overwritten.\",\n );\n }\n }\n\n const serverEntry = buildMcpServerEntry(ctx);\n\n if (!serverEntry) {\n warnings.push(\n \"tap MCP server entry not found. Skipping .mcp.json patch. \" +\n \"Reinstall @hua-labs/tap or run from a repo with packages/tap-plugin/channels/ available.\",\n );\n return {\n runtime: \"claude\",\n operations: [],\n ownedArtifacts: [],\n backupDir: ensureBackupDir(ctx.stateDir, \"claude\"),\n restartRequired: false,\n conflicts,\n warnings,\n };\n }\n\n operations.push({\n type: probe.configExists ? \"merge\" : \"set\",\n path: configPath,\n key: `mcpServers.${MCP_SERVER_KEY}`,\n value: serverEntry,\n });\n\n ownedArtifacts.push({\n kind: \"json-path\",\n path: configPath,\n selector: `mcpServers.${MCP_SERVER_KEY}`,\n });\n\n const backupDir = ensureBackupDir(ctx.stateDir, \"claude\");\n\n return {\n runtime: \"claude\",\n operations,\n ownedArtifacts,\n backupDir,\n restartRequired: true,\n conflicts,\n warnings,\n };\n },\n\n async apply(_ctx: AdapterContext, plan: PatchPlan): Promise<ApplyResult> {\n const changedFiles: string[] = [];\n const warnings: string[] = [];\n let appliedOps = 0;\n\n for (const op of plan.operations) {\n try {\n if (op.type === \"set\" || op.type === \"merge\") {\n // Read or create .mcp.json\n let config: Record<string, unknown> = {};\n if (fs.existsSync(op.path)) {\n // Backup first\n backupFile(op.path, plan.backupDir);\n const raw = fs.readFileSync(op.path, \"utf-8\");\n try {\n config = JSON.parse(raw);\n } catch {\n // Invalid JSON, start fresh but backup the original\n warnings.push(\n `${op.path} was invalid JSON. Created backup and starting fresh.`,\n );\n }\n }\n\n // Migrate: remove legacy \"tap-comms\" key if present\n const servers = config.mcpServers as\n | Record<string, unknown>\n | undefined;\n if (servers?.[OLD_MCP_SERVER_KEY]) {\n delete servers[OLD_MCP_SERVER_KEY];\n }\n\n // Set nested key\n if (op.key) {\n setNestedKey(config, op.key, op.value);\n }\n\n // Write atomically\n const tmp = `${op.path}.tmp.${process.pid}`;\n fs.writeFileSync(\n tmp,\n JSON.stringify(config, null, 2) + \"\\n\",\n \"utf-8\",\n );\n fs.renameSync(tmp, op.path);\n changedFiles.push(op.path);\n appliedOps++;\n }\n } catch (err) {\n warnings.push(\n `Failed to apply op on ${op.path}: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n const lastAppliedHash =\n changedFiles.length > 0 ? fileHash(changedFiles[0]) : \"\";\n\n return {\n success: appliedOps > 0,\n appliedOps,\n backupCreated: true,\n lastAppliedHash,\n ownedArtifacts: plan.ownedArtifacts,\n changedFiles,\n restartRequired: plan.restartRequired,\n warnings,\n };\n },\n\n async verify(ctx: AdapterContext, plan: PatchPlan): Promise<VerifyResult> {\n const checks: VerifyCheck[] = [];\n const warnings: string[] = [];\n\n // 1. Config file exists\n const configPath = plan.operations[0]?.path;\n if (configPath) {\n checks.push({\n name: \"Config file exists\",\n passed: fs.existsSync(configPath),\n message: fs.existsSync(configPath)\n ? undefined\n : `${configPath} not found`,\n });\n\n // 2. Config is valid JSON\n if (fs.existsSync(configPath)) {\n try {\n const raw = fs.readFileSync(configPath, \"utf-8\");\n const config = JSON.parse(raw);\n checks.push({ name: \"Config is valid JSON\", passed: true });\n\n // 3. Managed entry present\n const entry = config.mcpServers?.[MCP_SERVER_KEY];\n checks.push({\n name: \"tap entry present\",\n passed: !!entry,\n message: entry\n ? undefined\n : `mcpServers.${MCP_SERVER_KEY} not found`,\n });\n\n // 4. Entry has correct env\n if (entry) {\n const hasCommsDir =\n normalizeTapCommsDir(entry.env?.TAP_COMMS_DIR) ===\n normalizeTapCommsDir(ctx.commsDir);\n checks.push({\n name: \"TAP_COMMS_DIR configured\",\n passed: hasCommsDir,\n message: hasCommsDir ? undefined : `Expected ${ctx.commsDir}`,\n });\n }\n } catch {\n checks.push({\n name: \"Config is valid JSON\",\n passed: false,\n message: \"Parse error\",\n });\n }\n }\n }\n\n // 5. Comms dir exists\n checks.push({\n name: \"Comms directory exists\",\n passed: fs.existsSync(ctx.commsDir),\n message: fs.existsSync(ctx.commsDir)\n ? undefined\n : `${ctx.commsDir} not found`,\n });\n\n // 6. Runtime command found\n const cmd = findClaudeCommand();\n checks.push({\n name: \"Claude CLI found\",\n passed: !!cmd,\n message: cmd ? undefined : \"claude not in PATH (non-blocking)\",\n });\n if (!cmd) {\n warnings.push(\n \"Claude CLI not in PATH. Config is ready but cannot verify runtime reads it.\",\n );\n }\n\n const ok = checks\n .filter((c) => c.name !== \"Claude CLI found\")\n .every((c) => c.passed);\n\n return { ok, checks, restartRequired: true, warnings };\n },\n\n bridgeMode(): BridgeMode {\n return \"native-push\";\n },\n};\n\n// ─── Helpers ────────────────────────────────────────────────────\n\nfunction setNestedKey(\n obj: Record<string, unknown>,\n keyPath: string,\n value: unknown,\n): void {\n const keys = keyPath.split(\".\");\n let current = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (typeof current[key] !== \"object\" || current[key] === null) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n current[keys[keys.length - 1]] = value;\n}\n\nfunction normalizeTapCommsDir(value: unknown): string {\n return typeof value === \"string\"\n ? path.resolve(value).replace(/\\\\/g, \"/\")\n : \"\";\n}\n","import * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { ArtifactKind } from \"./types.js\";\n\ntype BackupPayload =\n | {\n kind: \"json-path\";\n selector: string;\n existed: boolean;\n value?: unknown;\n }\n | {\n kind: \"toml-table\";\n selector: string;\n existed: boolean;\n content?: string;\n }\n | {\n kind: \"file\";\n selector: string;\n existed: boolean;\n };\n\nfunction selectorHash(selector: string): string {\n return crypto.createHash(\"sha256\").update(selector).digest(\"hex\").slice(0, 12);\n}\n\nexport function artifactBackupPath(\n backupDir: string,\n kind: ArtifactKind,\n selector: string,\n): string {\n const safeKind = kind.replace(/[^a-z-]/gi, \"-\");\n return path.join(backupDir, `${safeKind}-${selectorHash(selector)}.json`);\n}\n\nexport function writeArtifactBackup(\n backupPath: string,\n payload: BackupPayload,\n): void {\n fs.mkdirSync(path.dirname(backupPath), { recursive: true });\n const tmp = `${backupPath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(payload, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, backupPath);\n}\n\nexport function readArtifactBackup(backupPath: string): BackupPayload | null {\n if (!fs.existsSync(backupPath)) return null;\n\n try {\n const raw = fs.readFileSync(backupPath, \"utf-8\");\n return JSON.parse(raw) as BackupPayload;\n } catch {\n return null;\n }\n}\n","function splitLines(content: string): string[] {\n return content.replace(/\\r\\n/g, \"\\n\").split(\"\\n\");\n}\n\nfunction tableHeader(selector: string): string {\n return `[${selector}]`;\n}\n\nfunction findTableRange(\n lines: string[],\n selector: string,\n): { start: number; end: number } | null {\n const header = tableHeader(selector);\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].trim() !== header) continue;\n\n let end = lines.length;\n for (let j = i + 1; j < lines.length; j++) {\n const trimmed = lines[j].trim();\n if (trimmed.startsWith(\"[\") && trimmed.endsWith(\"]\")) {\n end = j;\n break;\n }\n }\n return { start: i, end };\n }\n return null;\n}\n\nfunction escapeBasicString(value: string): string {\n return value.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n}\n\nfunction renderValue(value: string | string[]): string {\n if (Array.isArray(value)) {\n return `[${value.map((item) => `\"${escapeBasicString(item)}\"`).join(\", \")}]`;\n }\n return `\"${escapeBasicString(value)}\"`;\n}\n\nexport function extractTomlTable(\n content: string,\n selector: string,\n): string | null {\n const lines = splitLines(content);\n const range = findTableRange(lines, selector);\n if (!range) return null;\n return `${lines.slice(range.start, range.end).join(\"\\n\")}\\n`;\n}\n\nexport function removeTomlTable(content: string, selector: string): string {\n const lines = splitLines(content);\n const range = findTableRange(lines, selector);\n if (!range) return content;\n\n const next = [...lines.slice(0, range.start), ...lines.slice(range.end)];\n return `${trimTomlDocument(next.join(\"\\n\"))}\\n`;\n}\n\nexport function replaceTomlTable(\n content: string,\n selector: string,\n replacement: string,\n): string {\n const lines = splitLines(content);\n const range = findTableRange(lines, selector);\n const replacementLines = replacement.replace(/\\r\\n/g, \"\\n\").trimEnd().split(\"\\n\");\n\n if (!range) {\n const doc = trimTomlDocument(content);\n if (!doc) return `${replacement.trimEnd()}\\n`;\n return `${doc}\\n\\n${replacement.trimEnd()}\\n`;\n }\n\n const next = [\n ...lines.slice(0, range.start),\n ...replacementLines,\n ...lines.slice(range.end),\n ];\n return `${trimTomlDocument(next.join(\"\\n\"))}\\n`;\n}\n\nexport function renderTomlTable(\n selector: string,\n entries: Record<string, string | string[]>,\n existingContent?: string | null,\n): string {\n const preserved = parseTomlAssignments(existingContent ?? \"\");\n const merged: Record<string, string | string[]> = { ...preserved, ...entries };\n\n const lines = [tableHeader(selector)];\n for (const [key, value] of Object.entries(merged)) {\n lines.push(`${key} = ${renderValue(value)}`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function parseTomlAssignments(\n tableContent: string,\n): Record<string, string | string[]> {\n const lines = splitLines(tableContent);\n const values: Record<string, string | string[]> = {};\n\n for (const rawLine of lines) {\n const line = rawLine.trim();\n if (!line || line.startsWith(\"#\") || (line.startsWith(\"[\") && line.endsWith(\"]\"))) {\n continue;\n }\n\n const match = line.match(/^([A-Za-z0-9_.-]+)\\s*=\\s*(.+)$/);\n if (!match) continue;\n\n const [, key, rawValue] = match;\n const value = rawValue.trim();\n\n if (value.startsWith(\"[\") && value.endsWith(\"]\")) {\n const items = value\n .slice(1, -1)\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean)\n .map(unquoteTomlString);\n values[key] = items;\n continue;\n }\n\n values[key] = unquoteTomlString(value);\n }\n\n return values;\n}\n\nexport function trimTomlDocument(content: string): string {\n return content.replace(/\\s+$/g, \"\").replace(/\\n{3,}/g, \"\\n\\n\");\n}\n\nfunction unquoteTomlString(value: string): string {\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n const inner = value.slice(1, -1);\n return value.startsWith('\"')\n ? inner.replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, \"\\\\\")\n : inner;\n }\n return value;\n}\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { backupFile, ensureBackupDir, fileHash } from \"../state.js\";\nimport {\n artifactBackupPath,\n writeArtifactBackup,\n} from \"../artifact-backups.js\";\nimport {\n extractTomlTable,\n removeTomlTable,\n renderTomlTable,\n replaceTomlTable,\n} from \"../toml.js\";\nimport type {\n AdapterContext,\n ApplyResult,\n BridgeMode,\n OwnedArtifact,\n PatchOp,\n PatchPlan,\n ProbeResult,\n RuntimeAdapter,\n VerifyCheck,\n VerifyResult,\n} from \"../types.js\";\nimport {\n buildManagedMcpServerSpec,\n canWriteOrCreate,\n getHomeDir,\n probeCommand,\n} from \"./common.js\";\n\nconst MCP_SELECTOR = \"mcp_servers.tap\";\nconst ENV_SELECTOR = \"mcp_servers.tap.env\";\n\n// Legacy key names — used for auto-migration from pre-0.3 configs\nconst OLD_MCP_SELECTOR = \"mcp_servers.tap-comms\";\nconst OLD_ENV_SELECTOR = \"mcp_servers.tap-comms.env\";\n\nfunction findCodexConfigPath(): string {\n return path.join(getHomeDir(), \".codex\", \"config.toml\");\n}\n\nfunction canonicalizeTrustPath(targetPath: string): string {\n let resolved = path.resolve(targetPath).replace(/\\//g, \"\\\\\");\n const driveRoot = /^[A-Za-z]:\\\\$/;\n if (!driveRoot.test(resolved)) {\n resolved = resolved.replace(/\\\\+$/g, \"\");\n }\n return resolved.startsWith(\"\\\\\\\\?\\\\\") ? resolved : `\\\\\\\\?\\\\${resolved}`;\n}\n\nfunction trustSelector(targetPath: string): string {\n return `projects.'${canonicalizeTrustPath(targetPath)}'`;\n}\n\nfunction getTrustTargets(ctx: AdapterContext): string[] {\n const targets = [ctx.repoRoot, process.cwd()];\n return [...new Set(targets.map((value) => path.resolve(value)))];\n}\n\nfunction buildManagedArtifacts(\n configPath: string,\n ctx: AdapterContext,\n): OwnedArtifact[] {\n const artifacts: OwnedArtifact[] = [\n { kind: \"toml-table\", path: configPath, selector: MCP_SELECTOR },\n { kind: \"toml-table\", path: configPath, selector: ENV_SELECTOR },\n ];\n\n for (const target of getTrustTargets(ctx)) {\n artifacts.push({\n kind: \"toml-table\",\n path: configPath,\n selector: trustSelector(target),\n });\n }\n\n return artifacts;\n}\n\nfunction readConfigOrEmpty(configPath: string): string {\n if (!fs.existsSync(configPath)) return \"\";\n return fs.readFileSync(configPath, \"utf-8\");\n}\n\nfunction writeTomlFile(filePath: string, content: string): void {\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n const tmp = `${filePath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, content, \"utf-8\");\n fs.renameSync(tmp, filePath);\n}\n\nfunction verifyManagedToml(\n content: string,\n ctx: AdapterContext,\n configPath: string,\n): VerifyCheck[] {\n const checks: VerifyCheck[] = [];\n const managed = buildManagedMcpServerSpec(ctx);\n const mainTable = extractTomlTable(content, MCP_SELECTOR);\n const envTable = extractTomlTable(content, ENV_SELECTOR);\n\n checks.push({\n name: \"Codex config exists\",\n passed: fs.existsSync(configPath),\n message: fs.existsSync(configPath) ? undefined : `${configPath} not found`,\n });\n checks.push({\n name: \"tap MCP table present\",\n passed: !!mainTable,\n message: mainTable ? undefined : `${MCP_SELECTOR} not found`,\n });\n checks.push({\n name: \"tap env table present\",\n passed: !!envTable,\n message: envTable ? undefined : `${ENV_SELECTOR} not found`,\n });\n\n for (const target of getTrustTargets(ctx)) {\n const selector = trustSelector(target);\n const trustTable = extractTomlTable(content, selector);\n checks.push({\n name: `Trust table present: ${canonicalizeTrustPath(target)}`,\n passed: !!trustTable && trustTable.includes('trust_level = \"trusted\"'),\n message:\n trustTable && trustTable.includes('trust_level = \"trusted\"')\n ? undefined\n : `${selector} missing trust_level = \"trusted\"`,\n });\n }\n\n if (mainTable && managed.command) {\n const expectedArgs = managed.args\n .map((a) => `\"${a.replace(/\\\\/g, \"\\\\\\\\\")}\"`)\n .join(\", \");\n checks.push({\n name: \"Managed command configured\",\n passed:\n mainTable.includes(\n `command = \"${managed.command.replace(/\\\\/g, \"\\\\\\\\\")}\"`,\n ) && mainTable.includes(`args = [${expectedArgs}]`),\n message: \"Managed tap command/args do not match expected values\",\n });\n }\n\n return checks;\n}\n\nexport const codexAdapter: RuntimeAdapter = {\n runtime: \"codex\",\n\n async probe(ctx: AdapterContext): Promise<ProbeResult> {\n const warnings: string[] = [];\n const issues: string[] = [];\n const configPath = findCodexConfigPath();\n const configExists = fs.existsSync(configPath);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"codex\", \"codex.cmd\"] : [\"codex\"],\n );\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Codex CLI not found in PATH. Config can still be written, but runtime verification will be limited.\",\n );\n }\n\n if (!fs.existsSync(ctx.commsDir)) {\n issues.push(\n `Comms directory not found: ${ctx.commsDir}. Run \"init\" first.`,\n );\n }\n\n const managed = buildManagedMcpServerSpec(ctx);\n warnings.push(...managed.warnings);\n issues.push(...managed.issues);\n\n return {\n installed: true,\n configPath,\n configExists,\n runtimeCommand: runtimeProbe.command,\n version: runtimeProbe.version,\n canWrite: canWriteOrCreate(configPath),\n warnings,\n issues,\n };\n },\n\n async plan(ctx: AdapterContext, probe: ProbeResult): Promise<PatchPlan> {\n const configPath = probe.configPath ?? findCodexConfigPath();\n const conflicts: string[] = [];\n const warnings: string[] = [];\n const operations: PatchOp[] = [];\n const ownedArtifacts = buildManagedArtifacts(configPath, ctx);\n\n if (probe.configExists) {\n const content = readConfigOrEmpty(configPath);\n if (extractTomlTable(content, MCP_SELECTOR)) {\n conflicts.push(`Existing ${MCP_SELECTOR} table will be updated.`);\n }\n if (extractTomlTable(content, OLD_MCP_SELECTOR)) {\n conflicts.push(\n `Legacy ${OLD_MCP_SELECTOR} table will be migrated to ${MCP_SELECTOR}.`,\n );\n }\n if (extractTomlTable(content, ENV_SELECTOR)) {\n conflicts.push(`Existing ${ENV_SELECTOR} table will be updated.`);\n }\n for (const target of getTrustTargets(ctx)) {\n const selector = trustSelector(target);\n if (extractTomlTable(content, selector)) {\n conflicts.push(`Existing ${selector} table will be updated.`);\n }\n }\n }\n\n for (const artifact of ownedArtifacts) {\n operations.push({\n type: probe.configExists ? \"merge\" : \"set\",\n path: configPath,\n key: artifact.selector,\n });\n }\n\n return {\n runtime: \"codex\",\n operations,\n ownedArtifacts,\n backupDir: ensureBackupDir(ctx.stateDir, \"codex\"),\n restartRequired: true,\n conflicts,\n warnings,\n };\n },\n\n async apply(ctx: AdapterContext, plan: PatchPlan): Promise<ApplyResult> {\n const configPath = plan.operations[0]?.path ?? findCodexConfigPath();\n const warnings: string[] = [];\n const changedFiles: string[] = [];\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n\n warnings.push(...managed.warnings);\n if (managed.issues.length > 0 || !managed.command) {\n return {\n success: false,\n appliedOps: 0,\n backupCreated: false,\n lastAppliedHash: \"\",\n ownedArtifacts: [],\n changedFiles,\n restartRequired: false,\n warnings: [...managed.warnings, ...managed.issues],\n };\n }\n\n const existingContent = readConfigOrEmpty(configPath);\n if (fs.existsSync(configPath) && existingContent) {\n backupFile(configPath, plan.backupDir);\n }\n\n const artifactsWithBackups = plan.ownedArtifacts.map((artifact) => {\n const previousContent =\n artifact.kind === \"toml-table\"\n ? extractTomlTable(existingContent, artifact.selector)\n : null;\n const backupPath = artifactBackupPath(\n plan.backupDir,\n artifact.kind,\n artifact.selector,\n );\n\n writeArtifactBackup(backupPath, {\n kind: \"toml-table\",\n selector: artifact.selector,\n existed: previousContent !== null,\n content: previousContent ?? undefined,\n });\n\n return { ...artifact, backupPath };\n });\n\n let nextContent = existingContent;\n\n // Migrate: remove legacy \"tap-comms\" keys if present\n if (extractTomlTable(nextContent, OLD_ENV_SELECTOR)) {\n nextContent = removeTomlTable(nextContent, OLD_ENV_SELECTOR);\n }\n if (extractTomlTable(nextContent, OLD_MCP_SELECTOR)) {\n nextContent = removeTomlTable(nextContent, OLD_MCP_SELECTOR);\n }\n\n nextContent = replaceTomlTable(\n nextContent,\n MCP_SELECTOR,\n renderTomlTable(\n MCP_SELECTOR,\n {\n command: managed.command,\n args: managed.args,\n },\n extractTomlTable(existingContent, MCP_SELECTOR),\n ),\n );\n nextContent = replaceTomlTable(\n nextContent,\n ENV_SELECTOR,\n renderTomlTable(\n ENV_SELECTOR,\n managed.env,\n extractTomlTable(existingContent, ENV_SELECTOR),\n ),\n );\n\n for (const target of getTrustTargets(ctx)) {\n const selector = trustSelector(target);\n nextContent = replaceTomlTable(\n nextContent,\n selector,\n renderTomlTable(\n selector,\n { trust_level: \"trusted\" },\n extractTomlTable(existingContent, selector),\n ),\n );\n }\n\n writeTomlFile(configPath, nextContent);\n changedFiles.push(configPath);\n\n return {\n success: true,\n appliedOps: plan.operations.length,\n backupCreated: true,\n lastAppliedHash: fileHash(configPath),\n ownedArtifacts: artifactsWithBackups,\n changedFiles,\n restartRequired: true,\n warnings,\n };\n },\n\n async verify(ctx: AdapterContext, plan: PatchPlan): Promise<VerifyResult> {\n const warnings: string[] = [];\n const configPath = plan.operations[0]?.path ?? findCodexConfigPath();\n const content = readConfigOrEmpty(configPath);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"codex\", \"codex.cmd\"] : [\"codex\"],\n );\n\n const checks = verifyManagedToml(content, ctx, configPath);\n checks.push({\n name: \"Comms directory exists\",\n passed: fs.existsSync(ctx.commsDir),\n message: fs.existsSync(ctx.commsDir)\n ? undefined\n : `${ctx.commsDir} not found`,\n });\n checks.push({\n name: \"Codex CLI found\",\n passed: !!runtimeProbe.command,\n message: runtimeProbe.command\n ? undefined\n : \"codex not in PATH (non-blocking)\",\n });\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Codex CLI not in PATH. Config is written, but runtime verification is partial.\",\n );\n }\n\n return {\n ok: checks\n .filter((check) => check.name !== \"Codex CLI found\")\n .every((check) => check.passed),\n checks,\n restartRequired: true,\n warnings,\n };\n },\n\n bridgeMode(): BridgeMode {\n return \"app-server\";\n },\n\n resolveBridgeScript(ctx: AdapterContext): string | null {\n const distDir = path.dirname(fileURLToPath(import.meta.url));\n const candidates = [\n // 1. Relative to bundled CLI (npm install / npx)\n path.join(distDir, \"bridges\", \"codex-bridge-runner.mjs\"),\n // 2. Monorepo development — dist inside repo\n path.join(\n ctx.repoRoot,\n \"packages\",\n \"tap-comms\",\n \"dist\",\n \"bridges\",\n \"codex-bridge-runner.mjs\",\n ),\n // 3. Source file — dev mode with strip-types\n path.join(\n ctx.repoRoot,\n \"packages\",\n \"tap-comms\",\n \"src\",\n \"bridges\",\n \"codex-bridge-runner.ts\",\n ),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) return candidate;\n }\n\n return null;\n },\n};\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { backupFile, ensureBackupDir, fileHash } from \"../state.js\";\nimport {\n artifactBackupPath,\n writeArtifactBackup,\n} from \"../artifact-backups.js\";\nimport type {\n AdapterContext,\n ApplyResult,\n BridgeMode,\n OwnedArtifact,\n PatchOp,\n PatchPlan,\n ProbeResult,\n RuntimeAdapter,\n VerifyCheck,\n VerifyResult,\n} from \"../types.js\";\nimport {\n buildManagedMcpServerSpec,\n canWriteOrCreate,\n getHomeDir,\n probeCommand,\n} from \"./common.js\";\n\nconst GEMINI_SELECTOR = \"mcpServers.tap\";\n\n// Legacy key name — used for auto-migration from pre-0.3 configs\nconst OLD_GEMINI_SELECTOR = \"mcpServers.tap-comms\";\n\nfunction candidateConfigPaths(ctx: AdapterContext): string[] {\n const home = getHomeDir();\n return [\n path.join(ctx.repoRoot, \".gemini\", \"settings.json\"),\n path.join(home, \".gemini\", \"settings.json\"),\n path.join(home, \".gemini\", \"antigravity\", \"mcp_config.json\"),\n ];\n}\n\nfunction chooseGeminiConfigPath(ctx: AdapterContext): string {\n const [workspaceConfig, homeConfig, antigravityConfig] =\n candidateConfigPaths(ctx);\n\n if (fs.existsSync(workspaceConfig)) return workspaceConfig;\n if (fs.existsSync(homeConfig)) return homeConfig;\n\n if (fs.existsSync(antigravityConfig)) {\n const raw = fs.readFileSync(antigravityConfig, \"utf-8\").trim();\n if (raw) {\n try {\n JSON.parse(raw);\n return antigravityConfig;\n } catch {\n // Fall through to workspace-managed config.\n }\n }\n }\n\n return workspaceConfig;\n}\n\nfunction readJsonFile(filePath: string): Record<string, unknown> {\n if (!fs.existsSync(filePath)) return {};\n const raw = fs.readFileSync(filePath, \"utf-8\").trim();\n if (!raw) return {};\n return JSON.parse(raw) as Record<string, unknown>;\n}\n\nfunction setNestedKey(\n obj: Record<string, unknown>,\n keyPath: string,\n value: unknown,\n): void {\n const keys = keyPath.split(\".\");\n let current = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (typeof current[key] !== \"object\" || current[key] === null) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n current[keys[keys.length - 1]] = value;\n}\n\nfunction readNestedKey(obj: Record<string, unknown>, keyPath: string): unknown {\n let current: unknown = obj;\n for (const key of keyPath.split(\".\")) {\n if (typeof current !== \"object\" || current === null || !(key in current)) {\n return undefined;\n }\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\nfunction verifyGeminiConfig(\n config: Record<string, unknown>,\n configPath: string,\n ctx: AdapterContext,\n): VerifyCheck[] {\n const checks: VerifyCheck[] = [];\n const entry = readNestedKey(config, GEMINI_SELECTOR) as\n | Record<string, unknown>\n | undefined;\n\n checks.push({\n name: \"Gemini config exists\",\n passed: fs.existsSync(configPath),\n message: fs.existsSync(configPath) ? undefined : `${configPath} not found`,\n });\n checks.push({\n name: \"tap entry present\",\n passed: !!entry,\n message: entry ? undefined : `${GEMINI_SELECTOR} not found`,\n });\n checks.push({\n name: \"Comms directory exists\",\n passed: fs.existsSync(ctx.commsDir),\n message: fs.existsSync(ctx.commsDir)\n ? undefined\n : `${ctx.commsDir} not found`,\n });\n\n if (entry?.env && typeof entry.env === \"object\") {\n checks.push({\n name: \"TAP_COMMS_DIR configured\",\n passed:\n (entry.env as Record<string, unknown>).TAP_COMMS_DIR ===\n ctx.commsDir.replace(/\\\\/g, \"/\"),\n message: `Expected ${ctx.commsDir.replace(/\\\\/g, \"/\")}`,\n });\n }\n\n return checks;\n}\n\nexport const geminiAdapter: RuntimeAdapter = {\n runtime: \"gemini\",\n\n async probe(ctx: AdapterContext): Promise<ProbeResult> {\n const warnings: string[] = [];\n const issues: string[] = [];\n const configPath = chooseGeminiConfigPath(ctx);\n const configExists = fs.existsSync(configPath);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"gemini\", \"gemini.cmd\"] : [\"gemini\"],\n );\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Gemini CLI not found in PATH. Config can still be written, but runtime verification will be limited.\",\n );\n }\n\n if (!fs.existsSync(ctx.commsDir)) {\n issues.push(\n `Comms directory not found: ${ctx.commsDir}. Run \"init\" first.`,\n );\n }\n\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n warnings.push(...managed.warnings);\n issues.push(...managed.issues);\n\n return {\n installed: true,\n configPath,\n configExists,\n runtimeCommand: runtimeProbe.command,\n version: runtimeProbe.version,\n canWrite: canWriteOrCreate(configPath),\n warnings,\n issues,\n };\n },\n\n async plan(ctx: AdapterContext, probe: ProbeResult): Promise<PatchPlan> {\n const configPath = probe.configPath ?? chooseGeminiConfigPath(ctx);\n const conflicts: string[] = [];\n const warnings: string[] = [];\n const operations: PatchOp[] = [];\n const ownedArtifacts: OwnedArtifact[] = [\n { kind: \"json-path\", path: configPath, selector: GEMINI_SELECTOR },\n ];\n\n if (probe.configExists) {\n try {\n const config = readJsonFile(configPath);\n if (readNestedKey(config, GEMINI_SELECTOR) !== undefined) {\n conflicts.push(`Existing ${GEMINI_SELECTOR} entry will be updated.`);\n }\n if (readNestedKey(config, OLD_GEMINI_SELECTOR) !== undefined) {\n conflicts.push(\n `Legacy ${OLD_GEMINI_SELECTOR} entry will be migrated to ${GEMINI_SELECTOR}.`,\n );\n }\n } catch {\n warnings.push(\n `${configPath} exists but is not valid JSON. It will be replaced.`,\n );\n }\n }\n\n operations.push({\n type: probe.configExists ? \"merge\" : \"set\",\n path: configPath,\n key: GEMINI_SELECTOR,\n });\n\n return {\n runtime: \"gemini\",\n operations,\n ownedArtifacts,\n backupDir: ensureBackupDir(ctx.stateDir, \"gemini\"),\n restartRequired: true,\n conflicts,\n warnings,\n };\n },\n\n async apply(ctx: AdapterContext, plan: PatchPlan): Promise<ApplyResult> {\n const configPath = plan.operations[0]?.path ?? chooseGeminiConfigPath(ctx);\n const warnings: string[] = [];\n const changedFiles: string[] = [];\n const managed = buildManagedMcpServerSpec(ctx, ctx.instanceId);\n\n warnings.push(...managed.warnings);\n if (managed.issues.length > 0 || !managed.command) {\n return {\n success: false,\n appliedOps: 0,\n backupCreated: false,\n lastAppliedHash: \"\",\n ownedArtifacts: [],\n changedFiles,\n restartRequired: false,\n warnings: [...managed.warnings, ...managed.issues],\n };\n }\n\n let config: Record<string, unknown> = {};\n let previousValue: unknown = undefined;\n\n if (fs.existsSync(configPath)) {\n if (fs.readFileSync(configPath, \"utf-8\").trim()) {\n backupFile(configPath, plan.backupDir);\n }\n try {\n config = readJsonFile(configPath);\n } catch {\n warnings.push(\n `${configPath} was invalid JSON. Created backup and starting fresh.`,\n );\n config = {};\n }\n previousValue = readNestedKey(config, GEMINI_SELECTOR);\n }\n\n const artifact = plan.ownedArtifacts[0];\n const backupPath = artifactBackupPath(\n plan.backupDir,\n artifact.kind,\n artifact.selector,\n );\n writeArtifactBackup(backupPath, {\n kind: \"json-path\",\n selector: artifact.selector,\n existed: previousValue !== undefined,\n value: previousValue,\n });\n\n // Migrate: remove legacy \"tap-comms\" key if present\n const oldValue = readNestedKey(config, OLD_GEMINI_SELECTOR);\n if (oldValue !== undefined) {\n const servers = config.mcpServers as Record<string, unknown> | undefined;\n if (servers) {\n delete servers[\"tap-comms\"];\n }\n }\n\n setNestedKey(config, GEMINI_SELECTOR, {\n command: managed.command,\n args: managed.args,\n env: managed.env,\n });\n\n fs.mkdirSync(path.dirname(configPath), { recursive: true });\n const tmp = `${configPath}.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(config, null, 2) + \"\\n\", \"utf-8\");\n fs.renameSync(tmp, configPath);\n changedFiles.push(configPath);\n\n return {\n success: true,\n appliedOps: plan.operations.length,\n backupCreated: true,\n lastAppliedHash: fileHash(configPath),\n ownedArtifacts: [{ ...artifact, backupPath }],\n changedFiles,\n restartRequired: true,\n warnings,\n };\n },\n\n async verify(ctx: AdapterContext, plan: PatchPlan): Promise<VerifyResult> {\n const warnings: string[] = [];\n const configPath = plan.operations[0]?.path ?? chooseGeminiConfigPath(ctx);\n const runtimeProbe = probeCommand(\n ctx.platform === \"win32\" ? [\"gemini\", \"gemini.cmd\"] : [\"gemini\"],\n );\n\n let checks: VerifyCheck[];\n try {\n const config = readJsonFile(configPath);\n checks = verifyGeminiConfig(config, configPath, ctx);\n } catch {\n checks = [\n {\n name: \"Gemini config is valid JSON\",\n passed: false,\n message: \"Parse error\",\n },\n ];\n }\n\n checks.push({\n name: \"Gemini CLI found\",\n passed: !!runtimeProbe.command,\n message: runtimeProbe.command\n ? undefined\n : \"gemini not in PATH (non-blocking)\",\n });\n\n if (!runtimeProbe.command) {\n warnings.push(\n \"Gemini CLI not in PATH. Config is written, but runtime verification is partial.\",\n );\n }\n\n return {\n ok: checks\n .filter((check) => check.name !== \"Gemini CLI found\")\n .every((check) => check.passed),\n checks,\n restartRequired: true,\n warnings,\n };\n },\n\n bridgeMode(): BridgeMode {\n return \"polling\";\n },\n};\n","import type { RuntimeAdapter, RuntimeName } from \"../types.js\";\nimport { claudeAdapter } from \"./claude.js\";\nimport { codexAdapter } from \"./codex.js\";\nimport { geminiAdapter } from \"./gemini.js\";\n\nconst adapters: Partial<Record<RuntimeName, RuntimeAdapter>> = {\n claude: claudeAdapter,\n codex: codexAdapter,\n gemini: geminiAdapter,\n};\n\nexport function getAdapter(runtime: RuntimeName): RuntimeAdapter {\n const adapter = adapters[runtime];\n if (!adapter) {\n throw new Error(\n `Adapter for \"${runtime}\" is not yet available. ` +\n `Supported: ${Object.keys(adapters).join(\", \")}`,\n );\n }\n return adapter;\n}\n\nexport function listAdapters(): RuntimeName[] {\n return Object.keys(adapters) as RuntimeName[];\n}\n","import * as path from \"node:path\";\nimport { loadState, saveState, updateInstanceState } from \"../state.js\";\nimport {\n startBridge,\n stopBridge,\n restartBridge,\n inferRestartMode,\n getBridgeStatus,\n loadBridgeState,\n getHeartbeatAge,\n getBridgeHeartbeatTimestamp,\n loadRuntimeBridgeHeartbeat,\n loadRuntimeBridgeThreadState,\n saveBridgeState,\n stopManagedAppServer,\n resolveAppServerUrl,\n checkAppServerHealth,\n findNextAvailableAppServerPort,\n waitForPortRelease,\n getTurnInfo,\n isTurnStuck,\n} from \"../engine/bridge.js\";\nimport { resolveConfig } from \"../config/index.js\";\nimport { getAdapter } from \"../adapters/index.js\";\nimport {\n findRepoRoot,\n createAdapterContext,\n resolveInstanceId,\n parseArgs,\n parseIntFlag,\n log,\n logSuccess,\n logError,\n logHeader,\n} from \"../utils.js\";\nimport type {\n InstanceId,\n HeadlessConfig,\n AgentRole,\n CommandResult,\n AppServerState,\n BridgeState,\n TapState,\n} from \"../types.js\";\n\nfunction formatAge(seconds: number): string {\n if (seconds < 60) return `${seconds}s ago`;\n if (seconds < 3600) return `${Math.floor(seconds / 60)}m ago`;\n return `${Math.floor(seconds / 3600)}h ${Math.floor((seconds % 3600) / 60)}m ago`;\n}\n\nconst BRIDGE_HELP = `\nUsage:\n tap bridge <subcommand> [instance] [options]\n\nSubcommands:\n start <instance> Start bridge for an instance (e.g. codex, codex-reviewer)\n start --all Start all registered app-server instances\n stop <instance> Stop bridge for an instance\n stop Stop all running bridges\n status Show bridge status for all instances\n status <instance> Show bridge status for a specific instance\n watch Monitor bridges and auto-restart stuck/stale ones\n\nOptions:\n --agent-name <name> Agent identity for bridge (or set TAP_AGENT_NAME env)\n Overrides the stored name from 'tap add' when needed\n --all Start all registered app-server instances\n --busy-mode <steer|wait> How to handle active turns (default: steer)\n --poll-seconds <n> Inbox poll interval (default: 5)\n --reconnect-seconds <n> Reconnect delay after disconnect (default: 5)\n --message-lookback-minutes <n> Process messages from last N minutes (default: 10)\n --thread-id <id> Resume specific thread\n --ephemeral Use ephemeral thread (no persistence)\n --process-existing-messages Process all existing inbox messages\n --no-server Skip app-server auto-start and connect only\n --no-auth Skip auth gateway (app-server listens directly, localhost only)\n\nPort Assignment:\n Ports are auto-assigned from 4501 on first bridge start if not set via --port\n during 'tap add'. Auto-assigned ports are saved to state for future starts.\n\nExamples:\n npx @hua-labs/tap bridge start codex --agent-name myAgent\n npx @hua-labs/tap bridge start --all\n npx @hua-labs/tap bridge start codex --agent-name myAgent --no-server\n npx @hua-labs/tap bridge start codex-reviewer --agent-name reviewer --busy-mode steer\n npx @hua-labs/tap bridge stop codex\n npx @hua-labs/tap bridge stop\n npx @hua-labs/tap bridge status\n`.trim();\n\nfunction formatAppServerState(appServer: AppServerState): string {\n const ownership = appServer.managed ? \"managed\" : \"external\";\n const pid = appServer.pid != null ? ` pid:${appServer.pid}` : \"\";\n const health = appServer.healthy ? \"healthy\" : \"unhealthy\";\n const auth =\n appServer.auth != null\n ? `, auth gateway:${appServer.auth.gatewayPid ?? \"-\"} -> ${appServer.auth.upstreamUrl}`\n : \"\";\n return `${health}, ${ownership}${pid}, ${appServer.url}${auth}`;\n}\n\nfunction redactProtectedUrl(url: string): string {\n // Subprotocol auth: token is no longer in the URL.\n // Keep function for backward compat with old state files that may contain query tokens.\n try {\n const parsed = new URL(url);\n if (parsed.searchParams.has(\"tap_token\")) {\n parsed.searchParams.delete(\"tap_token\");\n }\n return parsed.toString().replace(/\\/$/, \"\");\n } catch {\n return url.replace(/[?&]tap_token=[^&]+/g, \"\");\n }\n}\n\nfunction loadCurrentBridgeState(\n stateDir: string,\n instanceId: InstanceId,\n fallback: BridgeState | null | undefined,\n): BridgeState | null {\n return loadBridgeState(stateDir, instanceId) ?? fallback ?? null;\n}\n\nfunction formatThreadSummary(\n threadId: string | null | undefined,\n cwd: string | null | undefined,\n): string {\n if (!threadId) {\n return \"-\";\n }\n\n return cwd ? `${threadId} (${cwd})` : threadId;\n}\n\nfunction normalizeComparablePath(value: string): string {\n return path.resolve(value).replace(/\\\\/g, \"/\").toLowerCase();\n}\n\nfunction sameOptionalPath(\n left: string | null | undefined,\n right: string | null | undefined,\n): boolean {\n if (!left || !right) {\n return left === right;\n }\n\n return normalizeComparablePath(left) === normalizeComparablePath(right);\n}\n\nfunction getSharedAppServerUsers(\n state: TapState,\n stateDir: string,\n currentInstanceId: InstanceId,\n appServerUrl: string,\n): InstanceId[] {\n const shared: InstanceId[] = [];\n\n for (const [id, inst] of Object.entries(state.instances)) {\n if (id === currentInstanceId || !inst?.installed) {\n continue;\n }\n\n const instanceId = id as InstanceId;\n if (getBridgeStatus(stateDir, instanceId) !== \"running\") {\n continue;\n }\n\n const bridgeState = loadCurrentBridgeState(\n stateDir,\n instanceId,\n inst.bridge,\n );\n if (bridgeState?.appServer?.url === appServerUrl) {\n shared.push(instanceId);\n }\n }\n\n return shared;\n}\n\nfunction transferManagedAppServerOwnership(\n state: TapState,\n stateDir: string,\n recipientId: InstanceId,\n appServer: AppServerState,\n): boolean {\n const recipient = state.instances[recipientId];\n if (!recipient) {\n return false;\n }\n\n const bridgeState = loadCurrentBridgeState(\n stateDir,\n recipientId,\n recipient.bridge,\n );\n if (!bridgeState) {\n return false;\n }\n\n const transferredAppServer: AppServerState = {\n ...appServer,\n managed: true,\n healthy: true,\n lastCheckedAt: new Date().toISOString(),\n lastHealthyAt: appServer.lastHealthyAt ?? new Date().toISOString(),\n };\n\n const updatedBridge: BridgeState = {\n ...bridgeState,\n appServer: transferredAppServer,\n };\n\n saveBridgeState(stateDir, recipientId, updatedBridge);\n state.instances[recipientId] = {\n ...recipient,\n bridge: updatedBridge,\n };\n return true;\n}\n\n// ─── Subcommand: start ─────────────────────────────────────────\n\nasync function bridgeStart(\n identifier: string,\n agentName?: string,\n flags: Record<string, string | boolean | undefined> = {},\n): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n let state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n let instance = state.instances[instanceId];\n\n if (!instance?.installed) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance?.runtime,\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `${instanceId} is not installed. Run: npx @hua-labs/tap add ${instance?.runtime ?? identifier}`,\n warnings: [],\n data: {},\n };\n }\n\n const adapter = getAdapter(instance.runtime);\n const mode = adapter.bridgeMode();\n\n if (mode !== \"app-server\") {\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_NO_OP\",\n message: `${instanceId} uses ${mode} mode — no bridge needed.`,\n warnings: [],\n data: { bridgeMode: mode },\n };\n }\n\n // Resolve agent name: explicit flag > stored in state > env\n const resolvedAgentName = agentName ?? instance.agentName ?? undefined;\n\n // Persist agent-name to state if explicitly provided\n if (agentName && agentName !== instance.agentName) {\n instance = { ...instance, agentName };\n const updatedState = updateInstanceState(state, instanceId, instance);\n saveState(repoRoot, updatedState);\n state = updatedState;\n }\n\n const ctx = createAdapterContext(state.commsDir, repoRoot);\n const bridgeScript = adapter.resolveBridgeScript?.(ctx);\n\n if (!bridgeScript) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_SCRIPT_MISSING\",\n message: `Bridge script not found for ${instanceId}. Ensure the runtime is properly configured.`,\n warnings: [],\n data: {},\n };\n }\n\n // Resolve runtime command + appServerUrl from config\n const { config: resolvedConfig } = resolveConfig({}, repoRoot);\n const runtimeCommand = resolvedConfig.runtimeCommand;\n const manageAppServer =\n instance.runtime === \"codex\" && flags[\"no-server\"] !== true;\n\n // Auto-assign port only for managed app-server mode (local instances).\n // External servers (--no-server) keep the configured appServerUrl as-is.\n let effectivePort = instance.port;\n if (effectivePort == null && manageAppServer) {\n effectivePort = await findNextAvailableAppServerPort(\n state,\n resolvedConfig.appServerUrl,\n 4501,\n instanceId,\n );\n instance = { ...instance, port: effectivePort };\n const updatedState = updateInstanceState(state, instanceId, instance);\n saveState(repoRoot, updatedState);\n state = updatedState;\n }\n\n const appServerUrl = resolveAppServerUrl(\n resolvedConfig.appServerUrl,\n effectivePort ?? undefined,\n );\n\n logHeader(`@hua-labs/tap bridge start ${instanceId}`);\n log(`Bridge script: ${bridgeScript}`);\n log(`Bridge mode: ${mode}`);\n log(`Runtime cmd: ${runtimeCommand}`);\n log(`App server: ${appServerUrl}`);\n if (effectivePort != null) log(`Port: ${effectivePort}`);\n if (resolvedAgentName) log(`Agent name: ${resolvedAgentName}`);\n const noAuth = flags[\"no-auth\"] === true;\n if (!manageAppServer && instance.runtime === \"codex\") {\n log(\"Auto server: disabled (--no-server)\");\n }\n if (noAuth && manageAppServer) {\n log(\"Auth gateway: disabled (--no-auth)\");\n }\n // Show headless status from instance config or --headless flag (resolved below)\n const willBeHeadless =\n flags[\"headless\"] === true || instance.headless?.enabled;\n if (willBeHeadless) {\n const role =\n (typeof flags[\"role\"] === \"string\" ? flags[\"role\"] : null) ??\n instance.headless?.role ??\n \"reviewer\";\n log(`Headless: ${role}`);\n }\n\n try {\n // Startup validation: health check before bridge start\n if (!manageAppServer && instance.runtime === \"codex\") {\n log(\"Checking app-server health...\");\n const healthy = await checkAppServerHealth(appServerUrl);\n if (healthy) {\n logSuccess(\"App server reachable\");\n } else {\n logError(`App server not reachable at ${appServerUrl}`);\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_START_FAILED\",\n message: `App server not reachable at ${appServerUrl}. Start it first: codex app-server --listen ${appServerUrl}`,\n warnings: [],\n data: {},\n };\n }\n }\n\n // Parse bridge operational flags from CLI\n\n // --busy-mode validation (PS1 parity: ValidateSet(\"wait\", \"steer\"))\n const busyModeRaw = flags[\"busy-mode\"];\n if (\n busyModeRaw !== undefined &&\n busyModeRaw !== \"steer\" &&\n busyModeRaw !== \"wait\"\n ) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Invalid --busy-mode: ${String(busyModeRaw)}. Must be \"steer\" or \"wait\".`,\n warnings: [],\n data: {},\n };\n }\n const busyMode = busyModeRaw as \"steer\" | \"wait\" | undefined;\n const pollSecondsRaw =\n typeof flags[\"poll-seconds\"] === \"string\"\n ? flags[\"poll-seconds\"]\n : undefined;\n const reconnectSecondsRaw =\n typeof flags[\"reconnect-seconds\"] === \"string\"\n ? flags[\"reconnect-seconds\"]\n : undefined;\n const lookbackRaw =\n typeof flags[\"message-lookback-minutes\"] === \"string\"\n ? flags[\"message-lookback-minutes\"]\n : undefined;\n\n let pollSeconds: number | undefined;\n let reconnectSeconds: number | undefined;\n let messageLookbackMinutes: number | undefined;\n try {\n pollSeconds = parseIntFlag(pollSecondsRaw, \"--poll-seconds\", 1, 3600);\n reconnectSeconds = parseIntFlag(\n reconnectSecondsRaw,\n \"--reconnect-seconds\",\n 1,\n 3600,\n );\n messageLookbackMinutes = parseIntFlag(\n lookbackRaw,\n \"--message-lookback-minutes\",\n 1,\n 10080,\n );\n } catch (err) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: err instanceof Error ? err.message : String(err),\n warnings: [],\n data: {},\n };\n }\n const threadId =\n typeof flags[\"thread-id\"] === \"string\" ? flags[\"thread-id\"] : undefined;\n const ephemeral = flags[\"ephemeral\"] === true;\n const processExistingMessages = flags[\"process-existing-messages\"] === true;\n\n // --headless flag on bridge start: create ad-hoc headless config\n // even if instance wasn't created with `tap add --headless`\n const headlessFlag = flags[\"headless\"] === true;\n const roleArg =\n typeof flags[\"role\"] === \"string\" ? flags[\"role\"] : undefined;\n const validRoles: AgentRole[] = [\"reviewer\", \"validator\", \"long-running\"];\n if (roleArg && !validRoles.includes(roleArg as AgentRole)) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Invalid --role: ${roleArg}. Must be: ${validRoles.join(\", \")}`,\n warnings: [],\n data: {},\n };\n }\n\n const headless: HeadlessConfig | null = headlessFlag\n ? {\n enabled: true,\n role: (roleArg as AgentRole) ?? \"reviewer\",\n maxRounds: 5,\n qualitySeverityFloor: \"high\",\n }\n : instance.headless;\n\n // Scope TAP_COLD_START_WARMUP so the bridge can bootstrap its first turn\n const previousWarmup = process.env.TAP_COLD_START_WARMUP;\n process.env.TAP_COLD_START_WARMUP = \"true\";\n let bridge: BridgeState;\n try {\n bridge = await startBridge({\n instanceId,\n runtime: instance.runtime,\n stateDir: ctx.stateDir,\n commsDir: ctx.commsDir,\n bridgeScript,\n platform: ctx.platform,\n agentName: resolvedAgentName,\n runtimeCommand,\n appServerUrl,\n repoRoot,\n port: effectivePort ?? undefined,\n manageAppServer,\n noAuth,\n headless,\n busyMode,\n pollSeconds,\n reconnectSeconds,\n messageLookbackMinutes,\n threadId,\n ephemeral,\n processExistingMessages,\n });\n } finally {\n if (previousWarmup === undefined) {\n delete process.env.TAP_COLD_START_WARMUP;\n } else {\n process.env.TAP_COLD_START_WARMUP = previousWarmup;\n }\n }\n\n logSuccess(`Bridge started (PID: ${bridge.pid})`);\n log(`Log: ${path.join(ctx.stateDir, \"logs\", `bridge-${instanceId}.log`)}`);\n if (bridge.appServer) {\n log(`App server: ${formatAppServerState(bridge.appServer)}`);\n if (bridge.appServer.logPath) {\n log(`Server log: ${bridge.appServer.logPath}`);\n }\n if (bridge.appServer.auth) {\n log(\n `Protected: ${redactProtectedUrl(bridge.appServer.auth.protectedUrl)}`,\n );\n if (bridge.appServer.auth.gatewayLogPath) {\n log(`Gateway log: ${bridge.appServer.auth.gatewayLogPath}`);\n }\n // TUI must connect to upstream (no token needed) — gateway blocks unauthenticated clients\n log(`TUI connect: ${bridge.appServer.auth.upstreamUrl}`);\n }\n if (bridge.appServer.managed && !bridge.appServer.auth) {\n // --no-auth mode: TUI connects to the same URL as the bridge\n log(`TUI connect: ${bridge.appServer.url}`);\n }\n }\n\n // Update state with bridge info + mode for restart preservation\n const updated = { ...instance, bridge, manageAppServer, noAuth };\n const newState = updateInstanceState(state, instanceId, updated);\n saveState(repoRoot, newState);\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_START_OK\",\n message: `Bridge for ${instanceId} started (PID: ${bridge.pid})`,\n warnings: [],\n data: { pid: bridge.pid, appServer: bridge.appServer ?? null },\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logError(msg);\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: instance.runtime,\n code: \"TAP_BRIDGE_START_FAILED\",\n message: msg,\n warnings: [],\n data: {},\n };\n }\n}\n\n// ─── Subcommand: start --all ───────────────────────────────────\n\nasync function bridgeStartAll(\n flags: Record<string, string | boolean | undefined> = {},\n): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const instanceIds = Object.keys(state.instances) as InstanceId[];\n const appServerInstances = instanceIds.filter((id) => {\n const inst = state.instances[id];\n if (!inst?.installed) return false;\n const adapter = getAdapter(inst.runtime);\n return adapter.bridgeMode() === \"app-server\";\n });\n\n if (appServerInstances.length === 0) {\n return {\n ok: true,\n command: \"bridge\",\n code: \"TAP_NO_OP\",\n message: \"No app-server instances found to start.\",\n warnings: [],\n data: {},\n };\n }\n\n logHeader(\"@hua-labs/tap bridge start --all\");\n log(\n `Found ${appServerInstances.length} app-server instance(s): ${appServerInstances.join(\", \")}`,\n );\n log(\"\");\n\n const started: string[] = [];\n const failed: string[] = [];\n const warnings: string[] = [];\n\n for (const instanceId of appServerInstances) {\n const inst = state.instances[instanceId];\n const storedName = inst?.agentName ?? undefined;\n\n if (!storedName) {\n const msg = `${instanceId}: skipped — no stored agent-name. Set it first: tap bridge start ${instanceId} --agent-name <name>`;\n log(msg);\n warnings.push(msg);\n continue;\n }\n\n log(`Starting ${instanceId} (agent: ${storedName})...`);\n const result = await bridgeStart(instanceId, storedName, flags);\n\n if (result.ok) {\n started.push(instanceId);\n logSuccess(`${instanceId} started`);\n } else {\n failed.push(instanceId);\n logError(`${instanceId}: ${result.message}`);\n }\n log(\"\");\n }\n\n const message =\n started.length > 0\n ? `Started ${started.length}/${appServerInstances.length} bridge(s): ${started.join(\", \")}` +\n (failed.length > 0 ? `. Failed: ${failed.join(\", \")}` : \"\")\n : `No bridges started. Failed: ${failed.join(\", \")}`;\n\n return {\n ok: failed.length === 0 && started.length > 0,\n command: \"bridge\",\n code:\n started.length > 0 ? \"TAP_BRIDGE_START_OK\" : \"TAP_BRIDGE_START_FAILED\",\n message,\n warnings,\n data: { started, failed },\n };\n}\n\n// ─── Subcommand: stop ──────────────────────────────────────────\n\nasync function bridgeStopOne(identifier: string): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n const ctx = createAdapterContext(state.commsDir, repoRoot);\n const instance = state.instances[instanceId];\n const bridgeState = loadCurrentBridgeState(\n ctx.stateDir,\n instanceId,\n instance?.bridge,\n );\n const appServer = bridgeState?.appServer ?? null;\n\n logHeader(`@hua-labs/tap bridge stop ${instanceId}`);\n\n const stopped = await stopBridge({\n instanceId,\n stateDir: ctx.stateDir,\n platform: ctx.platform,\n });\n\n let appServerStopped = false;\n let appServerTransferredTo: InstanceId | null = null;\n\n if (stopped) {\n logSuccess(`Bridge for ${instanceId} stopped`);\n } else {\n log(`No running bridge for ${instanceId}`);\n }\n\n if (appServer?.managed) {\n const sharedUsers = getSharedAppServerUsers(\n state,\n ctx.stateDir,\n instanceId,\n appServer.url,\n );\n\n if (sharedUsers.length > 0) {\n const recipient = sharedUsers[0];\n if (\n transferManagedAppServerOwnership(\n state,\n ctx.stateDir,\n recipient,\n appServer,\n )\n ) {\n appServerTransferredTo = recipient;\n log(`Managed app-server ownership moved to ${recipient}`);\n } else {\n log(\n `Managed app-server left running at ${appServer.url} because ownership transfer failed`,\n );\n }\n } else {\n appServerStopped = await stopManagedAppServer(appServer, ctx.platform);\n if (appServerStopped) {\n const gatewayNote =\n appServer.auth?.gatewayPid != null\n ? `, gateway PID: ${appServer.auth.gatewayPid}`\n : \"\";\n logSuccess(\n `Managed app-server stopped (PID: ${appServer.pid ?? \"-\"}${gatewayNote})`,\n );\n // Wait for port to be released so the next bridge start won't\n // hit TIME_WAIT conflicts (port zombie prevention)\n const released = await waitForPortRelease(appServer.url, 5_000);\n if (!released) {\n log(\n `Warning: port for ${appServer.url} still in use after stop — next start may need a different port`,\n );\n }\n }\n }\n }\n\n // Clear bridge from state\n if (instance) {\n const updated = { ...instance, bridge: null };\n const newState = updateInstanceState(state, instanceId, updated);\n saveState(repoRoot, newState);\n }\n\n if (stopped) {\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_STOP_OK\",\n message: `Bridge for ${instanceId} stopped`,\n warnings: [],\n data: {\n appServerStopped,\n appServerTransferredTo,\n },\n };\n }\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_NOT_RUNNING\",\n message: `No running bridge for ${instanceId}`,\n warnings: [],\n data: {\n appServerStopped,\n appServerTransferredTo,\n },\n };\n}\n\nasync function bridgeStopAll(): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const ctx = createAdapterContext(state.commsDir, repoRoot);\n const instanceIds = Object.keys(state.instances) as InstanceId[];\n const stopped: string[] = [];\n const managedAppServers = new Map<string, AppServerState>();\n\n logHeader(\"@hua-labs/tap bridge stop (all)\");\n\n let stateChanged = false;\n\n for (const instanceId of instanceIds) {\n const bridgeState = loadCurrentBridgeState(\n ctx.stateDir,\n instanceId,\n state.instances[instanceId]?.bridge,\n );\n const appServer = bridgeState?.appServer;\n if (appServer?.managed && appServer.pid != null) {\n managedAppServers.set(\n `${appServer.url}:${appServer.pid}:${appServer.auth?.gatewayPid ?? \"-\"}`,\n appServer,\n );\n }\n\n const didStop = await stopBridge({\n instanceId,\n stateDir: ctx.stateDir,\n platform: ctx.platform,\n });\n\n if (didStop) {\n logSuccess(`Stopped bridge for ${instanceId}`);\n stopped.push(instanceId);\n }\n\n // Clear stale bridge metadata regardless of whether process was alive\n const instance = state.instances[instanceId];\n if (instance?.bridge) {\n state.instances[instanceId] = { ...instance, bridge: null };\n stateChanged = true;\n }\n }\n\n const stoppedAppServers: number[] = [];\n const releasePorts: string[] = [];\n for (const appServer of managedAppServers.values()) {\n if (await stopManagedAppServer(appServer, ctx.platform)) {\n stoppedAppServers.push(appServer.pid!);\n releasePorts.push(appServer.url);\n const gatewayNote =\n appServer.auth?.gatewayPid != null\n ? `, gateway PID ${appServer.auth.gatewayPid}`\n : \"\";\n logSuccess(\n `Stopped app-server PID ${appServer.pid} (${appServer.url}${gatewayNote})`,\n );\n }\n }\n\n // Wait for all stopped app-server ports to release (parallel)\n if (releasePorts.length > 0) {\n await Promise.all(\n releasePorts.map((url) => waitForPortRelease(url, 5_000)),\n );\n }\n\n if (stateChanged) {\n state.updatedAt = new Date().toISOString();\n saveState(repoRoot, state);\n }\n\n const message =\n stopped.length > 0\n ? `Stopped ${stopped.length} bridge(s): ${stopped.join(\", \")}`\n : \"No running bridges found\";\n\n log(message);\n\n return {\n ok: true,\n command: \"bridge\",\n code: stopped.length > 0 ? \"TAP_BRIDGE_STOP_OK\" : \"TAP_BRIDGE_NOT_RUNNING\",\n message,\n warnings: [],\n data: { stopped, stoppedAppServers },\n };\n}\n\n// ─── Subcommand: watch ───────────────────────────────────────\n\n/**\n * Monitor all bridges and auto-restart stuck or stale ones.\n * Runs a single check cycle and returns results.\n * For continuous monitoring, call periodically (e.g., from a cron or loop).\n */\nasync function bridgeWatch(\n _intervalSeconds: number,\n stuckThresholdSeconds: number,\n): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const { config: resolvedCfg } = resolveConfig({}, repoRoot);\n const stateDir = resolvedCfg.stateDir;\n const instanceIds = Object.keys(state.instances) as InstanceId[];\n\n logHeader(\"@hua-labs/tap bridge watch\");\n log(\n `Checking ${instanceIds.length} instance(s), stuck threshold: ${stuckThresholdSeconds}s`,\n );\n\n const restarted: string[] = [];\n const cleaned: string[] = [];\n const healthy: string[] = [];\n const warnings: string[] = [];\n\n for (const instanceId of instanceIds) {\n const inst = state.instances[instanceId];\n if (!inst?.installed || inst.bridgeMode !== \"app-server\") continue;\n\n const status = getBridgeStatus(stateDir, instanceId);\n\n if (status === \"stale\") {\n log(`${instanceId}: stale (process dead) — cleaning up`);\n cleaned.push(instanceId);\n continue;\n }\n\n if (status === \"stopped\") {\n log(`${instanceId}: stopped`);\n continue;\n }\n\n // Running — check for stuck turns\n if (isTurnStuck(stateDir, instanceId, stuckThresholdSeconds)) {\n const turnInfo = getTurnInfo(stateDir, instanceId, stuckThresholdSeconds);\n const ageStr =\n turnInfo?.ageSeconds != null ? formatAge(turnInfo.ageSeconds) : \"?\";\n log(\n `${instanceId}: ⚠ STUCK turn ${turnInfo?.activeTurnId?.slice(0, 8)}... (${ageStr}) — restarting`,\n );\n\n const adapter = getAdapter(inst.runtime);\n const ctx = {\n ...createAdapterContext(state.commsDir, repoRoot),\n instanceId,\n };\n const bridgeScript = adapter.resolveBridgeScript?.(ctx);\n\n if (!bridgeScript) {\n warnings.push(\n `${instanceId}: cannot restart — bridge script not found`,\n );\n continue;\n }\n\n const bridgeState = loadBridgeState(stateDir, instanceId);\n const { manageAppServer, noAuth } = inferRestartMode(bridgeState, {});\n\n // Scope TAP_COLD_START_WARMUP around restart (mirrors bridgeRestart, PR #847)\n const previousWarmup = process.env.TAP_COLD_START_WARMUP;\n process.env.TAP_COLD_START_WARMUP = \"true\";\n try {\n const newBridgeState = await restartBridge({\n instanceId,\n runtime: inst.runtime,\n stateDir: ctx.stateDir,\n commsDir: ctx.commsDir,\n bridgeScript,\n platform: ctx.platform,\n agentName: inst.agentName ?? undefined,\n runtimeCommand: resolvedCfg.runtimeCommand,\n appServerUrl: resolvedCfg.appServerUrl,\n repoRoot,\n port: inst.port ?? undefined,\n headless: inst.headless,\n drainTimeoutSeconds: 30,\n manageAppServer,\n noAuth,\n });\n // Backwrite new bridge state to state.json (mirrors bridgeRestart)\n const updatedInst = { ...inst, bridge: newBridgeState };\n const updatedState = updateInstanceState(\n state,\n instanceId,\n updatedInst,\n );\n saveState(repoRoot, updatedState);\n restarted.push(instanceId);\n logSuccess(`${instanceId}: restarted`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n warnings.push(`${instanceId}: restart failed — ${msg}`);\n logError(`${instanceId}: restart failed — ${msg}`);\n } finally {\n if (previousWarmup === undefined) {\n delete process.env.TAP_COLD_START_WARMUP;\n } else {\n process.env.TAP_COLD_START_WARMUP = previousWarmup;\n }\n }\n } else {\n healthy.push(instanceId);\n log(`${instanceId}: healthy`);\n }\n }\n\n const message =\n [\n restarted.length > 0 ? `Restarted: ${restarted.join(\", \")}` : null,\n cleaned.length > 0 ? `Cleaned stale: ${cleaned.join(\", \")}` : null,\n healthy.length > 0 ? `Healthy: ${healthy.join(\", \")}` : null,\n ]\n .filter(Boolean)\n .join(\". \") || \"No app-server bridges found\";\n\n log(\"\");\n log(message);\n\n return {\n ok: true,\n command: \"bridge\",\n code:\n restarted.length > 0\n ? \"TAP_BRIDGE_WATCH_RESTARTED\"\n : \"TAP_BRIDGE_WATCH_OK\",\n message,\n warnings,\n data: { restarted, cleaned, healthy },\n };\n}\n\n// ─── Subcommand: status ────────────────────────────────────────\n\nfunction bridgeStatusAll(): CommandResult {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const { config: resolvedCfg } = resolveConfig({}, repoRoot);\n const stateDir = resolvedCfg.stateDir;\n const instanceIds = Object.keys(state.instances) as InstanceId[];\n const bridges: Record<\n string,\n {\n status: string;\n runtime: string;\n pid: number | null;\n port: number | null;\n lastHeartbeat: string | null;\n threadId: string | null;\n threadCwd: string | null;\n savedThreadId: string | null;\n savedThreadCwd: string | null;\n appServer: AppServerState | null;\n }\n > = {};\n\n logHeader(\"@hua-labs/tap bridge status\");\n log(\n `${\"Instance\".padEnd(20)} ${\"Runtime\".padEnd(8)} ${\"Status\".padEnd(10)} ${\"PID\".padEnd(8)} ${\"Port\".padEnd(6)} ${\"Last Heartbeat\"}`,\n );\n log(\n `${\"─\".repeat(20)} ${\"─\".repeat(8)} ${\"─\".repeat(10)} ${\"─\".repeat(8)} ${\"─\".repeat(6)} ${\"─\".repeat(20)}`,\n );\n\n for (const instanceId of instanceIds) {\n const inst = state.instances[instanceId];\n if (!inst?.installed) continue;\n\n if (inst.bridgeMode !== \"app-server\") {\n log(\n `${instanceId.padEnd(20)} ${inst.runtime.padEnd(8)} ${\"n/a\".padEnd(10)} ${\"-\".padEnd(8)} ${\"-\".padEnd(6)} ${inst.bridgeMode} mode`,\n );\n bridges[instanceId] = {\n status: \"n/a\",\n runtime: inst.runtime,\n pid: null,\n port: inst.port,\n lastHeartbeat: null,\n threadId: null,\n threadCwd: null,\n savedThreadId: null,\n savedThreadCwd: null,\n appServer: null,\n };\n continue;\n }\n\n const status = getBridgeStatus(stateDir, instanceId);\n const bridgeState = loadBridgeState(stateDir, instanceId);\n const runtimeHeartbeat = loadRuntimeBridgeHeartbeat(bridgeState);\n const savedThread = loadRuntimeBridgeThreadState(bridgeState);\n const age = getHeartbeatAge(stateDir, instanceId);\n\n const pid = bridgeState?.pid ?? null;\n const heartbeat = getBridgeHeartbeatTimestamp(stateDir, instanceId);\n const pidStr = pid ? String(pid) : \"-\";\n const portStr = inst.port ? String(inst.port) : \"-\";\n const ageStr = age !== null ? formatAge(age) : \"-\";\n\n const statusColor =\n status === \"running\"\n ? \"running\"\n : status === \"stale\"\n ? \"stale!\"\n : \"stopped\";\n\n log(\n `${instanceId.padEnd(20)} ${inst.runtime.padEnd(8)} ${statusColor.padEnd(10)} ${pidStr.padEnd(8)} ${portStr.padEnd(6)} ${ageStr}`,\n );\n if (bridgeState?.appServer) {\n log(` App server: ${formatAppServerState(bridgeState.appServer)}`);\n if (bridgeState.appServer.logPath) {\n log(` Server log: ${bridgeState.appServer.logPath}`);\n }\n if (bridgeState.appServer.auth) {\n log(\n ` Protected: ${redactProtectedUrl(bridgeState.appServer.auth.protectedUrl)}`,\n );\n }\n }\n if (runtimeHeartbeat?.threadId) {\n log(\n ` Thread: ${formatThreadSummary(runtimeHeartbeat.threadId, runtimeHeartbeat.threadCwd)}`,\n );\n }\n if (\n savedThread?.threadId &&\n (savedThread.threadId !== runtimeHeartbeat?.threadId ||\n !sameOptionalPath(savedThread.cwd, runtimeHeartbeat?.threadCwd))\n ) {\n log(\n ` Saved: ${formatThreadSummary(savedThread.threadId, savedThread.cwd)}`,\n );\n }\n\n // Turn stuck detection (M160)\n const turnInfo = getTurnInfo(stateDir, instanceId);\n if (turnInfo?.activeTurnId) {\n const ageStr =\n turnInfo.ageSeconds != null ? formatAge(turnInfo.ageSeconds) : \"?\";\n if (turnInfo.stuck) {\n log(\n ` ⚠ STUCK: turn ${turnInfo.activeTurnId.slice(0, 8)}... active ${ageStr} (threshold: 5m)`,\n );\n } else {\n log(\n ` Turn: ${turnInfo.activeTurnId.slice(0, 8)}... active ${ageStr}`,\n );\n }\n }\n\n bridges[instanceId] = {\n status,\n runtime: inst.runtime,\n pid,\n port: inst.port,\n lastHeartbeat: heartbeat,\n threadId: runtimeHeartbeat?.threadId ?? null,\n threadCwd: runtimeHeartbeat?.threadCwd ?? null,\n savedThreadId: savedThread?.threadId ?? null,\n savedThreadCwd: savedThread?.cwd ?? null,\n appServer: bridgeState?.appServer ?? null,\n };\n }\n\n if (instanceIds.length === 0) {\n log(\"No instances installed.\");\n }\n\n log(\"\");\n\n return {\n ok: true,\n command: \"bridge\",\n code: \"TAP_BRIDGE_STATUS_OK\",\n message: `${instanceIds.length} instance(s) checked`,\n warnings: [],\n data: { bridges },\n };\n}\n\nfunction bridgeStatusOne(identifier: string): CommandResult {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n const inst = state.instances[instanceId];\n\n if (!inst?.installed) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `${instanceId} is not installed.`,\n warnings: [],\n data: {},\n };\n }\n\n logHeader(`@hua-labs/tap bridge status ${instanceId}`);\n log(`Instance: ${instanceId}`);\n log(`Runtime: ${inst.runtime}`);\n log(`Bridge mode: ${inst.bridgeMode}`);\n if (inst.port) log(`Port: ${inst.port}`);\n\n // Non-app-server instances don't use bridges\n if (inst.bridgeMode !== \"app-server\") {\n log(`Status: n/a (${inst.bridgeMode} mode)`);\n log(\"\");\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: inst.runtime,\n code: \"TAP_BRIDGE_STATUS_OK\",\n message: `${instanceId} bridge: n/a (${inst.bridgeMode} mode)`,\n warnings: [],\n data: {\n status: \"n/a\",\n bridgeMode: inst.bridgeMode,\n pid: null,\n port: inst.port,\n lastHeartbeat: null,\n threadId: null,\n threadCwd: null,\n savedThreadId: null,\n savedThreadCwd: null,\n appServer: null,\n },\n };\n }\n\n const { config: resolvedCfg2 } = resolveConfig({}, repoRoot);\n const stateDir = resolvedCfg2.stateDir;\n const status = getBridgeStatus(stateDir, instanceId);\n const bridgeState = loadBridgeState(stateDir, instanceId);\n const runtimeHeartbeat = loadRuntimeBridgeHeartbeat(bridgeState);\n const savedThread = loadRuntimeBridgeThreadState(bridgeState);\n const age = getHeartbeatAge(stateDir, instanceId);\n const heartbeat = getBridgeHeartbeatTimestamp(stateDir, instanceId);\n\n log(`Status: ${status}`);\n\n if (bridgeState) {\n log(`PID: ${bridgeState.pid}`);\n log(\n `Heartbeat: ${heartbeat ?? \"-\"}${age !== null ? ` (${formatAge(age)})` : \"\"}`,\n );\n if (runtimeHeartbeat?.threadId) {\n log(\n `Thread: ${formatThreadSummary(runtimeHeartbeat.threadId, runtimeHeartbeat.threadCwd)}`,\n );\n }\n if (\n savedThread?.threadId &&\n (savedThread.threadId !== runtimeHeartbeat?.threadId ||\n !sameOptionalPath(savedThread.cwd, runtimeHeartbeat?.threadCwd))\n ) {\n log(\n `Saved: ${formatThreadSummary(savedThread.threadId, savedThread.cwd)}`,\n );\n }\n log(\n `Log: ${path.join(stateDir, \"logs\", `bridge-${instanceId}.log`)}`,\n );\n if (bridgeState.appServer) {\n log(`App server: ${bridgeState.appServer.url}`);\n log(`Server PID: ${bridgeState.appServer.pid ?? \"-\"}`);\n log(\n `Server mode: ${bridgeState.appServer.managed ? \"managed\" : \"external\"}`,\n );\n log(\n `Health: ${bridgeState.appServer.healthy ? \"healthy\" : \"unhealthy\"}`,\n );\n log(`Checked: ${bridgeState.appServer.lastCheckedAt}`);\n if (bridgeState.appServer.logPath) {\n log(`Server log: ${bridgeState.appServer.logPath}`);\n }\n if (bridgeState.appServer.auth) {\n log(`Auth: ${bridgeState.appServer.auth.mode}`);\n log(\n `Protected: ${redactProtectedUrl(bridgeState.appServer.auth.protectedUrl)}`,\n );\n log(`Upstream: ${bridgeState.appServer.auth.upstreamUrl}`);\n log(`TUI connect: ${bridgeState.appServer.auth.upstreamUrl}`);\n log(`Gateway PID: ${bridgeState.appServer.auth.gatewayPid ?? \"-\"}`);\n if (bridgeState.appServer.auth.gatewayLogPath) {\n log(`Gateway log: ${bridgeState.appServer.auth.gatewayLogPath}`);\n }\n } else if (bridgeState.appServer.managed) {\n log(`Auth: none (--no-auth)`);\n log(`TUI connect: ${bridgeState.appServer.url}`);\n }\n }\n }\n\n log(\"\");\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n runtime: inst.runtime,\n code: \"TAP_BRIDGE_STATUS_OK\",\n message: `${instanceId} bridge: ${status}`,\n warnings: [],\n data: {\n status,\n bridgeMode: inst.bridgeMode,\n pid: bridgeState?.pid ?? null,\n port: inst.port,\n lastHeartbeat: heartbeat,\n threadId: runtimeHeartbeat?.threadId ?? null,\n threadCwd: runtimeHeartbeat?.threadCwd ?? null,\n savedThreadId: savedThread?.threadId ?? null,\n savedThreadCwd: savedThread?.cwd ?? null,\n appServer: bridgeState?.appServer ?? null,\n },\n };\n}\n\n// ─── Command Router ────────────────────────────────────────────\n\nasync function bridgeRestart(\n identifier: string,\n flags: Record<string, string | boolean>,\n): Promise<CommandResult> {\n const repoRoot = findRepoRoot();\n const state = loadState(repoRoot);\n if (!state) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_NOT_INITIALIZED\",\n message: \"Not initialized. Run: npx @hua-labs/tap init\",\n warnings: [],\n data: {},\n };\n }\n\n const resolved = resolveInstanceId(identifier, state);\n if (!resolved.ok) {\n return {\n ok: false,\n command: \"bridge\",\n code: resolved.code,\n message: resolved.message,\n warnings: [],\n data: {},\n };\n }\n\n const instanceId = resolved.instanceId;\n const inst = state.instances[instanceId];\n if (!inst) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INSTANCE_NOT_FOUND\",\n message: `Instance not found: ${instanceId}`,\n warnings: [],\n data: {},\n };\n }\n\n const adapter = getAdapter(inst.runtime);\n const ctx = {\n ...createAdapterContext(state.commsDir, repoRoot),\n instanceId,\n };\n const bridgeScript = adapter.resolveBridgeScript?.(ctx);\n\n if (!bridgeScript) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_SCRIPT_MISSING\",\n message: `Bridge script not found for ${instanceId}`,\n warnings: [],\n data: {},\n };\n }\n\n const { config: resolvedConfig } = resolveConfig({}, repoRoot);\n const drainStr =\n typeof flags[\"drain-timeout\"] === \"string\"\n ? flags[\"drain-timeout\"]\n : undefined;\n let drainTimeout: number;\n try {\n drainTimeout = parseIntFlag(drainStr, \"--drain-timeout\", 1, 300) ?? 30;\n } catch (err) {\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n runtime: inst.runtime,\n code: \"TAP_INVALID_ARGUMENT\",\n message: err instanceof Error ? err.message : String(err),\n warnings: [],\n data: {},\n };\n }\n\n logHeader(`@hua-labs/tap bridge restart ${instanceId}`);\n log(`Drain timeout: ${drainTimeout}s`);\n\n try {\n // Use production helper for mode inference (tested in identity-restart.test.ts)\n // Priority: flags > saved instance mode > bridge state inference\n const currentBridgeState = loadBridgeState(ctx.stateDir, instanceId);\n const { manageAppServer, noAuth } = inferRestartMode(\n currentBridgeState,\n {\n noServer: flags[\"no-server\"] === true ? true : undefined,\n noAuth: flags[\"no-auth\"] === true ? true : undefined,\n },\n {\n manageAppServer: inst.manageAppServer,\n noAuth: inst.noAuth,\n },\n );\n\n const previousColdStartWarmup = process.env.TAP_COLD_START_WARMUP;\n process.env.TAP_COLD_START_WARMUP = \"true\";\n let bridge: BridgeState;\n try {\n bridge = await restartBridge({\n instanceId,\n runtime: inst.runtime,\n stateDir: ctx.stateDir,\n commsDir: ctx.commsDir,\n bridgeScript,\n platform: ctx.platform,\n agentName: inst.agentName ?? undefined,\n runtimeCommand: resolvedConfig.runtimeCommand,\n appServerUrl: resolvedConfig.appServerUrl,\n repoRoot,\n port: inst.port ?? undefined,\n headless: inst.headless,\n drainTimeoutSeconds: drainTimeout,\n manageAppServer,\n noAuth,\n });\n } finally {\n if (previousColdStartWarmup === undefined) {\n delete process.env.TAP_COLD_START_WARMUP;\n } else {\n process.env.TAP_COLD_START_WARMUP = previousColdStartWarmup;\n }\n }\n\n logSuccess(`Bridge restarted (PID: ${bridge.pid})`);\n\n // Save bridge mode for next restart (#799 follow-up)\n const updated = { ...inst, bridge, manageAppServer, noAuth };\n const newState = updateInstanceState(state, instanceId, updated);\n saveState(repoRoot, newState);\n\n return {\n ok: true,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_START_OK\",\n message: `Bridge for ${instanceId} restarted (PID: ${bridge.pid})`,\n warnings: [],\n data: { pid: bridge.pid },\n };\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logError(msg);\n return {\n ok: false,\n command: \"bridge\",\n instanceId,\n code: \"TAP_BRIDGE_START_FAILED\",\n message: msg,\n warnings: [],\n data: {},\n };\n }\n}\n\nexport async function bridgeCommand(args: string[]): Promise<CommandResult> {\n const { positional, flags } = parseArgs(args);\n const subcommand = positional[0];\n const identifierArg = positional[1];\n const agentName =\n typeof flags[\"agent-name\"] === \"string\" ? flags[\"agent-name\"] : undefined;\n\n if (!subcommand || subcommand === \"--help\" || subcommand === \"-h\") {\n log(BRIDGE_HELP);\n return {\n ok: true,\n command: \"bridge\",\n code: \"TAP_NO_OP\",\n message: BRIDGE_HELP,\n warnings: [],\n data: {},\n };\n }\n\n switch (subcommand) {\n case \"start\": {\n const wantsAll = flags[\"all\"] === true || identifierArg === \"--all\";\n const hasInstance = identifierArg && identifierArg !== \"--all\";\n\n if (wantsAll && hasInstance) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Cannot combine <instance> with --all. Use either:\\n tap bridge start ${identifierArg}\\n tap bridge start --all`,\n warnings: [],\n data: {},\n };\n }\n if (wantsAll) {\n return bridgeStartAll(flags);\n }\n if (!identifierArg) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message:\n \"Missing instance. Usage: npx @hua-labs/tap bridge start <instance> or --all\",\n warnings: [],\n data: {},\n };\n }\n return bridgeStart(identifierArg, agentName, flags);\n }\n\n case \"stop\": {\n if (!identifierArg) {\n return bridgeStopAll();\n }\n return bridgeStopOne(identifierArg);\n }\n\n case \"status\": {\n if (identifierArg) {\n return bridgeStatusOne(identifierArg);\n }\n return bridgeStatusAll();\n }\n\n case \"watch\": {\n const intervalStr =\n typeof flags[\"interval\"] === \"string\" ? flags[\"interval\"] : undefined;\n const interval = intervalStr ? parseInt(intervalStr, 10) : 30;\n const stuckThresholdStr =\n typeof flags[\"stuck-threshold\"] === \"string\"\n ? flags[\"stuck-threshold\"]\n : undefined;\n const stuckThreshold = stuckThresholdStr\n ? parseInt(stuckThresholdStr, 10)\n : 300;\n return bridgeWatch(interval, stuckThreshold);\n }\n\n case \"restart\": {\n if (!identifierArg) {\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message:\n \"Missing instance. Usage: npx @hua-labs/tap bridge restart <instance>\",\n warnings: [],\n data: {},\n };\n }\n return bridgeRestart(identifierArg, flags);\n }\n\n default:\n return {\n ok: false,\n command: \"bridge\",\n code: \"TAP_INVALID_ARGUMENT\",\n message: `Unknown bridge subcommand: ${subcommand}. Use: start, stop, restart, status`,\n warnings: [],\n data: {},\n };\n }\n}\n","import { bridgeCommand } from \"./bridge.js\";\nimport {\n collectDashboardSnapshot,\n type DashboardSnapshot,\n} from \"../engine/dashboard.js\";\nimport { findRepoRoot, log } from \"../utils.js\";\nimport type { CommandResult } from \"../types.js\";\n\nconst UP_HELP = `\nUsage:\n tap up [bridge-start options]\n\nDescription:\n Start all registered app-server bridge daemons with one command.\n This is the orchestration entrypoint for headless/background TAP operation.\n\nExamples:\n npx @hua-labs/tap up\n npx @hua-labs/tap up --no-auth\n npx @hua-labs/tap up --busy-mode wait\n`.trim();\n\ntype UpResultData = Record<string, unknown> & {\n snapshot: DashboardSnapshot;\n};\n\nexport async function upCommand(args: string[]): Promise<CommandResult> {\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n log(UP_HELP);\n return {\n ok: true,\n command: \"up\",\n code: \"TAP_NO_OP\",\n message: UP_HELP,\n warnings: [],\n data: {},\n };\n }\n\n const repoRoot = findRepoRoot();\n const previousColdStartWarmup = process.env.TAP_COLD_START_WARMUP;\n process.env.TAP_COLD_START_WARMUP = \"true\";\n let result: CommandResult;\n try {\n result = await bridgeCommand([\"start\", \"--all\", ...args]);\n } finally {\n if (previousColdStartWarmup === undefined) {\n delete process.env.TAP_COLD_START_WARMUP;\n } else {\n process.env.TAP_COLD_START_WARMUP = previousColdStartWarmup;\n }\n }\n const snapshot = collectDashboardSnapshot(repoRoot);\n const activeBridges = snapshot.bridges.filter(\n (bridge) => bridge.status === \"running\",\n ).length;\n\n if (!result.ok) {\n return {\n ...result,\n command: \"up\",\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies UpResultData,\n };\n }\n\n return {\n ok: true,\n command: \"up\",\n code: \"TAP_UP_OK\",\n message: `tap up: ${activeBridges} bridge(s) running`,\n warnings: result.warnings,\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies UpResultData,\n };\n}\n","import { bridgeCommand } from \"./bridge.js\";\nimport {\n collectDashboardSnapshot,\n type DashboardSnapshot,\n} from \"../engine/dashboard.js\";\nimport { findRepoRoot, log } from \"../utils.js\";\nimport type { CommandResult } from \"../types.js\";\n\nconst DOWN_HELP = `\nUsage:\n tap down\n\nDescription:\n Stop all running bridge daemons and managed app-servers.\n\nExamples:\n npx @hua-labs/tap down\n`.trim();\n\ntype DownResultData = Record<string, unknown> & {\n snapshot: DashboardSnapshot;\n};\n\nexport async function downCommand(args: string[]): Promise<CommandResult> {\n if (args.includes(\"--help\") || args.includes(\"-h\")) {\n log(DOWN_HELP);\n return {\n ok: true,\n command: \"down\",\n code: \"TAP_NO_OP\",\n message: DOWN_HELP,\n warnings: [],\n data: {},\n };\n }\n\n const repoRoot = findRepoRoot();\n const result = await bridgeCommand([\"stop\"]);\n const snapshot = collectDashboardSnapshot(repoRoot);\n\n if (!result.ok) {\n return {\n ...result,\n command: \"down\",\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies DownResultData,\n };\n }\n\n return {\n ok: true,\n command: \"down\",\n code: \"TAP_DOWN_OK\",\n message: `tap down: ${snapshot.bridges.filter((bridge) => bridge.status === \"running\").length} bridge(s) still running`,\n warnings: result.warnings,\n data: {\n ...(result.data as Record<string, unknown>),\n snapshot,\n } satisfies DownResultData,\n };\n}\n","export type {\n RuntimeName,\n BridgeMode,\n Platform,\n InstanceId,\n AdapterContext,\n ProbeResult,\n PatchPlan,\n PatchOp,\n PatchOpType,\n OwnedArtifact,\n ArtifactKind,\n ApplyResult,\n VerifyResult,\n VerifyCheck,\n RuntimeAdapter,\n TapState,\n TapStateV1,\n InstanceState,\n /** @deprecated Use InstanceState. Will be removed in 0.2.0. */\n RuntimeState,\n BridgeState,\n AppServerState,\n AppServerAuthState,\n CommandName,\n CommandCode,\n CommandResult,\n} from \"./types.js\";\n\nexport {\n loadState,\n saveState,\n createInitialState,\n stateExists,\n} from \"./state.js\";\nexport { version } from \"./version.js\";\nexport type {\n GeminiIdeCompanionServer,\n GeminiIdeCompanionServerOptions,\n GeminiIdeContext,\n GeminiIdeCursor,\n GeminiIdeFile,\n GeminiIdeInfo,\n} from \"./bridges/gemini-ide-companion.js\";\nexport { startGeminiIdeCompanionServer } from \"./bridges/gemini-ide-companion.js\";\n\n// Config\nexport type {\n TapSharedConfig,\n TapLocalConfig,\n TapResolvedConfig,\n ConfigSource,\n ConfigResolution,\n ConfigOverrides,\n} from \"./config/index.js\";\nexport {\n resolveConfig,\n loadSharedConfig,\n loadLocalConfig,\n saveSharedConfig,\n saveLocalConfig,\n SHARED_CONFIG_FILE,\n LOCAL_CONFIG_FILE,\n} from \"./config/index.js\";\n\n// Bridge engine\nexport {\n /** @deprecated Internal use only. Will be removed in 0.2.0. */\n updateBridgeHeartbeat,\n getHeartbeatAge,\n} from \"./engine/bridge-observability.js\";\nexport { rotateLog, restartBridge } from \"./engine/bridge.js\";\n\n// Dashboard / State API\nexport type {\n AgentInfo,\n BridgeInfo,\n PRInfo,\n DashboardWarning,\n DashboardSnapshot,\n} from \"./engine/dashboard.js\";\nexport { collectDashboardSnapshot } from \"./engine/dashboard.js\";\n\n// State/Control API (M105)\nexport type {\n StateApiOptions,\n EventStreamOptions,\n AgentControlOptions,\n AgentControlResult,\n HealthReport,\n} from \"./api/state.js\";\nexport {\n getDashboardSnapshot,\n streamEvents,\n getConfig,\n getHealthReport,\n startAgents,\n stopAgents,\n} from \"./api/state.js\";\nexport type { HttpServerOptions } from \"./api/http.js\";\nexport { startHttpServer } from \"./api/http.js\";\n\n// Runtime resolver\nexport type { ResolvedRuntime, RuntimeSource } from \"./runtime/index.js\";\nexport {\n resolveNodeRuntime,\n buildRuntimeEnv,\n readNodeVersion,\n probeFnmNode,\n getFnmBinDir,\n} from \"./runtime/index.js\";\n","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst FALLBACK_VERSION = \"0.0.0\";\n\nexport function resolvePackageVersion(\n metaUrl: string = import.meta.url,\n): string {\n const moduleDir = path.dirname(fileURLToPath(metaUrl));\n const packageJsonPath = path.join(moduleDir, \"..\", \"package.json\");\n\n try {\n const parsed = JSON.parse(fs.readFileSync(packageJsonPath, \"utf-8\")) as {\n version?: unknown;\n };\n if (typeof parsed.version === \"string\" && parsed.version.trim()) {\n return parsed.version;\n }\n } catch {\n // Fall through to the fixed fallback below.\n }\n\n return FALLBACK_VERSION;\n}\n\nexport const version = resolvePackageVersion();\n","import * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { randomUUID } from \"node:crypto\";\nimport {\n createServer,\n type IncomingMessage,\n type Server as HttpServer,\n type ServerResponse,\n} from \"node:http\";\nimport type { AddressInfo } from \"node:net\";\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport {\n CallToolRequestSchema,\n ErrorCode,\n ListToolsRequestSchema,\n McpError,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { detectGeminiIdeProcessPid } from \"./gemini-ide-process.js\";\n\nexport interface GeminiIdeCursor {\n line: number;\n character: number;\n}\n\nexport interface GeminiIdeFile {\n path: string;\n timestamp: number;\n isActive?: boolean;\n cursor?: GeminiIdeCursor;\n selectedText?: string;\n}\n\nexport interface GeminiIdeContext {\n workspaceState?: {\n openFiles?: GeminiIdeFile[];\n isTrusted?: boolean;\n };\n}\n\nexport interface GeminiIdeInfo {\n name: string;\n displayName: string;\n}\n\nexport interface GeminiIdeCompanionServerOptions {\n port?: number;\n host?: string;\n endpointPath?: string;\n authToken?: string;\n enableDiscoveryFile?: boolean;\n discoveryPid?: number;\n workspacePaths?: string[];\n ideInfo?: GeminiIdeInfo;\n logger?: {\n info?: (...args: unknown[]) => void;\n warn?: (...args: unknown[]) => void;\n error?: (...args: unknown[]) => void;\n };\n}\n\nexport interface GeminiIdeCompanionServer {\n readonly port: number;\n readonly host: string;\n readonly url: string;\n readonly endpointPath: string;\n readonly authToken: string;\n readonly discoveryFilePath: string | null;\n sessionIds(): string[];\n sendDiffAccepted(\n filePath: string,\n content?: string,\n sessionId?: string,\n ): Promise<string[]>;\n sendDiffRejected(filePath: string, sessionId?: string): Promise<string[]>;\n sendContextUpdate(\n context: GeminiIdeContext,\n sessionId?: string,\n ): Promise<string[]>;\n close(): Promise<void>;\n}\n\ninterface GeminiSession {\n mcpServer: Server;\n transport: StreamableHTTPServerTransport;\n diffContents: Map<string, string>;\n}\n\nconst DEFAULT_IDE_INFO: GeminiIdeInfo = {\n name: \"tap\",\n displayName: \"TAP Gemini Companion\",\n};\n\nfunction readBearerToken(req: IncomingMessage): string | null {\n const authorization = req.headers.authorization;\n if (!authorization) {\n return null;\n }\n\n const [scheme, token] = authorization.split(/\\s+/, 2);\n if (!scheme || !token || scheme.toLowerCase() !== \"bearer\") {\n return null;\n }\n\n return token;\n}\n\nfunction writeJson(\n res: ServerResponse,\n statusCode: number,\n body: Record<string, unknown>,\n): void {\n res.writeHead(statusCode, { \"content-type\": \"application/json\" });\n res.end(JSON.stringify(body));\n}\n\nfunction createSession(): GeminiSession {\n const diffContents = new Map<string, string>();\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n });\n const mcpServer = new Server(\n {\n name: \"tap-gemini-ide-companion\",\n version: \"0.1.0\",\n },\n {\n capabilities: {\n tools: {\n listChanged: false,\n },\n },\n },\n );\n\n mcpServer.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: [\n {\n name: \"openDiff\",\n description: \"Open a diff view for a file inside the IDE companion.\",\n inputSchema: {\n type: \"object\",\n properties: {\n filePath: { type: \"string\" },\n newContent: { type: \"string\" },\n },\n required: [\"filePath\", \"newContent\"],\n },\n },\n {\n name: \"closeDiff\",\n description: \"Close an open diff view and return the final content.\",\n inputSchema: {\n type: \"object\",\n properties: {\n filePath: { type: \"string\" },\n suppressNotification: { type: \"boolean\" },\n },\n required: [\"filePath\"],\n },\n },\n ],\n }));\n\n mcpServer.setRequestHandler(CallToolRequestSchema, async (request) => {\n switch (request.params.name) {\n case \"openDiff\": {\n const filePath = request.params.arguments?.filePath;\n const newContent = request.params.arguments?.newContent;\n\n if (typeof filePath !== \"string\" || typeof newContent !== \"string\") {\n throw new McpError(\n ErrorCode.InvalidParams,\n \"openDiff requires string filePath and newContent arguments.\",\n );\n }\n\n diffContents.set(filePath, newContent);\n return { content: [] };\n }\n\n case \"closeDiff\": {\n const filePath = request.params.arguments?.filePath;\n const suppressNotification =\n request.params.arguments?.suppressNotification;\n if (typeof filePath !== \"string\") {\n throw new McpError(\n ErrorCode.InvalidParams,\n \"closeDiff requires a string filePath argument.\",\n );\n }\n if (\n suppressNotification !== undefined &&\n typeof suppressNotification !== \"boolean\"\n ) {\n throw new McpError(\n ErrorCode.InvalidParams,\n \"closeDiff suppressNotification must be a boolean when provided.\",\n );\n }\n\n const content = diffContents.get(filePath) ?? null;\n diffContents.delete(filePath);\n\n if (content !== null && !suppressNotification) {\n await transport.send({\n jsonrpc: \"2.0\",\n method: \"ide/diffRejected\",\n params: { filePath },\n });\n }\n\n return {\n content: [\n {\n type: \"text\" as const,\n text: JSON.stringify({ content }),\n },\n ],\n };\n }\n\n default:\n throw new McpError(\n ErrorCode.InvalidParams,\n `Unknown tool: ${request.params.name}`,\n );\n }\n });\n\n return {\n mcpServer,\n transport,\n diffContents,\n };\n}\n\nfunction resolveDiscoveryFilePath(pid: number, port: number): string {\n return path.join(\n os.tmpdir(),\n \"gemini\",\n \"ide\",\n `gemini-ide-server-${pid}-${port}.json`,\n );\n}\n\nfunction writeDiscoveryFile(options: {\n port: number;\n pid: number;\n authToken: string;\n workspacePaths: string[];\n ideInfo: GeminiIdeInfo;\n}): string {\n const filePath = resolveDiscoveryFilePath(options.pid, options.port);\n fs.mkdirSync(path.dirname(filePath), { recursive: true });\n fs.writeFileSync(\n filePath,\n JSON.stringify(\n {\n port: options.port,\n workspacePath: options.workspacePaths.join(path.delimiter),\n authToken: options.authToken,\n ideInfo: options.ideInfo,\n },\n null,\n 2,\n ) + \"\\n\",\n \"utf-8\",\n );\n return filePath;\n}\n\nfunction removeFileIfExists(filePath: string | null): void {\n if (!filePath) {\n return;\n }\n\n try {\n fs.unlinkSync(filePath);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n throw error;\n }\n }\n}\n\nexport async function startGeminiIdeCompanionServer(\n options: GeminiIdeCompanionServerOptions = {},\n): Promise<GeminiIdeCompanionServer> {\n const host = options.host ?? \"127.0.0.1\";\n const port = options.port ?? 0;\n const endpointPath = options.endpointPath ?? \"/mcp\";\n const authToken = options.authToken ?? randomUUID();\n const ideInfo = options.ideInfo ?? DEFAULT_IDE_INFO;\n const sessions = new Map<string, GeminiSession>();\n let resolvedPort = port;\n\n const httpServer: HttpServer = createServer(async (req, res) => {\n try {\n const requestUrl = new URL(\n req.url ?? \"/\",\n `http://${req.headers.host ?? `${host}:${resolvedPort}`}`,\n );\n\n if (requestUrl.pathname !== endpointPath) {\n writeJson(res, 404, { error: \"Not found\" });\n return;\n }\n\n const suppliedToken = readBearerToken(req);\n if (suppliedToken !== authToken) {\n res.setHeader(\"www-authenticate\", 'Bearer realm=\"gemini-ide\"');\n writeJson(res, 401, { error: \"Unauthorized\" });\n return;\n }\n\n const sessionIdHeader = req.headers[\"mcp-session-id\"];\n const sessionId =\n typeof sessionIdHeader === \"string\" ? sessionIdHeader : null;\n\n if (!sessionId) {\n if (req.method !== \"POST\") {\n writeJson(res, 400, {\n error: \"Missing MCP session ID for non-initialization request.\",\n });\n return;\n }\n\n const session = createSession();\n session.transport.onclose = () => {\n const activeSessionId = session.transport.sessionId;\n if (activeSessionId) {\n sessions.delete(activeSessionId);\n }\n };\n\n await session.mcpServer.connect(session.transport);\n await session.transport.handleRequest(req, res);\n\n const initializedSessionId = session.transport.sessionId;\n if (initializedSessionId) {\n sessions.set(initializedSessionId, session);\n }\n return;\n }\n\n const existingSession = sessions.get(sessionId);\n if (!existingSession) {\n writeJson(res, 404, { error: `Unknown MCP session: ${sessionId}` });\n return;\n }\n\n await existingSession.transport.handleRequest(req, res);\n } catch (error) {\n options.logger?.error?.(\"[gemini-ide-companion] request failed\", error);\n if (!res.headersSent) {\n writeJson(res, 500, { error: \"Internal server error\" });\n } else {\n res.end();\n }\n }\n });\n\n await new Promise<void>((resolve, reject) => {\n httpServer.once(\"error\", reject);\n httpServer.listen(port, host, () => {\n httpServer.off(\"error\", reject);\n resolve();\n });\n });\n\n const resolvedAddress = httpServer.address();\n if (!resolvedAddress || typeof resolvedAddress === \"string\") {\n throw new Error(\"Failed to resolve Gemini IDE companion listen address.\");\n }\n\n resolvedPort = (resolvedAddress as AddressInfo).port;\n const workspacePaths = (options.workspacePaths ?? [])\n .map((workspacePath) => path.resolve(workspacePath))\n .filter(Boolean);\n\n let discoveryFilePath: string | null = null;\n try {\n if (options.enableDiscoveryFile) {\n if (workspacePaths.length === 0) {\n throw new Error(\n \"workspacePaths is required when enableDiscoveryFile is true.\",\n );\n }\n\n const discoveryPid =\n options.discoveryPid ?? (await detectGeminiIdeProcessPid());\n\n discoveryFilePath = writeDiscoveryFile({\n port: resolvedPort,\n pid: discoveryPid,\n authToken,\n workspacePaths,\n ideInfo,\n });\n }\n } catch (error) {\n await new Promise<void>((resolve, reject) => {\n httpServer.close((closeError) => {\n if (closeError) {\n reject(closeError);\n return;\n }\n resolve();\n });\n });\n throw error;\n }\n\n const close = async (): Promise<void> => {\n removeFileIfExists(discoveryFilePath);\n\n const closePromises = [...sessions.values()].map(async (session) => {\n await session.mcpServer.close();\n session.diffContents.clear();\n });\n await Promise.all(closePromises);\n sessions.clear();\n\n await new Promise<void>((resolve, reject) => {\n httpServer.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n });\n };\n\n const sendContextUpdate = async (\n context: GeminiIdeContext,\n sessionId?: string,\n ): Promise<string[]> => {\n const targets = sessionId\n ? [[sessionId, sessions.get(sessionId) ?? null] as const]\n : [...sessions.entries()].map(([id, session]) => [id, session] as const);\n const delivered: string[] = [];\n\n for (const [targetSessionId, session] of targets) {\n if (!session) {\n continue;\n }\n\n await session.transport.send({\n jsonrpc: \"2.0\",\n method: \"ide/contextUpdate\",\n params: context as Record<string, unknown>,\n });\n delivered.push(targetSessionId);\n }\n\n return delivered;\n };\n\n const sendDiffAccepted = async (\n filePath: string,\n content?: string,\n sessionId?: string,\n ): Promise<string[]> => {\n const targets = sessionId\n ? [[sessionId, sessions.get(sessionId) ?? null] as const]\n : [...sessions.entries()].map(([id, session]) => [id, session] as const);\n const delivered: string[] = [];\n\n for (const [targetSessionId, session] of targets) {\n if (!session) {\n continue;\n }\n\n const finalContent = content ?? session.diffContents.get(filePath);\n if (typeof finalContent !== \"string\") {\n continue;\n }\n\n await session.transport.send({\n jsonrpc: \"2.0\",\n method: \"ide/diffAccepted\",\n params: { filePath, content: finalContent },\n });\n session.diffContents.delete(filePath);\n delivered.push(targetSessionId);\n }\n\n return delivered;\n };\n\n const sendDiffRejected = async (\n filePath: string,\n sessionId?: string,\n ): Promise<string[]> => {\n const targets = sessionId\n ? [[sessionId, sessions.get(sessionId) ?? null] as const]\n : [...sessions.entries()].map(([id, session]) => [id, session] as const);\n const delivered: string[] = [];\n\n for (const [targetSessionId, session] of targets) {\n if (!session) {\n continue;\n }\n if (!sessionId && !session.diffContents.has(filePath)) {\n continue;\n }\n\n await session.transport.send({\n jsonrpc: \"2.0\",\n method: \"ide/diffRejected\",\n params: { filePath },\n });\n session.diffContents.delete(filePath);\n delivered.push(targetSessionId);\n }\n\n return delivered;\n };\n\n return {\n port: resolvedPort,\n host,\n url: `http://${host}:${resolvedPort}${endpointPath}`,\n endpointPath,\n authToken,\n discoveryFilePath,\n sessionIds: () => [...sessions.keys()],\n sendDiffAccepted,\n sendDiffRejected,\n sendContextUpdate,\n close,\n };\n}\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 = Object.create(null);\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.!#$%&’*+/=?^_`{|}~-]+@[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 // @ts-ignore\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 // @ts-ignore\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","/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n function init(inst, def) {\n if (!inst._zod) {\n Object.defineProperty(inst, \"_zod\", {\n value: {\n def,\n constr: _,\n traits: new Set(),\n },\n enumerable: false,\n });\n }\n if (inst._zod.traits.has(name)) {\n return;\n }\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n const proto = _.prototype;\n const keys = Object.keys(proto);\n for (let i = 0; i < keys.length; i++) {\n const k = keys[i];\n if (!(k in inst)) {\n inst[k] = proto[k].bind(inst);\n }\n }\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", { value: name });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred) {\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", { value: init });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst) => {\n if (params?.Parent && inst instanceof params.Parent)\n return true;\n return inst?._zod?.traits?.has(name);\n },\n });\n Object.defineProperty(_, \"name\", { value: name });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n constructor() {\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nexport class $ZodEncodeError extends Error {\n constructor(name) {\n super(`Encountered unidirectional transform during encode: ${name}`);\n this.name = \"ZodEncodeError\";\n }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n if (newConfig)\n Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n","// functions\nexport function assertEqual(val) {\n return val;\n}\nexport function assertNotEqual(val) {\n return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n const values = Object.entries(entries)\n .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n .map(([_, v]) => v);\n return values;\n}\nexport function joinValues(array, separator = \"|\") {\n return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\")\n return value.toString();\n return value;\n}\nexport function cached(getter) {\n const set = false;\n return {\n get value() {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", { value });\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n };\n}\nexport function nullish(input) {\n return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepString = step.toString();\n let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n const match = stepString.match(/\\d?e-(\\d?)/);\n if (match?.[1]) {\n stepDecCount = Number.parseInt(match[1]);\n }\n }\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}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n let value = undefined;\n Object.defineProperty(object, key, {\n get() {\n if (value === EVALUATING) {\n // Circular reference detected, return undefined to break the cycle\n return undefined;\n }\n if (value === undefined) {\n value = EVALUATING;\n value = getter();\n }\n return value;\n },\n set(v) {\n Object.defineProperty(object, key, {\n value: v,\n // configurable: true,\n });\n // object[key] = v;\n },\n configurable: true,\n });\n}\nexport function objectClone(obj) {\n return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n}\nexport function mergeDefs(...defs) {\n const mergedDescriptors = {};\n for (const def of defs) {\n const descriptors = Object.getOwnPropertyDescriptors(def);\n Object.assign(mergedDescriptors, descriptors);\n }\n return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n if (!path)\n return obj;\n return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key) => promisesObj[key]);\n return Promise.all(promises).then((results) => {\n const resolvedObj = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nexport function randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nexport function esc(str) {\n return JSON.stringify(str);\n}\nexport function slugify(input) {\n return input\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, \"\")\n .replace(/[\\s_-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n // @ts-ignore\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n }\n catch (_) {\n return false;\n }\n});\nexport function isPlainObject(o) {\n if (isObject(o) === false)\n return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined)\n return true;\n if (typeof ctor !== \"function\")\n return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false)\n return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nexport function shallowClone(o) {\n if (isPlainObject(o))\n return { ...o };\n if (Array.isArray(o))\n return [...o];\n return o;\n}\nexport function numKeys(data) {\n let keyCount = 0;\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n // @ts-ignore\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent)\n cl._zod.parent = inst;\n return cl;\n}\nexport function normalizeParams(_params) {\n const params = _params;\n if (!params)\n return {};\n if (typeof params === \"string\")\n return { error: () => params };\n if (params?.message !== undefined) {\n if (params?.error !== undefined)\n throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\")\n return { ...params, error: () => params.error };\n return params;\n}\nexport function createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get(_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set(_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has(_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty(_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys(_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor(_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty(_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n },\n });\n}\nexport function stringifyPrimitive(value) {\n if (typeof value === \"bigint\")\n return value.toString() + \"n\";\n if (typeof value === \"string\")\n return `\"${value}\"`;\n return `${value}`;\n}\nexport function optionalKeys(shape) {\n return Object.keys(shape).filter((k) => {\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nexport const NUMBER_FORMAT_RANGES = {\n safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n int32: [-2147483648, 2147483647],\n uint32: [0, 4294967295],\n float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = {};\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n newShape[key] = currDef.shape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function omit(schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const newShape = { ...schema._zod.def.shape };\n for (const key in mask) {\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n delete newShape[key];\n }\n assignProp(this, \"shape\", newShape); // self-caching\n return newShape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const checks = schema._zod.def.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n // Only throw if new shape overlaps with existing shape\n // Use getOwnPropertyDescriptor to check key existence without accessing values\n const existingShape = schema._zod.def.shape;\n for (const key in shape) {\n if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n }\n }\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const _shape = { ...schema._zod.def.shape, ...shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n });\n return clone(schema, def);\n}\nexport function merge(a, b) {\n const def = mergeDefs(a._zod.def, {\n get shape() {\n const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n get catchall() {\n return b._zod.def.catchall;\n },\n checks: [], // delete existing checks\n });\n return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n const currDef = schema._zod.def;\n const checks = currDef.checks;\n const hasChecks = checks && checks.length > 0;\n if (hasChecks) {\n throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n }\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n else {\n for (const key in oldShape) {\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class\n ? new Class({\n type: \"optional\",\n innerType: oldShape[key],\n })\n : oldShape[key];\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n checks: [],\n });\n return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n const def = mergeDefs(schema._zod.def, {\n get shape() {\n const oldShape = schema._zod.def.shape;\n const shape = { ...oldShape };\n if (mask) {\n for (const key in mask) {\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key])\n continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n else {\n for (const key in oldShape) {\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key],\n });\n }\n }\n assignProp(this, \"shape\", shape); // self-caching\n return shape;\n },\n });\n return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n if (x.aborted === true)\n return true;\n for (let i = startIndex; i < x.issues.length; i++) {\n if (x.issues[i]?.continue !== true) {\n return true;\n }\n }\n return false;\n}\nexport function prefixIssues(path, issues) {\n return issues.map((iss) => {\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nexport function unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n const full = { ...iss, path: iss.path ?? [] };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n unwrapMessage(ctx?.error?.(iss)) ??\n unwrapMessage(config.customError?.(iss)) ??\n unwrapMessage(config.localeError?.(iss)) ??\n \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nexport function getSizableOrigin(input) {\n if (input instanceof Set)\n return \"set\";\n if (input instanceof Map)\n return \"map\";\n // @ts-ignore\n if (input instanceof File)\n return \"file\";\n return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n if (Array.isArray(input))\n return \"array\";\n if (typeof input === \"string\")\n return \"string\";\n return \"unknown\";\n}\nexport function parsedType(data) {\n const t = typeof data;\n switch (t) {\n case \"number\": {\n return Number.isNaN(data) ? \"nan\" : \"number\";\n }\n case \"object\": {\n if (data === null) {\n return \"null\";\n }\n if (Array.isArray(data)) {\n return \"array\";\n }\n const obj = data;\n if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n return obj.constructor.name;\n }\n }\n }\n return t;\n}\nexport function issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst,\n };\n }\n return { ...iss };\n}\nexport function cleanEnum(obj) {\n return Object.entries(obj)\n .filter(([k, _]) => {\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n })\n .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n let binaryString = \"\";\n for (let i = 0; i < bytes.length; i++) {\n binaryString += String.fromCharCode(bytes[i]);\n }\n return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n const cleanHex = hex.replace(/^0x/, \"\");\n if (cleanHex.length % 2 !== 0) {\n throw new Error(\"Invalid hex string length\");\n }\n const bytes = new Uint8Array(cleanHex.length / 2);\n for (let i = 0; i < cleanHex.length; i += 2) {\n bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n }\n return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n return Array.from(bytes)\n .map((b) => b.toString(16).padStart(2, \"0\"))\n .join(\"\");\n}\n// instanceof\nexport class Class {\n constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false,\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false,\n });\n inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n Object.defineProperty(inst, \"toString\", {\n value: () => inst.message,\n enumerable: false,\n });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues) => processError({ issues }));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues });\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues });\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 }\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(error);\n return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n const result = { errors: [] };\n const processError = (error, path = []) => {\n var _a, _b;\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues) => processError({ issues }, issue.path));\n }\n else if (issue.code === \"invalid_key\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else if (issue.code === \"invalid_element\") {\n processError({ issues: issue.issues }, issue.path);\n }\n else {\n const fullpath = [...path, ...issue.path];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while (i < fullpath.length) {\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n curr = curr.properties[el];\n }\n else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n const segs = [];\n const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n for (const seg of path) {\n if (typeof seg === \"number\")\n segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\")\n segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg))\n segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length)\n segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nexport function prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n // Process each issue\n for (const issue of issues) {\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length)\n lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n util.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n const result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n return result.issues.length\n ? {\n success: false,\n error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n let result = schema._zod.run({ value, issues: [] }, ctx);\n if (result instanceof Promise)\n result = await result;\n return result.issues.length\n ? {\n success: false,\n error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n }\n : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?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/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n if (!version)\n return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[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/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[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// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?: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])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){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}|:))$/;\nexport const mac = (delimiter) => {\n const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((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])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(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\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\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 dateSource = `(?:(?:\\\\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])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\"\n ? args.precision === -1\n ? `${hhmm}`\n : args.precision === 0\n ? `${hhmm}:[0-5]\\\\d`\n : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nexport function time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n const time = timeSource({ precision: args.precision });\n const opts = [\"Z\"];\n if (args.local)\n opts.push(\"\");\n // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n if (args.offset)\n opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive)\n bag.maximum = def.value;\n else\n bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive)\n bag.minimum = def.value;\n else\n bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload) => {\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload) => {\n if (typeof payload.value !== typeof def.value)\n throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\"\n ? payload.value % def.value === BigInt(0)\n : util.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple)\n return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt)\n bag.pattern = regexes.integer;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n continue: false,\n input,\n inst,\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n inclusive: true,\n continue: !def.abort,\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inclusive: true,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum)\n return;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const size = input.size;\n if (size === def.size)\n return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: util.getSizableOrigin(input),\n ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n if (def.maximum < curr)\n inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n if (def.minimum > curr)\n inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum)\n return;\n const origin = util.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n const val = payload.value;\n return !util.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload) => {\n const input = payload.value;\n const length = input.length;\n if (length === def.length)\n return;\n const origin = util.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern)\n (_a = inst._zod).check ?? (_a.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n inst,\n continue: !def.abort,\n });\n });\n else\n (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const escapedRegex = util.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.includes(def.includes, def.position))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.startsWith(def.prefix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst) => {\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload) => {\n if (payload.value.endsWith(def.suffix))\n return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(property, result.issues));\n }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: [],\n }, {});\n if (result instanceof Promise) {\n return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst) => {\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload) => {\n if (mimeSet.has(payload.value.type))\n return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload) => {\n payload.value = def.tx(payload.value);\n };\n});\n","export class Doc {\n constructor(args = []) {\n this.content = [];\n this.indent = 0;\n if (this)\n this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, { execution: \"sync\" });\n arg(this, { execution: \"async\" });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x) => x);\n const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n for (const line of dedented) {\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [``];\n const lines = [...content.map((x) => ` ${x}`)];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n","export const version = {\n major: 4,\n minor: 3,\n patch: 6,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = version;\n const checks = [...(inst._zod.def.checks ?? [])];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n for (const ch of checks) {\n for (const fn of ch._zod.onattach) {\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(() => {\n inst._zod.run = inst._zod.parse;\n });\n }\n else {\n const runChecks = (payload, checks, ctx) => {\n let isAborted = util.aborted(payload);\n let asyncResult;\n for (const ch of checks) {\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun)\n continue;\n }\n else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new core.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n return;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n });\n }\n else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen)\n continue;\n if (!isAborted)\n isAborted = util.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(() => {\n return payload;\n });\n }\n return payload;\n };\n const handleCanaryResult = (canary, payload, ctx) => {\n // abort if the canary is aborted\n if (util.aborted(canary)) {\n canary.aborted = true;\n return canary;\n }\n // run checks first, then\n const checkResult = runChecks(payload, checks, ctx);\n if (checkResult instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n }\n return inst._zod.parse(checkResult, ctx);\n };\n inst._zod.run = (payload, ctx) => {\n if (ctx.skipChecks) {\n return inst._zod.parse(payload, ctx);\n }\n if (ctx.direction === \"backward\") {\n // run canary\n // initial pass (no checks)\n const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n if (canary instanceof Promise) {\n return canary.then((canary) => {\n return handleCanaryResult(canary, payload, ctx);\n });\n }\n return handleCanaryResult(canary, payload, ctx);\n }\n // forward\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false)\n throw new core.$ZodAsyncError();\n return result.then((result) => runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n // Lazy initialize ~standard to avoid creating objects for every schema\n util.defineLazy(inst, \"~standard\", () => ({\n validate: (value) => {\n try {\n const r = safeParse(inst, value);\n return r.success ? { value: r.data } : { issues: r.error?.issues };\n }\n catch (_) {\n return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n }\n },\n vendor: \"zod\",\n version: 1,\n }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n inst._zod.parse = (payload, _) => {\n if (def.coerce)\n try {\n payload.value = String(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"string\")\n return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n // check initialization must come first\n checks.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.guid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8,\n };\n const v = versionMap[def.version];\n if (v === undefined)\n throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = regexes.uuid(v));\n }\n else\n def.pattern ?? (def.pattern = regexes.uuid());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.email);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n try {\n // Trim whitespace from input\n const trimmed = payload.value.trim();\n // @ts-ignore\n const url = new URL(trimmed);\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: def.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n }\n // Set the output value based on normalize flag\n if (def.normalize) {\n // Use normalized URL\n payload.value = url.href;\n }\n else {\n // Preserve the original input (trimmed)\n payload.value = trimmed;\n }\n return;\n }\n catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.emoji());\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ulid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.xid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.date);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.time(def));\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.duration);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `ipv6`;\n inst._zod.check = (payload) => {\n try {\n // @ts-ignore\n new URL(`http://[${payload.value}]`);\n // return;\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n const parts = payload.value.split(\"/\");\n try {\n if (parts.length !== 2)\n throw new Error();\n const [address, prefix] = parts;\n if (!prefix)\n throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix)\n throw new Error();\n if (prefixNum < 0 || prefixNum > 128)\n throw new Error();\n // @ts-ignore\n new URL(`http://[${address}]`);\n }\n catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64(data) {\n if (data === \"\")\n return true;\n if (data.length % 4 !== 0)\n return false;\n try {\n // @ts-ignore\n atob(data);\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64\";\n inst._zod.check = (payload) => {\n if (isValidBase64(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nexport function isValidBase64URL(data) {\n if (!regexes.base64url.test(data))\n return false;\n const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.bag.contentEncoding = \"base64url\";\n inst._zod.check = (payload) => {\n if (isValidBase64URL(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n def.pattern ?? (def.pattern = regexes.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3)\n return false;\n const [header] = tokensParts;\n if (!header)\n return false;\n // @ts-ignore\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n return false;\n if (!parsedHeader.alg)\n return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (isValidJWT(payload.value, def.alg))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload) => {\n if (def.fn(payload.value))\n return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort,\n });\n };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Number(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\"\n ? Number.isNaN(input)\n ? \"NaN\"\n : !Number.isFinite(input)\n ? \"Infinity\"\n : undefined\n : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...(received ? { received } : {}),\n });\n return payload;\n };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n checks.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.boolean;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = Boolean(payload.value);\n }\n catch (_) { }\n const input = payload.value;\n if (typeof input === \"boolean\")\n return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.bigint;\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce)\n try {\n payload.value = BigInt(payload.value);\n }\n catch (_) { }\n if (typeof payload.value === \"bigint\")\n return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n checks.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"symbol\")\n return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.undefined;\n inst._zod.values = new Set([undefined]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.pattern = regexes.null;\n inst._zod.values = new Set([null]);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (input === null)\n return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (typeof input === \"undefined\")\n return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n }\n catch (_err) { }\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate)\n return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...(isDate ? { received: \"Invalid Date\" } : {}),\n inst,\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for (let i = 0; i < input.length; i++) {\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n }\n else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n if (result.issues.length) {\n // For optional-out schemas, ignore errors on absent keys\n if (isOptionalOut && !(key in input)) {\n return;\n }\n final.issues.push(...util.prefixIssues(key, result.issues));\n }\n if (result.value === undefined) {\n if (key in input) {\n final.value[key] = undefined;\n }\n }\n else {\n final.value[key] = result.value;\n }\n}\nfunction normalizeDef(def) {\n const keys = Object.keys(def.shape);\n for (const k of keys) {\n if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = util.optionalKeys(def.shape);\n return {\n ...def,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys),\n };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n const unrecognized = [];\n // iterate over input keys\n const keySet = def.keySet;\n const _catchall = def.catchall._zod;\n const t = _catchall.def.type;\n const isOptionalOut = _catchall.optout === \"optional\";\n for (const key in input) {\n if (keySet.has(key))\n continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst,\n });\n }\n if (!proms.length)\n return payload;\n return Promise.all(proms).then(() => {\n return payload;\n });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n // const sh = def.shape;\n const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n if (!desc?.get) {\n const sh = def.shape;\n Object.defineProperty(def, \"shape\", {\n get: () => {\n const newSh = { ...sh };\n Object.defineProperty(def, \"shape\", {\n value: newSh,\n });\n return newSh;\n },\n });\n }\n const _normalized = util.cached(() => normalizeDef(def));\n util.defineLazy(inst._zod, \"propValues\", () => {\n const shape = def.shape;\n const propValues = {};\n for (const key in shape) {\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)\n propValues[key].add(v);\n }\n }\n return propValues;\n });\n const isObject = util.isObject;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n payload.value = {};\n const proms = [];\n const shape = value.shape;\n for (const key of value.keys) {\n const el = shape[key];\n const isOptionalOut = el._zod.optout === \"optional\";\n const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n }\n else {\n handlePropertyResult(r, payload, key, input, isOptionalOut);\n }\n }\n if (!catchall) {\n return proms.length ? Promise.all(proms).then(() => payload) : payload;\n }\n return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n // requires cast because technically $ZodObject doesn't extend\n $ZodObject.init(inst, def);\n const superParse = inst._zod.parse;\n const _normalized = util.cached(() => normalizeDef(def));\n const generateFastpass = (shape) => {\n const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n const normalized = _normalized.value;\n const parseStr = (key) => {\n const k = util.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys) {\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {};`);\n for (const key of normalized.keys) {\n const id = ids[key];\n const k = util.esc(key);\n const schema = shape[key];\n const isOptionalOut = schema?._zod?.optout === \"optional\";\n doc.write(`const ${id} = ${parseStr(key)};`);\n if (isOptionalOut) {\n // For optional-out schemas, ignore errors on absent keys\n doc.write(`\n if (${id}.issues.length) {\n if (${k} in input) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n else {\n doc.write(`\n if (${id}.issues.length) {\n payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}]\n })));\n }\n \n if (${id}.value === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n newResult[${k}] = ${id}.value;\n }\n \n `);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx) => fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = util.isObject;\n const jit = !core.globalConfig.jitless;\n const allowsEval = util.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx) => {\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass)\n fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n if (!catchall)\n return payload;\n return handleCatchall([], input, payload, ctx, value, inst);\n }\n return superParse(payload, ctx);\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results) {\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n const nonaborted = results.filter((r) => !util.aborted(r));\n if (nonaborted.length === 1) {\n final.value = nonaborted[0].value;\n return nonaborted[0];\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n util.defineLazy(inst._zod, \"values\", () => {\n if (def.options.every((o) => o._zod.values)) {\n return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n }\n return undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n if (def.options.every((o) => o._zod.pattern)) {\n const patterns = def.options.map((o) => o._zod.pattern);\n return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n if (result.issues.length === 0)\n return result;\n results.push(result);\n }\n }\n if (!async)\n return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n const successes = results.filter((r) => r.issues.length === 0);\n if (successes.length === 1) {\n final.value = successes[0].value;\n return final;\n }\n if (successes.length === 0) {\n // No matches - same as regular union\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n });\n }\n else {\n // Multiple matches - exclusive union failure\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: [],\n inclusive: false,\n });\n }\n return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n $ZodUnion.init(inst, def);\n def.inclusive = false;\n const single = def.options.length === 1;\n const first = def.options[0]._zod.run;\n inst._zod.parse = (payload, ctx) => {\n if (single) {\n return first(payload, ctx);\n }\n let async = false;\n const results = [];\n for (const option of def.options) {\n const result = option._zod.run({\n value: payload.value,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n }\n else {\n results.push(result);\n }\n }\n if (!async)\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results) => {\n return handleExclusiveUnionResults(results, payload, inst, ctx);\n });\n };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n def.inclusive = false;\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n util.defineLazy(inst._zod, \"propValues\", () => {\n const propValues = {};\n for (const option of def.options) {\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)) {\n if (!propValues[k])\n propValues[k] = new Set();\n for (const val of v) {\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = util.cached(() => {\n const opts = def.options;\n const map = new Map();\n for (const o of opts) {\n const values = o._zod.propValues?.[def.discriminator];\n if (!values || values.size === 0)\n throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values) {\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst,\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n discriminator: def.discriminator,\n input,\n path: [def.discriminator],\n inst,\n });\n return payload;\n };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([left, right]).then(([left, right]) => {\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return { valid: true, data: a };\n }\n if (util.isPlainObject(a) && util.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(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 {\n valid: false,\n mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return { valid: false, mergeErrorPath: [] };\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 {\n valid: false,\n mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n // Track which side(s) report each key as unrecognized\n const unrecKeys = new Map();\n let unrecIssue;\n for (const iss of left.issues) {\n if (iss.code === \"unrecognized_keys\") {\n unrecIssue ?? (unrecIssue = iss);\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).l = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n for (const iss of right.issues) {\n if (iss.code === \"unrecognized_keys\") {\n for (const k of iss.keys) {\n if (!unrecKeys.has(k))\n unrecKeys.set(k, {});\n unrecKeys.get(k).r = true;\n }\n }\n else {\n result.issues.push(iss);\n }\n }\n // Report only keys unrecognized by BOTH sides\n const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n if (bothKeys.length && unrecIssue) {\n result.issues.push({ ...unrecIssue, keys: bothKeys });\n }\n if (util.aborted(result))\n return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n $ZodType.init(inst, def);\n const items = def.items;\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\",\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n ...(tooBig\n ? { code: \"too_big\", maximum: items.length, inclusive: true }\n : { code: \"too_small\", minimum: items.length }),\n input,\n inst,\n origin: \"array\",\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items) {\n i++;\n if (i >= input.length)\n if (i >= optStart)\n continue;\n const result = item._zod.run({\n value: input[i],\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest) {\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: [],\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n }\n else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(...util.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!util.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n const values = def.keyType._zod.values;\n if (values) {\n payload.value = {};\n const recordKeys = new Set();\n for (const key of values) {\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for (const key in input) {\n if (!recordKeys.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized,\n });\n }\n }\n else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)) {\n if (key === \"__proto__\")\n continue;\n let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n if (checkNumericKey) {\n const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n if (retryResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (retryResult.issues.length === 0) {\n keyResult = retryResult;\n }\n }\n if (keyResult.issues.length) {\n if (def.mode === \"loose\") {\n // Pass through unchanged\n payload.value[key] = input[key];\n }\n else {\n // Default \"strict\" behavior: error on invalid key\n payload.issues.push({\n code: \"invalid_key\",\n origin: \"record\",\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n input: key,\n path: [key],\n inst,\n });\n }\n continue;\n }\n const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n }\n else {\n if (result.issues.length) {\n payload.issues.push(...util.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(() => payload);\n }\n return payload;\n };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input) {\n const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n }\n else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, keyResult.issues));\n }\n else {\n final.issues.push({\n code: \"invalid_key\",\n origin: \"map\",\n input,\n inst,\n issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n if (valueResult.issues.length) {\n if (util.propertyKeyTypes.has(typeof key)) {\n final.issues.push(...util.prefixIssues(key, valueResult.issues));\n }\n else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\",\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input) {\n const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result) => handleSetResult(result, payload)));\n }\n else\n handleSetResult(result, payload);\n }\n if (proms.length)\n return Promise.all(proms).then(() => payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n $ZodType.init(inst, def);\n const values = util.getEnumValues(def.entries);\n const valuesSet = new Set(values);\n inst._zod.values = valuesSet;\n inst._zod.pattern = new RegExp(`^(${values\n .filter((k) => util.propertyKeyTypes.has(typeof k))\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (valuesSet.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n if (def.values.length === 0) {\n throw new Error(\"Cannot create literal schema with no valid values\");\n }\n const values = new Set(def.values);\n inst._zod.values = values;\n inst._zod.pattern = new RegExp(`^(${def.values\n .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n .join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n if (values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n const input = payload.value;\n // @ts-ignore\n if (input instanceof File)\n return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst,\n });\n return payload;\n };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n const _out = def.transform(payload.value, payload);\n if (ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new core.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nfunction handleOptionalResult(result, input) {\n if (result.issues.length && input === undefined) {\n return { issues: [], value: undefined };\n }\n return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n });\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n if (def.innerType._zod.optin === \"optional\") {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise)\n return result.then((r) => handleOptionalResult(r, payload.value));\n return handleOptionalResult(result, payload.value);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n // Call parent init - inherits optin/optout = \"optional\"\n $ZodOptional.init(inst, def);\n // Override values/pattern to NOT add undefined\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n // Override parse to just delegate (no undefined handling)\n inst._zod.parse = (payload, ctx) => {\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"pattern\", () => {\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n util.defineLazy(inst._zod, \"values\", () => {\n return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n // Forward direction (decode): allow null to pass through\n if (payload.value === null)\n return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply defaults for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault returns the default value immediately in forward direction.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */\n return payload;\n }\n // Forward direction: continue with default handling\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply prefault for undefined input\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => {\n const v = def.innerType._zod.values;\n return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx) => {\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst,\n });\n }\n return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(\"ZodSuccess\");\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n // Forward direction (decode): apply catch logic\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result) => {\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n },\n input: payload.value,\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\",\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handlePipeResult(right, def.in, ctx));\n }\n return handlePipeResult(right, def.in, ctx);\n }\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handlePipeResult(left, def.out, ctx));\n }\n return handlePipeResult(left, def.out, ctx);\n };\n});\nfunction handlePipeResult(left, next, ctx) {\n if (left.issues.length) {\n // prevent further checks\n left.aborted = true;\n return left;\n }\n return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n inst._zod.parse = (payload, ctx) => {\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left) => handleCodecAResult(left, def, ctx));\n }\n return handleCodecAResult(left, def, ctx);\n }\n else {\n const right = def.out._zod.run(payload, ctx);\n if (right instanceof Promise) {\n return right.then((right) => handleCodecAResult(right, def, ctx));\n }\n return handleCodecAResult(right, def, ctx);\n }\n };\n});\nfunction handleCodecAResult(result, def, ctx) {\n if (result.issues.length) {\n // prevent further checks\n result.aborted = true;\n return result;\n }\n const direction = ctx.direction || \"forward\";\n if (direction === \"forward\") {\n const transformed = def.transform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n }\n return handleCodecTxResult(result, transformed, def.out, ctx);\n }\n else {\n const transformed = def.reverseTransform(result.value, result);\n if (transformed instanceof Promise) {\n return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n }\n return handleCodecTxResult(result, transformed, def.in, ctx);\n }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n // Check if transform added any issues\n if (left.issues.length) {\n left.aborted = true;\n return left;\n }\n return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n $ZodType.init(inst, def);\n util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n inst._zod.parse = (payload, ctx) => {\n if (ctx.direction === \"backward\") {\n return def.innerType._zod.run(payload, ctx);\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts) {\n if (typeof part === \"object\" && part !== null) {\n // is Zod schema\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source)\n throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n }\n else if (part === null || util.primitiveTypes.has(typeof part)) {\n regexParts.push(util.escapeRegex(`${part}`));\n }\n else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"string\",\n code: \"invalid_type\",\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: def.format ?? \"template_literal\",\n pattern: inst._zod.pattern.source,\n });\n return payload;\n }\n return payload;\n };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._def = def;\n inst._zod.def = def;\n inst.implement = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implement() must be called with a function\");\n }\n return function (...args) {\n const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n const result = Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return parse(inst._def.output, result);\n }\n return result;\n };\n };\n inst.implementAsync = (func) => {\n if (typeof func !== \"function\") {\n throw new Error(\"implementAsync() must be called with a function\");\n }\n return async function (...args) {\n const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n const result = await Reflect.apply(func, this, parsedArgs);\n if (inst._def.output) {\n return await parseAsync(inst._def.output, result);\n }\n return result;\n };\n };\n inst._zod.parse = (payload, _ctx) => {\n if (typeof payload.value !== \"function\") {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"function\",\n input: payload.value,\n inst,\n });\n return payload;\n }\n // Check if output is a promise type to determine if we should use async implementation\n const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n if (hasPromiseOutput) {\n payload.value = inst.implementAsync(payload.value);\n }\n else {\n payload.value = inst.implement(payload.value);\n }\n return payload;\n };\n inst.input = (...args) => {\n const F = inst.constructor;\n if (Array.isArray(args[0])) {\n return new F({\n type: \"function\",\n input: new $ZodTuple({\n type: \"tuple\",\n items: args[0],\n rest: args[1],\n }),\n output: inst._def.output,\n });\n }\n return new F({\n type: \"function\",\n input: args[0],\n output: inst._def.output,\n });\n };\n inst.output = (output) => {\n const F = inst.constructor;\n return new F({\n type: \"function\",\n input: inst._def.input,\n output,\n });\n };\n return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx) => {\n return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n $ZodType.init(inst, def);\n // let _innerType!: any;\n // util.defineLazy(def, \"getter\", () => {\n // if (!_innerType) {\n // _innerType = def.getter();\n // }\n // return () => _innerType;\n // });\n util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n inst._zod.parse = (payload, ctx) => {\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n checks.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _) => {\n return payload;\n };\n inst._zod.check = (payload) => {\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r) => handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst, // incorporates params.error into issue reporting\n path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n continue: !inst._zod.def.abort,\n // params: inst._zod.def.params,\n };\n if (inst._zod.def.params)\n _iss.params = inst._zod.def.params;\n payload.issues.push(util.issue(_iss));\n }\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n",null,"import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n core.$ZodType.init(inst, def);\n Object.assign(inst[\"~standard\"], {\n jsonSchema: {\n input: createStandardJSONSchemaMethod(inst, \"input\"),\n output: createStandardJSONSchemaMethod(inst, \"output\"),\n },\n });\n inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n inst.def = def;\n inst.type = def.type;\n Object.defineProperty(inst, \"_def\", { value: def });\n // base methods\n inst.check = (...checks) => {\n return inst.clone(util.mergeDefs(def, {\n checks: [\n ...(def.checks ?? []),\n ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n ],\n }), {\n parent: true,\n });\n };\n inst.with = inst.check;\n inst.clone = (def, params) => core.clone(inst, def, params);\n inst.brand = () => inst;\n inst.register = ((reg, meta) => {\n reg.add(inst, meta);\n return inst;\n });\n // parsing\n inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // encoding/decoding\n inst.encode = (data, params) => parse.encode(inst, data, params);\n inst.decode = (data, params) => parse.decode(inst, data, params);\n inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n // refinements\n inst.refine = (check, params) => inst.check(refine(check, params));\n inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n // wrappers\n inst.optional = () => optional(inst);\n inst.exactOptional = () => exactOptional(inst);\n inst.nullable = () => nullable(inst);\n inst.nullish = () => optional(nullable(inst));\n inst.nonoptional = (params) => nonoptional(inst, params);\n inst.array = () => array(inst);\n inst.or = (arg) => union([inst, arg]);\n inst.and = (arg) => intersection(inst, arg);\n inst.transform = (tx) => pipe(inst, transform(tx));\n inst.default = (def) => _default(inst, def);\n inst.prefault = (def) => prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params) => _catch(inst, params);\n inst.pipe = (target) => pipe(inst, target);\n inst.readonly = () => readonly(inst);\n // meta\n inst.describe = (description) => {\n const cl = inst.clone();\n core.globalRegistry.add(cl, { description });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get() {\n return core.globalRegistry.get(inst)?.description;\n },\n configurable: true,\n });\n inst.meta = (...args) => {\n if (args.length === 0) {\n return core.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n core.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = () => inst.safeParse(undefined).success;\n inst.isNullable = () => inst.safeParse(null).success;\n inst.apply = (fn) => fn(inst);\n return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args) => inst.check(checks.regex(...args));\n inst.includes = (...args) => inst.check(checks.includes(...args));\n inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n inst.min = (...args) => inst.check(checks.minLength(...args));\n inst.max = (...args) => inst.check(checks.maxLength(...args));\n inst.length = (...args) => inst.check(checks.length(...args));\n inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n inst.lowercase = (params) => inst.check(checks.lowercase(params));\n inst.uppercase = (params) => inst.check(checks.uppercase(params));\n // transforms\n inst.trim = () => inst.check(checks.trim());\n inst.normalize = (...args) => inst.check(checks.normalize(...args));\n inst.toLowerCase = () => inst.check(checks.toLowerCase());\n inst.toUpperCase = () => inst.check(checks.toUpperCase());\n inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n core.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params) => inst.check(core._email(ZodEmail, params));\n inst.url = (params) => inst.check(core._url(ZodURL, params));\n inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n // iso\n inst.datetime = (params) => inst.check(iso.datetime(params));\n inst.date = (params) => inst.check(iso.date(params));\n inst.time = (params) => inst.check(iso.time(params));\n inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n core.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n return core._url(ZodURL, {\n protocol: /^https?$/,\n hostname: core.regexes.domain,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodMAC.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n core.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n core.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n // ZodStringFormat.init(inst, def);\n core.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n const enc = params?.enc ?? \"hex\";\n const format = `${alg}_${enc}`;\n const regex = core.regexes[format];\n if (!regex)\n throw new Error(`Unrecognized hash format: ${format}`);\n return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n core.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.int = (params) => inst.check(int(params));\n inst.safe = (params) => inst.check(int(params));\n inst.positive = (params) => inst.check(checks.gt(0, params));\n inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n inst.negative = (params) => inst.check(checks.lt(0, params));\n inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = () => inst;\n const bag = inst._zod.bag;\n inst.minValue =\n Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue =\n Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nexport function number(params) {\n return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n core.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nexport function int(params) {\n return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n core.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n core.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.gt = (value, params) => inst.check(checks.gt(value, params));\n inst.gte = (value, params) => inst.check(checks.gte(value, params));\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.lt = (value, params) => inst.check(checks.lt(value, params));\n inst.lte = (value, params) => inst.check(checks.lte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n core.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n core.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n core.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n core.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n core.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n core.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n core.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n core.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n core.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n inst.min = (value, params) => inst.check(checks.gte(value, params));\n inst.max = (value, params) => inst.check(checks.lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n core.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n inst.element = def.element;\n inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n inst.length = (len, params) => inst.check(checks.length(len, params));\n inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n const shape = schema._zod.def.shape;\n return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n core.$ZodObjectJIT.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n util.defineLazy(inst, \"shape\", () => {\n return def.shape;\n });\n inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n inst.extend = (incoming) => {\n return util.extend(inst, incoming);\n };\n inst.safeExtend = (incoming) => {\n return util.safeExtend(inst, incoming);\n };\n inst.merge = (other) => util.merge(inst, other);\n inst.pick = (mask) => util.pick(inst, mask);\n inst.omit = (mask) => util.omit(inst, mask);\n inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n const def = {\n type: \"object\",\n shape: shape ?? {},\n ...util.normalizeParams(params),\n };\n return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: never(),\n ...util.normalizeParams(params),\n });\n}\n// looseObject\nexport function looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n shape,\n catchall: unknown(),\n ...util.normalizeParams(params),\n });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n core.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\nexport function union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodXor.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n return new ZodXor({\n type: \"union\",\n options: options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n ZodUnion.init(inst, def);\n core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n core.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right,\n });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n core.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n inst.rest = (rest) => inst.clone({\n ...inst._zod.def,\n rest: rest,\n });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof core.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n core.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n const k = core.clone(keyType);\n k._zod.values = undefined;\n return new ZodRecord({\n type: \"record\",\n keyType: k,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport function looseRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n mode: \"loose\",\n ...util.normalizeParams(params),\n });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n core.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n core.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n inst.min = (...args) => inst.check(core._minSize(...args));\n inst.nonempty = (params) => inst.check(core._minSize(1, params));\n inst.max = (...args) => inst.check(core._maxSize(...args));\n inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n core.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params) => {\n const newEntries = {};\n for (const value of values) {\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n inst.exclude = (values, params) => {\n const newEntries = { ...def.entries };\n for (const value of values) {\n if (keys.has(value)) {\n delete newEntries[value];\n }\n else\n throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ...util.normalizeParams(params),\n entries: newEntries,\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n core.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get() {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n },\n });\n});\nexport function literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n core.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n inst.min = (size, params) => inst.check(core._minSize(size, params));\n inst.max = (size, params) => inst.check(core._maxSize(size, params));\n inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n core.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n inst._zod.parse = (payload, _ctx) => {\n if (_ctx.direction === \"backward\") {\n throw new core.$ZodEncodeError(inst.constructor.name);\n }\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n // _issue.continue ??= true;\n payload.issues.push(util.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output) => {\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nexport function transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn,\n });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n core.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n core.$ZodExactOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n return new ZodExactOptional({\n type: \"optional\",\n innerType: innerType,\n });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n core.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType,\n });\n}\n// nullish\nexport function nullish(innerType) {\n return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n core.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n core.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n core.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n core.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType,\n });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n core.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n core.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n core.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n inst.in = def.in;\n inst.out = def.out;\n});\nexport function pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out,\n // ...util.normalizeParams(params),\n });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n ZodPipe.init(inst, def);\n core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n return new ZodCodec({\n type: \"pipe\",\n in: in_,\n out: out,\n transform: params.decode,\n reverseTransform: params.encode,\n });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n core.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType,\n });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n core.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n core.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter,\n });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n core.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType,\n });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n core.$ZodFunction.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n return new ZodFunction({\n type: \"function\",\n input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n output: params?.output ?? unknown(),\n });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n core.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n const ch = new core.$ZodCheck({\n check: \"custom\",\n // ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\nexport function custom(fn, _params) {\n return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data) => data instanceof cls,\n abort: true,\n ...util.normalizeParams(params),\n });\n inst._zod.bag.Class = cls;\n // Override check to emit invalid_type instead of custom\n inst._zod.check = (payload) => {\n if (!(payload.value instanceof cls)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: cls.name,\n input: payload.value,\n inst,\n path: [...(inst._zod.def.path ?? [])],\n });\n }\n };\n return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n Codec: ZodCodec,\n Boolean: ZodBoolean,\n String: ZodString,\n}, ...args);\nexport function json(params) {\n const jsonSchema = lazy(() => {\n return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n","export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n","export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n",null,null,"import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n /**\n * `c` was changed to `[cC]` to replicate /i flag\n */\n cuid: /^[cC][^\\s-]{8,}$/,\n cuid2: /^[0-9a-z]+$/,\n ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n /**\n * `a-z` was added to replicate /i flag\n */\n email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n /**\n * Constructed a valid Unicode RegExp\n *\n * Lazily instantiate since this type of regex isn't supported\n * in all envs (e.g. React Native).\n *\n * See:\n * https://github.com/colinhacks/zod/issues/2433\n * Fix in Zod:\n * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n */\n emoji: () => {\n if (emojiRegex === undefined) {\n emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n }\n return emojiRegex;\n },\n /**\n * Unused\n */\n uuid: /^[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}$/,\n /**\n * Unused\n */\n ipv4: /^(?:(?: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])$/,\n ipv4Cidr: /^(?:(?: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 /**\n * Unused\n */\n 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})))$/,\n ipv6Cidr: /^(([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 base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n nanoid: /^[a-zA-Z0-9_-]{21}$/,\n jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"email\":\n switch (refs.emailStrategy) {\n case \"format:email\":\n addFormat(res, \"email\", check.message, refs);\n break;\n case \"format:idn-email\":\n addFormat(res, \"idn-email\", check.message, refs);\n break;\n case \"pattern:zod\":\n addPattern(res, zodPatterns.email, check.message, refs);\n break;\n }\n break;\n case \"url\":\n addFormat(res, \"uri\", check.message, refs);\n break;\n case \"uuid\":\n addFormat(res, \"uuid\", check.message, refs);\n break;\n case \"regex\":\n addPattern(res, check.regex, check.message, refs);\n break;\n case \"cuid\":\n addPattern(res, zodPatterns.cuid, check.message, refs);\n break;\n case \"cuid2\":\n addPattern(res, zodPatterns.cuid2, check.message, refs);\n break;\n case \"startsWith\":\n addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n break;\n case \"datetime\":\n addFormat(res, \"date-time\", check.message, refs);\n break;\n case \"date\":\n addFormat(res, \"date\", check.message, refs);\n break;\n case \"time\":\n addFormat(res, \"time\", check.message, refs);\n break;\n case \"duration\":\n addFormat(res, \"duration\", check.message, refs);\n break;\n case \"length\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n break;\n }\n case \"ip\": {\n if (check.version !== \"v6\") {\n addFormat(res, \"ipv4\", check.message, refs);\n }\n if (check.version !== \"v4\") {\n addFormat(res, \"ipv6\", check.message, refs);\n }\n break;\n }\n case \"base64url\":\n addPattern(res, zodPatterns.base64url, check.message, refs);\n break;\n case \"jwt\":\n addPattern(res, zodPatterns.jwt, check.message, refs);\n break;\n case \"cidr\": {\n if (check.version !== \"v6\") {\n addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n }\n if (check.version !== \"v4\") {\n addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n }\n break;\n }\n case \"emoji\":\n addPattern(res, zodPatterns.emoji(), check.message, refs);\n break;\n case \"ulid\": {\n addPattern(res, zodPatterns.ulid, check.message, refs);\n break;\n }\n case \"base64\": {\n switch (refs.base64Strategy) {\n case \"format:binary\": {\n addFormat(res, \"binary\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\n }\n case \"pattern:zod\": {\n addPattern(res, zodPatterns.base64, check.message, refs);\n break;\n }\n }\n break;\n }\n case \"nanoid\": {\n addPattern(res, zodPatterns.nanoid, check.message, refs);\n }\n case \"toLowerCase\":\n case \"toUpperCase\":\n case \"trim\":\n break;\n default:\n ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\n }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\n };\n // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n const source = flags.i ? regex.source.toLowerCase() : regex.source;\n let pattern = \"\";\n let isEscaped = false;\n let inCharGroup = false;\n let inCharRange = false;\n for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\n }\n if (flags.i) {\n if (inCharGroup) {\n if (source[i].match(/[a-z]/)) {\n if (inCharRange) {\n pattern += source[i];\n pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n inCharRange = false;\n }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\n}\n",null,null,null,null,null,null,"// src/server.ts\nimport { createServer as createServerHTTP } from \"http\";\n\n// src/listener.ts\nimport { Http2ServerRequest as Http2ServerRequest2 } from \"http2\";\n\n// src/request.ts\nimport { Http2ServerRequest } from \"http2\";\nimport { Readable } from \"stream\";\nvar RequestError = class extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"RequestError\";\n }\n};\nvar toRequestError = (e) => {\n if (e instanceof RequestError) {\n return e;\n }\n return new RequestError(e.message, { cause: e });\n};\nvar GlobalRequest = global.Request;\nvar Request = class extends GlobalRequest {\n constructor(input, options) {\n if (typeof input === \"object\" && getRequestCache in input) {\n input = input[getRequestCache]();\n }\n if (typeof options?.body?.getReader !== \"undefined\") {\n ;\n options.duplex ??= \"half\";\n }\n super(input, options);\n }\n};\nvar newHeadersFromIncoming = (incoming) => {\n const headerRecord = [];\n const rawHeaders = incoming.rawHeaders;\n for (let i = 0; i < rawHeaders.length; i += 2) {\n const { [i]: key, [i + 1]: value } = rawHeaders;\n if (key.charCodeAt(0) !== /*:*/\n 58) {\n headerRecord.push([key, value]);\n }\n }\n return new Headers(headerRecord);\n};\nvar wrapBodyStream = Symbol(\"wrapBodyStream\");\nvar newRequestFromIncoming = (method, url, headers, incoming, abortController) => {\n const init = {\n method,\n headers,\n signal: abortController.signal\n };\n if (method === \"TRACE\") {\n init.method = \"GET\";\n const req = new Request(url, init);\n Object.defineProperty(req, \"method\", {\n get() {\n return \"TRACE\";\n }\n });\n return req;\n }\n if (!(method === \"GET\" || method === \"HEAD\")) {\n if (\"rawBody\" in incoming && incoming.rawBody instanceof Buffer) {\n init.body = new ReadableStream({\n start(controller) {\n controller.enqueue(incoming.rawBody);\n controller.close();\n }\n });\n } else if (incoming[wrapBodyStream]) {\n let reader;\n init.body = new ReadableStream({\n async pull(controller) {\n try {\n reader ||= Readable.toWeb(incoming).getReader();\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n }\n });\n } else {\n init.body = Readable.toWeb(incoming);\n }\n }\n return new Request(url, init);\n};\nvar getRequestCache = Symbol(\"getRequestCache\");\nvar requestCache = Symbol(\"requestCache\");\nvar incomingKey = Symbol(\"incomingKey\");\nvar urlKey = Symbol(\"urlKey\");\nvar headersKey = Symbol(\"headersKey\");\nvar abortControllerKey = Symbol(\"abortControllerKey\");\nvar getAbortController = Symbol(\"getAbortController\");\nvar requestPrototype = {\n get method() {\n return this[incomingKey].method || \"GET\";\n },\n get url() {\n return this[urlKey];\n },\n get headers() {\n return this[headersKey] ||= newHeadersFromIncoming(this[incomingKey]);\n },\n [getAbortController]() {\n this[getRequestCache]();\n return this[abortControllerKey];\n },\n [getRequestCache]() {\n this[abortControllerKey] ||= new AbortController();\n return this[requestCache] ||= newRequestFromIncoming(\n this.method,\n this[urlKey],\n this.headers,\n this[incomingKey],\n this[abortControllerKey]\n );\n }\n};\n[\n \"body\",\n \"bodyUsed\",\n \"cache\",\n \"credentials\",\n \"destination\",\n \"integrity\",\n \"mode\",\n \"redirect\",\n \"referrer\",\n \"referrerPolicy\",\n \"signal\",\n \"keepalive\"\n].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n get() {\n return this[getRequestCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(requestPrototype, k, {\n value: function() {\n return this[getRequestCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(requestPrototype, Request.prototype);\nvar newRequest = (incoming, defaultHostname) => {\n const req = Object.create(requestPrototype);\n req[incomingKey] = incoming;\n const incomingUrl = incoming.url || \"\";\n if (incomingUrl[0] !== \"/\" && // short-circuit for performance. most requests are relative URL.\n (incomingUrl.startsWith(\"http://\") || incomingUrl.startsWith(\"https://\"))) {\n if (incoming instanceof Http2ServerRequest) {\n throw new RequestError(\"Absolute URL for :path is not allowed in HTTP/2\");\n }\n try {\n const url2 = new URL(incomingUrl);\n req[urlKey] = url2.href;\n } catch (e) {\n throw new RequestError(\"Invalid absolute URL\", { cause: e });\n }\n return req;\n }\n const host = (incoming instanceof Http2ServerRequest ? incoming.authority : incoming.headers.host) || defaultHostname;\n if (!host) {\n throw new RequestError(\"Missing host header\");\n }\n let scheme;\n if (incoming instanceof Http2ServerRequest) {\n scheme = incoming.scheme;\n if (!(scheme === \"http\" || scheme === \"https\")) {\n throw new RequestError(\"Unsupported scheme\");\n }\n } else {\n scheme = incoming.socket && incoming.socket.encrypted ? \"https\" : \"http\";\n }\n const url = new URL(`${scheme}://${host}${incomingUrl}`);\n if (url.hostname.length !== host.length && url.hostname !== host.replace(/:\\d+$/, \"\")) {\n throw new RequestError(\"Invalid host header\");\n }\n req[urlKey] = url.href;\n return req;\n};\n\n// src/response.ts\nvar responseCache = Symbol(\"responseCache\");\nvar getResponseCache = Symbol(\"getResponseCache\");\nvar cacheKey = Symbol(\"cache\");\nvar GlobalResponse = global.Response;\nvar Response2 = class _Response {\n #body;\n #init;\n [getResponseCache]() {\n delete this[cacheKey];\n return this[responseCache] ||= new GlobalResponse(this.#body, this.#init);\n }\n constructor(body, init) {\n let headers;\n this.#body = body;\n if (init instanceof _Response) {\n const cachedGlobalResponse = init[responseCache];\n if (cachedGlobalResponse) {\n this.#init = cachedGlobalResponse;\n this[getResponseCache]();\n return;\n } else {\n this.#init = init.#init;\n headers = new Headers(init.#init.headers);\n }\n } else {\n this.#init = init;\n }\n if (typeof body === \"string\" || typeof body?.getReader !== \"undefined\" || body instanceof Blob || body instanceof Uint8Array) {\n headers ||= init?.headers || { \"content-type\": \"text/plain; charset=UTF-8\" };\n this[cacheKey] = [init?.status || 200, body, headers];\n }\n }\n get headers() {\n const cache = this[cacheKey];\n if (cache) {\n if (!(cache[2] instanceof Headers)) {\n cache[2] = new Headers(cache[2]);\n }\n return cache[2];\n }\n return this[getResponseCache]().headers;\n }\n get status() {\n return this[cacheKey]?.[0] ?? this[getResponseCache]().status;\n }\n get ok() {\n const status = this.status;\n return status >= 200 && status < 300;\n }\n};\n[\"body\", \"bodyUsed\", \"redirected\", \"statusText\", \"trailers\", \"type\", \"url\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n get() {\n return this[getResponseCache]()[k];\n }\n });\n});\n[\"arrayBuffer\", \"blob\", \"clone\", \"formData\", \"json\", \"text\"].forEach((k) => {\n Object.defineProperty(Response2.prototype, k, {\n value: function() {\n return this[getResponseCache]()[k]();\n }\n });\n});\nObject.setPrototypeOf(Response2, GlobalResponse);\nObject.setPrototypeOf(Response2.prototype, GlobalResponse.prototype);\n\n// src/utils.ts\nasync function readWithoutBlocking(readPromise) {\n return Promise.race([readPromise, Promise.resolve().then(() => Promise.resolve(void 0))]);\n}\nfunction writeFromReadableStreamDefaultReader(reader, writable, currentReadPromise) {\n const cancel = (error) => {\n reader.cancel(error).catch(() => {\n });\n };\n writable.on(\"close\", cancel);\n writable.on(\"error\", cancel);\n (currentReadPromise ?? reader.read()).then(flow, handleStreamError);\n return reader.closed.finally(() => {\n writable.off(\"close\", cancel);\n writable.off(\"error\", cancel);\n });\n function handleStreamError(error) {\n if (error) {\n writable.destroy(error);\n }\n }\n function onDrain() {\n reader.read().then(flow, handleStreamError);\n }\n function flow({ done, value }) {\n try {\n if (done) {\n writable.end();\n } else if (!writable.write(value)) {\n writable.once(\"drain\", onDrain);\n } else {\n return reader.read().then(flow, handleStreamError);\n }\n } catch (e) {\n handleStreamError(e);\n }\n }\n}\nfunction writeFromReadableStream(stream, writable) {\n if (stream.locked) {\n throw new TypeError(\"ReadableStream is locked.\");\n } else if (writable.destroyed) {\n return;\n }\n return writeFromReadableStreamDefaultReader(stream.getReader(), writable);\n}\nvar buildOutgoingHttpHeaders = (headers) => {\n const res = {};\n if (!(headers instanceof Headers)) {\n headers = new Headers(headers ?? void 0);\n }\n const cookies = [];\n for (const [k, v] of headers) {\n if (k === \"set-cookie\") {\n cookies.push(v);\n } else {\n res[k] = v;\n }\n }\n if (cookies.length > 0) {\n res[\"set-cookie\"] = cookies;\n }\n res[\"content-type\"] ??= \"text/plain; charset=UTF-8\";\n return res;\n};\n\n// src/utils/response/constants.ts\nvar X_ALREADY_SENT = \"x-hono-already-sent\";\n\n// src/globals.ts\nimport crypto from \"crypto\";\nif (typeof global.crypto === \"undefined\") {\n global.crypto = crypto;\n}\n\n// src/listener.ts\nvar outgoingEnded = Symbol(\"outgoingEnded\");\nvar handleRequestError = () => new Response(null, {\n status: 400\n});\nvar handleFetchError = (e) => new Response(null, {\n status: e instanceof Error && (e.name === \"TimeoutError\" || e.constructor.name === \"TimeoutError\") ? 504 : 500\n});\nvar handleResponseError = (e, outgoing) => {\n const err = e instanceof Error ? e : new Error(\"unknown error\", { cause: e });\n if (err.code === \"ERR_STREAM_PREMATURE_CLOSE\") {\n console.info(\"The user aborted a request.\");\n } else {\n console.error(e);\n if (!outgoing.headersSent) {\n outgoing.writeHead(500, { \"Content-Type\": \"text/plain\" });\n }\n outgoing.end(`Error: ${err.message}`);\n outgoing.destroy(err);\n }\n};\nvar flushHeaders = (outgoing) => {\n if (\"flushHeaders\" in outgoing && outgoing.writable) {\n outgoing.flushHeaders();\n }\n};\nvar responseViaCache = async (res, outgoing) => {\n let [status, body, header] = res[cacheKey];\n if (header instanceof Headers) {\n header = buildOutgoingHttpHeaders(header);\n }\n if (typeof body === \"string\") {\n header[\"Content-Length\"] = Buffer.byteLength(body);\n } else if (body instanceof Uint8Array) {\n header[\"Content-Length\"] = body.byteLength;\n } else if (body instanceof Blob) {\n header[\"Content-Length\"] = body.size;\n }\n outgoing.writeHead(status, header);\n if (typeof body === \"string\" || body instanceof Uint8Array) {\n outgoing.end(body);\n } else if (body instanceof Blob) {\n outgoing.end(new Uint8Array(await body.arrayBuffer()));\n } else {\n flushHeaders(outgoing);\n await writeFromReadableStream(body, outgoing)?.catch(\n (e) => handleResponseError(e, outgoing)\n );\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar isPromise = (res) => typeof res.then === \"function\";\nvar responseViaResponseObject = async (res, outgoing, options = {}) => {\n if (isPromise(res)) {\n if (options.errorHandler) {\n try {\n res = await res;\n } catch (err) {\n const errRes = await options.errorHandler(err);\n if (!errRes) {\n return;\n }\n res = errRes;\n }\n } else {\n res = await res.catch(handleFetchError);\n }\n }\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);\n if (res.body) {\n const reader = res.body.getReader();\n const values = [];\n let done = false;\n let currentReadPromise = void 0;\n if (resHeaderRecord[\"transfer-encoding\"] !== \"chunked\") {\n let maxReadCount = 2;\n for (let i = 0; i < maxReadCount; i++) {\n currentReadPromise ||= reader.read();\n const chunk = await readWithoutBlocking(currentReadPromise).catch((e) => {\n console.error(e);\n done = true;\n });\n if (!chunk) {\n if (i === 1) {\n await new Promise((resolve) => setTimeout(resolve));\n maxReadCount = 3;\n continue;\n }\n break;\n }\n currentReadPromise = void 0;\n if (chunk.value) {\n values.push(chunk.value);\n }\n if (chunk.done) {\n done = true;\n break;\n }\n }\n if (done && !(\"content-length\" in resHeaderRecord)) {\n resHeaderRecord[\"content-length\"] = values.reduce((acc, value) => acc + value.length, 0);\n }\n }\n outgoing.writeHead(res.status, resHeaderRecord);\n values.forEach((value) => {\n ;\n outgoing.write(value);\n });\n if (done) {\n outgoing.end();\n } else {\n if (values.length === 0) {\n flushHeaders(outgoing);\n }\n await writeFromReadableStreamDefaultReader(reader, outgoing, currentReadPromise);\n }\n } else if (resHeaderRecord[X_ALREADY_SENT]) {\n } else {\n outgoing.writeHead(res.status, resHeaderRecord);\n outgoing.end();\n }\n ;\n outgoing[outgoingEnded]?.();\n};\nvar getRequestListener = (fetchCallback, options = {}) => {\n const autoCleanupIncoming = options.autoCleanupIncoming ?? true;\n if (options.overrideGlobalObjects !== false && global.Request !== Request) {\n Object.defineProperty(global, \"Request\", {\n value: Request\n });\n Object.defineProperty(global, \"Response\", {\n value: Response2\n });\n }\n return async (incoming, outgoing) => {\n let res, req;\n try {\n req = newRequest(incoming, options.hostname);\n let incomingEnded = !autoCleanupIncoming || incoming.method === \"GET\" || incoming.method === \"HEAD\";\n if (!incomingEnded) {\n ;\n incoming[wrapBodyStream] = true;\n incoming.on(\"end\", () => {\n incomingEnded = true;\n });\n if (incoming instanceof Http2ServerRequest2) {\n ;\n outgoing[outgoingEnded] = () => {\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n outgoing.destroy();\n });\n }\n });\n }\n };\n }\n }\n outgoing.on(\"close\", () => {\n const abortController = req[abortControllerKey];\n if (abortController) {\n if (incoming.errored) {\n req[abortControllerKey].abort(incoming.errored.toString());\n } else if (!outgoing.writableFinished) {\n req[abortControllerKey].abort(\"Client connection prematurely closed.\");\n }\n }\n if (!incomingEnded) {\n setTimeout(() => {\n if (!incomingEnded) {\n setTimeout(() => {\n incoming.destroy();\n });\n }\n });\n }\n });\n res = fetchCallback(req, { incoming, outgoing });\n if (cacheKey in res) {\n return responseViaCache(res, outgoing);\n }\n } catch (e) {\n if (!res) {\n if (options.errorHandler) {\n res = await options.errorHandler(req ? e : toRequestError(e));\n if (!res) {\n return;\n }\n } else if (!req) {\n res = handleRequestError();\n } else {\n res = handleFetchError(e);\n }\n } else {\n return handleResponseError(e, outgoing);\n }\n }\n try {\n return await responseViaResponseObject(res, outgoing, options);\n } catch (e) {\n return handleResponseError(e, outgoing);\n }\n };\n};\n\n// src/server.ts\nvar createAdaptorServer = (options) => {\n const fetchCallback = options.fetch;\n const requestListener = getRequestListener(fetchCallback, {\n hostname: options.hostname,\n overrideGlobalObjects: options.overrideGlobalObjects,\n autoCleanupIncoming: options.autoCleanupIncoming\n });\n const createServer = options.createServer || createServerHTTP;\n const server = createServer(options.serverOptions || {}, requestListener);\n return server;\n};\nvar serve = (options, listeningListener) => {\n const server = createAdaptorServer(options);\n server.listen(options?.port ?? 3e3, options.hostname, () => {\n const serverInfo = server.address();\n listeningListener && listeningListener(serverInfo);\n });\n return server;\n};\nexport {\n RequestError,\n createAdaptorServer,\n getRequestListener,\n serve\n};\n",null,null,"import { exec } from \"node:child_process\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\n\nconst execAsync = promisify(exec);\nconst MAX_TRAVERSAL_DEPTH = 32;\nconst WINDOWS_PROCESS_TABLE_COMMAND =\n \"Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,CommandLine | ConvertTo-Json -Compress\";\n\ninterface ProcessEntry {\n pid: number;\n parentPid: number;\n name: string;\n command: string;\n}\n\nasync function getWindowsProcessTable(): Promise<Map<number, ProcessEntry>> {\n const processMap = new Map<number, ProcessEntry>();\n\n try {\n const { stdout } = await execAsync(\n `powershell \"${WINDOWS_PROCESS_TABLE_COMMAND}\"`,\n {\n maxBuffer: 10 * 1024 * 1024,\n },\n );\n\n if (!stdout.trim()) {\n return processMap;\n }\n\n let processes: unknown = JSON.parse(stdout);\n if (!Array.isArray(processes)) {\n processes = [processes];\n }\n\n for (const processInfo of processes as unknown[]) {\n if (\n !processInfo ||\n typeof processInfo !== \"object\" ||\n typeof (processInfo as { ProcessId?: unknown }).ProcessId !== \"number\"\n ) {\n continue;\n }\n\n const processId = (processInfo as { ProcessId: number }).ProcessId;\n processMap.set(processId, {\n pid: processId,\n parentPid:\n typeof (processInfo as { ParentProcessId?: unknown })\n .ParentProcessId === \"number\"\n ? ((processInfo as { ParentProcessId: number }).ParentProcessId ??\n 0)\n : 0,\n name:\n typeof (processInfo as { Name?: unknown }).Name === \"string\"\n ? (processInfo as { Name: string }).Name\n : \"\",\n command:\n typeof (processInfo as { CommandLine?: unknown }).CommandLine ===\n \"string\"\n ? (processInfo as { CommandLine: string }).CommandLine\n : \"\",\n });\n }\n } catch {\n return processMap;\n }\n\n return processMap;\n}\n\nasync function getUnixProcessInfo(pid: number): Promise<ProcessEntry | null> {\n try {\n const { stdout } = await execAsync(`ps -o ppid=,command= -p ${pid}`);\n const trimmed = stdout.trim();\n if (!trimmed) {\n return null;\n }\n\n const [parentPidText, ...commandParts] = trimmed.split(/\\s+/);\n const parentPid = Number.parseInt(parentPidText ?? \"\", 10);\n const command = commandParts.join(\" \").trim();\n\n return {\n pid,\n parentPid: Number.isFinite(parentPid) ? parentPid : 0,\n name: path.basename(command.split(\" \")[0] ?? \"\"),\n command,\n };\n } catch {\n return null;\n }\n}\n\nasync function detectWindowsIdePid(): Promise<number> {\n const processMap = await getWindowsProcessTable();\n const currentProcess = processMap.get(process.pid);\n\n if (!currentProcess) {\n return process.pid;\n }\n\n const ancestors: ProcessEntry[] = [];\n let current: ProcessEntry | undefined = currentProcess;\n\n for (let i = 0; i < MAX_TRAVERSAL_DEPTH && current; i += 1) {\n ancestors.push(current);\n\n if (current.parentPid === 0 || !processMap.has(current.parentPid)) {\n break;\n }\n\n current = processMap.get(current.parentPid);\n }\n\n if (ancestors.length >= 3) {\n return ancestors[ancestors.length - 3]?.pid ?? process.pid;\n }\n\n return ancestors[ancestors.length - 1]?.pid ?? process.pid;\n}\n\nasync function detectUnixIdePid(): Promise<number> {\n const shells = new Set([\n \"zsh\",\n \"bash\",\n \"sh\",\n \"tcsh\",\n \"csh\",\n \"ksh\",\n \"fish\",\n \"dash\",\n ]);\n let currentPid = process.pid;\n\n for (let i = 0; i < MAX_TRAVERSAL_DEPTH; i += 1) {\n const processInfo = await getUnixProcessInfo(currentPid);\n if (!processInfo) {\n break;\n }\n\n if (shells.has(processInfo.name)) {\n let idePid = processInfo.parentPid;\n const grandParentInfo =\n processInfo.parentPid > 1\n ? await getUnixProcessInfo(processInfo.parentPid)\n : null;\n\n if (grandParentInfo && grandParentInfo.parentPid > 1) {\n idePid = grandParentInfo.parentPid;\n }\n\n return idePid > 0 ? idePid : currentPid;\n }\n\n if (processInfo.parentPid <= 1) {\n break;\n }\n\n currentPid = processInfo.parentPid;\n }\n\n return currentPid;\n}\n\nexport async function detectGeminiIdeProcessPid(): Promise<number> {\n const explicitPid = Number.parseInt(process.env.GEMINI_CLI_IDE_PID ?? \"\", 10);\n if (Number.isFinite(explicitPid) && explicitPid > 0) {\n return explicitPid;\n }\n\n if (os.platform() === \"win32\") {\n return detectWindowsIdePid();\n }\n\n return detectUnixIdePid();\n}\n","/**\n * State/Control API — programmatic access to tap state.\n * GUI and autopilot consume these functions instead of shelling out to CLI.\n *\n * M105 P1: getDashboardSnapshot, streamEvents (read-only)\n * M105 P2: startAgents, stopAgents (write — wraps tap up/down)\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { collectDashboardSnapshot } from \"../engine/dashboard.js\";\nimport type { DashboardSnapshot } from \"../engine/dashboard.js\";\nimport { findRepoRoot } from \"../utils.js\";\nimport { resolveConfig } from \"../config/index.js\";\nimport { loadState } from \"../state.js\";\nimport type { CommandResult } from \"../types.js\";\n\nexport interface StateApiOptions {\n repoRoot?: string;\n commsDir?: string;\n}\n\n/**\n * Get a point-in-time snapshot of all tap state:\n * agents, bridges, PRs, and warnings.\n *\n * This is the read-only entry point for GUI dashboards and autopilot.\n */\nexport function getDashboardSnapshot(\n options?: StateApiOptions,\n): DashboardSnapshot {\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n return collectDashboardSnapshot(repoRoot, options?.commsDir);\n}\n\nexport interface EventStreamOptions extends StateApiOptions {\n /** Poll interval in milliseconds (default: 2000) */\n intervalMs?: number;\n /** AbortSignal to stop the stream */\n signal?: AbortSignal;\n}\n\n/**\n * Async generator that yields dashboard snapshots at regular intervals.\n * Useful for SSE or WebSocket push to GUI clients.\n *\n * Stops when the AbortSignal fires or the consumer breaks out.\n */\nexport async function* streamEvents(\n options?: EventStreamOptions,\n): AsyncGenerator<DashboardSnapshot> {\n const intervalMs = options?.intervalMs ?? 2000;\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n\n while (!options?.signal?.aborted) {\n yield collectDashboardSnapshot(repoRoot, options?.commsDir);\n await new Promise<void>((resolve) => {\n const onAbort = () => {\n clearTimeout(timer);\n resolve();\n };\n const timer = setTimeout(() => {\n options?.signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, intervalMs);\n options?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n }\n}\n\n// ── Write API ───────────────────────────────────────────────────\n\nexport interface AgentControlOptions {\n /** Extra CLI args forwarded to `tap up` (e.g. `[\"--no-auth\"]`) */\n args?: string[];\n}\n\nexport interface AgentControlResult {\n ok: boolean;\n message: string;\n snapshot: DashboardSnapshot;\n commandResult: CommandResult;\n}\n\n/**\n * Start all registered bridge daemons.\n * Equivalent to `tap up [...args]`.\n *\n * Always operates on the cwd-based repo (same as CLI commands).\n * Use read-only APIs (getDashboardSnapshot) for cross-repo queries.\n */\nexport async function startAgents(\n options?: AgentControlOptions,\n): Promise<AgentControlResult> {\n const { upCommand } = await import(\"../commands/up.js\");\n const result = await upCommand(options?.args ?? []);\n const repoRoot = findRepoRoot();\n const snapshot = collectDashboardSnapshot(repoRoot);\n return {\n ok: result.ok,\n message: result.message,\n snapshot,\n commandResult: result,\n };\n}\n\n/**\n * Stop all running bridge daemons.\n * Equivalent to `tap down`.\n *\n * Always operates on the cwd-based repo (same as CLI commands).\n */\nexport async function stopAgents(): Promise<AgentControlResult> {\n const { downCommand } = await import(\"../commands/down.js\");\n const result = await downCommand([]);\n const repoRoot = findRepoRoot();\n const snapshot = collectDashboardSnapshot(repoRoot);\n return {\n ok: result.ok,\n message: result.message,\n snapshot,\n commandResult: result,\n };\n}\n\n// ── Health ──────────────────────────────────────────────────────\n\nexport interface HealthReport {\n ok: boolean;\n timestamp: string;\n bridges: DashboardSnapshot[\"bridges\"];\n agents: DashboardSnapshot[\"agents\"];\n warnings: DashboardSnapshot[\"warnings\"];\n headless: Record<string, unknown>[];\n}\n\n/**\n * Health check that combines dashboard snapshot with headless state.\n * Consumed by monitoring tools (Uptime Kuma, cron, autopilot).\n */\nexport function getHealthReport(options?: StateApiOptions): HealthReport {\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n const snapshot = collectDashboardSnapshot(repoRoot, options?.commsDir);\n\n // Collect headless state from .tmp/ dirs — active instances only\n // (same filter as doctor checkBridgeTurnHealth to avoid stale session debris)\n const headlessStates: Record<string, unknown>[] = [];\n try {\n const state = loadState(repoRoot);\n const activeMatchers = new Set<string>();\n if (state) {\n for (const [id, inst] of Object.entries(state.instances)) {\n if (inst?.installed && inst.bridgeMode === \"app-server\") {\n activeMatchers.add(id);\n if (inst.agentName) activeMatchers.add(inst.agentName);\n }\n }\n }\n\n const tmpDir = path.join(repoRoot, \".tmp\");\n if (fs.existsSync(tmpDir)) {\n for (const dir of fs.readdirSync(tmpDir)) {\n if (!dir.startsWith(\"codex-app-server-bridge\")) continue;\n const suffix = dir.replace(\"codex-app-server-bridge-\", \"\");\n // Filter to active instances (skip past session debris)\n if (activeMatchers.size > 0) {\n let matched = false;\n for (const matcher of activeMatchers) {\n if (suffix === matcher || suffix.startsWith(matcher)) {\n matched = true;\n break;\n }\n }\n if (!matched) continue;\n }\n const hsPath = path.join(tmpDir, dir, \"headless-state.json\");\n if (!fs.existsSync(hsPath)) continue;\n try {\n const hs = JSON.parse(fs.readFileSync(hsPath, \"utf-8\"));\n headlessStates.push({ instanceDir: dir, ...hs });\n } catch {\n // skip corrupted\n }\n }\n }\n } catch {\n // .tmp doesn't exist or state load failed\n }\n\n const hasFailures = snapshot.warnings.some((w) => w.level === \"error\");\n const hasBridgeDown = snapshot.bridges.some(\n (b) => b.status === \"stale\" || b.status === \"stopped\",\n );\n\n return {\n ok: !hasFailures && !hasBridgeDown,\n timestamp: snapshot.generatedAt,\n bridges: snapshot.bridges,\n agents: snapshot.agents,\n warnings: snapshot.warnings,\n headless: headlessStates,\n };\n}\n\n// ── Config ──────────────────────────────────────────────────────\n\n/**\n * Resolve tap configuration for API consumers.\n * Returns paths and settings without requiring CLI args.\n */\nexport function getConfig(options?: StateApiOptions) {\n const repoRoot = options?.repoRoot ?? findRepoRoot();\n const { config } = resolveConfig({}, repoRoot);\n return {\n repoRoot,\n commsDir: options?.commsDir ?? config.commsDir,\n stateDir: config.stateDir,\n appServerUrl: config.appServerUrl,\n };\n}\n","/**\n * Minimal HTTP transport for tap State API.\n * localhost-only, no external dependencies (uses node:http).\n *\n * Endpoints:\n * GET /api/snapshot — DashboardSnapshot JSON\n * GET /api/events — SSE stream of snapshots\n * GET /api/config — Resolved tap configuration\n * GET /health — Health check\n */\n\nimport {\n createServer,\n type IncomingMessage,\n type ServerResponse,\n} from \"node:http\";\nimport { randomBytes, timingSafeEqual } from \"node:crypto\";\nimport {\n getDashboardSnapshot,\n streamEvents,\n getConfig,\n getHealthReport,\n startAgents,\n stopAgents,\n} from \"./state.js\";\nimport type { StateApiOptions } from \"./state.js\";\n\nexport interface HttpServerOptions extends StateApiOptions {\n /** Port to listen on (default: 4580) */\n port?: number;\n /** Pre-set API token (default: auto-generated) */\n token?: string;\n}\n\n// M176: CORS restricted to loopback origins only.\n// Dynamic origin reflection for any localhost port (GUI runs on 3847, dev on 3000, etc.)\nfunction getCorsHeaders(req: IncomingMessage): Record<string, string> {\n const origin = req.headers.origin ?? \"\";\n const isLoopback =\n /^https?:\\/\\/(localhost|127\\.0\\.0\\.1|\\[::1\\])(:\\d+)?$/.test(origin);\n return {\n \"Access-Control-Allow-Origin\": isLoopback ? origin : \"http://127.0.0.1\",\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type, Authorization\",\n Vary: \"Origin\",\n };\n}\n\n/**\n * M176: Verify that the request origin is from localhost.\n * Blocks cross-origin POST requests from malicious sites.\n */\nfunction isLoopbackOrigin(req: IncomingMessage): boolean {\n const origin = req.headers.origin;\n // No Origin header = same-origin or non-browser (CLI, curl) — allow\n if (!origin) return true;\n return /^https?:\\/\\/(localhost|127\\.0\\.0\\.1|\\[::1\\])(:\\d+)?$/.test(origin);\n}\n\nfunction tokensMatch(\n presentedToken: string | null,\n expectedToken: string,\n): boolean {\n if (!presentedToken) {\n return false;\n }\n const presented = Buffer.from(presentedToken, \"utf8\");\n const expected = Buffer.from(expectedToken, \"utf8\");\n if (presented.length !== expected.length) {\n return false;\n }\n return timingSafeEqual(presented, expected);\n}\n\nfunction verifyBearerToken(\n req: IncomingMessage,\n expectedToken: string,\n): boolean {\n const header = req.headers.authorization;\n if (!header?.startsWith(\"Bearer \")) {\n return false;\n }\n return tokensMatch(header.slice(7), expectedToken);\n}\n\nfunction verifySseToken(\n req: IncomingMessage,\n expectedToken: string,\n serverUrl: string,\n): boolean {\n // EventSource can't set custom headers — accept ?token= query param for SSE only\n if (verifyBearerToken(req, expectedToken)) {\n return true;\n }\n const url = new URL(req.url ?? \"/\", serverUrl);\n const queryToken = url.searchParams.get(\"token\");\n return tokensMatch(queryToken, expectedToken);\n}\n\nfunction jsonResponse(\n req: IncomingMessage,\n res: ServerResponse,\n data: unknown,\n status = 200,\n): void {\n res.writeHead(status, {\n \"Content-Type\": \"application/json\",\n ...getCorsHeaders(req),\n });\n res.end(JSON.stringify(data));\n}\n\nfunction handleSnapshot(\n req: IncomingMessage,\n res: ServerResponse,\n apiOptions: StateApiOptions,\n): void {\n const snapshot = getDashboardSnapshot(apiOptions);\n jsonResponse(req, res, snapshot);\n}\n\nfunction handleConfig(\n req: IncomingMessage,\n res: ServerResponse,\n apiOptions: StateApiOptions,\n): void {\n const config = getConfig(apiOptions);\n jsonResponse(req, res, config);\n}\n\nasync function handleEvents(\n req: IncomingMessage,\n res: ServerResponse,\n apiOptions: StateApiOptions,\n): Promise<void> {\n res.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n ...getCorsHeaders(req),\n });\n\n const controller = new AbortController();\n req.on(\"close\", () => controller.abort());\n\n for await (const snapshot of streamEvents({\n ...apiOptions,\n signal: controller.signal,\n })) {\n if (controller.signal.aborted) break;\n res.write(`data: ${JSON.stringify(snapshot)}\\n\\n`);\n }\n\n res.end();\n}\n\nfunction handleHealth(\n req: IncomingMessage,\n res: ServerResponse,\n apiOptions: StateApiOptions,\n): void {\n const report = getHealthReport(apiOptions);\n jsonResponse(req, res, report);\n}\n\n/**\n * Start a localhost-only HTTP server for the tap State API.\n * Resolves after the server is listening. Rejects on bind failure (e.g. EADDRINUSE).\n */\nexport async function startHttpServer(options?: HttpServerOptions): Promise<{\n port: number;\n token: string;\n close: () => Promise<void>;\n}> {\n const port = options?.port ?? 4580;\n // Security: always bind to loopback — no auth layer beyond bearer token\n const host = \"127.0.0.1\";\n const token = options?.token ?? randomBytes(24).toString(\"base64url\");\n const apiOptions: StateApiOptions = {\n repoRoot: options?.repoRoot,\n commsDir: options?.commsDir,\n };\n\n const server = createServer(\n async (req: IncomingMessage, res: ServerResponse) => {\n const url = new URL(req.url ?? \"/\", `http://${host}:${port}`);\n const pathname = url.pathname;\n\n if (req.method === \"OPTIONS\") {\n res.writeHead(204, getCorsHeaders(req));\n res.end();\n return;\n }\n\n // M176: Block POST from non-loopback origins (CSRF protection)\n if (req.method === \"POST\" && !isLoopbackOrigin(req)) {\n jsonResponse(\n req,\n res,\n { error: \"Forbidden: non-loopback origin\" },\n 403,\n );\n return;\n }\n\n // Health endpoint is public (no auth required)\n if (req.method === \"GET\" && pathname === \"/health\") {\n handleHealth(req, res, apiOptions);\n return;\n }\n\n // SSE endpoint: accepts Bearer header OR ?token= query param (EventSource can't set headers)\n if (req.method === \"GET\" && pathname === \"/api/events\") {\n const serverUrl = `http://${host}:${port}`;\n if (!verifySseToken(req, token, serverUrl)) {\n jsonResponse(req, res, { error: \"Unauthorized\" }, 401);\n return;\n }\n await handleEvents(req, res, apiOptions);\n return;\n }\n\n // All other endpoints require Bearer token only (no query param fallback)\n if (!verifyBearerToken(req, token)) {\n jsonResponse(req, res, { error: \"Unauthorized\" }, 401);\n return;\n }\n\n try {\n // GET endpoints\n if (req.method === \"GET\") {\n switch (pathname) {\n case \"/api/snapshot\":\n handleSnapshot(req, res, apiOptions);\n return;\n case \"/api/config\":\n handleConfig(req, res, apiOptions);\n return;\n // /health handled above (public, no auth)\n }\n }\n\n // POST endpoints (write API)\n // Require application/json Content-Type to prevent CSRF via browser forms\n // (HTML forms cannot send application/json, forcing preflight on cross-origin)\n if (req.method === \"POST\") {\n const contentType = req.headers[\"content-type\"] ?? \"\";\n if (!contentType.includes(\"application/json\")) {\n jsonResponse(\n req,\n res,\n { error: \"Content-Type must be application/json\" },\n 415,\n );\n return;\n }\n\n switch (pathname) {\n case \"/api/start\":\n jsonResponse(req, res, await startAgents());\n return;\n case \"/api/stop\":\n jsonResponse(req, res, await stopAgents());\n return;\n }\n }\n\n jsonResponse(req, res, { error: \"Not found\" }, 404);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n jsonResponse(req, res, { error: message }, 500);\n }\n },\n );\n\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, host, () => {\n server.removeListener(\"error\", reject);\n resolve();\n });\n });\n\n return {\n port,\n token,\n close: () =>\n new Promise<void>((resolve, reject) => {\n server.close((err) => (err ? reject(err) : resolve()));\n }),\n };\n}\n"],"mappings":"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","names":["config","fs","path","findRepoRoot","config","fs","path","crypto","config","basename","hash","_a","UsedValueState","_a","constants","error","_a","hash","mergeValues","Type","error","_a","DataType","_a","_a","resolve","hex","ipv6","path","esc","path","parse","resolve","_a","Ajv","meta","cacheKey","log","_a","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","error","DiscrError","error","_a","required","Ajv","date","time","error","fs","_a","path","fs","path","removeFileIfExists","resolve","hostname","error","url","DEFAULT_APP_SERVER_URL","removeFileIfExists","fs","fs","fs","os","path","fileURLToPath","version","fs","path","fileURLToPath","fs","os","path","spawnSync","removeFileIfExists","url","fs","spawnSync","url","fs","path","file","url","resolve","fs","path","execSync","version","major","fs","path","randomBytes","error","removeFileIfExists","fs","path","DEFAULT_APP_SERVER_URL","manualCommand","pid","healthy","healthyAt","removeFileIfExists","url","fs","path","fs","path","resolve","fs","path","execSync","config","fs","path","execSync","config","crypto","fs","path","fs","path","fileURLToPath","check","fs","path","setNestedKey","config","check","path","url","ageStr","init_bridge","init_bridge","init_bridge","fs","path","fs","os","path","util","assertIs","assertNever","object","joinValues","array","objectUtil","issue","error","issue","path","map","issue","errorUtil","path","error","errorMap","check","transform","version","jwt","base64","_ZodString","parsedType","ctx","result","issue","issues","elements","processed","preprocess","parsedType","result","ZodFirstPartyTypeKind","initializer","_a","floatSafeRemainder","getParsedType","array","set","object","path","Class","_a","config","base64","base64url","hex","error","issue","version","delimiter","time","timeRegex","_a","inst","floatSafeRemainder","result","version","_a","version","checks","isAborted","checkResult","canary","result","_","url","base64","isValidJWT","r","isObject","allowsEval","results","map","left","right","mergeValues","keyResult","valueResult","output","issue","en_default","meta","Class","Class","_emoji","Class","Class","Class","Class","_undefined","_null","Class","Class","Class","Class","issue","codec","process","_a","meta","id","schema","json","file","process","safeParse","result","def","schemas_exports","ZodAny","ZodArray","ZodBigInt","ZodBoolean","ZodCatch","ZodDate","ZodDefault","ZodDiscriminatedUnion","ZodEnum","ZodFunction","ZodIntersection","ZodLazy","ZodLiteral","ZodMap","ZodNaN","ZodNever","ZodNull","ZodNullable","ZodNumber","ZodObject","ZodOptional","ZodPromise","ZodReadonly","ZodRecord","ZodSet","ZodString","ZodSymbol","ZodTuple","ZodType","ZodUndefined","ZodUnion","ZodUnknown","ZodVoid","base64","base64url","bigint","boolean","cidrv4","cidrv6","cuid","cuid2","date","describe","e164","email","emoji","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","object","string","ulid","_undefined","uuid","_void","xid","checks_exports","iso_exports","date","datetime","duration","time","datetime","date","time","duration","initializer","issue","issues","ZodError","parse","parseAsync","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","ZodType","def","meta","parse","safeParse","parseAsync","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","check","json","ZodString","_emoji","datetime","date","time","duration","string","email","guid","uuid","emoji","nanoid","cuid","cuid2","ulid","xid","ksuid","ipv4","mac","ipv6","cidrv4","cidrv6","base64","base64url","e164","hostname","hex","ZodNumber","number","ZodBoolean","boolean","ZodBigInt","bigint","ZodSymbol","ZodUndefined","_undefined","ZodNull","ZodType","json","_null","ZodAny","ZodType","json","ZodUnknown","ZodNever","ZodVoid","_void","ZodDate","ZodType","json","date","ZodArray","ZodObject","ZodOptional","object","ZodUnion","ZodDiscriminatedUnion","ZodIntersection","ZodTuple","ZodRecord","ZodMap","ZodSet","ZodEnum","ZodEnum","ZodLiteral","ZodType","json","issue","output","ZodOptional","ZodNullable","nullish","ZodDefault","ZodCatch","ZodNaN","ZodType","json","ZodReadonly","ZodLazy","ZodPromise","ZodFunction","ZodType","json","describe","meta","ZodBoolean","ZodString","string","number","boolean","_null","ZodFirstPartyTypeKind","schemas_exports","checks_exports","iso_exports","en_default","string","number","_null","object","ErrorCode","object","number","string","string","object","boolean","object","number","string","_null","iso_exports","boolean","object","string","string","number","boolean","object","safeParse","error","task","resolve","safeParse","jsonrpcNotification","isPlainObject","Ajv","_addFormats","safeParse","error","crypto","url","error","url2","resolve","error","success","resolve","path","error","resolve","fs","path","resolve","upCommand","downCommand","config","createServer","randomBytes","url","config","randomBytes","createServer","resolve"]}
|