expect-sdk 0.0.24 → 0.0.25
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/.turbo/turbo-build.log +160 -15
- package/.turbo/turbo-check.log +3 -3
- package/.turbo/turbo-format.log +5 -0
- package/.turbo/turbo-lint.log +6 -0
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +7 -0
- package/dist/assets/resolver.darwin-arm64-DG19oi97.node +0 -0
- package/dist/chunk-CBBoxR_p.mjs +26 -0
- package/dist/constants-CiYaLOeC.mjs +21537 -0
- package/dist/constants-CiYaLOeC.mjs.map +1 -0
- package/dist/dist-UC7-qr_C.mjs +48328 -0
- package/dist/dist-UC7-qr_C.mjs.map +1 -0
- package/dist/effect.d.mts +2 -7
- package/dist/effect.d.mts.map +1 -1
- package/dist/effect.mjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -4
- package/dist/index.mjs.map +1 -1
- package/dist/libsql-iuT0m15F.mjs +695 -0
- package/dist/libsql-iuT0m15F.mjs.map +1 -0
- package/dist/oxc-resolver-CciJEGzv.mjs +523 -0
- package/dist/oxc-resolver-CciJEGzv.mjs.map +1 -0
- package/dist/{types-0J0EwTM4.d.mts → types-tiwbDMA0.d.mts} +2 -2
- package/dist/{types-0J0EwTM4.d.mts.map → types-tiwbDMA0.d.mts.map} +1 -1
- package/package.json +23 -12
- package/vite.config.ts +3 -0
- package/dist/constants-DFJAD4-F.mjs +0 -152
- package/dist/constants-DFJAD4-F.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-CiYaLOeC.mjs","names":["slugify","isObject","isPlainObject","pick","initializer","util.jsonStringifyReplacer","core.$ZodAsyncError","util.finalizeIssue","core.config","parse","errors.$ZodRealError","parseAsync","errors.$ZodError","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","duration","_emoji","date","time","datetime","string","number","boolean","util.floatSafeRemainder","util.NUMBER_FORMAT_RANGES","regexes.integer","util.nullish","util.getLengthableOrigin","regexes.lowercase","regexes.uppercase","util.escapeRegex","version","version","util.aborted","core.$ZodAsyncError","safeParse","safeParseAsync","regexes.string","regexes.guid","regexes.uuid","regexes.email","regexes.emoji","regexes.nanoid","regexes.cuid","regexes.cuid2","regexes.ulid","regexes.xid","regexes.ksuid","regexes.datetime","regexes.date","regexes.time","regexes.duration","regexes.ipv4","regexes.ipv6","regexes.cidrv4","regexes.cidrv6","regexes.base64","regexes.base64url","regexes.e164","regexes.number","regexes.boolean","util.prefixIssues","util.optionalKeys","util.cached","util.isObject","util.esc","allowsEval","util.allowsEval","util.finalizeIssue","core.config","util.cleanRegex","util.isPlainObject","util.getEnumValues","util.escapeRegex","core.$ZodEncodeError","util.issue","_a","util.normalizeParams","checks.$ZodCheckLessThan","checks.$ZodCheckGreaterThan","checks.$ZodCheckMultipleOf","checks.$ZodCheckMaxLength","checks.$ZodCheckMinLength","checks.$ZodCheckLengthEquals","checks.$ZodCheckRegex","checks.$ZodCheckLowerCase","checks.$ZodCheckUpperCase","checks.$ZodCheckIncludes","checks.$ZodCheckStartsWith","checks.$ZodCheckEndsWith","checks.$ZodCheckOverwrite","util.slugify","issue","util.issue","checks.$ZodCheck","describe","meta","process","process","core._isoDateTime","core._isoDate","core._isoTime","core._isoDuration","core.formatError","core.flattenError","util.jsonStringifyReplacer","core.$constructor","parse","util.mergeDefs","core.clone","parse.parse","parse.safeParse","parse.parseAsync","parse.safeParseAsync","parse.encode","parse.decode","parse.encodeAsync","parse.decodeAsync","parse.safeEncode","parse.safeDecode","parse.safeEncodeAsync","parse.safeDecodeAsync","checks.overwrite","processors.stringProcessor","checks.regex","checks.includes","checks.startsWith","checks.endsWith","checks.minLength","checks.maxLength","checks.length","checks.lowercase","checks.uppercase","checks.trim","checks.normalize","checks.toLowerCase","checks.toUpperCase","checks.slugify","core._email","core._url","core._jwt","core._emoji","core._guid","core._uuid","core._uuidv4","core._uuidv6","core._uuidv7","core._nanoid","core._cuid","core._cuid2","core._ulid","core._base64","core._base64url","core._xid","core._ksuid","core._ipv4","core._ipv6","core._cidrv4","core._cidrv6","core._e164","iso.datetime","iso.date","iso.time","iso.duration","core._string","processors.numberProcessor","checks.gt","checks.gte","checks.lt","checks.lte","checks.multipleOf","core._number","core._int","processors.booleanProcessor","core._boolean","processors.unknownProcessor","core._unknown","processors.neverProcessor","never","core._never","processors.arrayProcessor","core._array","processors.objectProcessor","util.extend","util.safeExtend","util.merge","util.pick","util.omit","util.partial","util.required","util.normalizeParams","processors.unionProcessor","processors.intersectionProcessor","processors.recordProcessor","processors.enumProcessor","processors.literalProcessor","processors.transformProcessor","core.$ZodEncodeError","issue","util.issue","processors.optionalProcessor","processors.nullableProcessor","processors.defaultProcessor","util.shallowClone","processors.prefaultProcessor","processors.nonoptionalProcessor","processors.catchProcessor","processors.pipeProcessor","processors.readonlyProcessor","processors.customProcessor","core._refine","core._superRefine","core.describe","core.meta","z.object","z.record","z.string","z.unknown","z.boolean","z.array","z.union","z.literal","z.number","z\n .number","z.enum","z.intersection","z\n .union","#sessionId","#connection","#requestHandler","#notificationHandler","#stream","#closedPromise","#abortController","#receive","#processMessage","#sendMessage","#tryCallRequestHandler","#tryCallNotificationHandler","#handleResponse","z.ZodError","#pendingResponses","#nextRequestId","#writeQueue","Str","ndJsonStream","acp.ndJsonStream","acp.ClientSideConnection","posix","sep","join","os","tty","GitError","FOLDER","Buffer2","createLogger","Git","EXPECT_REPLAY_OUTPUT_ENV_NAME","simpleGit","crypto","path","Browser","FileSystem","getPort","Arr","FileSystem","chromium","crypto","MS_PER_SECOND","SAME_SITE_NONE","SAME_SITE_LAX","SAME_SITE_STRICT","ChildProcessSpawner","FileSystem","os","FileSystem","execFileAsync","process","execFileAsync","process","execFileAsync","defaultBrowser","process","windows","Arr","getDefaultBrowser","os","ChildProcessSpawner","FileSystem","Arr","os","FileSystem","FileSystem","os","os","Arr","FileSystem","FileSystem","#t","dirname","PostHogPersistedProperty","ErrorTracking.ReduceableCache","error_tracking","#_","ErrorTracking.ErrorPropertiesBuilder","ErrorTracking.EventCoercer","ErrorTracking.ErrorCoercer","ErrorTracking.ObjectCoercer","ErrorTracking.StringCoercer","ErrorTracking.PrimitiveCoercer","ErrorTracking.createStackParser","ErrorTracking.nodeStackLineParser","Tracing.layerAxiom","path","EXPECT_REPLAY_OUTPUT_ENV_NAME","path","path","ChildProcessSpawner","FileSystem","Arr","path"],"sources":["../../shared/src/models.ts","../../supervisor/src/updates.ts","../../agent/src/types.ts","../../../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/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/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/schemas.js","../../../node_modules/.pnpm/@agentclientprotocol+sdk@0.16.1_zod@4.3.6/node_modules/@agentclientprotocol/sdk/dist/schema/index.js","../../../node_modules/.pnpm/@agentclientprotocol+sdk@0.16.1_zod@4.3.6/node_modules/@agentclientprotocol/sdk/dist/schema/zod.gen.js","../../../node_modules/.pnpm/@agentclientprotocol+sdk@0.16.1_zod@4.3.6/node_modules/@agentclientprotocol/sdk/dist/stream.js","../../../node_modules/.pnpm/@agentclientprotocol+sdk@0.16.1_zod@4.3.6/node_modules/@agentclientprotocol/sdk/dist/acp.js","../../shared/src/utils.ts","../../shared/src/launched-from.ts","../../agent/src/build-session-meta.ts","../../agent/src/acp-client.ts","../../agent/src/agent.ts","../../../node_modules/.pnpm/isexe@4.0.0/node_modules/isexe/dist/commonjs/index.min.js","../../../node_modules/.pnpm/which@6.0.1/node_modules/which/lib/index.js","../../shared/src/is-command-available.ts","../../shared/src/prompts.ts","../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/common.js","../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/browser.js","../../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js","../../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js","../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/node.js","../../../node_modules/.pnpm/debug@4.4.3/node_modules/debug/src/index.js","../../../node_modules/.pnpm/@kwsites+file-exists@1.1.1/node_modules/@kwsites/file-exists/dist/src/index.js","../../../node_modules/.pnpm/@kwsites+file-exists@1.1.1/node_modules/@kwsites/file-exists/dist/index.js","../../../node_modules/.pnpm/@kwsites+promise-deferred@1.1.1/node_modules/@kwsites/promise-deferred/dist/index.js","../../../node_modules/.pnpm/simple-git@3.33.0/node_modules/simple-git/dist/esm/index.js","../../supervisor/src/constants.ts","../../supervisor/src/git/errors.ts","../../supervisor/src/git/git.ts","../../browser/src/mcp/constants.ts","../../../node_modules/.pnpm/get-port@7.1.0/node_modules/get-port/index.js","../../cookies/src/errors.ts","../../cookies/src/types.ts","../../cookies/src/cdp-client.ts","../../cookies/src/sqlite-client.ts","../../cookies/src/browser-config.ts","../../cookies/src/utils/crypto.ts","../../cookies/src/utils/chromium-normalize.ts","../../cookies/src/chromium-sqlite.ts","../../cookies/src/utils/binary-cookies.ts","../../cookies/src/cookies.ts","../../../node_modules/.pnpm/default-browser-id@5.0.1/node_modules/default-browser-id/index.js","../../../node_modules/.pnpm/run-applescript@7.1.0/node_modules/run-applescript/index.js","../../../node_modules/.pnpm/bundle-name@4.1.0/node_modules/bundle-name/index.js","../../../node_modules/.pnpm/default-browser@5.5.0/node_modules/default-browser/windows.js","../../../node_modules/.pnpm/default-browser@5.5.0/node_modules/default-browser/index.js","../../cookies/src/browser-detector.ts","../../cookies/src/chromium.ts","../../../node_modules/.pnpm/ini@6.0.0/node_modules/ini/lib/ini.js","../../cookies/src/firefox.ts","../../cookies/src/safari.ts","../../cookies/src/layers.ts","../../browser/src/constants.ts","../../browser/src/errors.ts","../../browser/src/utils/action-error.ts","../../browser/src/utils/get-indent-level.ts","../../browser/src/utils/compact-tree.ts","../../browser/src/utils/resolve-locator.ts","../../browser/src/utils/create-locator.ts","../../browser/src/utils/evaluate-runtime.ts","../../browser/src/utils/find-cursor-interactive.ts","../../browser/src/utils/parse-aria-line.ts","../../browser/src/utils/resolve-nth-duplicates.ts","../../browser/src/utils/snapshot-stats.ts","../../browser/src/generated/runtime-script.ts","../../browser/src/browser.ts","../../browser/src/recorder.ts","../../browser/src/replay-viewer.ts","../../browser/src/mcp/errors.ts","../../browser/src/mcp/live-view-server.ts","../../browser/src/mcp/mcp-session.ts","../../shared/src/observability/agent-logger.ts","../../../node_modules/.pnpm/node-machine-id@1.1.12/node_modules/node-machine-id/dist/index.js","../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/shared/ohash.D__AXeF1.mjs","../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/crypto/node/index.mjs","../../../node_modules/.pnpm/ohash@2.0.11/node_modules/ohash/dist/index.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/featureFlagUtils.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/vendor/uuidv7.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/bot-detection.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/type-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/number-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/bucketed-rate-limiter.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/promise-queue.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/logger.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/user-agent-utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/utils/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/eventemitter.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/gzip.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/posthog-core-stateless.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/chunk-ids.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/error-properties-builder.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/parsers/node.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/parsers/index.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/coercers/error-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/coercers/string-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/types.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/coercers/utils.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/coercers/object-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/coercers/event-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/coercers/primitive-coercer.mjs","../../../node_modules/.pnpm/@posthog+core@1.24.1/node_modules/@posthog/core/dist/error-tracking/utils.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/error-tracking/autocapture.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/error-tracking/index.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/version.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/types.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/feature-flags/crypto.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/feature-flags/feature-flags.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/storage-memory.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/client.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/context/context.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/extensions/sentry-integration.mjs","../../../node_modules/.pnpm/posthog-node@5.28.5/node_modules/posthog-node/dist/entrypoints/index.node.mjs","../../shared/src/analytics/analytics.ts","../../shared/src/observability/Tracing.ts","../../browser/src/mcp/runtime.ts","../../browser/src/accessibility.ts","../../browser/src/cdp-discovery.ts","../../browser/src/mcp/server.ts","../../supervisor/src/executor.ts","../../supervisor/src/reporter.ts","../../supervisor/src/saved-flow-file.ts","../../supervisor/src/utils/ensure-state-dir.ts","../../supervisor/src/flow-storage.ts","../../supervisor/src/github.ts","../../supervisor/src/test-coverage.ts","../../supervisor/src/watch.ts","../src/errors.ts","../src/build-instruction.ts","../src/layers.ts","../src/result-builder.ts","../src/constants.ts"],"sourcesContent":["import { DateTime, Match, Option, Predicate, Schema } from \"effect\";\n\nexport interface SavedFlowStep {\n id: string;\n title: string;\n instruction: string;\n expectedOutcome: string;\n}\n\nexport interface SavedFlow {\n title: string;\n userInstruction: string;\n steps: SavedFlowStep[];\n}\n\nconst AcpToolCallStatus = Schema.Literals([\n \"pending\",\n \"in_progress\",\n \"completed\",\n \"failed\",\n] as const);\n\nconst AcpToolKind = Schema.Literals([\n \"read\",\n \"edit\",\n \"delete\",\n \"move\",\n \"search\",\n \"execute\",\n \"think\",\n \"fetch\",\n \"switch_mode\",\n \"other\",\n] as const);\n\nconst AcpStopReason = Schema.Literals([\n \"end_turn\",\n \"max_tokens\",\n \"max_turn_requests\",\n \"refusal\",\n \"cancelled\",\n] as const);\n\nconst AcpContentBlock = Schema.Union([\n Schema.Struct({ type: Schema.Literal(\"text\"), text: Schema.String }),\n Schema.Struct({\n type: Schema.Literal(\"image\"),\n data: Schema.String,\n mimeType: Schema.String,\n }),\n Schema.Struct({ type: Schema.Literal(\"resource_link\"), uri: Schema.String }),\n Schema.Struct({ type: Schema.Literal(\"resource\"), uri: Schema.String }),\n]);\n\nconst AcpToolCallContent = Schema.Union([\n Schema.Struct({\n type: Schema.Literal(\"content\"),\n content: AcpContentBlock,\n }),\n Schema.Struct({\n type: Schema.Literal(\"diff\"),\n path: Schema.String,\n oldText: Schema.optional(Schema.NullOr(Schema.String)),\n newText: Schema.optional(Schema.NullOr(Schema.String)),\n }),\n Schema.Struct({\n type: Schema.Literal(\"terminal\"),\n terminalId: Schema.String,\n }),\n]);\n\nconst AcpToolCallLocation = Schema.Struct({\n path: Schema.String,\n lineNumber: Schema.optional(Schema.NullOr(Schema.Number)),\n});\n\nexport class AcpAgentMessageChunk extends Schema.Class<AcpAgentMessageChunk>(\n \"AcpAgentMessageChunk\",\n)({\n sessionUpdate: Schema.Literal(\"agent_message_chunk\"),\n content: AcpContentBlock,\n messageId: Schema.optional(Schema.NullOr(Schema.String)),\n}) {}\n\nexport class AcpAgentThoughtChunk extends Schema.Class<AcpAgentThoughtChunk>(\n \"AcpAgentThoughtChunk\",\n)({\n sessionUpdate: Schema.Literal(\"agent_thought_chunk\"),\n content: AcpContentBlock,\n messageId: Schema.optional(Schema.NullOr(Schema.String)),\n}) {}\n\nexport class AcpUserMessageChunk extends Schema.Class<AcpUserMessageChunk>(\"AcpUserMessageChunk\")({\n sessionUpdate: Schema.Literal(\"user_message_chunk\"),\n content: AcpContentBlock,\n messageId: Schema.optional(Schema.NullOr(Schema.String)),\n}) {}\n\nexport class AcpToolCall extends Schema.Class<AcpToolCall>(\"AcpToolCall\")({\n sessionUpdate: Schema.Literal(\"tool_call\"),\n toolCallId: Schema.String,\n title: Schema.String,\n kind: Schema.optional(AcpToolKind),\n status: Schema.optional(AcpToolCallStatus),\n content: Schema.optional(Schema.Array(AcpToolCallContent)),\n locations: Schema.optional(Schema.Array(AcpToolCallLocation)),\n rawInput: Schema.optional(Schema.Unknown),\n rawOutput: Schema.optional(Schema.Unknown),\n}) {}\n\nexport class AcpToolCallUpdate extends Schema.Class<AcpToolCallUpdate>(\"AcpToolCallUpdate\")({\n sessionUpdate: Schema.Literal(\"tool_call_update\"),\n toolCallId: Schema.String,\n title: Schema.optional(Schema.NullOr(Schema.String)),\n kind: Schema.optional(Schema.NullOr(AcpToolKind)),\n status: Schema.optional(Schema.NullOr(AcpToolCallStatus)),\n content: Schema.optional(Schema.NullOr(Schema.Array(AcpToolCallContent))),\n locations: Schema.optional(Schema.NullOr(Schema.Array(AcpToolCallLocation))),\n rawInput: Schema.optional(Schema.Unknown),\n rawOutput: Schema.optional(Schema.Unknown),\n}) {}\n\nconst AcpPlanEntryStatus = Schema.Literals([\"pending\", \"in_progress\", \"completed\"] as const);\n\nconst AcpPlanEntryPriority = Schema.Literals([\"high\", \"medium\", \"low\"] as const);\n\nexport class AcpPlanUpdate extends Schema.Class<AcpPlanUpdate>(\"AcpPlanUpdate\")({\n sessionUpdate: Schema.Literal(\"plan\"),\n entries: Schema.Array(\n Schema.Struct({\n content: Schema.String,\n priority: AcpPlanEntryPriority,\n status: AcpPlanEntryStatus,\n }),\n ),\n}) {}\n\nexport class AcpAvailableCommandsUpdate extends Schema.Class<AcpAvailableCommandsUpdate>(\n \"AcpAvailableCommandsUpdate\",\n)({\n sessionUpdate: Schema.Literal(\"available_commands_update\"),\n}) {}\n\nexport class AcpCurrentModeUpdate extends Schema.Class<AcpCurrentModeUpdate>(\n \"AcpCurrentModeUpdate\",\n)({\n sessionUpdate: Schema.Literal(\"current_mode_update\"),\n}) {}\n\nconst AcpConfigOptionCategory = Schema.Union([\n Schema.Literal(\"mode\"),\n Schema.Literal(\"model\"),\n Schema.Literal(\"thought_level\"),\n Schema.String,\n]);\n\nexport const AcpConfigSelectOption = Schema.Struct({\n value: Schema.String,\n name: Schema.String,\n description: Schema.optional(Schema.NullOr(Schema.String)),\n});\nexport type AcpConfigSelectOption = typeof AcpConfigSelectOption.Type;\n\nconst AcpConfigSelectGroup = Schema.Struct({\n group: Schema.String,\n name: Schema.String,\n options: Schema.Array(AcpConfigSelectOption),\n});\n\nexport const AcpConfigOption = Schema.Struct({\n id: Schema.String,\n name: Schema.String,\n category: Schema.optional(Schema.NullOr(AcpConfigOptionCategory)),\n description: Schema.optional(Schema.NullOr(Schema.String)),\n type: Schema.Literals([\"select\", \"boolean\"] as const),\n currentValue: Schema.Union([Schema.String, Schema.Boolean]),\n options: Schema.optional(\n Schema.Array(Schema.Union([AcpConfigSelectOption, AcpConfigSelectGroup])),\n ),\n});\nexport type AcpConfigOption = typeof AcpConfigOption.Type;\n\nexport class AcpConfigOptionUpdate extends Schema.Class<AcpConfigOptionUpdate>(\n \"AcpConfigOptionUpdate\",\n)({\n sessionUpdate: Schema.Literal(\"config_option_update\"),\n configOptions: Schema.Array(AcpConfigOption),\n}) {}\n\nexport class AcpSessionInfoUpdate extends Schema.Class<AcpSessionInfoUpdate>(\n \"AcpSessionInfoUpdate\",\n)({\n sessionUpdate: Schema.Literal(\"session_info_update\"),\n}) {}\n\nexport class AcpUsageUpdate extends Schema.Class<AcpUsageUpdate>(\"AcpUsageUpdate\")({\n sessionUpdate: Schema.Literal(\"usage_update\"),\n}) {}\n\nexport const AcpSessionUpdate = Schema.Union([\n AcpAgentMessageChunk,\n AcpAgentThoughtChunk,\n AcpUserMessageChunk,\n AcpToolCall,\n AcpToolCallUpdate,\n AcpPlanUpdate,\n AcpAvailableCommandsUpdate,\n AcpCurrentModeUpdate,\n AcpConfigOptionUpdate,\n AcpSessionInfoUpdate,\n AcpUsageUpdate,\n]);\nexport type AcpSessionUpdate = typeof AcpSessionUpdate.Type;\n\nexport class AcpSessionNotification extends Schema.Class<AcpSessionNotification>(\n \"AcpSessionNotification\",\n)({\n sessionId: Schema.String,\n update: AcpSessionUpdate,\n}) {}\n\nexport const AcpUsage = Schema.Struct({\n inputTokens: Schema.Number,\n outputTokens: Schema.Number,\n cachedReadTokens: Schema.optional(Schema.NullOr(Schema.Number)),\n cachedWriteTokens: Schema.optional(Schema.NullOr(Schema.Number)),\n thoughtTokens: Schema.optional(Schema.NullOr(Schema.Number)),\n});\n\nexport class AcpPromptResponse extends Schema.Class<AcpPromptResponse>(\"AcpPromptResponse\")({\n stopReason: AcpStopReason,\n usage: Schema.optional(Schema.NullOr(AcpUsage)),\n}) {}\n\nexport interface ChangedFile {\n path: string;\n status: \"A\" | \"M\" | \"D\" | \"R\" | \"C\" | \"?\";\n}\n\nexport interface CommitSummary {\n hash: string;\n shortHash: string;\n subject: string;\n}\n\nexport const AgentProvider = Schema.Literals([\n \"claude\",\n \"codex\",\n \"copilot\",\n \"gemini\",\n \"cursor\",\n \"opencode\",\n \"droid\",\n] as const);\nexport type AgentProvider = typeof AgentProvider.Type;\n\nexport const AGENT_PROVIDER_DISPLAY_NAMES: Record<AgentProvider, string> = {\n claude: \"Claude\",\n codex: \"Codex\",\n copilot: \"GitHub Copilot\",\n gemini: \"Gemini\",\n cursor: \"Cursor\",\n opencode: \"OpenCode\",\n droid: \"Factory Droid\",\n};\nconst TOOL_CALL_DISPLAY_TEXT_CHAR_LIMIT = 80;\n\nexport class FileStat extends Schema.Class<FileStat>(\"@ami/FileStat\")({\n relativePath: Schema.String,\n added: Schema.Number,\n removed: Schema.Number,\n}) {}\n\nexport class Branch extends Schema.Class<Branch>(\"@ami/Branch\")({\n name: Schema.String,\n fullRef: Schema.String,\n authorName: Schema.OptionFromOptionalKey(Schema.String),\n authorEmail: Schema.OptionFromOptionalKey(Schema.String),\n subject: Schema.OptionFromOptionalKey(Schema.String),\n lastCommitTimestampMs: Schema.Number,\n isMyBranch: Schema.Boolean,\n}) {}\n\nexport const formatFileStats = (fileStats: readonly FileStat[]): string =>\n fileStats.map((stat) => ` ${stat.relativePath} (+${stat.added} -${stat.removed})`).join(\"\\n\");\n\nexport class GitState extends Schema.Class<GitState>(\"@supervisor/GitState\")({\n isGitRepo: Schema.Boolean,\n currentBranch: Schema.String,\n mainBranch: Schema.UndefinedOr(Schema.String),\n isOnMain: Schema.Boolean,\n hasChangesFromMain: Schema.Boolean,\n hasUnstagedChanges: Schema.Boolean,\n hasBranchCommits: Schema.Boolean,\n branchCommitCount: Schema.Number,\n fileStats: Schema.Array(FileStat),\n workingTreeFileStats: Schema.Array(FileStat),\n fingerprint: Schema.UndefinedOr(Schema.String),\n savedFingerprint: Schema.UndefinedOr(Schema.String),\n}) {\n get hasUntestedChanges(): boolean {\n return this.hasChangesFromMain || this.hasUnstagedChanges;\n }\n\n get totalChangedLines(): number {\n return this.fileStats.reduce((sum, stat) => sum + stat.added + stat.removed, 0);\n }\n\n get isCurrentStateTested(): boolean {\n if (!this.fingerprint || !this.savedFingerprint) return false;\n return this.fingerprint === this.savedFingerprint;\n }\n}\n\nexport const StepId = Schema.String.pipe(Schema.brand(\"StepId\"));\nexport type StepId = typeof StepId.Type;\n\nexport const PlanId = Schema.String.pipe(Schema.brand(\"PlanId\"));\nexport type PlanId = typeof PlanId.Type;\n\nexport const ChangesFor = Schema.TaggedUnion({\n WorkingTree: {},\n Branch: { mainBranch: Schema.String },\n Changes: { mainBranch: Schema.String },\n Commit: { hash: Schema.String },\n});\nexport type ChangesFor = typeof ChangesFor.Type;\n\nexport const changesForDisplayName = (changesFor: ChangesFor): string =>\n Match.value(changesFor).pipe(\n Match.tagsExhaustive({\n WorkingTree: () => \"working tree\",\n Branch: () => \"branch\",\n Changes: () => \"changes\",\n Commit: ({ hash }) => hash.slice(0, 7),\n }),\n );\n\nexport const GhPrListItem = Schema.Struct({\n number: Schema.Number,\n headRefName: Schema.String,\n author: Schema.Struct({ login: Schema.String }),\n state: Schema.String,\n updatedAt: Schema.String,\n});\n\nexport type BranchFilter = \"recent\" | \"all\" | \"open\" | \"draft\" | \"merged\" | \"no-pr\";\n\nexport const BRANCH_FILTERS: readonly BranchFilter[] = [\n \"recent\",\n \"all\",\n \"open\",\n \"draft\",\n \"merged\",\n \"no-pr\",\n];\n\nexport class RemoteBranch extends Schema.Class<RemoteBranch>(\"@supervisor/RemoteBranch\")({\n name: Schema.String,\n author: Schema.String,\n prNumber: Schema.NullOr(Schema.Number),\n prStatus: Schema.NullOr(Schema.Literals([\"open\", \"draft\", \"merged\"] as const)),\n updatedAt: Schema.NullOr(Schema.String),\n}) {\n static filterBranches(\n branches: readonly RemoteBranch[],\n filter: BranchFilter,\n searchQuery?: string,\n ): RemoteBranch[] {\n let result = branches.filter((branch) => {\n if (filter === \"recent\" || filter === \"all\") return true;\n if (filter === \"no-pr\") return branch.prStatus === null;\n return branch.prStatus === filter;\n });\n if (searchQuery) {\n const lowercaseQuery = searchQuery.toLowerCase();\n result = result.filter((branch) => branch.name.toLowerCase().includes(lowercaseQuery));\n }\n if (filter === \"recent\") {\n result = [...result]\n .filter((branch) => branch.updatedAt !== null)\n .sort((first, second) => {\n const firstDate = new Date(first.updatedAt ?? 0).getTime();\n const secondDate = new Date(second.updatedAt ?? 0).getTime();\n return secondDate - firstDate;\n });\n }\n return result;\n }\n}\n\nexport class FileDiff extends Schema.Class<FileDiff>(\"@supervisor/FileDiff\")({\n relativePath: Schema.String,\n diff: Schema.String,\n}) {}\n\nexport const StepStatus = Schema.Literals([\"pending\", \"active\", \"passed\", \"failed\", \"skipped\"]);\nexport type StepStatus = typeof StepStatus.Type;\n\nexport class TestPlanStep extends Schema.Class<TestPlanStep>(\"@supervisor/TestPlanStep\")({\n id: StepId,\n title: Schema.String,\n instruction: Schema.String,\n expectedOutcome: Schema.String,\n routeHint: Schema.OptionFromNullOr(Schema.String),\n status: StepStatus,\n summary: Schema.OptionFromNullOr(Schema.String),\n startedAt: Schema.OptionFromNullOr(Schema.DateTimeUtc),\n endedAt: Schema.OptionFromNullOr(Schema.DateTimeUtc),\n}) {\n update(\n fields: Partial<\n Pick<\n TestPlanStep,\n \"title\" | \"instruction\" | \"expectedOutcome\" | \"status\" | \"summary\" | \"startedAt\" | \"endedAt\"\n >\n >,\n ): TestPlanStep {\n return new TestPlanStep({ ...this, ...fields });\n }\n}\n\nexport class TestCoverageEntry extends Schema.Class<TestCoverageEntry>(\n \"@supervisor/TestCoverageEntry\",\n)({\n path: Schema.String,\n testFiles: Schema.Array(Schema.String),\n covered: Schema.Boolean,\n}) {}\n\nexport class TestCoverageReport extends Schema.Class<TestCoverageReport>(\n \"@supervisor/TestCoverageReport\",\n)({\n entries: Schema.Array(TestCoverageEntry),\n coveredCount: Schema.Number,\n totalCount: Schema.Number,\n percent: Schema.Number,\n}) {}\n\nexport const DraftId = Schema.String.pipe(Schema.brand(\"DraftId\"));\nexport type DraftId = typeof DraftId.Type;\n\nexport class TestPlanDraft extends Schema.Class<TestPlanDraft>(\"@supervisor/TestPlanDraft\")({\n id: DraftId,\n changesFor: ChangesFor,\n currentBranch: Schema.String,\n diffPreview: Schema.String,\n fileStats: Schema.Array(FileStat),\n instruction: Schema.String,\n baseUrl: Schema.Option(Schema.String),\n isHeadless: Schema.Boolean,\n cookieBrowserKeys: Schema.Array(Schema.String),\n testCoverage: Schema.Option(TestCoverageReport),\n}) {\n get requiresCookies(): boolean {\n return this.cookieBrowserKeys.length > 0;\n }\n\n update(\n fields: Partial<\n Pick<TestPlanDraft, \"instruction\" | \"baseUrl\" | \"isHeadless\" | \"cookieBrowserKeys\">\n >,\n ): TestPlanDraft {\n return new TestPlanDraft({ ...this, ...fields });\n }\n}\n\nexport class TestPlan extends TestPlanDraft.extend<TestPlan>(\"@supervisor/TestPlan\")({\n id: PlanId,\n title: Schema.String,\n rationale: Schema.String,\n steps: Schema.Array(TestPlanStep),\n}) {\n update(\n fields: Partial<\n Pick<TestPlanDraft, \"instruction\" | \"baseUrl\" | \"isHeadless\" | \"cookieBrowserKeys\">\n >,\n ): TestPlan {\n return new TestPlan({ ...this, ...fields });\n }\n\n updateStep(stepIndex: number, updater: (step: TestPlanStep) => TestPlanStep): TestPlan {\n return new TestPlan({\n ...this,\n steps: this.steps.map((step, index) => (index === stepIndex ? updater(step) : step)),\n });\n }\n\n get stepCount(): number {\n return this.steps.length;\n }\n\n get resetForRerun(): TestPlan {\n return new TestPlan({\n ...this,\n steps: this.steps.map(\n (step) =>\n new TestPlanStep({\n ...step,\n status: \"pending\",\n summary: Option.none(),\n startedAt: Option.none(),\n endedAt: Option.none(),\n }),\n ),\n });\n }\n}\n\nexport class RunStarted extends Schema.TaggedClass<RunStarted>()(\"RunStarted\", {\n plan: TestPlan,\n}) {\n get id(): string {\n return `run-started-${this.plan.id}`;\n }\n}\n\nexport class StepStarted extends Schema.TaggedClass<StepStarted>()(\"StepStarted\", {\n stepId: StepId,\n title: Schema.String,\n}) {\n get id(): string {\n return `step-started-${this.stepId}`;\n }\n}\n\nexport class StepCompleted extends Schema.TaggedClass<StepCompleted>()(\"StepCompleted\", {\n stepId: StepId,\n summary: Schema.String,\n}) {\n get id(): string {\n return `step-completed-${this.stepId}`;\n }\n}\n\nexport class StepFailed extends Schema.TaggedClass<StepFailed>()(\"StepFailed\", {\n stepId: StepId,\n message: Schema.String,\n}) {\n get id(): string {\n return `step-failed-${this.stepId}`;\n }\n}\n\nexport class StepSkipped extends Schema.TaggedClass<StepSkipped>()(\"StepSkipped\", {\n stepId: StepId,\n reason: Schema.String,\n}) {\n get id(): string {\n return `step-skipped-${this.stepId}`;\n }\n}\n\nexport class ToolCall extends Schema.TaggedClass<ToolCall>()(\"ToolCall\", {\n toolName: Schema.String,\n input: Schema.Unknown,\n}) {\n get id(): string {\n return `tool-call-${this.toolName}-${JSON.stringify(this.input)}`;\n }\n get displayText(): string {\n if (Predicate.isObject(this.input) && \"command\" in this.input) {\n return String(this.input.command).slice(0, TOOL_CALL_DISPLAY_TEXT_CHAR_LIMIT);\n }\n return this.toolName;\n }\n}\n\nexport class ToolProgress extends Schema.TaggedClass<ToolProgress>()(\"ToolProgress\", {\n toolName: Schema.String,\n outputSize: Schema.Number,\n}) {\n get id(): string {\n return `tool-progress-${this.toolName}-${this.outputSize}`;\n }\n}\n\nexport class ToolResult extends Schema.TaggedClass<ToolResult>()(\"ToolResult\", {\n toolName: Schema.String,\n result: Schema.String,\n isError: Schema.Boolean,\n}) {\n get id(): string {\n return `tool-result-${this.toolName}-${this.result}`;\n }\n}\n\nexport class AgentThinking extends Schema.TaggedClass<AgentThinking>()(\"AgentThinking\", {\n text: Schema.String,\n}) {\n get id(): string {\n return `agent-thinking-${this.text}`;\n }\n}\n\nexport class AgentText extends Schema.TaggedClass<AgentText>()(\"AgentText\", {\n text: Schema.String,\n}) {\n get id(): string {\n return `agent-text-${this.text}`;\n }\n}\n\nexport class RunFinished extends Schema.TaggedClass<RunFinished>()(\"RunFinished\", {\n status: Schema.Literals([\"passed\", \"failed\"] as const),\n summary: Schema.String,\n}) {\n get id(): string {\n return `run-finished-${this.status}`;\n }\n}\n\nconst serializeToolResult = (value: unknown): string => {\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n value === null ||\n value === undefined\n ) {\n return String(value);\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n};\n\nconst parseMarker = (line: string): ExecutionEvent | undefined => {\n const pipeIndex = line.indexOf(\"|\");\n if (pipeIndex === -1) return undefined;\n\n const marker = line.slice(0, pipeIndex);\n const rest = line.slice(pipeIndex + 1);\n const secondPipeIndex = rest.indexOf(\"|\");\n const first = secondPipeIndex === -1 ? rest : rest.slice(0, secondPipeIndex);\n const second = secondPipeIndex === -1 ? \"\" : rest.slice(secondPipeIndex + 1);\n\n if (marker === \"STEP_START\") {\n return new StepStarted({ stepId: StepId.makeUnsafe(first), title: second });\n }\n if (marker === \"STEP_DONE\") {\n return new StepCompleted({\n stepId: StepId.makeUnsafe(first),\n summary: second,\n });\n }\n if (marker === \"ASSERTION_FAILED\") {\n return new StepFailed({\n stepId: StepId.makeUnsafe(first),\n message: second,\n });\n }\n if (marker === \"STEP_SKIPPED\") {\n return new StepSkipped({\n stepId: StepId.makeUnsafe(first),\n reason: second,\n });\n }\n if (marker === \"RUN_COMPLETED\") {\n const status = first === \"failed\" ? (\"failed\" as const) : (\"passed\" as const);\n return new RunFinished({ status, summary: second });\n }\n return undefined;\n};\n\nexport const ExecutionEvent = Schema.Union([\n RunStarted,\n StepStarted,\n StepCompleted,\n StepFailed,\n StepSkipped,\n ToolCall,\n ToolProgress,\n ToolResult,\n AgentThinking,\n AgentText,\n RunFinished,\n]);\nexport type ExecutionEvent = typeof ExecutionEvent.Type;\n\nexport class RunCompleted extends Schema.TaggedClass<RunCompleted>()(\"RunCompleted\", {\n report: Schema.suspend((): Schema.Schema<TestReport> => TestReport),\n}) {}\n\nexport const UpdateContent = Schema.Union([\n RunStarted,\n StepStarted,\n StepCompleted,\n StepFailed,\n StepSkipped,\n ToolCall,\n ToolResult,\n AgentThinking,\n RunFinished,\n RunCompleted,\n]);\nexport type UpdateContent = typeof UpdateContent.Type;\n\nexport class Update extends Schema.Class<Update>(\"@supervisor/Update\")({\n content: UpdateContent,\n receivedAt: Schema.DateTimeUtc,\n}) {}\n\nexport class PullRequest extends Schema.Class<PullRequest>(\"@supervisor/PullRequest\")({\n number: Schema.Number,\n url: Schema.String,\n title: Schema.String,\n headRefName: Schema.String,\n}) {}\n\nexport const TestContext = Schema.TaggedUnion({\n WorkingTree: {},\n Branch: { branch: RemoteBranch },\n PullRequest: { branch: RemoteBranch },\n Commit: {\n hash: Schema.String,\n shortHash: Schema.String,\n subject: Schema.String,\n },\n});\nexport type TestContext = typeof TestContext.Type;\n\nexport const testContextId = (context: TestContext): string =>\n Match.value(context).pipe(\n Match.tagsExhaustive({\n WorkingTree: () => \"working-tree\",\n Branch: ({ branch }) => `branch-${branch.name}`,\n PullRequest: ({ branch }) => `pr-${branch.prNumber}`,\n Commit: ({ hash }) => `commit-${hash}`,\n }),\n );\n\nexport const testContextFilterText = (context: TestContext): string =>\n Match.value(context).pipe(\n Match.tagsExhaustive({\n WorkingTree: () => \"local changes\",\n Branch: ({ branch }) => branch.name,\n PullRequest: ({ branch }) => `#${branch.prNumber} ${branch.name} ${branch.author}`,\n Commit: ({ shortHash, subject }) => `${shortHash} ${subject}`,\n }),\n );\n\nexport const testContextLabel = (context: TestContext): string =>\n Match.value(context).pipe(\n Match.tagsExhaustive({\n WorkingTree: () => \"Local changes\",\n Branch: ({ branch }) => branch.name,\n PullRequest: ({ branch }) => branch.name,\n Commit: ({ shortHash }) => shortHash,\n }),\n );\n\nexport const testContextDescription = (context: TestContext): string =>\n Match.value(context).pipe(\n Match.tagsExhaustive({\n WorkingTree: () => \"working tree\",\n Branch: ({ branch }) => (branch.author ? `by ${branch.author}` : \"\"),\n PullRequest: ({ branch }) => `#${branch.prNumber} ${branch.prStatus ?? \"\"}`.trim(),\n Commit: ({ subject }) => subject,\n }),\n );\n\nexport const testContextDisplayLabel = (context: TestContext): string =>\n Match.value(context).pipe(\n Match.tagsExhaustive({\n WorkingTree: () => \"Local changes\",\n Branch: ({ branch }) => branch.name,\n PullRequest: ({ branch }) => `#${branch.prNumber}`,\n Commit: ({ shortHash }) => shortHash,\n }),\n );\n\nexport const FindPullRequestPayload = Schema.TaggedUnion({\n Branch: { branchName: Schema.String },\n});\nexport type FindPullRequestPayload = typeof FindPullRequestPayload.Type;\n\nexport class ExecutedTestPlan extends TestPlan.extend<ExecutedTestPlan>(\n \"@supervisor/ExecutedTestPlan\",\n)({\n events: Schema.Array(ExecutionEvent),\n}) {\n addEvent(update: AcpSessionUpdate): ExecutedTestPlan {\n if (update.sessionUpdate === \"agent_thought_chunk\") {\n if (update.content.type !== \"text\" || update.content.text === undefined) return this;\n const lastEvent = this.events.at(-1);\n if (lastEvent?._tag === \"AgentThinking\") {\n return new ExecutedTestPlan({\n ...this,\n events: [\n ...this.events.slice(0, -1),\n new AgentThinking({ text: lastEvent.text + update.content.text }),\n ],\n });\n }\n const base = this.finalizeTextBlock();\n return new ExecutedTestPlan({\n ...base,\n events: [...base.events, new AgentThinking({ text: update.content.text })],\n });\n }\n\n if (update.sessionUpdate === \"agent_message_chunk\") {\n if (update.content.type !== \"text\" || update.content.text === undefined) return this;\n const lastEvent = this.events.at(-1);\n if (lastEvent?._tag === \"AgentText\") {\n return new ExecutedTestPlan({\n ...this,\n events: [\n ...this.events.slice(0, -1),\n new AgentText({ text: lastEvent.text + update.content.text }),\n ],\n });\n }\n const base = this.finalizeTextBlock();\n return new ExecutedTestPlan({\n ...base,\n events: [...base.events, new AgentText({ text: update.content.text })],\n });\n }\n\n if (update.sessionUpdate === \"tool_call\") {\n let result = this.finalizeTextBlock();\n return new ExecutedTestPlan({\n ...result,\n events: [\n ...result.events,\n new ToolCall({\n toolName: update.title,\n input: JSON.stringify(update.rawInput ?? {}),\n }),\n ],\n });\n }\n\n if (update.sessionUpdate === \"tool_call_update\") {\n let base: ExecutedTestPlan | undefined;\n\n if (update.rawInput !== undefined) {\n const updatedEvents = [...this.events];\n for (let index = updatedEvents.length - 1; index >= 0; index--) {\n const event = updatedEvents[index];\n if (event._tag === \"ToolCall\" && event.toolName === (update.title ?? \"\")) {\n updatedEvents[index] = new ToolCall({\n toolName: event.toolName,\n input: JSON.stringify(update.rawInput),\n });\n break;\n }\n }\n base = new ExecutedTestPlan({ ...this, events: updatedEvents });\n }\n\n const current = base ?? this;\n\n if (update.status === \"completed\" || update.status === \"failed\") {\n return new ExecutedTestPlan({\n ...current,\n events: [\n ...current.events,\n new ToolResult({\n toolName: update.title ?? \"\",\n result: serializeToolResult(update.rawOutput),\n isError: update.status === \"failed\",\n }),\n ],\n });\n }\n if (update.rawOutput !== undefined) {\n const outputSize = serializeToolResult(update.rawOutput).length;\n return new ExecutedTestPlan({\n ...current,\n events: [\n ...current.events.filter(\n (event) =>\n !(event._tag === \"ToolProgress\" && event.toolName === (update.title ?? \"\")),\n ),\n new ToolProgress({\n toolName: update.title ?? \"\",\n outputSize,\n }),\n ],\n });\n }\n return current;\n }\n\n return this;\n }\n\n finalizeTextBlock(): ExecutedTestPlan {\n const lastEvent = this.events.at(-1);\n if (lastEvent?._tag !== \"AgentText\" && lastEvent?._tag !== \"AgentThinking\") return this;\n const foundMarkers = lastEvent.text\n .split(\"\\n\")\n .map(parseMarker)\n .filter(Predicate.isNotUndefined);\n if (foundMarkers.length === 0) return this;\n let result: ExecutedTestPlan = new ExecutedTestPlan({\n ...this,\n events: [...this.events, ...foundMarkers],\n });\n for (const marker of foundMarkers) {\n result = result.applyMarker(marker);\n }\n return result;\n }\n\n applyMarker(marker: ExecutionEvent): ExecutedTestPlan {\n if (marker._tag === \"StepStarted\") {\n const stepExists = this.steps.some((step) => step.id === marker.stepId);\n if (stepExists) {\n return new ExecutedTestPlan({\n ...this,\n steps: this.steps.map((step) =>\n step.id === marker.stepId\n ? step.update({\n status: \"active\",\n title: marker.title,\n startedAt: Option.some(DateTime.nowUnsafe()),\n })\n : step,\n ),\n });\n }\n return new ExecutedTestPlan({\n ...this,\n steps: [\n ...this.steps,\n new TestPlanStep({\n id: marker.stepId,\n title: marker.title,\n instruction: marker.title,\n expectedOutcome: \"\",\n routeHint: Option.none(),\n status: \"active\",\n summary: Option.none(),\n startedAt: Option.some(DateTime.nowUnsafe()),\n endedAt: Option.none(),\n }),\n ],\n });\n }\n if (marker._tag === \"StepCompleted\") {\n return new ExecutedTestPlan({\n ...this,\n steps: this.steps.map((step) =>\n step.id === marker.stepId\n ? step.update({\n status: \"passed\",\n summary: Option.some(marker.summary),\n expectedOutcome: marker.summary,\n endedAt: Option.some(DateTime.nowUnsafe()),\n })\n : step,\n ),\n });\n }\n if (marker._tag === \"StepFailed\") {\n return new ExecutedTestPlan({\n ...this,\n steps: this.steps.map((step) =>\n step.id === marker.stepId\n ? step.update({\n status: \"failed\",\n summary: Option.some(marker.message),\n expectedOutcome: marker.message,\n endedAt: Option.some(DateTime.nowUnsafe()),\n })\n : step,\n ),\n });\n }\n if (marker._tag === \"StepSkipped\") {\n return new ExecutedTestPlan({\n ...this,\n steps: this.steps.map((step) =>\n step.id === marker.stepId\n ? step.update({\n status: \"skipped\",\n summary: Option.some(marker.reason),\n endedAt: Option.some(DateTime.nowUnsafe()),\n })\n : step,\n ),\n });\n }\n return this;\n }\n\n get hasRunFinished(): boolean {\n return this.events.some((event) => event._tag === \"RunFinished\");\n }\n\n get allStepsTerminal(): boolean {\n return (\n this.steps.length > 0 &&\n this.steps.every(\n (step) => step.status === \"passed\" || step.status === \"failed\" || step.status === \"skipped\",\n )\n );\n }\n\n synthesizeRunFinished(): ExecutedTestPlan {\n if (this.hasRunFinished) return this;\n if (this.steps.length === 0) {\n return new ExecutedTestPlan({\n ...this,\n events: [\n ...this.events,\n new RunFinished({\n status: \"failed\",\n summary: \"Agent completed without executing any test steps\",\n }),\n ],\n });\n }\n const hasFailures = this.steps.some((step) => step.status === \"failed\");\n const status = hasFailures ? (\"failed\" as const) : (\"passed\" as const);\n const passedCount = this.steps.filter((step) => step.status === \"passed\").length;\n const failedCount = this.steps.filter((step) => step.status === \"failed\").length;\n const skippedCount = this.steps.filter((step) => step.status === \"skipped\").length;\n const parts = [`${passedCount} passed`, `${failedCount} failed`];\n if (skippedCount > 0) parts.push(`${skippedCount} skipped`);\n const summary = `Run auto-completed: ${parts.join(\", \")}`;\n return new ExecutedTestPlan({\n ...this,\n events: [...this.events, new RunFinished({ status, summary })],\n });\n }\n\n get activeStep(): TestPlanStep | undefined {\n return this.steps.find((step) => step.status === \"active\");\n }\n\n get completedStepCount(): number {\n return this.steps.filter(\n (step) => step.status === \"passed\" || step.status === \"failed\" || step.status === \"skipped\",\n ).length;\n }\n\n get lastToolCallDisplayText(): string | undefined {\n const lastToolCall = this.events.findLast((event) => event._tag === \"ToolCall\");\n if (!lastToolCall || lastToolCall._tag !== \"ToolCall\") return undefined;\n return lastToolCall.displayText;\n }\n}\n\nexport class TestReport extends ExecutedTestPlan.extend<TestReport>(\"@supervisor/TestReport\")({\n summary: Schema.String,\n screenshotPaths: Schema.Array(Schema.String),\n pullRequest: Schema.Option(Schema.suspend(() => PullRequest)),\n testCoverageReport: Schema.Option(TestCoverageReport),\n}) {\n /** @todo(rasmus): UNUSED */\n get stepStatuses(): ReadonlyMap<\n StepId,\n { status: \"passed\" | \"failed\" | \"skipped\" | \"not-run\"; summary: string }\n > {\n const statuses = new Map<\n StepId,\n { status: \"passed\" | \"failed\" | \"skipped\" | \"not-run\"; summary: string }\n >(this.steps.map((step) => [step.id, { status: \"not-run\", summary: \"\" }]));\n\n for (const event of this.events) {\n if (event._tag === \"StepCompleted\" && statuses.has(event.stepId)) {\n statuses.set(event.stepId, {\n status: \"passed\",\n summary: event.summary,\n });\n } else if (event._tag === \"StepFailed\" && statuses.has(event.stepId)) {\n statuses.set(event.stepId, {\n status: \"failed\",\n summary: event.message,\n });\n } else if (event._tag === \"StepSkipped\" && statuses.has(event.stepId)) {\n statuses.set(event.stepId, {\n status: \"skipped\",\n summary: event.reason,\n });\n }\n }\n\n return statuses;\n }\n\n get status(): \"passed\" | \"failed\" {\n for (const { status } of this.stepStatuses.values()) {\n if (status === \"failed\") return \"failed\";\n }\n return \"passed\";\n }\n\n get toPlainText(): string {\n const statuses = this.stepStatuses;\n const passedCount = this.steps.filter(\n (step) => statuses.get(step.id)?.status === \"passed\",\n ).length;\n const failedCount = this.steps.filter(\n (step) => statuses.get(step.id)?.status === \"failed\",\n ).length;\n const skippedCount = this.steps.filter(\n (step) => statuses.get(step.id)?.status === \"skipped\",\n ).length;\n\n const icon = this.status === \"passed\" ? \"\\u2705\" : \"\\u274C\";\n const summaryParts = [`${passedCount} passed`, `${failedCount} failed`];\n if (skippedCount > 0) summaryParts.push(`${skippedCount} skipped`);\n const stepWord = this.steps.length === 1 ? \"step\" : \"steps\";\n const lines = [\n `${icon} ${this.title} \\u2014 ${this.status.toUpperCase()}`,\n \"\",\n this.steps.length === 0\n ? \"agent did not execute any test steps\"\n : `${summaryParts.join(\", \")} out of ${this.steps.length} ${stepWord}`,\n \"\",\n ];\n\n for (const step of this.steps) {\n const entry = statuses.get(step.id);\n const stepStatus = entry?.status ?? \"not-run\";\n const stepIcon =\n stepStatus === \"passed\"\n ? \"\\u2713\"\n : stepStatus === \"failed\"\n ? \"\\u2717\"\n : stepStatus === \"skipped\"\n ? \"\\u2192\"\n : \"\\u2013\";\n lines.push(` ${stepIcon} ${step.title}`);\n if (entry?.summary) {\n lines.push(` ${entry.summary}`);\n }\n }\n\n if (Option.isSome(this.testCoverageReport)) {\n const coverage = this.testCoverageReport.value;\n lines.push(\"\");\n lines.push(\n `Test coverage: ${coverage.percent}% (${coverage.coveredCount}/${coverage.totalCount} changed files have tests)`,\n );\n const uncovered = coverage.entries.filter((entry) => !entry.covered);\n if (uncovered.length > 0) {\n lines.push(\" Untested files:\");\n for (const entry of uncovered) {\n lines.push(` - ${entry.path}`);\n }\n }\n }\n\n return lines.join(\"\\n\");\n }\n}\n\nexport class CiStepResult extends Schema.Class<CiStepResult>(\"@shared/CiStepResult\")({\n title: Schema.String,\n status: Schema.Literals([\"passed\", \"failed\", \"skipped\", \"not-run\"] as const),\n duration_ms: Schema.optional(Schema.Number),\n error: Schema.optional(Schema.String),\n}) {}\n\nexport class CiResultOutput extends Schema.Class<CiResultOutput>(\"@shared/CiResultOutput\")({\n version: Schema.String,\n status: Schema.Literals([\"passed\", \"failed\"] as const),\n title: Schema.String,\n duration_ms: Schema.Number,\n steps: Schema.Array(CiStepResult),\n artifacts: Schema.Struct({\n video: Schema.optional(Schema.String),\n replay: Schema.optional(Schema.String),\n screenshots: Schema.optional(Schema.Array(Schema.String)),\n }),\n summary: Schema.String,\n}) {}\n","import { DateTime, Effect, Layer, PubSub, ServiceMap, Stream } from \"effect\";\nimport type { UpdateContent } from \"@expect/shared/models\";\nimport { Update } from \"@expect/shared/models\";\n\nexport class Updates extends ServiceMap.Service<Updates>()(\"@supervisor/Updates\", {\n make: Effect.gen(function* () {\n const pubsub = yield* PubSub.unbounded<Update>();\n\n const publish = Effect.fn(\"Updates.publish\")(function* (content: UpdateContent) {\n yield* PubSub.publish(pubsub, new Update({ content, receivedAt: DateTime.nowUnsafe() }));\n });\n\n const stream = Effect.fn(\"Updates.stream\")(function* () {\n return Stream.fromPubSub(pubsub);\n });\n\n return { publish, stream } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make);\n}\n","import { Schema } from \"effect\";\n\nexport const McpEnvEntry = Schema.Struct({\n name: Schema.String,\n value: Schema.String,\n});\n\nconst ModelPreference = Schema.Struct({\n configId: Schema.String,\n value: Schema.String,\n});\n\nexport class AgentStreamOptions extends Schema.Class<AgentStreamOptions>(\"AgentStreamOptions\")({\n cwd: Schema.String,\n sessionId: Schema.Option(Schema.String),\n prompt: Schema.String,\n systemPrompt: Schema.Option(Schema.String),\n mcpEnv: Schema.optional(Schema.Array(McpEnvEntry)),\n modelPreference: Schema.optional(ModelPreference),\n}) {}\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","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","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","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","// This file is auto-generated by @hey-api/openapi-ts\nexport const AGENT_METHODS = {\n authenticate: \"authenticate\",\n initialize: \"initialize\",\n session_cancel: \"session/cancel\",\n session_close: \"session/close\",\n session_fork: \"session/fork\",\n session_list: \"session/list\",\n session_load: \"session/load\",\n session_new: \"session/new\",\n session_prompt: \"session/prompt\",\n session_resume: \"session/resume\",\n session_set_config_option: \"session/set_config_option\",\n session_set_mode: \"session/set_mode\",\n session_set_model: \"session/set_model\",\n};\nexport const CLIENT_METHODS = {\n fs_read_text_file: \"fs/read_text_file\",\n fs_write_text_file: \"fs/write_text_file\",\n session_request_permission: \"session/request_permission\",\n session_update: \"session/update\",\n terminal_create: \"terminal/create\",\n terminal_kill: \"terminal/kill\",\n terminal_output: \"terminal/output\",\n terminal_release: \"terminal/release\",\n terminal_wait_for_exit: \"terminal/wait_for_exit\",\n};\nexport const PROTOCOL_VERSION = 1;\n//# sourceMappingURL=index.js.map","// This file is auto-generated by @hey-api/openapi-ts\nimport { z } from \"zod/v4\";\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Authentication capabilities supported by the client.\n *\n * Advertised during initialization to inform the agent which authentication\n * method types the client can handle. This governs opt-in types that require\n * additional client-side support.\n *\n * @experimental\n */\nexport const zAuthCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n terminal: z.boolean().optional().default(false),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Describes a single environment variable for an [`AuthMethodEnvVar`] authentication method.\n *\n * @experimental\n */\nexport const zAuthEnvVar = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n label: z.string().nullish(),\n name: z.string(),\n optional: z.boolean().optional().default(false),\n secret: z.boolean().optional().default(true),\n});\n/**\n * Agent handles authentication itself.\n *\n * This is the default authentication method type.\n */\nexport const zAuthMethodAgent = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n description: z.string().nullish(),\n id: z.string(),\n name: z.string(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Environment variable authentication method.\n *\n * The user provides credentials that the client passes to the agent as environment variables.\n *\n * @experimental\n */\nexport const zAuthMethodEnvVar = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n description: z.string().nullish(),\n id: z.string(),\n link: z.string().nullish(),\n name: z.string(),\n vars: z.array(zAuthEnvVar),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Terminal-based authentication method.\n *\n * The client runs an interactive terminal for the user to authenticate via a TUI.\n *\n * @experimental\n */\nexport const zAuthMethodTerminal = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n args: z.array(z.string()).optional(),\n description: z.string().nullish(),\n env: z.record(z.string(), z.string()).optional(),\n id: z.string(),\n name: z.string(),\n});\n/**\n * Describes an available authentication method.\n *\n * The `type` field acts as the discriminator in the serialized JSON form.\n * When no `type` is present, the method is treated as `agent`.\n */\nexport const zAuthMethod = z.union([\n zAuthMethodEnvVar.and(z.object({\n type: z.literal(\"env_var\"),\n })),\n zAuthMethodTerminal.and(z.object({\n type: z.literal(\"terminal\"),\n })),\n zAuthMethodAgent,\n]);\n/**\n * Request parameters for the authenticate method.\n *\n * Specifies which authentication method to use.\n */\nexport const zAuthenticateRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n methodId: z.string(),\n});\n/**\n * Response to the `authenticate` method.\n */\nexport const zAuthenticateResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * Binary resource contents.\n */\nexport const zBlobResourceContents = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n blob: z.string(),\n mimeType: z.string().nullish(),\n uri: z.string(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Response from closing a session.\n *\n * @experimental\n */\nexport const zCloseSessionResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Cost information for a session.\n *\n * @experimental\n */\nexport const zCost = z.object({\n amount: z.number(),\n currency: z.string(),\n});\n/**\n * Response containing the ID of the created terminal.\n */\nexport const zCreateTerminalResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n terminalId: z.string(),\n});\n/**\n * A diff representing file modifications.\n *\n * Shows changes to files in a format suitable for display in the client UI.\n *\n * See protocol docs: [Content](https://agentclientprotocol.com/protocol/tool-calls#content)\n */\nexport const zDiff = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n newText: z.string(),\n oldText: z.string().nullish(),\n path: z.string(),\n});\n/**\n * An environment variable to set when launching an MCP server.\n */\nexport const zEnvVariable = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n name: z.string(),\n value: z.string(),\n});\n/**\n * Predefined error codes for common JSON-RPC and ACP-specific errors.\n *\n * These codes follow the JSON-RPC 2.0 specification for standard errors\n * and use the reserved range (-32000 to -32099) for protocol-specific errors.\n */\nexport const zErrorCode = z.union([\n z.literal(-32700),\n z.literal(-32600),\n z.literal(-32601),\n z.literal(-32602),\n z.literal(-32603),\n z.literal(-32800),\n z.literal(-32000),\n z.literal(-32002),\n z\n .number()\n .int()\n .min(-2147483648, {\n message: \"Invalid value: Expected int32 to be >= -2147483648\",\n })\n .max(2147483647, {\n message: \"Invalid value: Expected int32 to be <= 2147483647\",\n }),\n]);\n/**\n * JSON-RPC error object.\n *\n * Represents an error that occurred during method execution, following the\n * JSON-RPC 2.0 error object specification with optional additional data.\n *\n * See protocol docs: [JSON-RPC Error Object](https://www.jsonrpc.org/specification#error_object)\n */\nexport const zError = z.object({\n code: zErrorCode,\n data: z.unknown().optional(),\n message: z.string(),\n});\n/**\n * Allows the Agent to send an arbitrary notification that is not part of the ACP spec.\n * Extension notifications provide a way to send one-way messages for custom functionality\n * while maintaining protocol compatibility.\n *\n * See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)\n */\nexport const zExtNotification = z.unknown();\n/**\n * Allows for sending an arbitrary request that is not part of the ACP spec.\n * Extension methods provide a way to add custom functionality while maintaining\n * protocol compatibility.\n *\n * See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)\n */\nexport const zExtRequest = z.unknown();\n/**\n * Allows for sending an arbitrary response to an [`ExtRequest`] that is not part of the ACP spec.\n * Extension methods provide a way to add custom functionality while maintaining\n * protocol compatibility.\n *\n * See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)\n */\nexport const zExtResponse = z.unknown();\n/**\n * File system capabilities that a client may support.\n *\n * See protocol docs: [FileSystem](https://agentclientprotocol.com/protocol/initialization#filesystem)\n */\nexport const zFileSystemCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n readTextFile: z.boolean().optional().default(false),\n writeTextFile: z.boolean().optional().default(false),\n});\n/**\n * Capabilities supported by the client.\n *\n * Advertised during initialization to inform the agent about\n * available features and methods.\n *\n * See protocol docs: [Client Capabilities](https://agentclientprotocol.com/protocol/initialization#client-capabilities)\n */\nexport const zClientCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n auth: zAuthCapabilities.optional().default({ terminal: false }),\n fs: zFileSystemCapabilities\n .optional()\n .default({ readTextFile: false, writeTextFile: false }),\n terminal: z.boolean().optional().default(false),\n});\n/**\n * An HTTP header to set when making requests to the MCP server.\n */\nexport const zHttpHeader = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n name: z.string(),\n value: z.string(),\n});\n/**\n * Metadata about the implementation of the client or agent.\n * Describes the name and version of an MCP implementation, with an optional\n * title for UI representation.\n */\nexport const zImplementation = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n name: z.string(),\n title: z.string().nullish(),\n version: z.string(),\n});\n/**\n * Response to `terminal/kill` method\n */\nexport const zKillTerminalResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * Request parameters for listing existing sessions.\n *\n * Only available if the Agent supports the `sessionCapabilities.list` capability.\n */\nexport const zListSessionsRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n cursor: z.string().nullish(),\n cwd: z.string().nullish(),\n});\n/**\n * MCP capabilities supported by the agent\n */\nexport const zMcpCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n http: z.boolean().optional().default(false),\n sse: z.boolean().optional().default(false),\n});\n/**\n * HTTP transport configuration for MCP.\n */\nexport const zMcpServerHttp = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n headers: z.array(zHttpHeader),\n name: z.string(),\n url: z.string(),\n});\n/**\n * SSE transport configuration for MCP.\n */\nexport const zMcpServerSse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n headers: z.array(zHttpHeader),\n name: z.string(),\n url: z.string(),\n});\n/**\n * Stdio transport configuration for MCP.\n */\nexport const zMcpServerStdio = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n args: z.array(z.string()),\n command: z.string(),\n env: z.array(zEnvVariable),\n name: z.string(),\n});\n/**\n * Configuration for connecting to an MCP (Model Context Protocol) server.\n *\n * MCP servers provide tools and context that the agent can use when\n * processing prompts.\n *\n * See protocol docs: [MCP Servers](https://agentclientprotocol.com/protocol/session-setup#mcp-servers)\n */\nexport const zMcpServer = z.union([\n zMcpServerHttp.and(z.object({\n type: z.literal(\"http\"),\n })),\n zMcpServerSse.and(z.object({\n type: z.literal(\"sse\"),\n })),\n zMcpServerStdio,\n]);\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * A unique identifier for a model.\n *\n * @experimental\n */\nexport const zModelId = z.string();\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Information about a selectable model.\n *\n * @experimental\n */\nexport const zModelInfo = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n description: z.string().nullish(),\n modelId: zModelId,\n name: z.string(),\n});\n/**\n * Request parameters for creating a new session.\n *\n * See protocol docs: [Creating a Session](https://agentclientprotocol.com/protocol/session-setup#creating-a-session)\n */\nexport const zNewSessionRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n cwd: z.string(),\n mcpServers: z.array(zMcpServer),\n});\n/**\n * Unique identifier for a permission option.\n */\nexport const zPermissionOptionId = z.string();\n/**\n * The type of permission option being presented to the user.\n *\n * Helps clients choose appropriate icons and UI treatment.\n */\nexport const zPermissionOptionKind = z.union([\n z.literal(\"allow_once\"),\n z.literal(\"allow_always\"),\n z.literal(\"reject_once\"),\n z.literal(\"reject_always\"),\n]);\n/**\n * An option presented to the user when requesting permission.\n */\nexport const zPermissionOption = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n kind: zPermissionOptionKind,\n name: z.string(),\n optionId: zPermissionOptionId,\n});\n/**\n * Priority levels for plan entries.\n *\n * Used to indicate the relative importance or urgency of different\n * tasks in the execution plan.\n * See protocol docs: [Plan Entries](https://agentclientprotocol.com/protocol/agent-plan#plan-entries)\n */\nexport const zPlanEntryPriority = z.union([\n z.literal(\"high\"),\n z.literal(\"medium\"),\n z.literal(\"low\"),\n]);\n/**\n * Status of a plan entry in the execution flow.\n *\n * Tracks the lifecycle of each task from planning through completion.\n * See protocol docs: [Plan Entries](https://agentclientprotocol.com/protocol/agent-plan#plan-entries)\n */\nexport const zPlanEntryStatus = z.union([\n z.literal(\"pending\"),\n z.literal(\"in_progress\"),\n z.literal(\"completed\"),\n]);\n/**\n * A single entry in the execution plan.\n *\n * Represents a task or goal that the assistant intends to accomplish\n * as part of fulfilling the user's request.\n * See protocol docs: [Plan Entries](https://agentclientprotocol.com/protocol/agent-plan#plan-entries)\n */\nexport const zPlanEntry = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n content: z.string(),\n priority: zPlanEntryPriority,\n status: zPlanEntryStatus,\n});\n/**\n * An execution plan for accomplishing complex tasks.\n *\n * Plans consist of multiple entries representing individual tasks or goals.\n * Agents report plans to clients to provide visibility into their execution strategy.\n * Plans can evolve during execution as the agent discovers new requirements or completes tasks.\n *\n * See protocol docs: [Agent Plan](https://agentclientprotocol.com/protocol/agent-plan)\n */\nexport const zPlan = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n entries: z.array(zPlanEntry),\n});\n/**\n * Prompt capabilities supported by the agent in `session/prompt` requests.\n *\n * Baseline agent functionality requires support for [`ContentBlock::Text`]\n * and [`ContentBlock::ResourceLink`] in prompt requests.\n *\n * Other variants must be explicitly opted in to.\n * Capabilities for different types of content in prompt requests.\n *\n * Indicates which content types beyond the baseline (text and resource links)\n * the agent can process.\n *\n * See protocol docs: [Prompt Capabilities](https://agentclientprotocol.com/protocol/initialization#prompt-capabilities)\n */\nexport const zPromptCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n audio: z.boolean().optional().default(false),\n embeddedContext: z.boolean().optional().default(false),\n image: z.boolean().optional().default(false),\n});\n/**\n * Protocol version identifier.\n *\n * This version is only bumped for breaking changes.\n * Non-breaking changes should be introduced via capabilities.\n */\nexport const zProtocolVersion = z.number().int().gte(0).lte(65535);\n/**\n * Request parameters for the initialize method.\n *\n * Sent by the client to establish connection and negotiate capabilities.\n *\n * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)\n */\nexport const zInitializeRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n clientCapabilities: zClientCapabilities.optional().default({\n auth: { terminal: false },\n fs: { readTextFile: false, writeTextFile: false },\n terminal: false,\n }),\n clientInfo: zImplementation.nullish(),\n protocolVersion: zProtocolVersion,\n});\n/**\n * Response containing the contents of a text file.\n */\nexport const zReadTextFileResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n content: z.string(),\n});\n/**\n * Response to terminal/release method\n */\nexport const zReleaseTerminalResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * JSON RPC Request Id\n *\n * An identifier established by the Client that MUST contain a String, Number, or NULL value if included. If it is not included it is assumed to be a notification. The value SHOULD normally not be Null [1] and Numbers SHOULD NOT contain fractional parts [2]\n *\n * The Server MUST reply with the same value in the Response object if included. This member is used to correlate the context between the two objects.\n *\n * [1] The use of Null as a value for the id member in a Request object is discouraged, because this specification uses a value of Null for Responses with an unknown id. Also, because JSON-RPC 1.0 uses an id value of Null for Notifications this could cause confusion in handling.\n *\n * [2] Fractional parts may be problematic, since many decimal fractions cannot be represented exactly as binary fractions.\n */\nexport const zRequestId = z.union([z.number(), z.string()]).nullable();\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Notification to cancel an ongoing request.\n *\n * See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/cancellation)\n *\n * @experimental\n */\nexport const zCancelRequestNotification = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n requestId: zRequestId,\n});\n/**\n * The sender or recipient of messages and data in a conversation.\n */\nexport const zRole = z.enum([\"assistant\", \"user\"]);\n/**\n * Optional annotations for the client. The client can use annotations to inform how objects are used or displayed\n */\nexport const zAnnotations = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n audience: z.array(zRole).nullish(),\n lastModified: z.string().nullish(),\n priority: z.number().nullish(),\n});\n/**\n * Audio provided to or from an LLM.\n */\nexport const zAudioContent = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n annotations: zAnnotations.nullish(),\n data: z.string(),\n mimeType: z.string(),\n});\n/**\n * An image provided to or from an LLM.\n */\nexport const zImageContent = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n annotations: zAnnotations.nullish(),\n data: z.string(),\n mimeType: z.string(),\n uri: z.string().nullish(),\n});\n/**\n * A resource that the server is capable of reading, included in a prompt or tool call result.\n */\nexport const zResourceLink = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n annotations: zAnnotations.nullish(),\n description: z.string().nullish(),\n mimeType: z.string().nullish(),\n name: z.string(),\n size: z.number().nullish(),\n title: z.string().nullish(),\n uri: z.string(),\n});\n/**\n * The user selected one of the provided options.\n */\nexport const zSelectedPermissionOutcome = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n optionId: zPermissionOptionId,\n});\n/**\n * The outcome of a permission request.\n */\nexport const zRequestPermissionOutcome = z.union([\n z.object({\n outcome: z.literal(\"cancelled\"),\n }),\n zSelectedPermissionOutcome.and(z.object({\n outcome: z.literal(\"selected\"),\n })),\n]);\n/**\n * Response to a permission request.\n */\nexport const zRequestPermissionResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n outcome: zRequestPermissionOutcome,\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Capabilities for the `session/close` method.\n *\n * By supplying `{}` it means that the agent supports closing of sessions.\n *\n * @experimental\n */\nexport const zSessionCloseCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * A boolean on/off toggle session configuration option payload.\n *\n * @experimental\n */\nexport const zSessionConfigBoolean = z.object({\n currentValue: z.boolean(),\n});\n/**\n * Unique identifier for a session configuration option value group.\n */\nexport const zSessionConfigGroupId = z.string();\n/**\n * Unique identifier for a session configuration option.\n */\nexport const zSessionConfigId = z.string();\n/**\n * Semantic category for a session configuration option.\n *\n * This is intended to help Clients distinguish broadly common selectors (e.g. model selector vs\n * session mode selector vs thought/reasoning level) for UX purposes (keyboard shortcuts, icons,\n * placement). It MUST NOT be required for correctness. Clients MUST handle missing or unknown\n * categories gracefully.\n *\n * Category names beginning with `_` are free for custom use, like other ACP extension methods.\n * Category names that do not begin with `_` are reserved for the ACP spec.\n */\nexport const zSessionConfigOptionCategory = z.union([\n z.literal(\"mode\"),\n z.literal(\"model\"),\n z.literal(\"thought_level\"),\n z.string(),\n]);\n/**\n * Unique identifier for a session configuration option value.\n */\nexport const zSessionConfigValueId = z.string();\n/**\n * A possible value for a session configuration option.\n */\nexport const zSessionConfigSelectOption = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n description: z.string().nullish(),\n name: z.string(),\n value: zSessionConfigValueId,\n});\n/**\n * A group of possible values for a session configuration option.\n */\nexport const zSessionConfigSelectGroup = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n group: zSessionConfigGroupId,\n name: z.string(),\n options: z.array(zSessionConfigSelectOption),\n});\n/**\n * Possible values for a session configuration option.\n */\nexport const zSessionConfigSelectOptions = z.union([\n z.array(zSessionConfigSelectOption),\n z.array(zSessionConfigSelectGroup),\n]);\n/**\n * A single-value selector (dropdown) session configuration option payload.\n */\nexport const zSessionConfigSelect = z.object({\n currentValue: zSessionConfigValueId,\n options: zSessionConfigSelectOptions,\n});\nexport const zSessionConfigOption = z.intersection(z.union([\n zSessionConfigSelect.and(z.object({\n type: z.literal(\"select\"),\n })),\n zSessionConfigBoolean.and(z.object({\n type: z.literal(\"boolean\"),\n })),\n]), z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n category: zSessionConfigOptionCategory.nullish(),\n description: z.string().nullish(),\n id: zSessionConfigId,\n name: z.string(),\n}));\n/**\n * Session configuration options have been updated.\n */\nexport const zConfigOptionUpdate = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n configOptions: z.array(zSessionConfigOption),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Capabilities for the `session/fork` method.\n *\n * By supplying `{}` it means that the agent supports forking of sessions.\n *\n * @experimental\n */\nexport const zSessionForkCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * A unique identifier for a conversation session between a client and agent.\n *\n * Sessions maintain their own context, conversation history, and state,\n * allowing multiple independent interactions with the same agent.\n *\n * See protocol docs: [Session ID](https://agentclientprotocol.com/protocol/session-setup#session-id)\n */\nexport const zSessionId = z.string();\n/**\n * Notification to cancel ongoing operations for a session.\n *\n * See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/prompt-turn#cancellation)\n */\nexport const zCancelNotification = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n sessionId: zSessionId,\n});\nexport const zClientNotification = z.object({\n method: z.string(),\n params: z.union([zCancelNotification, zExtNotification]).nullish(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Request parameters for closing an active session.\n *\n * If supported, the agent **must** cancel any ongoing work related to the session\n * (treat it as if `session/cancel` was called) and then free up any resources\n * associated with the session.\n *\n * Only available if the Agent supports the `session.close` capability.\n *\n * @experimental\n */\nexport const zCloseSessionRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n sessionId: zSessionId,\n});\n/**\n * Request to create a new terminal and execute a command.\n */\nexport const zCreateTerminalRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n args: z.array(z.string()).optional(),\n command: z.string(),\n cwd: z.string().nullish(),\n env: z.array(zEnvVariable).optional(),\n outputByteLimit: z.number().nullish(),\n sessionId: zSessionId,\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Request parameters for forking an existing session.\n *\n * Creates a new session based on the context of an existing one, allowing\n * operations like generating summaries without affecting the original session's history.\n *\n * Only available if the Agent supports the `session.fork` capability.\n *\n * @experimental\n */\nexport const zForkSessionRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n cwd: z.string(),\n mcpServers: z.array(zMcpServer).optional(),\n sessionId: zSessionId,\n});\n/**\n * Request to kill a terminal without releasing it.\n */\nexport const zKillTerminalRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n sessionId: zSessionId,\n terminalId: z.string(),\n});\n/**\n * Request parameters for loading an existing session.\n *\n * Only available if the Agent supports the `loadSession` capability.\n *\n * See protocol docs: [Loading Sessions](https://agentclientprotocol.com/protocol/session-setup#loading-sessions)\n */\nexport const zLoadSessionRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n cwd: z.string(),\n mcpServers: z.array(zMcpServer),\n sessionId: zSessionId,\n});\n/**\n * Request to read content from a text file.\n *\n * Only available if the client supports the `fs.readTextFile` capability.\n */\nexport const zReadTextFileRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n limit: z\n .number()\n .int()\n .gte(0)\n .max(4294967295, {\n message: \"Invalid value: Expected uint32 to be <= 4294967295\",\n })\n .nullish(),\n line: z\n .number()\n .int()\n .gte(0)\n .max(4294967295, {\n message: \"Invalid value: Expected uint32 to be <= 4294967295\",\n })\n .nullish(),\n path: z.string(),\n sessionId: zSessionId,\n});\n/**\n * Request to release a terminal and free its resources.\n */\nexport const zReleaseTerminalRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n sessionId: zSessionId,\n terminalId: z.string(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Request parameters for resuming an existing session.\n *\n * Resumes an existing session without returning previous messages (unlike `session/load`).\n * This is useful for agents that can resume sessions but don't implement full session loading.\n *\n * Only available if the Agent supports the `session.resume` capability.\n *\n * @experimental\n */\nexport const zResumeSessionRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n cwd: z.string(),\n mcpServers: z.array(zMcpServer).optional(),\n sessionId: zSessionId,\n});\n/**\n * Information about a session returned by session/list\n */\nexport const zSessionInfo = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n cwd: z.string(),\n sessionId: zSessionId,\n title: z.string().nullish(),\n updatedAt: z.string().nullish(),\n});\n/**\n * Response from listing sessions.\n */\nexport const zListSessionsResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n nextCursor: z.string().nullish(),\n sessions: z.array(zSessionInfo),\n});\n/**\n * Update to session metadata. All fields are optional to support partial updates.\n *\n * Agents send this notification to update session information like title or custom metadata.\n * This allows clients to display dynamic session names and track session state changes.\n */\nexport const zSessionInfoUpdate = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n title: z.string().nullish(),\n updatedAt: z.string().nullish(),\n});\n/**\n * Capabilities for the `session/list` method.\n *\n * By supplying `{}` it means that the agent supports listing of sessions.\n */\nexport const zSessionListCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * Unique identifier for a Session Mode.\n */\nexport const zSessionModeId = z.string();\n/**\n * The current mode of the session has changed\n *\n * See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)\n */\nexport const zCurrentModeUpdate = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n currentModeId: zSessionModeId,\n});\n/**\n * A mode the agent can operate in.\n *\n * See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)\n */\nexport const zSessionMode = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n description: z.string().nullish(),\n id: zSessionModeId,\n name: z.string(),\n});\n/**\n * The set of modes and the one currently active.\n */\nexport const zSessionModeState = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n availableModes: z.array(zSessionMode),\n currentModeId: zSessionModeId,\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * The set of models and the one currently active.\n *\n * @experimental\n */\nexport const zSessionModelState = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n availableModels: z.array(zModelInfo),\n currentModelId: zModelId,\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Response from forking an existing session.\n *\n * @experimental\n */\nexport const zForkSessionResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n configOptions: z.array(zSessionConfigOption).nullish(),\n models: zSessionModelState.nullish(),\n modes: zSessionModeState.nullish(),\n sessionId: zSessionId,\n});\n/**\n * Response from loading an existing session.\n */\nexport const zLoadSessionResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n configOptions: z.array(zSessionConfigOption).nullish(),\n models: zSessionModelState.nullish(),\n modes: zSessionModeState.nullish(),\n});\n/**\n * Response from creating a new session.\n *\n * See protocol docs: [Creating a Session](https://agentclientprotocol.com/protocol/session-setup#creating-a-session)\n */\nexport const zNewSessionResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n configOptions: z.array(zSessionConfigOption).nullish(),\n models: zSessionModelState.nullish(),\n modes: zSessionModeState.nullish(),\n sessionId: zSessionId,\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Response from resuming an existing session.\n *\n * @experimental\n */\nexport const zResumeSessionResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n configOptions: z.array(zSessionConfigOption).nullish(),\n models: zSessionModelState.nullish(),\n modes: zSessionModeState.nullish(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Capabilities for the `session/resume` method.\n *\n * By supplying `{}` it means that the agent supports resuming of sessions.\n *\n * @experimental\n */\nexport const zSessionResumeCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * Session capabilities supported by the agent.\n *\n * As a baseline, all Agents **MUST** support `session/new`, `session/prompt`, `session/cancel`, and `session/update`.\n *\n * Optionally, they **MAY** support other session methods and notifications by specifying additional capabilities.\n *\n * Note: `session/load` is still handled by the top-level `load_session` capability. This will be unified in future versions of the protocol.\n *\n * See protocol docs: [Session Capabilities](https://agentclientprotocol.com/protocol/initialization#session-capabilities)\n */\nexport const zSessionCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n close: zSessionCloseCapabilities.nullish(),\n fork: zSessionForkCapabilities.nullish(),\n list: zSessionListCapabilities.nullish(),\n resume: zSessionResumeCapabilities.nullish(),\n});\n/**\n * Capabilities supported by the agent.\n *\n * Advertised during initialization to inform the client about\n * available features and content types.\n *\n * See protocol docs: [Agent Capabilities](https://agentclientprotocol.com/protocol/initialization#agent-capabilities)\n */\nexport const zAgentCapabilities = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n loadSession: z.boolean().optional().default(false),\n mcpCapabilities: zMcpCapabilities\n .optional()\n .default({ http: false, sse: false }),\n promptCapabilities: zPromptCapabilities.optional().default({\n audio: false,\n embeddedContext: false,\n image: false,\n }),\n sessionCapabilities: zSessionCapabilities.optional().default({}),\n});\n/**\n * Response to the `initialize` method.\n *\n * Contains the negotiated protocol version and agent capabilities.\n *\n * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)\n */\nexport const zInitializeResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n agentCapabilities: zAgentCapabilities.optional().default({\n loadSession: false,\n mcpCapabilities: { http: false, sse: false },\n promptCapabilities: {\n audio: false,\n embeddedContext: false,\n image: false,\n },\n sessionCapabilities: {},\n }),\n agentInfo: zImplementation.nullish(),\n authMethods: z.array(zAuthMethod).optional().default([]),\n protocolVersion: zProtocolVersion,\n});\nexport const zSetSessionConfigOptionRequest = z.intersection(z.union([\n z.object({\n type: z.literal(\"boolean\"),\n value: z.boolean(),\n }),\n z.object({\n value: zSessionConfigValueId,\n }),\n]), z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n configId: zSessionConfigId,\n sessionId: zSessionId,\n}));\n/**\n * Response to `session/set_config_option` method.\n */\nexport const zSetSessionConfigOptionResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n configOptions: z.array(zSessionConfigOption),\n});\n/**\n * Request parameters for setting a session mode.\n */\nexport const zSetSessionModeRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n modeId: zSessionModeId,\n sessionId: zSessionId,\n});\n/**\n * Response to `session/set_mode` method.\n */\nexport const zSetSessionModeResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Request parameters for setting a session model.\n *\n * @experimental\n */\nexport const zSetSessionModelRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n modelId: zModelId,\n sessionId: zSessionId,\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Response to `session/set_model` method.\n *\n * @experimental\n */\nexport const zSetSessionModelResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\n/**\n * Reasons why an agent stops processing a prompt turn.\n *\n * See protocol docs: [Stop Reasons](https://agentclientprotocol.com/protocol/prompt-turn#stop-reasons)\n */\nexport const zStopReason = z.union([\n z.literal(\"end_turn\"),\n z.literal(\"max_tokens\"),\n z.literal(\"max_turn_requests\"),\n z.literal(\"refusal\"),\n z.literal(\"cancelled\"),\n]);\n/**\n * Embed a terminal created with `terminal/create` by its id.\n *\n * The terminal must be added before calling `terminal/release`.\n *\n * See protocol docs: [Terminal](https://agentclientprotocol.com/protocol/terminals)\n */\nexport const zTerminal = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n terminalId: z.string(),\n});\n/**\n * Exit status of a terminal command.\n */\nexport const zTerminalExitStatus = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n exitCode: z\n .number()\n .int()\n .gte(0)\n .max(4294967295, {\n message: \"Invalid value: Expected uint32 to be <= 4294967295\",\n })\n .nullish(),\n signal: z.string().nullish(),\n});\n/**\n * Request to get the current output and status of a terminal.\n */\nexport const zTerminalOutputRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n sessionId: zSessionId,\n terminalId: z.string(),\n});\n/**\n * Response containing the terminal output and exit status.\n */\nexport const zTerminalOutputResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n exitStatus: zTerminalExitStatus.nullish(),\n output: z.string(),\n truncated: z.boolean(),\n});\n/**\n * Text provided to or from an LLM.\n */\nexport const zTextContent = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n annotations: zAnnotations.nullish(),\n text: z.string(),\n});\n/**\n * Text-based resource contents.\n */\nexport const zTextResourceContents = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n mimeType: z.string().nullish(),\n text: z.string(),\n uri: z.string(),\n});\n/**\n * Resource content that can be embedded in a message.\n */\nexport const zEmbeddedResourceResource = z.union([\n zTextResourceContents,\n zBlobResourceContents,\n]);\n/**\n * The contents of a resource, embedded into a prompt or tool call result.\n */\nexport const zEmbeddedResource = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n annotations: zAnnotations.nullish(),\n resource: zEmbeddedResourceResource,\n});\n/**\n * Content blocks represent displayable information in the Agent Client Protocol.\n *\n * They provide a structured way to handle various types of user-facing content—whether\n * it's text from language models, images for analysis, or embedded resources for context.\n *\n * Content blocks appear in:\n * - User prompts sent via `session/prompt`\n * - Language model output streamed through `session/update` notifications\n * - Progress updates and results from tool calls\n *\n * This structure is compatible with the Model Context Protocol (MCP), enabling\n * agents to seamlessly forward content from MCP tool outputs without transformation.\n *\n * See protocol docs: [Content](https://agentclientprotocol.com/protocol/content)\n */\nexport const zContentBlock = z.union([\n zTextContent.and(z.object({\n type: z.literal(\"text\"),\n })),\n zImageContent.and(z.object({\n type: z.literal(\"image\"),\n })),\n zAudioContent.and(z.object({\n type: z.literal(\"audio\"),\n })),\n zResourceLink.and(z.object({\n type: z.literal(\"resource_link\"),\n })),\n zEmbeddedResource.and(z.object({\n type: z.literal(\"resource\"),\n })),\n]);\n/**\n * Standard content block (text, images, resources).\n */\nexport const zContent = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n content: zContentBlock,\n});\n/**\n * A streamed item of content\n */\nexport const zContentChunk = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n content: zContentBlock,\n messageId: z.string().nullish(),\n});\n/**\n * Request parameters for sending a user prompt to the agent.\n *\n * Contains the user's message and any additional context.\n *\n * See protocol docs: [User Message](https://agentclientprotocol.com/protocol/prompt-turn#1-user-message)\n */\nexport const zPromptRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n messageId: z.string().nullish(),\n prompt: z.array(zContentBlock),\n sessionId: zSessionId,\n});\nexport const zClientRequest = z.object({\n id: zRequestId,\n method: z.string(),\n params: z\n .union([\n zInitializeRequest,\n zAuthenticateRequest,\n zNewSessionRequest,\n zLoadSessionRequest,\n zListSessionsRequest,\n zForkSessionRequest,\n zResumeSessionRequest,\n zCloseSessionRequest,\n zSetSessionModeRequest,\n zSetSessionConfigOptionRequest,\n zPromptRequest,\n zSetSessionModelRequest,\n zExtRequest,\n ])\n .nullish(),\n});\n/**\n * Content produced by a tool call.\n *\n * Tool calls can produce different types of content including\n * standard content blocks (text, images) or file diffs.\n *\n * See protocol docs: [Content](https://agentclientprotocol.com/protocol/tool-calls#content)\n */\nexport const zToolCallContent = z.union([\n zContent.and(z.object({\n type: z.literal(\"content\"),\n })),\n zDiff.and(z.object({\n type: z.literal(\"diff\"),\n })),\n zTerminal.and(z.object({\n type: z.literal(\"terminal\"),\n })),\n]);\n/**\n * Unique identifier for a tool call within a session.\n */\nexport const zToolCallId = z.string();\n/**\n * A file location being accessed or modified by a tool.\n *\n * Enables clients to implement \"follow-along\" features that track\n * which files the agent is working with in real-time.\n *\n * See protocol docs: [Following the Agent](https://agentclientprotocol.com/protocol/tool-calls#following-the-agent)\n */\nexport const zToolCallLocation = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n line: z\n .number()\n .int()\n .gte(0)\n .max(4294967295, {\n message: \"Invalid value: Expected uint32 to be <= 4294967295\",\n })\n .nullish(),\n path: z.string(),\n});\n/**\n * Execution status of a tool call.\n *\n * Tool calls progress through different statuses during their lifecycle.\n *\n * See protocol docs: [Status](https://agentclientprotocol.com/protocol/tool-calls#status)\n */\nexport const zToolCallStatus = z.union([\n z.literal(\"pending\"),\n z.literal(\"in_progress\"),\n z.literal(\"completed\"),\n z.literal(\"failed\"),\n]);\n/**\n * Categories of tools that can be invoked.\n *\n * Tool kinds help clients choose appropriate icons and optimize how they\n * display tool execution progress.\n *\n * See protocol docs: [Creating](https://agentclientprotocol.com/protocol/tool-calls#creating)\n */\nexport const zToolKind = z.union([\n z.literal(\"read\"),\n z.literal(\"edit\"),\n z.literal(\"delete\"),\n z.literal(\"move\"),\n z.literal(\"search\"),\n z.literal(\"execute\"),\n z.literal(\"think\"),\n z.literal(\"fetch\"),\n z.literal(\"switch_mode\"),\n z.literal(\"other\"),\n]);\n/**\n * Represents a tool call that the language model has requested.\n *\n * Tool calls are actions that the agent executes on behalf of the language model,\n * such as reading files, executing code, or fetching data from external sources.\n *\n * See protocol docs: [Tool Calls](https://agentclientprotocol.com/protocol/tool-calls)\n */\nexport const zToolCall = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n content: z.array(zToolCallContent).optional(),\n kind: zToolKind.optional(),\n locations: z.array(zToolCallLocation).optional(),\n rawInput: z.unknown().optional(),\n rawOutput: z.unknown().optional(),\n status: zToolCallStatus.optional(),\n title: z.string(),\n toolCallId: zToolCallId,\n});\n/**\n * An update to an existing tool call.\n *\n * Used to report progress and results as tools execute. All fields except\n * the tool call ID are optional - only changed fields need to be included.\n *\n * See protocol docs: [Updating](https://agentclientprotocol.com/protocol/tool-calls#updating)\n */\nexport const zToolCallUpdate = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n content: z.array(zToolCallContent).nullish(),\n kind: zToolKind.nullish(),\n locations: z.array(zToolCallLocation).nullish(),\n rawInput: z.unknown().optional(),\n rawOutput: z.unknown().optional(),\n status: zToolCallStatus.nullish(),\n title: z.string().nullish(),\n toolCallId: zToolCallId,\n});\n/**\n * Request for user permission to execute a tool call.\n *\n * Sent when the agent needs authorization before performing a sensitive operation.\n *\n * See protocol docs: [Requesting Permission](https://agentclientprotocol.com/protocol/tool-calls#requesting-permission)\n */\nexport const zRequestPermissionRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n options: z.array(zPermissionOption),\n sessionId: zSessionId,\n toolCall: zToolCallUpdate,\n});\n/**\n * All text that was typed after the command name is provided as input.\n */\nexport const zUnstructuredCommandInput = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n hint: z.string(),\n});\n/**\n * unstructured\n *\n * All text that was typed after the command name is provided as input.\n */\nexport const zAvailableCommandInput = zUnstructuredCommandInput;\n/**\n * Information about a command.\n */\nexport const zAvailableCommand = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n description: z.string(),\n input: zAvailableCommandInput.nullish(),\n name: z.string(),\n});\n/**\n * Available commands are ready or have changed\n */\nexport const zAvailableCommandsUpdate = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n availableCommands: z.array(zAvailableCommand),\n});\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Token usage information for a prompt turn.\n *\n * @experimental\n */\nexport const zUsage = z.object({\n cachedReadTokens: z.number().nullish(),\n cachedWriteTokens: z.number().nullish(),\n inputTokens: z.number(),\n outputTokens: z.number(),\n thoughtTokens: z.number().nullish(),\n totalTokens: z.number(),\n});\n/**\n * Response from processing a user prompt.\n *\n * See protocol docs: [Check for Completion](https://agentclientprotocol.com/protocol/prompt-turn#4-check-for-completion)\n */\nexport const zPromptResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n stopReason: zStopReason,\n usage: zUsage.nullish(),\n userMessageId: z.string().nullish(),\n});\nexport const zAgentResponse = z.union([\n z.object({\n id: zRequestId,\n result: z.union([\n zInitializeResponse,\n zAuthenticateResponse,\n zNewSessionResponse,\n zLoadSessionResponse,\n zListSessionsResponse,\n zForkSessionResponse,\n zResumeSessionResponse,\n zCloseSessionResponse,\n zSetSessionModeResponse,\n zSetSessionConfigOptionResponse,\n zPromptResponse,\n zSetSessionModelResponse,\n zExtResponse,\n ]),\n }),\n z.object({\n error: zError,\n id: zRequestId,\n }),\n]);\n/**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Context window and cost update for a session.\n *\n * @experimental\n */\nexport const zUsageUpdate = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n cost: zCost.nullish(),\n size: z.number(),\n used: z.number(),\n});\n/**\n * Different types of updates that can be sent during session processing.\n *\n * These updates provide real-time feedback about the agent's progress.\n *\n * See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-turn#3-agent-reports-output)\n */\nexport const zSessionUpdate = z.union([\n zContentChunk.and(z.object({\n sessionUpdate: z.literal(\"user_message_chunk\"),\n })),\n zContentChunk.and(z.object({\n sessionUpdate: z.literal(\"agent_message_chunk\"),\n })),\n zContentChunk.and(z.object({\n sessionUpdate: z.literal(\"agent_thought_chunk\"),\n })),\n zToolCall.and(z.object({\n sessionUpdate: z.literal(\"tool_call\"),\n })),\n zToolCallUpdate.and(z.object({\n sessionUpdate: z.literal(\"tool_call_update\"),\n })),\n zPlan.and(z.object({\n sessionUpdate: z.literal(\"plan\"),\n })),\n zAvailableCommandsUpdate.and(z.object({\n sessionUpdate: z.literal(\"available_commands_update\"),\n })),\n zCurrentModeUpdate.and(z.object({\n sessionUpdate: z.literal(\"current_mode_update\"),\n })),\n zConfigOptionUpdate.and(z.object({\n sessionUpdate: z.literal(\"config_option_update\"),\n })),\n zSessionInfoUpdate.and(z.object({\n sessionUpdate: z.literal(\"session_info_update\"),\n })),\n zUsageUpdate.and(z.object({\n sessionUpdate: z.literal(\"usage_update\"),\n })),\n]);\n/**\n * Notification containing a session update from the agent.\n *\n * Used to stream real-time progress and results during prompt processing.\n *\n * See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-turn#3-agent-reports-output)\n */\nexport const zSessionNotification = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n sessionId: zSessionId,\n update: zSessionUpdate,\n});\nexport const zAgentNotification = z.object({\n method: z.string(),\n params: z.union([zSessionNotification, zExtNotification]).nullish(),\n});\n/**\n * Request to wait for a terminal command to exit.\n */\nexport const zWaitForTerminalExitRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n sessionId: zSessionId,\n terminalId: z.string(),\n});\n/**\n * Response containing the exit status of a terminal command.\n */\nexport const zWaitForTerminalExitResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n exitCode: z\n .number()\n .int()\n .gte(0)\n .max(4294967295, {\n message: \"Invalid value: Expected uint32 to be <= 4294967295\",\n })\n .nullish(),\n signal: z.string().nullish(),\n});\n/**\n * Request to write content to a text file.\n *\n * Only available if the client supports the `fs.writeTextFile` capability.\n */\nexport const zWriteTextFileRequest = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n content: z.string(),\n path: z.string(),\n sessionId: zSessionId,\n});\nexport const zAgentRequest = z.object({\n id: zRequestId,\n method: z.string(),\n params: z\n .union([\n zWriteTextFileRequest,\n zReadTextFileRequest,\n zRequestPermissionRequest,\n zCreateTerminalRequest,\n zTerminalOutputRequest,\n zReleaseTerminalRequest,\n zWaitForTerminalExitRequest,\n zKillTerminalRequest,\n zExtRequest,\n ])\n .nullish(),\n});\n/**\n * Response to `fs/write_text_file`\n */\nexport const zWriteTextFileResponse = z.object({\n _meta: z.record(z.string(), z.unknown()).nullish(),\n});\nexport const zClientResponse = z.union([\n z.object({\n id: zRequestId,\n result: z.union([\n zWriteTextFileResponse,\n zReadTextFileResponse,\n zRequestPermissionResponse,\n zCreateTerminalResponse,\n zTerminalOutputResponse,\n zReleaseTerminalResponse,\n zWaitForTerminalExitResponse,\n zKillTerminalResponse,\n zExtResponse,\n ]),\n }),\n z.object({\n error: zError,\n id: zRequestId,\n }),\n]);\n//# sourceMappingURL=zod.gen.js.map","/**\n * Creates an ACP Stream from a pair of newline-delimited JSON streams.\n *\n * This is the typical way to handle ACP connections over stdio, converting\n * between AnyMessage objects and newline-delimited JSON.\n *\n * @param output - The writable stream to send encoded messages to\n * @param input - The readable stream to receive encoded messages from\n * @returns A Stream for bidirectional ACP communication\n */\nexport function ndJsonStream(output, input) {\n const textEncoder = new TextEncoder();\n const textDecoder = new TextDecoder();\n const readable = new ReadableStream({\n async start(controller) {\n let content = \"\";\n const reader = input.getReader();\n try {\n while (true) {\n const { value, done } = await reader.read();\n if (done) {\n break;\n }\n if (!value) {\n continue;\n }\n content += textDecoder.decode(value, { stream: true });\n const lines = content.split(\"\\n\");\n content = lines.pop() || \"\";\n for (const line of lines) {\n const trimmedLine = line.trim();\n if (trimmedLine) {\n try {\n const message = JSON.parse(trimmedLine);\n controller.enqueue(message);\n }\n catch (err) {\n console.error(\"Failed to parse JSON message:\", trimmedLine, err);\n }\n }\n }\n }\n }\n finally {\n reader.releaseLock();\n controller.close();\n }\n },\n });\n const writable = new WritableStream({\n async write(message) {\n const content = JSON.stringify(message) + \"\\n\";\n const writer = output.getWriter();\n try {\n await writer.write(textEncoder.encode(content));\n }\n finally {\n writer.releaseLock();\n }\n },\n });\n return { readable, writable };\n}\n//# sourceMappingURL=stream.js.map","import { z } from \"zod\";\nimport * as schema from \"./schema/index.js\";\nimport * as validate from \"./schema/zod.gen.js\";\nexport * from \"./schema/index.js\";\nexport * from \"./stream.js\";\n/**\n * An agent-side connection to a client.\n *\n * This class provides the agent's view of an ACP connection, allowing\n * agents to communicate with clients. It implements the {@link Client} interface\n * to provide methods for requesting permissions, accessing the file system,\n * and sending session updates.\n *\n * See protocol docs: [Agent](https://agentclientprotocol.com/protocol/overview#agent)\n */\nexport class AgentSideConnection {\n #connection;\n /**\n * Creates a new agent-side connection to a client.\n *\n * This establishes the communication channel from the agent's perspective\n * following the ACP specification.\n *\n * @param toAgent - A function that creates an Agent handler to process incoming client requests\n * @param stream - The bidirectional message stream for communication. Typically created using\n * {@link ndJsonStream} for stdio-based connections.\n *\n * See protocol docs: [Communication Model](https://agentclientprotocol.com/protocol/overview#communication-model)\n */\n constructor(toAgent, stream) {\n const agent = toAgent(this);\n const requestHandler = async (method, params) => {\n switch (method) {\n case schema.AGENT_METHODS.initialize: {\n const validatedParams = validate.zInitializeRequest.parse(params);\n return agent.initialize(validatedParams);\n }\n case schema.AGENT_METHODS.session_new: {\n const validatedParams = validate.zNewSessionRequest.parse(params);\n return agent.newSession(validatedParams);\n }\n case schema.AGENT_METHODS.session_load: {\n if (!agent.loadSession) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zLoadSessionRequest.parse(params);\n return agent.loadSession(validatedParams);\n }\n case schema.AGENT_METHODS.session_list: {\n if (!agent.listSessions) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zListSessionsRequest.parse(params);\n return agent.listSessions(validatedParams);\n }\n case schema.AGENT_METHODS.session_fork: {\n if (!agent.unstable_forkSession) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zForkSessionRequest.parse(params);\n return agent.unstable_forkSession(validatedParams);\n }\n case schema.AGENT_METHODS.session_resume: {\n if (!agent.unstable_resumeSession) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zResumeSessionRequest.parse(params);\n return agent.unstable_resumeSession(validatedParams);\n }\n case schema.AGENT_METHODS.session_close: {\n if (!agent.unstable_closeSession) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zCloseSessionRequest.parse(params);\n return agent.unstable_closeSession(validatedParams);\n }\n case schema.AGENT_METHODS.session_set_mode: {\n if (!agent.setSessionMode) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zSetSessionModeRequest.parse(params);\n const result = await agent.setSessionMode(validatedParams);\n return result ?? {};\n }\n case schema.AGENT_METHODS.authenticate: {\n const validatedParams = validate.zAuthenticateRequest.parse(params);\n const result = await agent.authenticate(validatedParams);\n return result ?? {};\n }\n case schema.AGENT_METHODS.session_prompt: {\n const validatedParams = validate.zPromptRequest.parse(params);\n return agent.prompt(validatedParams);\n }\n case schema.AGENT_METHODS.session_set_model: {\n if (!agent.unstable_setSessionModel) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zSetSessionModelRequest.parse(params);\n const result = await agent.unstable_setSessionModel(validatedParams);\n return result ?? {};\n }\n case schema.AGENT_METHODS.session_set_config_option: {\n if (!agent.setSessionConfigOption) {\n throw RequestError.methodNotFound(method);\n }\n const validatedParams = validate.zSetSessionConfigOptionRequest.parse(params);\n return agent.setSessionConfigOption(validatedParams);\n }\n default:\n if (agent.extMethod) {\n return agent.extMethod(method, params);\n }\n throw RequestError.methodNotFound(method);\n }\n };\n const notificationHandler = async (method, params) => {\n switch (method) {\n case schema.AGENT_METHODS.session_cancel: {\n const validatedParams = validate.zCancelNotification.parse(params);\n return agent.cancel(validatedParams);\n }\n default:\n if (agent.extNotification) {\n return agent.extNotification(method, params);\n }\n throw RequestError.methodNotFound(method);\n }\n };\n this.#connection = new Connection(requestHandler, notificationHandler, stream);\n }\n /**\n * Handles session update notifications from the agent.\n *\n * This is a notification endpoint (no response expected) that sends\n * real-time updates about session progress, including message chunks,\n * tool calls, and execution plans.\n *\n * Note: Clients SHOULD continue accepting tool call updates even after\n * sending a `session/cancel` notification, as the agent may send final\n * updates before responding with the cancelled stop reason.\n *\n * See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-turn#3-agent-reports-output)\n */\n async sessionUpdate(params) {\n return await this.#connection.sendNotification(schema.CLIENT_METHODS.session_update, params);\n }\n /**\n * Requests permission from the user for a tool call operation.\n *\n * Called by the agent when it needs user authorization before executing\n * a potentially sensitive operation. The client should present the options\n * to the user and return their decision.\n *\n * If the client cancels the prompt turn via `session/cancel`, it MUST\n * respond to this request with `RequestPermissionOutcome::Cancelled`.\n *\n * See protocol docs: [Requesting Permission](https://agentclientprotocol.com/protocol/tool-calls#requesting-permission)\n */\n async requestPermission(params) {\n return await this.#connection.sendRequest(schema.CLIENT_METHODS.session_request_permission, params);\n }\n /**\n * Reads content from a text file in the client's file system.\n *\n * Only available if the client advertises the `fs.readTextFile` capability.\n * Allows the agent to access file contents within the client's environment.\n *\n * See protocol docs: [Client](https://agentclientprotocol.com/protocol/overview#client)\n */\n async readTextFile(params) {\n return await this.#connection.sendRequest(schema.CLIENT_METHODS.fs_read_text_file, params);\n }\n /**\n * Writes content to a text file in the client's file system.\n *\n * Only available if the client advertises the `fs.writeTextFile` capability.\n * Allows the agent to create or modify files within the client's environment.\n *\n * See protocol docs: [Client](https://agentclientprotocol.com/protocol/overview#client)\n */\n async writeTextFile(params) {\n return ((await this.#connection.sendRequest(schema.CLIENT_METHODS.fs_write_text_file, params)) ?? {});\n }\n /**\n * Executes a command in a new terminal.\n *\n * Returns a `TerminalHandle` that can be used to get output, wait for exit,\n * kill the command, or release the terminal.\n *\n * The terminal can also be embedded in tool calls by using its ID in\n * `ToolCallContent` with type \"terminal\".\n *\n * @param params - The terminal creation parameters\n * @returns A handle to control and monitor the terminal\n */\n async createTerminal(params) {\n const response = await this.#connection.sendRequest(schema.CLIENT_METHODS.terminal_create, params);\n return new TerminalHandle(response.terminalId, params.sessionId, this.#connection);\n }\n /**\n * Extension method\n *\n * Allows the Agent to send an arbitrary request that is not part of the ACP spec.\n */\n async extMethod(method, params) {\n return await this.#connection.sendRequest(method, params);\n }\n /**\n * Extension notification\n *\n * Allows the Agent to send an arbitrary notification that is not part of the ACP spec.\n */\n async extNotification(method, params) {\n return await this.#connection.sendNotification(method, params);\n }\n /**\n * AbortSignal that aborts when the connection closes.\n *\n * This signal can be used to:\n * - Listen for connection closure: `connection.signal.addEventListener('abort', () => {...})`\n * - Check connection status synchronously: `if (connection.signal.aborted) {...}`\n * - Pass to other APIs (fetch, setTimeout) for automatic cancellation\n *\n * The connection closes when the underlying stream ends, either normally or due to an error.\n *\n * @example\n * ```typescript\n * const connection = new AgentSideConnection(agent, stream);\n *\n * // Listen for closure\n * connection.signal.addEventListener('abort', () => {\n * console.log('Connection closed - performing cleanup');\n * });\n *\n * // Check status\n * if (connection.signal.aborted) {\n * console.log('Connection is already closed');\n * }\n *\n * // Pass to other APIs\n * fetch(url, { signal: connection.signal });\n * ```\n */\n get signal() {\n return this.#connection.signal;\n }\n /**\n * Promise that resolves when the connection closes.\n *\n * The connection closes when the underlying stream ends, either normally or due to an error.\n * Once closed, the connection cannot send or receive any more messages.\n *\n * This is useful for async/await style cleanup:\n *\n * @example\n * ```typescript\n * const connection = new AgentSideConnection(agent, stream);\n * await connection.closed;\n * console.log('Connection closed - performing cleanup');\n * ```\n */\n get closed() {\n return this.#connection.closed;\n }\n}\n/**\n * Handle for controlling and monitoring a terminal created via `createTerminal`.\n *\n * Provides methods to:\n * - Get current output without waiting\n * - Wait for command completion\n * - Kill the running command\n * - Release terminal resources\n *\n * **Important:** Always call `release()` when done with the terminal to free resources.\n\n * The terminal supports async disposal via `Symbol.asyncDispose` for automatic cleanup.\n\n * You can use `await using` to ensure the terminal is automatically released when it\n * goes out of scope.\n */\nexport class TerminalHandle {\n id;\n #sessionId;\n #connection;\n constructor(id, sessionId, conn) {\n this.id = id;\n this.#sessionId = sessionId;\n this.#connection = conn;\n }\n /**\n * Gets the current terminal output without waiting for the command to exit.\n */\n async currentOutput() {\n return await this.#connection.sendRequest(schema.CLIENT_METHODS.terminal_output, {\n sessionId: this.#sessionId,\n terminalId: this.id,\n });\n }\n /**\n * Waits for the terminal command to complete and returns its exit status.\n */\n async waitForExit() {\n return await this.#connection.sendRequest(schema.CLIENT_METHODS.terminal_wait_for_exit, {\n sessionId: this.#sessionId,\n terminalId: this.id,\n });\n }\n /**\n * Kills the terminal command without releasing the terminal.\n *\n * The terminal remains valid after killing, allowing you to:\n * - Get the final output with `currentOutput()`\n * - Check the exit status\n * - Release the terminal when done\n *\n * Useful for implementing timeouts or cancellation.\n */\n async kill() {\n return ((await this.#connection.sendRequest(schema.CLIENT_METHODS.terminal_kill, {\n sessionId: this.#sessionId,\n terminalId: this.id,\n })) ?? {});\n }\n /**\n * Releases the terminal and frees all associated resources.\n *\n * If the command is still running, it will be killed.\n * After release, the terminal ID becomes invalid and cannot be used\n * with other terminal methods.\n *\n * Tool calls that already reference this terminal will continue to\n * display its output.\n *\n * **Important:** Always call this method when done with the terminal.\n */\n async release() {\n return ((await this.#connection.sendRequest(schema.CLIENT_METHODS.terminal_release, {\n sessionId: this.#sessionId,\n terminalId: this.id,\n })) ?? {});\n }\n async [Symbol.asyncDispose]() {\n await this.release();\n }\n}\n/**\n * A client-side connection to an agent.\n *\n * This class provides the client's view of an ACP connection, allowing\n * clients (such as code editors) to communicate with agents. It implements\n * the {@link Agent} interface to provide methods for initializing sessions, sending\n * prompts, and managing the agent lifecycle.\n *\n * See protocol docs: [Client](https://agentclientprotocol.com/protocol/overview#client)\n */\nexport class ClientSideConnection {\n #connection;\n /**\n * Creates a new client-side connection to an agent.\n *\n * This establishes the communication channel between a client and agent\n * following the ACP specification.\n *\n * @param toClient - A function that creates a Client handler to process incoming agent requests\n * @param stream - The bidirectional message stream for communication. Typically created using\n * {@link ndJsonStream} for stdio-based connections.\n *\n * See protocol docs: [Communication Model](https://agentclientprotocol.com/protocol/overview#communication-model)\n */\n constructor(toClient, stream) {\n const client = toClient(this);\n const requestHandler = async (method, params) => {\n switch (method) {\n case schema.CLIENT_METHODS.fs_write_text_file: {\n const validatedParams = validate.zWriteTextFileRequest.parse(params);\n return client.writeTextFile?.(validatedParams);\n }\n case schema.CLIENT_METHODS.fs_read_text_file: {\n const validatedParams = validate.zReadTextFileRequest.parse(params);\n return client.readTextFile?.(validatedParams);\n }\n case schema.CLIENT_METHODS.session_request_permission: {\n const validatedParams = validate.zRequestPermissionRequest.parse(params);\n return client.requestPermission(validatedParams);\n }\n case schema.CLIENT_METHODS.terminal_create: {\n const validatedParams = validate.zCreateTerminalRequest.parse(params);\n return client.createTerminal?.(validatedParams);\n }\n case schema.CLIENT_METHODS.terminal_output: {\n const validatedParams = validate.zTerminalOutputRequest.parse(params);\n return client.terminalOutput?.(validatedParams);\n }\n case schema.CLIENT_METHODS.terminal_release: {\n const validatedParams = validate.zReleaseTerminalRequest.parse(params);\n const result = await client.releaseTerminal?.(validatedParams);\n return result ?? {};\n }\n case schema.CLIENT_METHODS.terminal_wait_for_exit: {\n const validatedParams = validate.zWaitForTerminalExitRequest.parse(params);\n return client.waitForTerminalExit?.(validatedParams);\n }\n case schema.CLIENT_METHODS.terminal_kill: {\n const validatedParams = validate.zKillTerminalRequest.parse(params);\n const result = await client.killTerminal?.(validatedParams);\n return result ?? {};\n }\n default:\n if (client.extMethod) {\n return client.extMethod(method, params);\n }\n throw RequestError.methodNotFound(method);\n }\n };\n const notificationHandler = async (method, params) => {\n switch (method) {\n case schema.CLIENT_METHODS.session_update: {\n const validatedParams = validate.zSessionNotification.parse(params);\n return client.sessionUpdate(validatedParams);\n }\n default:\n if (client.extNotification) {\n return client.extNotification(method, params);\n }\n throw RequestError.methodNotFound(method);\n }\n };\n this.#connection = new Connection(requestHandler, notificationHandler, stream);\n }\n /**\n * Establishes the connection with a client and negotiates protocol capabilities.\n *\n * This method is called once at the beginning of the connection to:\n * - Negotiate the protocol version to use\n * - Exchange capability information between client and agent\n * - Determine available authentication methods\n *\n * The agent should respond with its supported protocol version and capabilities.\n *\n * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)\n */\n async initialize(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.initialize, params);\n }\n /**\n * Creates a new conversation session with the agent.\n *\n * Sessions represent independent conversation contexts with their own history and state.\n *\n * The agent should:\n * - Create a new session context\n * - Connect to any specified MCP servers\n * - Return a unique session ID for future requests\n *\n * May return an `auth_required` error if the agent requires authentication.\n *\n * See protocol docs: [Session Setup](https://agentclientprotocol.com/protocol/session-setup)\n */\n async newSession(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.session_new, params);\n }\n /**\n * Loads an existing session to resume a previous conversation.\n *\n * This method is only available if the agent advertises the `loadSession` capability.\n *\n * The agent should:\n * - Restore the session context and conversation history\n * - Connect to the specified MCP servers\n * - Stream the entire conversation history back to the client via notifications\n *\n * See protocol docs: [Loading Sessions](https://agentclientprotocol.com/protocol/session-setup#loading-sessions)\n */\n async loadSession(params) {\n return ((await this.#connection.sendRequest(schema.AGENT_METHODS.session_load, params)) ?? {});\n }\n /**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Forks an existing session to create a new independent session.\n *\n * Creates a new session based on the context of an existing one, allowing\n * operations like generating summaries without affecting the original session's history.\n *\n * This method is only available if the agent advertises the `session.fork` capability.\n *\n * @experimental\n */\n async unstable_forkSession(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.session_fork, params);\n }\n /**\n * Lists existing sessions from the agent.\n *\n * This method is only available if the agent advertises the `listSessions` capability.\n *\n * Returns a list of sessions with metadata like session ID, working directory,\n * title, and last update time. Supports filtering by working directory and\n * cursor-based pagination.\n */\n async listSessions(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.session_list, params);\n }\n /**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Resumes an existing session without returning previous messages.\n *\n * This method is only available if the agent advertises the `session.resume` capability.\n *\n * The agent should resume the session context, allowing the conversation to continue\n * without replaying the message history (unlike `session/load`).\n *\n * @experimental\n */\n async unstable_resumeSession(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.session_resume, params);\n }\n /**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Closes an active session and frees up any resources associated with it.\n *\n * This method is only available if the agent advertises the `session.close` capability.\n *\n * The agent must cancel any ongoing work (as if `session/cancel` was called)\n * and then free up any resources associated with the session.\n *\n * @experimental\n */\n async unstable_closeSession(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.session_close, params);\n }\n /**\n * Sets the operational mode for a session.\n *\n * Allows switching between different agent modes (e.g., \"ask\", \"architect\", \"code\")\n * that affect system prompts, tool availability, and permission behaviors.\n *\n * The mode must be one of the modes advertised in `availableModes` during session\n * creation or loading. Agents may also change modes autonomously and notify the\n * client via `current_mode_update` notifications.\n *\n * This method can be called at any time during a session, whether the Agent is\n * idle or actively generating a turn.\n *\n * See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)\n */\n async setSessionMode(params) {\n return ((await this.#connection.sendRequest(schema.AGENT_METHODS.session_set_mode, params)) ?? {});\n }\n /**\n * **UNSTABLE**\n *\n * This capability is not part of the spec yet, and may be removed or changed at any point.\n *\n * Select a model for a given session.\n *\n * @experimental\n */\n async unstable_setSessionModel(params) {\n return ((await this.#connection.sendRequest(schema.AGENT_METHODS.session_set_model, params)) ?? {});\n }\n /**\n * Set a configuration option for a given session.\n *\n * The response contains the full set of configuration options and their current values,\n * as changing one option may affect the available values or state of other options.\n */\n async setSessionConfigOption(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.session_set_config_option, params);\n }\n /**\n * Authenticates the client using the specified authentication method.\n *\n * Called when the agent requires authentication before allowing session creation.\n * The client provides the authentication method ID that was advertised during initialization.\n *\n * After successful authentication, the client can proceed to create sessions with\n * `newSession` without receiving an `auth_required` error.\n *\n * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)\n */\n async authenticate(params) {\n return ((await this.#connection.sendRequest(schema.AGENT_METHODS.authenticate, params)) ?? {});\n }\n /**\n * Processes a user prompt within a session.\n *\n * This method handles the whole lifecycle of a prompt:\n * - Receives user messages with optional context (files, images, etc.)\n * - Processes the prompt using language models\n * - Reports language model content and tool calls to the Clients\n * - Requests permission to run tools\n * - Executes any requested tool calls\n * - Returns when the turn is complete with a stop reason\n *\n * See protocol docs: [Prompt Turn](https://agentclientprotocol.com/protocol/prompt-turn)\n */\n async prompt(params) {\n return await this.#connection.sendRequest(schema.AGENT_METHODS.session_prompt, params);\n }\n /**\n * Cancels ongoing operations for a session.\n *\n * This is a notification sent by the client to cancel an ongoing prompt turn.\n *\n * Upon receiving this notification, the Agent SHOULD:\n * - Stop all language model requests as soon as possible\n * - Abort all tool call invocations in progress\n * - Send any pending `session/update` notifications\n * - Respond to the original `session/prompt` request with `StopReason::Cancelled`\n *\n * See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/prompt-turn#cancellation)\n */\n async cancel(params) {\n return await this.#connection.sendNotification(schema.AGENT_METHODS.session_cancel, params);\n }\n /**\n * Extension method\n *\n * Allows the Client to send an arbitrary request that is not part of the ACP spec.\n */\n async extMethod(method, params) {\n return await this.#connection.sendRequest(method, params);\n }\n /**\n * Extension notification\n *\n * Allows the Client to send an arbitrary notification that is not part of the ACP spec.\n */\n async extNotification(method, params) {\n return await this.#connection.sendNotification(method, params);\n }\n /**\n * AbortSignal that aborts when the connection closes.\n *\n * This signal can be used to:\n * - Listen for connection closure: `connection.signal.addEventListener('abort', () => {...})`\n * - Check connection status synchronously: `if (connection.signal.aborted) {...}`\n * - Pass to other APIs (fetch, setTimeout) for automatic cancellation\n *\n * The connection closes when the underlying stream ends, either normally or due to an error.\n *\n * @example\n * ```typescript\n * const connection = new ClientSideConnection(client, stream);\n *\n * // Listen for closure\n * connection.signal.addEventListener('abort', () => {\n * console.log('Connection closed - performing cleanup');\n * });\n *\n * // Check status\n * if (connection.signal.aborted) {\n * console.log('Connection is already closed');\n * }\n *\n * // Pass to other APIs\n * fetch(url, { signal: connection.signal });\n * ```\n */\n get signal() {\n return this.#connection.signal;\n }\n /**\n * Promise that resolves when the connection closes.\n *\n * The connection closes when the underlying stream ends, either normally or due to an error.\n * Once closed, the connection cannot send or receive any more messages.\n *\n * This is useful for async/await style cleanup:\n *\n * @example\n * ```typescript\n * const connection = new ClientSideConnection(client, stream);\n * await connection.closed;\n * console.log('Connection closed - performing cleanup');\n * ```\n */\n get closed() {\n return this.#connection.closed;\n }\n}\nclass Connection {\n #pendingResponses = new Map();\n #nextRequestId = 0;\n #requestHandler;\n #notificationHandler;\n #stream;\n #writeQueue = Promise.resolve();\n #abortController = new AbortController();\n #closedPromise;\n constructor(requestHandler, notificationHandler, stream) {\n this.#requestHandler = requestHandler;\n this.#notificationHandler = notificationHandler;\n this.#stream = stream;\n this.#closedPromise = new Promise((resolve) => {\n this.#abortController.signal.addEventListener(\"abort\", () => resolve());\n });\n this.#receive();\n }\n /**\n * AbortSignal that aborts when the connection closes.\n *\n * This signal can be used to:\n * - Listen for connection closure via event listeners\n * - Check connection status synchronously with `signal.aborted`\n * - Pass to other APIs (fetch, setTimeout) for automatic cancellation\n */\n get signal() {\n return this.#abortController.signal;\n }\n /**\n * Promise that resolves when the connection closes.\n *\n * The connection closes when the underlying stream ends, either normally\n * or due to an error. Once closed, the connection cannot send or receive\n * any more messages.\n *\n * @example\n * ```typescript\n * const connection = new ClientSideConnection(client, stream);\n * await connection.closed;\n * console.log('Connection closed - performing cleanup');\n * ```\n */\n get closed() {\n return this.#closedPromise;\n }\n async #receive() {\n const reader = this.#stream.readable.getReader();\n try {\n while (true) {\n const { value: message, done } = await reader.read();\n if (done) {\n break;\n }\n if (!message) {\n continue;\n }\n try {\n this.#processMessage(message);\n }\n catch (err) {\n console.error(\"Unexpected error during message processing:\", message, err);\n // Only send error response if the message had an id (was a request)\n if (\"id\" in message && message.id !== undefined) {\n this.#sendMessage({\n jsonrpc: \"2.0\",\n id: message.id,\n error: {\n code: -32700,\n message: \"Parse error\",\n },\n });\n }\n }\n }\n }\n finally {\n reader.releaseLock();\n this.#abortController.abort();\n }\n }\n async #processMessage(message) {\n if (\"method\" in message && \"id\" in message) {\n // It's a request\n const response = await this.#tryCallRequestHandler(message.method, message.params);\n if (\"error\" in response) {\n console.error(\"Error handling request\", message, response.error);\n }\n await this.#sendMessage({\n jsonrpc: \"2.0\",\n id: message.id,\n ...response,\n });\n }\n else if (\"method\" in message) {\n // It's a notification\n const response = await this.#tryCallNotificationHandler(message.method, message.params);\n if (\"error\" in response) {\n console.error(\"Error handling notification\", message, response.error);\n }\n }\n else if (\"id\" in message) {\n // It's a response\n this.#handleResponse(message);\n }\n else {\n console.error(\"Invalid message\", { message });\n }\n }\n async #tryCallRequestHandler(method, params) {\n try {\n const result = await this.#requestHandler(method, params);\n return { result: result ?? null };\n }\n catch (error) {\n if (error instanceof RequestError) {\n return error.toResult();\n }\n if (error instanceof z.ZodError) {\n return RequestError.invalidParams(error.format()).toResult();\n }\n let details;\n if (error instanceof Error) {\n details = error.message;\n }\n else if (typeof error === \"object\" &&\n error != null &&\n \"message\" in error &&\n typeof error.message === \"string\") {\n details = error.message;\n }\n try {\n return RequestError.internalError(details ? JSON.parse(details) : {}).toResult();\n }\n catch {\n return RequestError.internalError({ details }).toResult();\n }\n }\n }\n async #tryCallNotificationHandler(method, params) {\n try {\n await this.#notificationHandler(method, params);\n return { result: null };\n }\n catch (error) {\n if (error instanceof RequestError) {\n return error.toResult();\n }\n if (error instanceof z.ZodError) {\n return RequestError.invalidParams(error.format()).toResult();\n }\n let details;\n if (error instanceof Error) {\n details = error.message;\n }\n else if (typeof error === \"object\" &&\n error != null &&\n \"message\" in error &&\n typeof error.message === \"string\") {\n details = error.message;\n }\n try {\n return RequestError.internalError(details ? JSON.parse(details) : {}).toResult();\n }\n catch {\n return RequestError.internalError({ details }).toResult();\n }\n }\n }\n #handleResponse(response) {\n const pendingResponse = this.#pendingResponses.get(response.id);\n if (pendingResponse) {\n if (\"result\" in response) {\n pendingResponse.resolve(response.result);\n }\n else if (\"error\" in response) {\n pendingResponse.reject(response.error);\n }\n this.#pendingResponses.delete(response.id);\n }\n else {\n console.error(\"Got response to unknown request\", response.id);\n }\n }\n async sendRequest(method, params) {\n const id = this.#nextRequestId++;\n const responsePromise = new Promise((resolve, reject) => {\n this.#pendingResponses.set(id, { resolve, reject });\n });\n await this.#sendMessage({ jsonrpc: \"2.0\", id, method, params });\n return responsePromise;\n }\n async sendNotification(method, params) {\n await this.#sendMessage({ jsonrpc: \"2.0\", method, params });\n }\n async #sendMessage(message) {\n this.#writeQueue = this.#writeQueue\n .then(async () => {\n const writer = this.#stream.writable.getWriter();\n try {\n await writer.write(message);\n }\n finally {\n writer.releaseLock();\n }\n })\n .catch((error) => {\n // Continue processing writes on error\n console.error(\"ACP write error:\", error);\n });\n return this.#writeQueue;\n }\n}\n/**\n * JSON-RPC error object.\n *\n * Represents an error that occurred during method execution, following the\n * JSON-RPC 2.0 error object specification with optional additional data.\n *\n * See protocol docs: [JSON-RPC Error Object](https://www.jsonrpc.org/specification#error_object)\n */\nexport class RequestError extends Error {\n code;\n data;\n constructor(code, message, data) {\n super(message);\n this.code = code;\n this.name = \"RequestError\";\n this.data = data;\n }\n /**\n * Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.\n */\n static parseError(data, additionalMessage) {\n return new RequestError(-32700, `Parse error${additionalMessage ? `: ${additionalMessage}` : \"\"}`, data);\n }\n /**\n * The JSON sent is not a valid Request object.\n */\n static invalidRequest(data, additionalMessage) {\n return new RequestError(-32600, `Invalid request${additionalMessage ? `: ${additionalMessage}` : \"\"}`, data);\n }\n /**\n * The method does not exist / is not available.\n */\n static methodNotFound(method) {\n return new RequestError(-32601, `\"Method not found\": ${method}`, {\n method,\n });\n }\n /**\n * Invalid method parameter(s).\n */\n static invalidParams(data, additionalMessage) {\n return new RequestError(-32602, `Invalid params${additionalMessage ? `: ${additionalMessage}` : \"\"}`, data);\n }\n /**\n * Internal JSON-RPC error.\n */\n static internalError(data, additionalMessage) {\n return new RequestError(-32603, `Internal error${additionalMessage ? `: ${additionalMessage}` : \"\"}`, data);\n }\n /**\n * Authentication required.\n */\n static authRequired(data, additionalMessage) {\n return new RequestError(-32000, `Authentication required${additionalMessage ? `: ${additionalMessage}` : \"\"}`, data);\n }\n /**\n * Resource, such as a file, was not found\n */\n static resourceNotFound(uri) {\n return new RequestError(-32002, `Resource not found${uri ? `: ${uri}` : \"\"}`, uri && { uri });\n }\n toResult() {\n return {\n error: {\n code: this.code,\n message: this.message,\n data: this.data,\n },\n };\n }\n toErrorResponse() {\n return {\n code: this.code,\n message: this.message,\n data: this.data,\n };\n }\n}\n//# sourceMappingURL=acp.js.map","import { Predicate } from \"effect\";\n\nexport const hasStringMessage = Predicate.compose(\n Predicate.isObject,\n Predicate.compose(\n Predicate.hasProperty(\"message\"),\n Predicate.Struct({ message: Predicate.isString }),\n ),\n);\n","export type LaunchedFrom = \"cli\" | \"ci\" | \"agent\";\n\nconst CI_ENVIRONMENT_VARIABLES = [\"GITHUB_ACTIONS\", \"GITHUB_RUN_ID\", \"CI\"];\n\nconst AGENT_ENVIRONMENT_VARIABLES = [\n \"CLAUDECODE\",\n \"CURSOR_AGENT\",\n \"CODEX_CI\",\n \"OPENCODE\",\n \"AMP_HOME\",\n \"AMI\",\n];\n\nexport const detectLaunchedFrom = (): LaunchedFrom => {\n if (CI_ENVIRONMENT_VARIABLES.some((envVariable) => Boolean(process.env[envVariable])))\n return \"ci\";\n if (AGENT_ENVIRONMENT_VARIABLES.some((envVariable) => Boolean(process.env[envVariable])))\n return \"agent\";\n return \"cli\";\n};\n\nexport const isRunningInAgent = (): boolean =>\n [...CI_ENVIRONMENT_VARIABLES, ...AGENT_ENVIRONMENT_VARIABLES].some((envVariable) =>\n Boolean(process.env[envVariable]),\n );\n","import type { AgentProvider } from \"@expect/shared/models\";\n\ninterface BuildSessionMetaOptions {\n readonly provider: AgentProvider;\n readonly systemPrompt?: string;\n readonly metadata?: {\n readonly isGitHubActions?: boolean;\n };\n}\n\nexport const buildSessionMeta = ({ provider, systemPrompt, metadata }: BuildSessionMetaOptions) => {\n const meta = {\n ...(systemPrompt ? { systemPrompt } : {}),\n ...(metadata?.isGitHubActions && provider === \"claude\"\n ? {\n claudeCode: {\n options: {\n effort: \"high\" as const,\n thinking: { type: \"adaptive\" as const },\n },\n },\n }\n : {}),\n };\n\n if (Object.keys(meta).length === 0) return undefined;\n return meta;\n};\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport * as acp from \"@agentclientprotocol/sdk\";\nimport {\n Cause,\n Config,\n Duration,\n Effect,\n FiberMap,\n FileSystem,\n Filter,\n Layer,\n Match,\n Option,\n Queue,\n Ref,\n Schema,\n ServiceMap,\n Stream,\n String as Str,\n} from \"effect\";\nimport {\n AcpConfigOption,\n AcpConfigOptionUpdate,\n AcpSessionUpdate,\n AgentProvider,\n} from \"@expect/shared/models\";\nimport { hasStringMessage } from \"@expect/shared/utils\";\nimport { detectLaunchedFrom } from \"@expect/shared/launched-from\";\nimport { buildSessionMeta } from \"./build-session-meta\";\n\nimport { ChildProcess, ChildProcessSpawner } from \"effect/unstable/process\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\n\nexport const SessionId = Schema.String.pipe(Schema.brand(\"SessionId\"));\nexport type SessionId = typeof SessionId.Type;\n\nconst ACP_STREAM_INACTIVITY_TIMEOUT_MS = 3 * 60 * 1000;\nconst ACP_AUTH_CHECK_TIMEOUT = \"3 seconds\" as const;\n\nexport class AcpStreamError extends Schema.ErrorClass<AcpStreamError>(\"AcpStreamError\")({\n _tag: Schema.tag(\"AcpStreamError\"),\n cause: Schema.Unknown,\n}) {\n displayName = `An unexpected error occurred while streaming`;\n message = `Streaming failed: ${this.cause}`;\n}\n\nexport class AcpProviderNotInstalledError extends Schema.ErrorClass<AcpProviderNotInstalledError>(\n \"AcpProviderNotInstalledError\",\n)({\n _tag: Schema.tag(\"AcpProviderNotInstalledError\"),\n provider: AgentProvider,\n}) {\n displayName = `${Str.capitalize(this.provider)} is not installed`;\n message = Match.value(this.provider).pipe(\n Match.when(\n \"claude\",\n () =>\n \"Claude Code is not installed. Install it from https://code.claude.com/docs/en/overview#native-install-recommended, or use codex agent with `expect -a codex`.\",\n ),\n Match.when(\n \"codex\",\n () =>\n \"Codex CLI is not installed. Install it with `npm install -g @openai/codex`, or use Claude Code by removing the `--agent codex` option.\",\n ),\n Match.when(\n \"copilot\",\n () =>\n \"GitHub Copilot CLI is not installed. Install it with `npm install -g @github/copilot`, or use Claude Code with `expect -a claude`.\",\n ),\n Match.when(\n \"gemini\",\n () =>\n \"Gemini CLI is not installed. Install it with `npm install -g @google/gemini-cli`, or use Claude Code with `expect -a claude`.\",\n ),\n Match.when(\n \"cursor\",\n () =>\n \"Cursor agent CLI is not installed. Install it from https://cursor.com/docs/cli/acp, or use Claude Code with `expect -a claude`.\",\n ),\n Match.when(\n \"opencode\",\n () =>\n \"OpenCode is not installed. Install it with `npm install -g opencode-ai`, or use Claude Code with `expect -a claude`.\",\n ),\n Match.when(\n \"droid\",\n () =>\n \"Factory Droid is not installed. Install it with `npm install -g droid`, or use Claude Code with `expect -a claude`.\",\n ),\n Match.orElse(\n () => \"Your coding agent CLI is not installed. Please install it and then re-run expect.\",\n ),\n );\n}\n\nexport class AcpProviderUnauthenticatedError extends Schema.ErrorClass<AcpProviderUnauthenticatedError>(\n \"AcpProviderUnauthenticatedError\",\n)({\n _tag: Schema.tag(\"AcpProviderUnauthenticatedError\"),\n provider: AgentProvider,\n}) {\n displayName = `Your ${this.provider} agent is not authenticated`;\n message = Match.value(this.provider).pipe(\n Match.when(\"claude\", () => \"Please log in using `claude login`, and then re-run expect.\"),\n Match.when(\"codex\", () => \"Please log in using `codex login`, and then re-run expect.\"),\n Match.when(\"copilot\", () => \"Please log in using `gh auth login`, and then re-run expect.\"),\n Match.when(\"gemini\", () => \"Please log in using `gemini auth login`, and then re-run expect.\"),\n Match.when(\"cursor\", () => \"Please log in using `agent login`, and then re-run expect.\"),\n Match.when(\n \"opencode\",\n () => \"Please log in using `opencode auth login`, and then re-run expect.\",\n ),\n Match.when(\n \"droid\",\n () =>\n \"Please set the FACTORY_API_KEY environment variable (get one at app.factory.ai/settings/api-keys), and then re-run expect.\",\n ),\n Match.orElse(() => \"Please sign in to your coding agent, and then re-run expect.\"),\n );\n}\n\nexport class AcpProviderUsageLimitError extends Schema.ErrorClass<AcpProviderUsageLimitError>(\n \"AcpProviderUsageLimitError\",\n)({\n _tag: Schema.tag(\"AcpProviderUsageLimitError\"),\n provider: AgentProvider,\n}) {\n displayName = `Your ${this.provider} agent has exceeded its usage limits`;\n message = `Usage limits exceeded for ${this.provider}. Please check your plan and billing.`;\n}\n\nexport class AcpSessionCreateError extends Schema.ErrorClass<AcpSessionCreateError>(\n \"AcpSessionCreateError\",\n)({\n _tag: Schema.tag(\"AcpSessionCreateError\"),\n cause: Schema.Unknown,\n}) {\n displayName = `Creating a chat session failed`;\n message = `Creating session failed: ${Cause.pretty(Cause.fail(this.cause))}`;\n}\n\nexport class AcpConnectionInitError extends Schema.ErrorClass<AcpConnectionInitError>(\n \"AcpConnectionInitError\",\n)({\n _tag: Schema.tag(\"AcpConnectionInitError\"),\n cause: Schema.Unknown,\n}) {\n message = `Init connection failed: ${this.cause}`;\n}\n\nexport class AcpAdapterNotFoundError extends Schema.ErrorClass<AcpAdapterNotFoundError>(\n \"AcpAdapterNotFoundError\",\n)({\n _tag: Schema.tag(\"AcpAdapterNotFoundError\"),\n packageName: Schema.String,\n cause: Schema.Unknown,\n}) {\n message = `ACP adapter not found: ${this.packageName}. Error: ${Cause.pretty(\n Cause.fail(this.cause),\n )}`;\n}\n\ntype SessionQueueError =\n | Cause.Done\n | AcpStreamError\n | AcpProviderUnauthenticatedError\n | AcpProviderUsageLimitError;\n\nconst makeRequire = () =>\n createRequire(typeof __filename !== \"undefined\" ? __filename : import.meta.url);\n\nconst resolvePackageDir = (require: NodeRequire, packageName: string): string => {\n try {\n return dirname(require.resolve(`${packageName}/package.json`));\n } catch {\n const paths = require.resolve.paths(packageName) ?? [];\n for (const searchPath of paths) {\n const candidate = join(searchPath, packageName);\n try {\n const content = JSON.parse(readFileSync(join(candidate, \"package.json\"), \"utf-8\"));\n if (content.name === packageName) return candidate;\n } catch {}\n }\n throw new Error(`Cannot find package root for ${packageName}`);\n }\n};\n\nconst resolvePackageBin = (packageName: string): string => {\n const require = makeRequire();\n const packageDir = resolvePackageDir(require, packageName);\n const packageJson = JSON.parse(readFileSync(join(packageDir, \"package.json\"), \"utf-8\"));\n\n if (typeof packageJson.bin === \"string\") {\n return join(packageDir, packageJson.bin);\n }\n if (typeof packageJson.bin === \"object\" && packageJson.bin !== null) {\n const firstBinPath = String(Object.values(packageJson.bin)[0]);\n return join(packageDir, firstBinPath);\n }\n if (packageJson.main) {\n return join(packageDir, packageJson.main);\n }\n throw new Error(`Cannot resolve bin entry for ${packageName}`);\n};\n\nexport class AcpAdapter extends ServiceMap.Service<\n AcpAdapter,\n {\n readonly provider: AgentProvider;\n readonly bin: string;\n readonly args: readonly string[];\n readonly env: Record<string, string>;\n }\n>()(\"@expect/AcpAdapter\") {\n static layerCodex = Layer.effect(AcpAdapter)(\n Effect.try({\n try: () => {\n const require = makeRequire();\n const binPath = require.resolve(\"@zed-industries/codex-acp/bin/codex-acp.js\");\n return AcpAdapter.of({\n provider: \"codex\",\n bin: process.execPath,\n args: [binPath],\n env: {},\n });\n },\n catch: (cause) =>\n new AcpAdapterNotFoundError({\n packageName: \"@zed-industries/codex-acp\",\n cause,\n }),\n }),\n );\n\n static layerClaude = Layer.effect(AcpAdapter)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;\n const AuthSchema = Schema.Struct({ loggedIn: Schema.Boolean });\n\n /** @note(rasmus): assert authenticated */\n yield* ChildProcess.make(`claude`, [\"auth\", \"status\"]).pipe(\n spawner.string,\n Effect.flatMap(Schema.decodeEffect(Schema.fromJsonString(AuthSchema))),\n Effect.flatMap(({ loggedIn }) =>\n loggedIn\n ? Effect.void\n : new AcpProviderUnauthenticatedError({\n provider: \"claude\",\n }).asEffect(),\n ),\n Effect.catchReason(\"PlatformError\", \"NotFound\", () =>\n new AcpProviderNotInstalledError({ provider: \"claude\" }).asEffect(),\n ),\n );\n\n return yield* Effect.try({\n try: () => {\n const require = makeRequire();\n const binPath = require.resolve(\"@agentclientprotocol/claude-agent-acp/dist/index.js\");\n return AcpAdapter.of({\n provider: \"claude\",\n bin: process.execPath,\n args: [binPath],\n env: {},\n });\n },\n catch: (cause) =>\n new AcpAdapterNotFoundError({\n packageName: \"@agentclientprotocol/claude-agent-acp\",\n cause,\n }),\n });\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n\n static layerCopilot = Layer.effect(AcpAdapter)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;\n\n // HACK: only checks gh CLI auth, not env var (COPILOT_GITHUB_TOKEN/GH_TOKEN) or keyring auth\n // gh CLI missing means we can't verify auth — treat as unauthenticated, not uninstalled\n yield* ChildProcess.make(\"gh\", [\"auth\", \"token\"]).pipe(\n spawner.string,\n Effect.flatMap((token) =>\n token.trim().length > 0\n ? Effect.void\n : new AcpProviderUnauthenticatedError({ provider: \"copilot\" }).asEffect(),\n ),\n Effect.catchTag(\"PlatformError\", () =>\n new AcpProviderUnauthenticatedError({ provider: \"copilot\" }).asEffect(),\n ),\n );\n\n return yield* Effect.try({\n try: () => {\n const binPath = resolvePackageBin(\"@github/copilot\");\n return AcpAdapter.of({\n provider: \"copilot\",\n bin: process.execPath,\n args: [binPath, \"--acp\"],\n env: {},\n });\n },\n catch: (cause) =>\n new AcpAdapterNotFoundError({\n packageName: \"@github/copilot\",\n cause,\n }),\n });\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n\n static layerGemini = Layer.effect(AcpAdapter)(\n Effect.gen(function* () {\n const fileSystem = yield* FileSystem.FileSystem;\n const homeOption = yield* Config.option(\n Config.string(\"HOME\").pipe(Config.orElse(() => Config.string(\"USERPROFILE\"))),\n );\n const homedir = Option.isSome(homeOption)\n ? homeOption.value\n : yield* new AcpProviderUnauthenticatedError({ provider: \"gemini\" });\n const accountsPath = `${homedir}/.gemini/google_accounts.json`;\n const AccountsSchema = Schema.Struct({ active: Schema.String });\n\n yield* fileSystem.readFileString(accountsPath).pipe(\n Effect.flatMap(Schema.decodeEffect(Schema.fromJsonString(AccountsSchema))),\n Effect.flatMap(({ active }) =>\n active.length > 0\n ? Effect.void\n : new AcpProviderUnauthenticatedError({ provider: \"gemini\" }).asEffect(),\n ),\n Effect.catchReason(\"PlatformError\", \"NotFound\", () =>\n new AcpProviderUnauthenticatedError({ provider: \"gemini\" }).asEffect(),\n ),\n Effect.catchTag(\"PlatformError\", () =>\n new AcpProviderUnauthenticatedError({ provider: \"gemini\" }).asEffect(),\n ),\n Effect.catchTag(\"SchemaError\", () =>\n new AcpProviderUnauthenticatedError({ provider: \"gemini\" }).asEffect(),\n ),\n );\n\n return yield* Effect.try({\n try: () => {\n const binPath = resolvePackageBin(\"@google/gemini-cli\");\n return AcpAdapter.of({\n provider: \"gemini\",\n bin: process.execPath,\n args: [binPath, \"--acp\"],\n env: {},\n });\n },\n catch: (cause) =>\n new AcpAdapterNotFoundError({\n packageName: \"@google/gemini-cli\",\n cause,\n }),\n });\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n\n static layerCursor = Layer.effect(AcpAdapter)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;\n\n yield* ChildProcess.make(\"agent\", [\"--version\"]).pipe(\n spawner.string,\n Effect.timeoutOrElse({\n duration: ACP_AUTH_CHECK_TIMEOUT,\n onTimeout: () => new AcpProviderNotInstalledError({ provider: \"cursor\" }).asEffect(),\n }),\n Effect.catchReason(\"PlatformError\", \"NotFound\", () =>\n new AcpProviderNotInstalledError({ provider: \"cursor\" }).asEffect(),\n ),\n Effect.catchTag(\"PlatformError\", () =>\n new AcpProviderNotInstalledError({ provider: \"cursor\" }).asEffect(),\n ),\n );\n\n yield* ChildProcess.make(\"agent\", [\"auth\", \"whoami\"]).pipe(\n spawner.string,\n Effect.flatMap((output) =>\n output.trim().length > 0\n ? Effect.void\n : new AcpProviderUnauthenticatedError({ provider: \"cursor\" }).asEffect(),\n ),\n Effect.timeoutOrElse({\n duration: ACP_AUTH_CHECK_TIMEOUT,\n onTimeout: () => new AcpProviderUnauthenticatedError({ provider: \"cursor\" }).asEffect(),\n }),\n Effect.catchTag(\"PlatformError\", () =>\n new AcpProviderUnauthenticatedError({ provider: \"cursor\" }).asEffect(),\n ),\n );\n\n return AcpAdapter.of({\n provider: \"cursor\",\n bin: \"agent\",\n args: [\"acp\"],\n env: {},\n });\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n\n static layerDroid = Layer.effect(AcpAdapter)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;\n\n yield* ChildProcess.make(\"droid\", [\"--version\"]).pipe(\n spawner.string,\n Effect.timeoutOrElse({\n duration: ACP_AUTH_CHECK_TIMEOUT,\n onTimeout: () => new AcpProviderNotInstalledError({ provider: \"droid\" }).asEffect(),\n }),\n Effect.catchReason(\"PlatformError\", \"NotFound\", () =>\n new AcpProviderNotInstalledError({ provider: \"droid\" }).asEffect(),\n ),\n Effect.catchTag(\"PlatformError\", () =>\n new AcpProviderNotInstalledError({ provider: \"droid\" }).asEffect(),\n ),\n );\n\n const apiKeyOption = yield* Config.option(Config.string(\"FACTORY_API_KEY\"));\n if (!Option.isSome(apiKeyOption) || apiKeyOption.value.trim().length === 0) {\n return yield* new AcpProviderUnauthenticatedError({ provider: \"droid\" });\n }\n\n return AcpAdapter.of({\n provider: \"droid\",\n bin: \"droid\",\n args: [\"exec\", \"--output-format\", \"acp\"],\n env: {},\n });\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n\n static layerOpencode = Layer.effect(AcpAdapter)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;\n\n yield* ChildProcess.make(\"opencode\", [\"--version\"]).pipe(\n spawner.string,\n Effect.timeoutOrElse({\n duration: ACP_AUTH_CHECK_TIMEOUT,\n onTimeout: () => new AcpProviderNotInstalledError({ provider: \"opencode\" }).asEffect(),\n }),\n Effect.catchReason(\"PlatformError\", \"NotFound\", () =>\n new AcpProviderNotInstalledError({ provider: \"opencode\" }).asEffect(),\n ),\n Effect.catchTag(\"PlatformError\", () =>\n new AcpProviderNotInstalledError({ provider: \"opencode\" }).asEffect(),\n ),\n );\n\n yield* ChildProcess.make(\"opencode\", [\"auth\", \"list\"]).pipe(\n spawner.string,\n Effect.flatMap((output) =>\n output.trim().length > 0\n ? Effect.void\n : new AcpProviderUnauthenticatedError({ provider: \"opencode\" }).asEffect(),\n ),\n Effect.timeoutOrElse({\n duration: ACP_AUTH_CHECK_TIMEOUT,\n onTimeout: () => new AcpProviderUnauthenticatedError({ provider: \"opencode\" }).asEffect(),\n }),\n Effect.catchTag(\"PlatformError\", () =>\n new AcpProviderUnauthenticatedError({ provider: \"opencode\" }).asEffect(),\n ),\n );\n\n return AcpAdapter.of({\n provider: \"opencode\",\n bin: \"opencode\",\n args: [\"acp\"],\n env: {},\n });\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n}\n\nexport class AcpClient extends ServiceMap.Service<AcpClient>()(\"@expect/AcpClient\", {\n make: Effect.gen(function* () {\n const adapter = yield* AcpAdapter;\n yield* Effect.annotateLogsScoped({ adapter: adapter.args[0] });\n yield* Effect.logInfo(`Initializing AcpClient`);\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;\n const githubActionsValue = yield* Config.option(Config.string(\"GITHUB_ACTIONS\"));\n const githubRunId = yield* Config.option(Config.string(\"GITHUB_RUN_ID\"));\n const isGitHubActions =\n Option.match(githubActionsValue, {\n onNone: () => false,\n onSome: (value) => value !== \"\",\n }) || Option.isSome(githubRunId);\n const launchedFrom = detectLaunchedFrom();\n /** @note(rasmus): FiberMap that runs strems */\n const streamFiberMap = yield* FiberMap.make<SessionId>();\n\n const writableQueue = yield* Queue.unbounded<Uint8Array>();\n const sessionUpdatesMap = new Map<\n SessionId,\n Queue.Queue<AcpSessionUpdate, SessionQueueError>\n >();\n\n const AUTH_FAILURE_PATTERNS = [\n \"invalid api key\",\n \"authentication failed\",\n \"authentication error\",\n \"unauthorized\",\n \"invalid_api_key\",\n ];\n\n const USAGE_LIMIT_PATTERNS = [\"out of usage\", \"limits exceeded\", \"usage exceeded\"];\n\n const getAdapterSessionError = (line: string): Option.Option<SessionQueueError> => {\n const normalizedLine = line.toLowerCase();\n\n if (AUTH_FAILURE_PATTERNS.some((pattern) => normalizedLine.includes(pattern))) {\n return Option.some(new AcpProviderUnauthenticatedError({ provider: adapter.provider }));\n }\n\n if (USAGE_LIMIT_PATTERNS.some((pattern) => normalizedLine.includes(pattern))) {\n return Option.some(new AcpProviderUsageLimitError({ provider: adapter.provider }));\n }\n\n return Option.none();\n };\n\n const client: acp.Client = {\n requestPermission: (params) =>\n Promise.resolve({\n outcome: {\n outcome: \"selected\" as const,\n optionId:\n params.options.find(\n (option) => option.kind === \"allow_always\" || option.kind === \"allow_once\",\n )?.optionId ?? params.options[0].optionId,\n },\n }),\n sessionUpdate: async ({ sessionId, update }) => {\n const updatesQueue = sessionUpdatesMap.get(SessionId.makeUnsafe(sessionId));\n if (updatesQueue === undefined)\n return console.warn(`updates queue not found for session ${sessionId}`);\n try {\n const decoded = Schema.decodeUnknownSync(AcpSessionUpdate)(update);\n Queue.offerUnsafe(updatesQueue, decoded);\n } catch {\n // HACK: unknown session update types from newer ACP servers are silently dropped\n }\n },\n };\n\n const childProcess = yield* ChildProcess.make(adapter.bin, adapter.args, {\n env: adapter.env,\n extendEnv: true,\n }).pipe(spawner.spawn);\n yield* Effect.annotateLogsScoped({ pid: childProcess.pid });\n yield* Effect.logDebug(\"ACP adapter subprocess spawned\");\n /** @note(rasmus): we run all the writable queue entries into the process stdin */\n yield* Stream.fromQueue(writableQueue).pipe(Stream.run(childProcess.stdin), Effect.forkScoped);\n\n // HACK: ACP adapters report fatal errors (invalid API key, usage limits) via stderr\n // rather than through the protocol. We scan stderr lines for known patterns and, on the\n // first match, fail all active session queues so consumers surface the error immediately.\n // Stream.take(1) ensures we only act on the first fatal error and stop scanning.\n // If we don't immediately fail the session queues, consumers will hang indefinitely.\n yield* childProcess.stderr.pipe(\n Stream.decodeText(),\n Stream.splitLines,\n Stream.tap((line) => Effect.logDebug(\"ACP adapter stderr\", { line })),\n Stream.filterMap(Filter.fromPredicateOption(getAdapterSessionError)),\n Stream.take(1),\n Stream.tap((adapterSessionError) =>\n Effect.andThen(\n Effect.logWarning(\"ACP adapter reported fatal error\", {\n provider: adapter.provider,\n }),\n Effect.forEach(\n Array.from(sessionUpdatesMap.values()),\n (updatesQueue) => Queue.fail(updatesQueue, adapterSessionError),\n { concurrency: \"unbounded\" },\n ),\n ),\n ),\n Stream.runDrain,\n Effect.forkScoped,\n );\n\n const readable = Stream.toReadableStream(childProcess.stdout);\n const writable = new WritableStream<Uint8Array>({\n write: (chunk) => void Queue.offerUnsafe(writableQueue, chunk),\n });\n const ndJsonStream = acp.ndJsonStream(writable, readable);\n\n const connection = new acp.ClientSideConnection((_agent) => client, ndJsonStream);\n\n const browserMcpBinPath = (() => {\n const colocated = fileURLToPath(new URL(\"./browser-mcp.js\", import.meta.url));\n if (existsSync(colocated)) return colocated;\n return fileURLToPath(new URL(\"../../../apps/cli/dist/browser-mcp.js\", import.meta.url));\n })();\n\n const buildMcpServers = (\n env: ReadonlyArray<{ name: string; value: string }>,\n ): acp.McpServer[] => [\n {\n command: process.execPath,\n args: [browserMcpBinPath],\n env: [...env],\n name: \"browser\",\n },\n ];\n\n const initResponse = yield* Effect.tryPromise({\n try: () =>\n connection.initialize({\n protocolVersion: acp.PROTOCOL_VERSION,\n }),\n catch: (cause) => new AcpConnectionInitError({ cause }),\n });\n yield* Effect.logInfo(\"ACP connection initialized\", {\n capabilities: initResponse.agentCapabilities,\n });\n\n const decodeConfigOptions = (raw: unknown[]) =>\n Schema.decodeUnknownEffect(Schema.Array(AcpConfigOption))(raw).pipe(\n Effect.catchTag(\"SchemaError\", (schemaError) =>\n Effect.logWarning(\"Failed to decode config options\", {\n error: String(schemaError),\n }).pipe(Effect.as([] as AcpConfigOption[])),\n ),\n );\n\n const createSession = Effect.fn(\"AcpClient.createSession\")(function* (\n cwd: string,\n mcpEnv: ReadonlyArray<{ name: string; value: string }> = [],\n systemPrompt: Option.Option<string> = Option.none(),\n ) {\n yield* Effect.annotateCurrentSpan({ cwd, launchedFrom });\n const mcpServers = buildMcpServers(mcpEnv);\n const sessionMeta = buildSessionMeta({\n provider: adapter.provider,\n systemPrompt: Option.getOrUndefined(systemPrompt),\n metadata: { isGitHubActions },\n });\n return yield* Effect.tryPromise({\n try: () =>\n connection.newSession({\n cwd,\n mcpServers,\n ...(sessionMeta ? { _meta: sessionMeta } : {}),\n }),\n catch: (cause) => {\n const message = hasStringMessage(cause) ? cause.message : String(cause);\n\n /**\n * @note(rasmus): these are best guesses at the type of errors we might hit\n * if we're reaching usage limits because couldn't simulate this myself manually\n */\n const USAGE_LIMIT_ERRORS = [\"out of usage\", \"limits exceeded\", \"usage exceeded\"];\n const AUTH_ERRORS = [\"authentication\"];\n\n if (AUTH_ERRORS.some((error) => message.toLowerCase().includes(error))) {\n return new AcpProviderUnauthenticatedError({\n provider: adapter.provider,\n });\n }\n if (USAGE_LIMIT_ERRORS.some((error) => message.toLowerCase().includes(error))) {\n return new AcpProviderUsageLimitError({\n provider: adapter.provider,\n });\n }\n return new AcpSessionCreateError({ cause });\n },\n }).pipe(\n Effect.tap((response) =>\n Effect.gen(function* () {\n const sessionId = SessionId.makeUnsafe(response.sessionId);\n const updatesQueue = yield* Queue.unbounded<AcpSessionUpdate, SessionQueueError>();\n sessionUpdatesMap.set(sessionId, updatesQueue);\n yield* Effect.logInfo(\"ACP session created\", { sessionId });\n\n if (response.configOptions && response.configOptions.length > 0) {\n const decoded = yield* decodeConfigOptions(response.configOptions);\n if (decoded.length > 0) {\n Queue.offerUnsafe(\n updatesQueue,\n new AcpConfigOptionUpdate({\n sessionUpdate: \"config_option_update\",\n configOptions: decoded,\n }),\n );\n yield* Effect.logDebug(\"ACP config options emitted\", {\n count: decoded.length,\n });\n }\n }\n }),\n ),\n Effect.map(({ sessionId }) => SessionId.makeUnsafe(sessionId)),\n );\n });\n\n const getQueueBySessionId = Effect.fn(\"AcpClient.getQueueBySessionId\")(function* (\n sessionId: SessionId,\n ) {\n const existing = sessionUpdatesMap.get(sessionId);\n if (!existing) {\n return yield* Effect.die(\n `Session ${sessionId} not initialized, did you forget to call createSession?`,\n );\n }\n return existing;\n });\n\n const stream = Effect.fn(\"AcpClient.stream\")(function* ({\n prompt,\n sessionId: sessionIdOption,\n cwd,\n mcpEnv = [],\n systemPrompt = Option.none(),\n modelPreference,\n }: {\n sessionId: Option.Option<SessionId>;\n prompt: string;\n cwd: string;\n mcpEnv?: ReadonlyArray<{ name: string; value: string }>;\n systemPrompt?: Option.Option<string>;\n modelPreference?: { configId: string; value: string };\n }) {\n const sessionId = Option.isSome(sessionIdOption)\n ? sessionIdOption.value\n : yield* createSession(cwd, mcpEnv, systemPrompt);\n\n yield* Effect.logDebug(\"ACP stream starting\", { sessionId });\n\n if (modelPreference) {\n yield* setConfigOption(sessionId, modelPreference.configId, modelPreference.value).pipe(\n Effect.tap(() =>\n Effect.logInfo(\"Model preference applied\", {\n configId: modelPreference.configId,\n value: modelPreference.value,\n }),\n ),\n Effect.tapErrorTag(\"AcpStreamError\", (error) =>\n Effect.logWarning(\"Failed to apply model preference\", {\n error: error.message,\n }),\n ),\n Effect.catchTag(\"AcpStreamError\", () => Effect.void),\n );\n }\n\n const updatesQueue = yield* getQueueBySessionId(sessionId);\n const lastActivityAt = yield* Ref.make(Date.now());\n\n const effectivePrompt =\n adapter.provider !== \"claude\" && Option.isSome(systemPrompt)\n ? `${systemPrompt.value}\\n\\n${prompt}`\n : prompt;\n\n yield* Effect.tryPromise({\n try: () =>\n connection.prompt({\n sessionId,\n prompt: [{ type: \"text\", text: effectivePrompt }],\n }),\n catch: (cause) => new AcpStreamError({ cause }),\n }).pipe(\n Effect.tap(() => Effect.logDebug(\"ACP prompt completed\")),\n Effect.tap(() => Queue.end(updatesQueue)),\n FiberMap.run(streamFiberMap, sessionId, { startImmediately: true }),\n );\n\n const checkInactivity = Effect.gen(function* () {\n yield* Effect.sleep(Duration.millis(ACP_STREAM_INACTIVITY_TIMEOUT_MS));\n const lastActivity = yield* Ref.get(lastActivityAt);\n const elapsed = Date.now() - lastActivity;\n return elapsed >= ACP_STREAM_INACTIVITY_TIMEOUT_MS;\n });\n const inactivityWatchdog = Effect.gen(function* () {\n const isStalled = yield* Effect.repeat(checkInactivity, {\n while: (stalled) => !stalled,\n });\n if (isStalled) {\n yield* Effect.logWarning(\"ACP stream inactivity timeout\", { sessionId });\n yield* Queue.fail(\n updatesQueue,\n new AcpStreamError({\n cause: `Agent produced no output for ${ACP_STREAM_INACTIVITY_TIMEOUT_MS / 1000}s — the agent may be stalled`,\n }),\n );\n }\n });\n yield* inactivityWatchdog.pipe(Effect.forkScoped);\n\n const isMeaningfulActivity = (update: AcpSessionUpdate): boolean =>\n update.sessionUpdate === \"agent_message_chunk\" ||\n update.sessionUpdate === \"agent_thought_chunk\" ||\n update.sessionUpdate === \"tool_call\" ||\n update.sessionUpdate === \"tool_call_update\" ||\n update.sessionUpdate === \"plan\";\n\n return Stream.fromQueue(updatesQueue).pipe(\n Stream.tap((update) =>\n isMeaningfulActivity(update) ? Ref.set(lastActivityAt, Date.now()) : Effect.void,\n ),\n );\n }, Stream.unwrap);\n\n const setConfigOption = Effect.fn(\"AcpClient.setConfigOption\")(function* (\n sessionId: SessionId,\n configId: string,\n value: string | boolean,\n ) {\n yield* Effect.annotateCurrentSpan({ sessionId, configId });\n const response = yield* Effect.tryPromise({\n try: () =>\n connection.setSessionConfigOption({\n sessionId,\n configId,\n ...(typeof value === \"boolean\" ? { type: \"boolean\" as const, value } : { value }),\n }),\n catch: (cause) => new AcpStreamError({ cause }),\n });\n yield* Effect.logInfo(\"ACP config option set\", { configId, value });\n return response;\n });\n\n const fetchConfigOptions = Effect.fn(\"AcpClient.fetchConfigOptions\")(function* (cwd: string) {\n const sessionId = yield* createSession(cwd);\n const queue = sessionUpdatesMap.get(sessionId);\n if (!queue) return [] as AcpConfigOption[];\n\n const configOptions: AcpConfigOption[] = [];\n let update = yield* Queue.poll(queue);\n while (update._tag === \"Some\") {\n if (update.value.sessionUpdate === \"config_option_update\") {\n configOptions.push(...update.value.configOptions);\n }\n update = yield* Queue.poll(queue);\n }\n\n yield* Effect.logInfo(\"ACP config options fetched\", {\n sessionId,\n count: configOptions.length,\n });\n return configOptions;\n });\n\n return {\n createSession,\n stream,\n setConfigOption,\n fetchConfigOptions,\n } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(Layer.provide(NodeServices.layer));\n static layerCodex = this.layer.pipe(Layer.provide(AcpAdapter.layerCodex));\n static layerClaude = this.layer.pipe(Layer.provide(AcpAdapter.layerClaude));\n static layerCopilot = this.layer.pipe(Layer.provide(AcpAdapter.layerCopilot));\n static layerGemini = this.layer.pipe(Layer.provide(AcpAdapter.layerGemini));\n static layerCursor = this.layer.pipe(Layer.provide(AcpAdapter.layerCursor));\n static layerOpencode = this.layer.pipe(Layer.provide(AcpAdapter.layerOpencode));\n static layerDroid = this.layer.pipe(Layer.provide(AcpAdapter.layerDroid));\n}\n","import { Config, Effect, FileSystem, Layer, Option, Schema, ServiceMap, Stream } from \"effect\";\nimport {\n AcpAdapter,\n type AcpAdapterNotFoundError,\n AcpClient,\n type AcpConnectionInitError,\n type AcpProviderNotInstalledError,\n type AcpProviderUnauthenticatedError,\n type AcpProviderUsageLimitError,\n type AcpSessionCreateError,\n type AcpStreamError,\n type SessionId,\n} from \"./acp-client\";\nimport { AcpSessionUpdate, type AcpConfigOption } from \"@expect/shared/models\";\nimport { AgentStreamOptions } from \"./types\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { PlatformError } from \"effect/PlatformError\";\n\ntype AgentLayerError =\n | PlatformError\n | Config.ConfigError\n | Schema.SchemaError\n | AcpProviderNotInstalledError\n | AcpProviderUnauthenticatedError\n | AcpConnectionInitError\n | AcpAdapterNotFoundError;\n\nexport type AgentBackend =\n | \"claude\"\n | \"codex\"\n | \"copilot\"\n | \"gemini\"\n | \"cursor\"\n | \"opencode\"\n | \"droid\";\n\nexport class Agent extends ServiceMap.Service<\n Agent,\n {\n readonly stream: (\n options: AgentStreamOptions,\n ) => Stream.Stream<\n AcpSessionUpdate,\n | AcpStreamError\n | AcpSessionCreateError\n | AcpProviderUnauthenticatedError\n | AcpProviderUsageLimitError\n >;\n readonly createSession: (\n cwd: string,\n ) => Effect.Effect<\n SessionId,\n AcpSessionCreateError | AcpProviderUnauthenticatedError | AcpProviderUsageLimitError\n >;\n readonly setConfigOption: (\n sessionId: SessionId,\n configId: string,\n value: string | boolean,\n ) => Effect.Effect<unknown, AcpStreamError>;\n readonly fetchConfigOptions: (\n cwd: string,\n ) => Effect.Effect<\n readonly AcpConfigOption[],\n AcpSessionCreateError | AcpProviderUnauthenticatedError | AcpProviderUsageLimitError\n >;\n }\n>()(\"@expect/Agent\") {\n static layerAcp = Layer.effect(Agent)(\n Effect.gen(function* () {\n const acpClient = yield* AcpClient;\n\n return Agent.of({\n createSession: (cwd) => acpClient.createSession(cwd),\n stream: (options) =>\n acpClient.stream({\n cwd: options.cwd,\n sessionId: Option.map(options.sessionId, (id) => id as SessionId),\n prompt: options.prompt,\n mcpEnv: options.mcpEnv,\n systemPrompt: options.systemPrompt,\n modelPreference: options.modelPreference,\n }),\n setConfigOption: (sessionId, configId, value) =>\n acpClient.setConfigOption(sessionId as SessionId, configId, value),\n fetchConfigOptions: (cwd) => acpClient.fetchConfigOptions(cwd),\n });\n }),\n ).pipe(Layer.provide(AcpClient.layer));\n\n static layerCodex = Agent.layerAcp.pipe(Layer.provide(AcpAdapter.layerCodex));\n static layerClaude = Agent.layerAcp.pipe(Layer.provide(AcpAdapter.layerClaude));\n static layerCopilot = Agent.layerAcp.pipe(Layer.provide(AcpAdapter.layerCopilot));\n static layerGemini = Agent.layerAcp.pipe(Layer.provide(AcpAdapter.layerGemini));\n static layerCursor = Agent.layerAcp.pipe(Layer.provide(AcpAdapter.layerCursor));\n static layerOpencode = Agent.layerAcp.pipe(Layer.provide(AcpAdapter.layerOpencode));\n static layerDroid = Agent.layerAcp.pipe(Layer.provide(AcpAdapter.layerDroid));\n\n static layerFor = (backend: AgentBackend): Layer.Layer<Agent, AgentLayerError> => {\n const layers: Record<AgentBackend, Layer.Layer<Agent, AgentLayerError>> = {\n claude: Agent.layerClaude,\n codex: Agent.layerCodex,\n copilot: Agent.layerCopilot,\n gemini: Agent.layerGemini,\n cursor: Agent.layerCursor,\n opencode: Agent.layerOpencode,\n droid: Agent.layerDroid,\n };\n return layers[backend];\n };\n\n static layerTest = (fixturePath: string) =>\n Layer.effect(\n Agent,\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const decode = Schema.decodeSync(AcpSessionUpdate);\n\n return Agent.of({\n stream: () =>\n fs.stream(fixturePath).pipe(\n Stream.decodeText(),\n Stream.splitLines,\n Stream.map((line) => decode(JSON.parse(line))),\n Stream.orDie,\n ),\n createSession: () => Effect.die(\"createSession not supported for test layer\"),\n setConfigOption: () => Effect.die(\"setConfigOption not supported for test layer\"),\n fetchConfigOptions: () => Effect.succeed([] as AcpConfigOption[]),\n });\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n}\n","\"use strict\";var a=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var _=a(i=>{\"use strict\";Object.defineProperty(i,\"__esModule\",{value:!0});i.sync=i.isexe=void 0;var M=require(\"node:fs\"),x=require(\"node:fs/promises\"),q=async(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return d(await(0,x.stat)(t),e)}catch(s){let n=s;if(r||n.code===\"EACCES\")return!1;throw n}};i.isexe=q;var m=(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return d((0,M.statSync)(t),e)}catch(s){let n=s;if(r||n.code===\"EACCES\")return!1;throw n}};i.sync=m;var d=(t,e)=>t.isFile()&&A(t,e),A=(t,e)=>{let r=e.uid??process.getuid?.(),s=e.groups??process.getgroups?.()??[],n=e.gid??process.getgid?.()??s[0];if(r===void 0||n===void 0)throw new Error(\"cannot get uid or gid\");let u=new Set([n,...s]),c=t.mode,S=t.uid,P=t.gid,f=parseInt(\"100\",8),l=parseInt(\"010\",8),j=parseInt(\"001\",8),C=f|l;return!!(c&j||c&l&&u.has(P)||c&f&&S===r||c&C&&r===0)}});var g=a(o=>{\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});o.sync=o.isexe=void 0;var T=require(\"node:fs\"),I=require(\"node:fs/promises\"),D=require(\"node:path\"),F=async(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return y(await(0,I.stat)(t),t,e)}catch(s){let n=s;if(r||n.code===\"EACCES\")return!1;throw n}};o.isexe=F;var L=(t,e={})=>{let{ignoreErrors:r=!1}=e;try{return y((0,T.statSync)(t),t,e)}catch(s){let n=s;if(r||n.code===\"EACCES\")return!1;throw n}};o.sync=L;var B=(t,e)=>{let{pathExt:r=process.env.PATHEXT||\"\"}=e,s=r.split(D.delimiter);if(s.indexOf(\"\")!==-1)return!0;for(let n of s){let u=n.toLowerCase(),c=t.substring(t.length-u.length).toLowerCase();if(u&&c===u)return!0}return!1},y=(t,e,r)=>t.isFile()&&B(e,r)});var p=a(h=>{\"use strict\";Object.defineProperty(h,\"__esModule\",{value:!0})});var v=exports&&exports.__createBinding||(Object.create?(function(t,e,r,s){s===void 0&&(s=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||(\"get\"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,n)}):(function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]})),G=exports&&exports.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}):function(t,e){t.default=e}),w=exports&&exports.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(s[s.length]=n);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),n=0;n<s.length;n++)s[n]!==\"default\"&&v(r,e,s[n]);return G(r,e),r}})(),X=exports&&exports.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&v(e,t,r)};Object.defineProperty(exports,\"__esModule\",{value:!0});exports.sync=exports.isexe=exports.posix=exports.win32=void 0;var E=w(_());exports.posix=E;var O=w(g());exports.win32=O;X(p(),exports);var H=process.env._ISEXE_TEST_PLATFORM_||process.platform,b=H===\"win32\"?O:E;exports.isexe=b.isexe;exports.sync=b.sync;\n//# sourceMappingURL=index.min.js.map\n","const { isexe, sync: isexeSync } = require('isexe')\nconst { join, delimiter, sep, posix } = require('path')\n\nconst isWindows = process.platform === 'win32'\n\n// used to check for slashed in commands passed in. always checks for the posix\n// seperator on all platforms, and checks for the current separator when not on\n// a posix platform. don't use the isWindows check for this since that is mocked\n// in tests but we still need the code to actually work when called. that is also\n// why it is ignored from coverage.\n/* istanbul ignore next */\nconst rSlash = new RegExp(`[${posix.sep}${sep === posix.sep ? '' : sep}]`.replace(/(\\\\)/g, '\\\\$1'))\nconst rRel = new RegExp(`^\\\\.${rSlash.source}`)\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, {\n path: optPath = process.env.PATH,\n pathExt: optPathExt = process.env.PATHEXT,\n delimiter: optDelimiter = delimiter,\n}) => {\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(rSlash) ? [''] : [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(optPath || /* istanbul ignore next: very unusual */ '').split(optDelimiter),\n ]\n\n if (isWindows) {\n const pathExtExe = optPathExt ||\n ['.EXE', '.CMD', '.BAT', '.COM'].join(optDelimiter)\n const pathExt = pathExtExe.split(optDelimiter).flatMap((item) => [item, item.toLowerCase()])\n if (cmd.includes('.') && pathExt[0] !== '') {\n pathExt.unshift('')\n }\n return { pathEnv, pathExt, pathExtExe }\n }\n\n return { pathEnv, pathExt: [''] }\n}\n\nconst getPathPart = (raw, cmd) => {\n const pathPart = /^\".*\"$/.test(raw) ? raw.slice(1, -1) : raw\n const prefix = !pathPart && rRel.test(cmd) ? cmd.slice(0, 2) : ''\n return prefix + join(pathPart, cmd)\n}\n\nconst which = async (cmd, opt = {}) => {\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (const envPart of pathEnv) {\n const p = getPathPart(envPart, cmd)\n\n for (const ext of pathExt) {\n const withExt = p + ext\n const is = await isexe(withExt, { pathExt: pathExtExe, ignoreErrors: true })\n if (is) {\n if (!opt.all) {\n return withExt\n }\n found.push(withExt)\n }\n }\n }\n\n if (opt.all && found.length) {\n return found\n }\n\n if (opt.nothrow) {\n return null\n }\n\n throw getNotFoundError(cmd)\n}\n\nconst whichSync = (cmd, opt = {}) => {\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (const pathEnvPart of pathEnv) {\n const p = getPathPart(pathEnvPart, cmd)\n\n for (const ext of pathExt) {\n const withExt = p + ext\n const is = isexeSync(withExt, { pathExt: pathExtExe, ignoreErrors: true })\n if (is) {\n if (!opt.all) {\n return withExt\n }\n found.push(withExt)\n }\n }\n }\n\n if (opt.all && found.length) {\n return found\n }\n\n if (opt.nothrow) {\n return null\n }\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","import whichSync from \"which\";\n\nexport const isCommandAvailable = (command: string): boolean => {\n try {\n return Boolean(whichSync.sync(command));\n } catch {\n return false;\n }\n};\n","import type {\n ChangedFile,\n ChangesFor,\n CommitSummary,\n SavedFlow,\n TestCoverageReport,\n} from \"./models\";\n\nconst EXECUTION_CONTEXT_FILE_LIMIT = 12;\nconst EXECUTION_RECENT_COMMIT_LIMIT = 5;\nconst DIFF_PREVIEW_CHAR_LIMIT = 12_000;\nconst DEFAULT_BROWSER_MCP_SERVER_NAME = \"browser\";\n\nexport interface DevServerHint {\n readonly url: string;\n readonly projectPath: string;\n readonly devCommand: string;\n}\n\nexport interface ExecutionPromptOptions {\n readonly userInstruction: string;\n readonly scope: ChangesFor[\"_tag\"];\n readonly currentBranch: string;\n readonly mainBranch: string | undefined;\n readonly changedFiles: readonly ChangedFile[];\n readonly recentCommits: readonly CommitSummary[];\n readonly diffPreview: string;\n readonly baseUrl: string | undefined;\n readonly isHeadless: boolean;\n readonly cookieBrowserKeys: readonly string[];\n readonly browserMcpServerName?: string;\n readonly savedFlow?: SavedFlow;\n readonly learnings?: string;\n readonly testCoverage?: TestCoverageReport;\n readonly devServerHints?: readonly DevServerHint[];\n}\n\nconst formatSavedFlowGuidance = (savedFlow: SavedFlow | undefined): string[] => {\n if (!savedFlow) return [];\n\n return [\n \"Saved flow guidance:\",\n \"You are replaying a previously saved flow. Follow these steps as guidance, but adapt if the UI has changed.\",\n `Saved flow title: ${savedFlow.title}`,\n `Saved flow request: ${savedFlow.userInstruction}`,\n \"\",\n ...savedFlow.steps.flatMap((step, index) => [\n `Step ${index + 1}: ${step.title}`,\n `Instruction: ${step.instruction}`,\n `Expected: ${step.expectedOutcome}`,\n \"\",\n ]),\n ];\n};\n\nconst getScopeStrategy = (scope: ChangesFor[\"_tag\"]): string[] => {\n switch (scope) {\n case \"Commit\":\n return [\n \"- Start narrow and prove the selected commit's intended change works first.\",\n \"- Treat the selected commit and its touched files as the primary testing hypothesis.\",\n \"- After the primary flow, test 2-4 adjacent flows that could regress from the same change. Think about what else touches the same components, routes, or data.\",\n \"- For UI changes, verify related views that render the same data or share the same components.\",\n ];\n case \"WorkingTree\":\n return [\n \"- Start with the exact user-requested flow against the local in-progress changes.\",\n \"- After the primary flow, test related flows that exercise the same code paths — aim for 2-3 follow-ups.\",\n \"- Pay extra attention to partially-implemented features: check that incomplete states don't break existing behavior.\",\n ];\n case \"Changes\":\n return [\n \"- Treat committed and uncommitted work as one body of change.\",\n \"- Cover the requested flow first, then the highest-risk adjacent flows.\",\n \"- Test 2-4 follow-up flows, prioritizing paths that share components or data with the changed files.\",\n \"- If the changes touch shared utilities or layouts, verify multiple pages that use them.\",\n ];\n default:\n return [\n \"- This is a branch-level review — be thorough. The goal is to catch regressions before merge, not to do a quick spot-check.\",\n \"- Cover the requested flow first, then systematically test each area affected by the changed files.\",\n \"- Aim for 5-8 total tested flows. Derive them from the changed files: each changed route, component, or data path should get its own verification.\",\n \"- Test cross-cutting concerns: if shared components, layouts, or utilities changed, verify them on multiple pages that consume them.\",\n \"- The per-flow edge-case rule applies — for branch reviews, prioritize security and authorization edge cases (unauthorized access, missing permissions, broken link).\",\n \"- Do not stop after the happy path passes. The value of a branch review is catching what the developer might have missed.\",\n ];\n }\n};\n\nconst formatTestCoverageSection = (testCoverage: TestCoverageReport | undefined): string[] => {\n if (!testCoverage || testCoverage.totalCount === 0) return [];\n\n const lines = [\n `Test coverage of changed files: ${testCoverage.percent}% (${testCoverage.coveredCount}/${testCoverage.totalCount} files have tests)`,\n ];\n\n const covered = testCoverage.entries.filter((entry) => entry.covered);\n const uncovered = testCoverage.entries.filter((entry) => !entry.covered);\n\n for (const entry of covered) {\n lines.push(` [covered] ${entry.path} (tested by: ${entry.testFiles.slice(0, 3).join(\", \")})`);\n }\n for (const entry of uncovered) {\n lines.push(` [no test] ${entry.path}`);\n }\n\n if (uncovered.length > 0) {\n lines.push(\"Prioritize browser-testing files WITHOUT existing test coverage.\");\n }\n\n lines.push(\"\");\n return lines;\n};\n\nexport const buildExecutionSystemPrompt = (browserMcpServerName?: string): string => {\n const mcpName = browserMcpServerName ?? DEFAULT_BROWSER_MCP_SERVER_NAME;\n\n return [\n \"You are a QA engineer testing code changes in a real browser. Your job is to find bugs the developer missed, not confirm the happy path works.\",\n \"\",\n \"You have two documented failure patterns. First, happy-path seduction: the page loads, the primary flow works, and you emit RUN_COMPLETED without testing edge cases, viewports, or adjacent flows — the easy 80% passes and the bugs hide in the untested 20%. Second, soft failures: a check fails but the page 'mostly works,' so you emit STEP_DONE instead of ASSERTION_FAILED, hiding the bug from the developer.\",\n \"\",\n \"<change_analysis>\",\n \"The diff preview, changed files list, and recent commits are already provided in the prompt. Do NOT call tools to re-read or re-diff those files — all the context you need to plan is already here.\",\n \"- Scan the provided changed files list and diff preview to identify what behavior changed and which user flows to test.\",\n \"- Group related files into concrete flows. A flow is an end-to-end path with a clear entry point, user action, and observable outcome.\",\n \"- Treat the diff as the source of truth. The developer request is a starting point, not the full scope.\",\n \"- Files without existing automated tests are higher risk. Give them deeper browser coverage when they touch runtime behavior.\",\n \"</change_analysis>\",\n \"\",\n \"<coverage_rules>\",\n \"Minimum bar: every changed route, page, form, mutation, API interaction, auth gate, shared component, shared hook, or shared utility that affects runtime behavior must be covered by at least one tested flow or one code-level check.\",\n \"- When shared code changes, test multiple consumers instead of one happy path.\",\n \"- If a diff changes validation, branching logic, permissions, loading, empty, or error handling, include the matching negative or edge-case path.\",\n \"- If a diff changes persistence or mutations, verify the before/after state and one durability check (refresh, revisit, or back-navigation).\",\n \"- If multiple files implement one feature, test the full user journey end-to-end instead of isolated clicks.\",\n \"</coverage_rules>\",\n \"\",\n \"<execution_strategy>\",\n \"- First master the primary flow the developer asked for. Verify it thoroughly before moving on.\",\n \"- Once the primary flow passes, test additional related flows suggested by the changed files, diff semantics, and route context. The scope strategy below specifies how many.\",\n \"- For each flow, test both the happy path AND at least one edge case or negative path (e.g. empty input, missing data, back-navigation, double-click, refresh mid-flow).\",\n \"- Use the same browser session throughout unless the app forces you into a different path.\",\n \"- Execution style is assertion-first: navigate, act, then validate before moving on.\",\n \"- Create your own step structure while executing. Use stable sequential IDs like step-01, step-02, step-03.\",\n \"- For each step, verify the action produced the expected state change. Check at least two independent signals (e.g. URL changed AND new content appeared, or item added AND count updated).\",\n \"- Verify absence when relevant: after a delete, the item is gone; after dismissing a modal, it no longer appears in the tree.\",\n \"- Use playwright to return structured evidence: current URL, page title, and visibility of the target element.\",\n \"- If the changed files suggest specific behavior (e.g. a validation rule, a redirect, a computed value), test that specific behavior rather than just the surrounding UI.\",\n \"</execution_strategy>\",\n \"\",\n \"<data_seeding>\",\n \"Every page you test MUST have real data. If a page shows an empty state, zero records, or placeholder content, seed it before testing. An empty-state screenshot is not a test — it is a skip.\",\n \"\",\n \"1. Navigate to the target page. Snapshot. If data exists and is sufficient, proceed to testing.\",\n \"2. If empty or insufficient: find the creation flow ('Add', 'New', 'Create', 'Import') and use it. If the app exposes an API you can call via playwright's page.evaluate(fetch(...)), prefer that for speed.\",\n \"3. Create the full dependency chain top-down. A paystub requires company → employee → payroll run → paystub. Do not skip intermediate objects.\",\n \"4. Create MINIMUM 3 records. One record hides pagination, sorting, bulk-action, and empty-vs-populated bugs.\",\n \"5. After seeding, return to the target page and snapshot. If the data does not appear, emit ASSERTION_FAILED — the creation flow is broken.\",\n \"6. Prefix every seed step with [Setup]: STEP_START|step-01|[Setup] Create employee with adversarial name\",\n \"\",\n \"Adversarial seed values — each record MUST use a different category. Rotate across your 3+ records:\",\n \"- Unicode stress: German umlauts + hyphen ('Günther Müller-Lüdenscheid'), Arabic RTL ('مريم الفارسي'), CJK ('田中太郎'), Zalgo combining chars ('T̸̢̧ë̵̡s̶̨̛t̷̢̛')\",\n \"- Boundary values: 0, -1, 999999999.99, 0.001 for numbers. Empty string and 5000+ chars for text. '<script>alert(1)</script>' for XSS.\",\n \"- Edge dates: '1970-01-01' (epoch), a date in the current month, and an obviously invalid date if the field allows free input.\",\n \"- Truncation: 100+ character email, 200+ character name, max-length strings. These catch overflow and ellipsis bugs.\",\n \"- Dropdowns: always select the LAST option at least once — it is the least tested.\",\n \"\",\n \"Bad: navigate to /employees, see 'No employees yet', screenshot, emit STEP_DONE|step-01|employee list page renders correctly.\",\n \"Good: navigate to /employees, see 'No employees yet', find 'Add Employee' button, create 3 employees with adversarial names, return to /employees, verify all 3 appear in the table, THEN test the actual feature.\",\n \"\",\n \"Rationalizations you will reach for — recognize them and do the opposite:\",\n \"- 'The empty state renders correctly' — you were not asked to test the empty state. Seed data.\",\n \"- 'One record is enough to verify the feature' — one record hides half the bugs. Three is the minimum.\",\n \"- 'Creating data will take too long' — testing against empty data wastes the entire run. Seed first.\",\n \"- 'I don't have the right permissions to create data' — try the creation flow first. Only emit STEP_SKIPPED with category=missing-test-data if it actually fails.\",\n \"- 'The developer probably has data in their environment' — you do not know that. Check and seed.\",\n \"</data_seeding>\",\n \"\",\n \"<ui_quality_rules>\",\n \"After completing the primary functional tests, run a dedicated UI quality pass when the diff touches files that affect visual output (components, styles, layouts, templates, routes). Skip this section when the diff only changes backend logic, build config, or tests. When applicable, these checks are mandatory. Emit each as its own step.\",\n \"\",\n \"1. Design system conformance: inspect for tailwind.config, CSS custom properties, component libraries, token files. Verify changed elements use the system's tokens. Flag hardcoded hex/rgb colors, pixel spacing, or font-family declarations that bypass the design system.\",\n \"2. Responsive design: test at these viewports using page.setViewportSize: 375×812 (iPhone SE), 390×844 (iPhone 14), 768×1024 (iPad Mini), 810×1080 (iPad Air), 1024×768 (iPad landscape), 1280×800 (laptop), 1440×900 (desktop). Verify no horizontal overflow, no overlapping elements, text readable, interactive elements accessible. Do not skip tablets.\",\n \"3. Touch interaction: if the diff modifies interactive elements, test them with touch in addition to click at a mobile viewport. Verify flows that work via click also complete via tap.\",\n \"4. Cross-browser (Safari/WebKit): launch a WebKit browser context and re-run the primary flow. Check for flexbox gap, backdrop-filter, position:sticky in overflow, date/time inputs, scrollbar styling, -webkit-line-clamp. If WebKit is unavailable, emit STEP_SKIPPED.\",\n \"5. Dark mode: detect support (dark: Tailwind classes, theme toggle, prefers-color-scheme, data-theme attribute). If supported, switch and re-verify. Check for invisible text, disappearing borders, icons assuming light background, hardcoded white backgrounds. If no dark mode detected, emit STEP_SKIPPED.\",\n \"6. Layout stability (CLS): after networkidle, measure cumulative layout shift via PerformanceObserver. CLS above 0.1 is a failure, 0.05-0.1 is a warning. If high, screenshot immediately and 3 seconds later.\",\n \"7. Font loading: after networkidle, check document.fonts API. Every font must have status 'loaded'. Verify @font-face or preload tags exist. Flag system-font-only text unless the design system specifies a system stack.\",\n \"</ui_quality_rules>\",\n \"\",\n `<tools server=\"${mcpName}\">`,\n \"1. open: launch a browser and navigate to a URL. Pass browser='webkit' or browser='firefox' to launch a non-Chromium engine (e.g. for cross-browser testing). Close the current session first before switching engines.\",\n \"2. playwright: execute Playwright code. Globals: page, context, browser, ref(id). Set snapshotAfter=true to auto-snapshot after execution.\",\n \"3. screenshot: capture page state. Modes: 'snapshot' (ARIA tree, preferred), 'screenshot' (PNG), 'annotated' (PNG with labels).\",\n \"4. console_logs: get browser console messages. Filter by type ('error', 'warning', 'log').\",\n \"5. network_requests: get captured requests with automatic issue detection (4xx/5xx, duplicates, mixed content).\",\n \"6. performance_metrics: collect Web Vitals, TTFB, Long Animation Frames (LoAF), resource breakdown.\",\n \"7. accessibility_audit: run WCAG audit (axe-core + IBM Equal Access). Returns violations with selectors and fix guidance.\",\n \"8. close: close the browser and end the session.\",\n \"\",\n \"Prefer screenshot mode 'snapshot' for observing page state. Use 'screenshot' or 'annotated' only for purely visual checks (layout, colors, images).\",\n \"After each step, call console_logs with type 'error' to catch unexpected errors.\",\n \"</tools>\",\n \"\",\n \"<snapshot_workflow>\",\n \"1. Call screenshot mode='snapshot' to get the ARIA tree with refs like [ref=e4].\",\n \"2. Use ref() in playwright to act on elements: await ref('e3').fill('test@example.com'); await ref('e4').click();\",\n \"3. Take a new snapshot only when the page structure changes (navigation, modal, new content).\",\n \"Always snapshot first, then use ref() to act. Never guess CSS selectors.\",\n \"\",\n \"Batch actions that do NOT change DOM structure into a single playwright call. Do NOT batch across DOM-changing boundaries (dropdown open, modal, dialog). After a DOM-changing action, take a new snapshot for fresh refs.\",\n \"\",\n \"Layered interactions (dropdowns, menus, popovers): click trigger, wait briefly, take a NEW snapshot, then click the revealed option. For native <select> elements, use ref('eN').selectOption('value') directly.\",\n \"Hover-to-reveal: use ref('eN').hover() as the trigger. Nested menus: repeat the trigger-snapshot-select cycle per level.\",\n \"\",\n \"Scroll-aware snapshots: snapshots only show elements visible in scroll containers. Hidden items appear as '- note \\\"N items hidden above/below\\\"'. To reveal hidden content, scroll using playwright: await page.evaluate(() => document.querySelector('[aria-label=\\\"List\\\"]').scrollTop += 500). Then take a new snapshot. Use fullPage=true in screenshot to include all elements.\",\n \"</snapshot_workflow>\",\n \"\",\n \"<code_testing>\",\n \"If the diff only touches internal logic with no user-visible surface (utilities, algorithms, backend, CLI, build scripts), use your shell tool to run the project's test suite instead of a browser session. Same step protocol applies.\",\n \"If changes are mixed, browser-test the UI parts and code-test the rest.\",\n \"</code_testing>\",\n \"\",\n \"<recognize_rationalizations>\",\n \"You will feel the urge to skip checks or soften results. These are the exact excuses you reach for — recognize them and do the opposite:\",\n '- \"The page loaded successfully\" — loading is not verification. Check the specific behavior the diff changed.',\n '- \"This viewport looks fine\" — did you check all required viewports? Skipping one is not testing it.',\n '- \"The test coverage section shows this file is already tested\" — existing tests are written by the developer. Your job is to catch what they missed.',\n '- \"This styling change is too small to need all 7 checks\" — if the diff touches visual files, every applicable check runs regardless of change size.',\n '- \"The primary flow passed, so the feature works\" — the primary flow is the easy 80%. Test the adjacent flows.',\n '- \"I already checked this visually\" — visual checks without structured evidence are not verification. Use playwright to return concrete data.',\n \"If you catch yourself narrating what you would test instead of running a tool call, stop. Run the tool call.\",\n \"</recognize_rationalizations>\",\n \"\",\n \"<stability_and_recovery>\",\n \"- After navigation or major UI changes, wait for the page to settle (await page.waitForLoadState('networkidle')).\",\n \"- Confirm you reached the expected page or route before continuing.\",\n \"- Use event-driven waits (waitForSelector, waitForURL, waitForFunction) instead of timed delays. Take a new snapshot after each wait resolves.\",\n \"- When blocked: take a new snapshot for fresh refs, scroll the target into view or retry once.\",\n \"- If still blocked after one retry, classify the blocker with one allowed failure category and emit ASSERTION_FAILED.\",\n \"- Do not repeat the same failing action without new evidence (fresh snapshot, different ref, changed page state).\",\n \"- If four attempts fail or progress stalls, stop and report what you observed, what blocked progress, and the most likely next step.\",\n \"- If you encounter missing test data (empty lists, no records, 'no results' states), treat it as a resolvable blocker — follow the <data_seeding> procedure before giving up.\",\n \"- If you encounter a hard blocker (login, passkey, captcha, permissions), stop and report it instead of improvising.\",\n \"</stability_and_recovery>\",\n \"\",\n \"<no_idle_time>\",\n \"- Short timed waits (under 2 seconds) are acceptable for animations, debounced inputs, and CSS transitions where no DOM event signals completion. Timed waits over 10 seconds are almost always wrong — use an event-driven wait instead.\",\n \"- When starting a dev server, launch it in background and use page.goto() with retry — do not poll with sleep loops.\",\n \"- Batch independent tool calls in a single message. If you need a snapshot AND console logs AND network requests, request all three at once.\",\n \"</no_idle_time>\",\n \"\",\n \"<status_markers>\",\n \"Emit these exact status markers on their own lines during execution. The test run fails without them.\",\n \"\",\n \"Before starting each step, emit: STEP_START|<step-id>|<step-title>\",\n \"After completing each step, emit one of:\",\n \" STEP_DONE|<step-id>|<short-summary>\",\n \" ASSERTION_FAILED|<step-id>|<why-it-failed>\",\n \" STEP_SKIPPED|<step-id>|<reason-it-was-skipped>\",\n \"After all steps are done, emit exactly one of:\",\n \" RUN_COMPLETED|passed|<final-summary>\",\n \" RUN_COMPLETED|failed|<final-summary>\",\n \"\",\n \"Every test run must have at least one STEP_START/STEP_DONE pair and must end with RUN_COMPLETED. Emit each marker as a standalone line with no surrounding formatting or markdown.\",\n \"Use STEP_SKIPPED when a step cannot be executed due to missing prerequisites (e.g. test credentials not available, auth-blocked). Never use STEP_DONE for steps that were not actually tested.\",\n \"\",\n \"Before emitting STEP_DONE, verify you have at least one concrete piece of evidence (URL, text content, snapshot ref, console output, measurement result) proving the step passed. A step without evidence is not a STEP_DONE — it is a skip.\",\n \"Report outcomes faithfully. If a check fails, emit ASSERTION_FAILED with evidence. Never emit STEP_DONE for a step that showed failures, and never skip a mandatory check without emitting STEP_SKIPPED. The outer agent may re-execute your steps — if a STEP_DONE has no supporting evidence, the run is rejected.\",\n \"</status_markers>\",\n \"\",\n \"<failure_reporting>\",\n \"Allowed failure categories: app-bug, env-issue, auth-blocked, missing-test-data, selector-drift, agent-misread.\",\n \"Allowed failure domains (use the most specific match): design-system, responsive, touch, cross-browser, dark-mode, layout-stability, font-loading, accessibility, performance, animation, seo, security, general.\",\n \"\",\n \"When a step fails, gather structured evidence before emitting ASSERTION_FAILED:\",\n \"- Call screenshot mode='snapshot' to capture the ARIA tree.\",\n \"- Use playwright to gather diagnostics: current URL, page title, and the first 500 characters of body text.\",\n \"- Use a single-line bug report format inside <why-it-failed>: category=<allowed-category>; domain=<allowed-domain>; expected=<expected behavior>; actual=<what happened>; url=<current url>; evidence=<key text, console error, network failure, or DOM/snapshot observation>; repro=<short reproduction sequence>; likely-scope=<changed file, component, route, or unknown>; next-agent-prompt=<one sentence the user can paste into an agent to investigate or fix it>.\",\n \"- Prefer concrete values over placeholders. Include exact labels, URLs, error text, refs, status codes, and changed-file paths when known.\",\n \"\",\n \"Bad: ASSERTION_FAILED|step-03|button missing\",\n \"Good: ASSERTION_FAILED|step-03|category=app-bug; domain=responsive; expected=Submit button visible at 375px; actual=button clipped by overflow:hidden on .form-container; url=<current-page-url>; evidence=snapshot ref=e4 width=0; repro=resize to 375×812, open /login; likely-scope=src/components/LoginForm.tsx; next-agent-prompt=Fix overflow clipping on .form-container at mobile viewports\",\n \"</failure_reporting>\",\n \"\",\n \"<run_completion>\",\n \"Before emitting RUN_COMPLETED, complete all of these steps:\",\n \"1. Call accessibility_audit to check for WCAG violations. Report critical or serious violations as ASSERTION_FAILED steps.\",\n \"2. Call performance_metrics to collect the performance trace. If any Web Vital is rated 'poor' or any LoAF has blockingDuration > 150ms, report it as an ASSERTION_FAILED step.\",\n \"3. Run the project healthcheck: read package.json to find test/check scripts, identify the package manager from lock files, and run it. Report pass/fail as a step.\",\n \"4. If a browser session was opened, call close exactly once to flush the session video to disk.\",\n \"5. Review the changed files list and confirm every file is accounted for by a tested flow, a code-level check, or an explicit blocker with evidence.\",\n \"Do not emit RUN_COMPLETED until all steps above are done.\",\n \"</run_completion>\",\n ].join(\"\\n\");\n};\n\nexport const buildExecutionPrompt = (options: ExecutionPromptOptions): string => {\n const changedFiles = options.changedFiles.slice(0, EXECUTION_CONTEXT_FILE_LIMIT);\n const recentCommits = options.recentCommits.slice(0, EXECUTION_RECENT_COMMIT_LIMIT);\n const rawDiff = options.diffPreview || \"\";\n const diffPreview =\n rawDiff.length > DIFF_PREVIEW_CHAR_LIMIT\n ? rawDiff.slice(0, DIFF_PREVIEW_CHAR_LIMIT) + \"\\n... (truncated)\"\n : rawDiff;\n\n const devServerLines =\n options.devServerHints && options.devServerHints.length > 0\n ? [\n \"Dev servers (not running — start before testing):\",\n ...options.devServerHints.map(\n (hint) => ` cd ${hint.projectPath} && ${hint.devCommand} → ${hint.url}`,\n ),\n ]\n : [];\n\n return [\n \"<environment>\",\n ...(options.baseUrl ? [`Base URL: ${options.baseUrl}`] : []),\n ...devServerLines,\n `Browser is headless: ${options.isHeadless ? \"yes\" : \"no\"}`,\n `Uses existing browser cookies: ${options.cookieBrowserKeys.length > 0 ? `yes (${options.cookieBrowserKeys.length})` : \"no\"}`,\n `Scope: ${options.scope}`,\n `Current branch: ${options.currentBranch}`,\n ...(options.mainBranch ? [`Main branch: ${options.mainBranch}`] : []),\n \"</environment>\",\n \"\",\n ...(changedFiles.length > 0\n ? [\n \"<changed_files>\",\n changedFiles.map((file) => `- [${file.status}] ${file.path}`).join(\"\\n\"),\n \"</changed_files>\",\n \"\",\n ]\n : []),\n ...formatTestCoverageSection(options.testCoverage),\n ...(recentCommits.length > 0\n ? [\n \"<recent_commits>\",\n recentCommits.map((commit) => `${commit.shortHash} ${commit.subject}`).join(\"\\n\"),\n \"</recent_commits>\",\n \"\",\n ]\n : []),\n ...(diffPreview ? [\"<diff_preview>\", diffPreview, \"</diff_preview>\", \"\"] : []),\n ...formatSavedFlowGuidance(options.savedFlow),\n ...(options.learnings?.trim()\n ? [\"<project_learnings>\", options.learnings.trim(), \"</project_learnings>\", \"\"]\n : []),\n \"<developer_request>\",\n options.userInstruction,\n \"</developer_request>\",\n \"\",\n \"<scope_strategy>\",\n ...getScopeStrategy(options.scope),\n \"</scope_strategy>\",\n ].join(\"\\n\");\n};\n\nexport interface WatchAssessmentPromptOptions {\n readonly diffPreview: string;\n readonly changedFiles: readonly ChangedFile[];\n readonly instruction: string;\n}\n\nexport const buildWatchAssessmentPrompt = (options: WatchAssessmentPromptOptions): string =>\n [\n \"You are a code-change classifier for a browser testing tool.\",\n \"\",\n \"Given a git diff and a list of changed files, decide whether browser tests should run.\",\n \"\",\n \"Respond with EXACTLY one line:\",\n \" run — changes affect user-visible behavior (UI, routes, API calls, styles, copy, config that changes runtime behavior)\",\n \" skip — changes are purely internal with no user-visible effect (comments, type-only refactors, test files only, documentation, lock files, .gitignore, CI config)\",\n \"\",\n \"Rules:\",\n \"- If in doubt, respond with run.\",\n \"- Do NOT explain your reasoning. Output only the single word: run or skip.\",\n \"\",\n \"User's test instruction:\",\n options.instruction,\n \"\",\n ...(options.changedFiles.length > 0\n ? [\n \"Changed files:\",\n options.changedFiles.map((file) => `- [${file.status}] ${file.path}`).join(\"\\n\"),\n \"\",\n ]\n : []),\n ...(options.diffPreview ? [\"Diff preview:\", options.diffPreview] : []),\n ].join(\"\\n\");\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = require(\"fs\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst log = debug_1.default('@kwsites/file-exists');\nfunction check(path, isFile, isDirectory) {\n log(`checking %s`, path);\n try {\n const stat = fs_1.statSync(path);\n if (stat.isFile() && isFile) {\n log(`[OK] path represents a file`);\n return true;\n }\n if (stat.isDirectory() && isDirectory) {\n log(`[OK] path represents a directory`);\n return true;\n }\n log(`[FAIL] path represents something other than a file or directory`);\n return false;\n }\n catch (e) {\n if (e.code === 'ENOENT') {\n log(`[FAIL] path is not accessible: %o`, e);\n return false;\n }\n log(`[FATAL] %o`, e);\n throw e;\n }\n}\n/**\n * Synchronous validation of a path existing either as a file or as a directory.\n *\n * @param {string} path The path to check\n * @param {number} type One or both of the exported numeric constants\n */\nfunction exists(path, type = exports.READABLE) {\n return check(path, (type & exports.FILE) > 0, (type & exports.FOLDER) > 0);\n}\nexports.exists = exists;\n/**\n * Constant representing a file\n */\nexports.FILE = 1;\n/**\n * Constant representing a folder\n */\nexports.FOLDER = 2;\n/**\n * Constant representing either a file or a folder\n */\nexports.READABLE = exports.FILE + exports.FOLDER;\n//# sourceMappingURL=index.js.map","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./src\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDeferred = exports.deferred = void 0;\n/**\n * Creates a new `DeferredPromise`\n *\n * ```typescript\n import {deferred} from '@kwsites/promise-deferred`;\n ```\n */\nfunction deferred() {\n let done;\n let fail;\n let status = 'pending';\n const promise = new Promise((_done, _fail) => {\n done = _done;\n fail = _fail;\n });\n return {\n promise,\n done(result) {\n if (status === 'pending') {\n status = 'resolved';\n done(result);\n }\n },\n fail(error) {\n if (status === 'pending') {\n status = 'rejected';\n fail(error);\n }\n },\n get fulfilled() {\n return status !== 'pending';\n },\n get status() {\n return status;\n },\n };\n}\nexports.deferred = deferred;\n/**\n * Alias of the exported `deferred` function, to help consumers wanting to use `deferred` as the\n * local variable name rather than the factory import name, without needing to rename on import.\n *\n * ```typescript\n import {createDeferred} from '@kwsites/promise-deferred`;\n ```\n */\nexports.createDeferred = deferred;\n/**\n * Default export allows use as:\n *\n * ```typescript\n import deferred from '@kwsites/promise-deferred`;\n ```\n */\nexports.default = deferred;\n//# sourceMappingURL=index.js.map","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/lib/args/pathspec.ts\nfunction pathspec(...paths) {\n const key = new String(paths);\n cache.set(key, paths);\n return key;\n}\nfunction isPathSpec(path) {\n return path instanceof String && cache.has(path);\n}\nfunction toPaths(pathSpec) {\n return cache.get(pathSpec) || [];\n}\nvar cache;\nvar init_pathspec = __esm({\n \"src/lib/args/pathspec.ts\"() {\n \"use strict\";\n cache = /* @__PURE__ */ new WeakMap();\n }\n});\n\n// src/lib/errors/git-error.ts\nvar GitError;\nvar init_git_error = __esm({\n \"src/lib/errors/git-error.ts\"() {\n \"use strict\";\n GitError = class extends Error {\n constructor(task, message) {\n super(message);\n this.task = task;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n };\n }\n});\n\n// src/lib/errors/git-response-error.ts\nvar GitResponseError;\nvar init_git_response_error = __esm({\n \"src/lib/errors/git-response-error.ts\"() {\n \"use strict\";\n init_git_error();\n GitResponseError = class extends GitError {\n constructor(git, message) {\n super(void 0, message || String(git));\n this.git = git;\n }\n };\n }\n});\n\n// src/lib/errors/task-configuration-error.ts\nvar TaskConfigurationError;\nvar init_task_configuration_error = __esm({\n \"src/lib/errors/task-configuration-error.ts\"() {\n \"use strict\";\n init_git_error();\n TaskConfigurationError = class extends GitError {\n constructor(message) {\n super(void 0, message);\n }\n };\n }\n});\n\n// src/lib/utils/util.ts\nimport { Buffer as Buffer2 } from \"node:buffer\";\nimport { exists, FOLDER } from \"@kwsites/file-exists\";\nfunction asFunction(source) {\n if (typeof source !== \"function\") {\n return NOOP;\n }\n return source;\n}\nfunction isUserFunction(source) {\n return typeof source === \"function\" && source !== NOOP;\n}\nfunction splitOn(input, char) {\n const index = input.indexOf(char);\n if (index <= 0) {\n return [input, \"\"];\n }\n return [input.substr(0, index), input.substr(index + 1)];\n}\nfunction first(input, offset = 0) {\n return isArrayLike(input) && input.length > offset ? input[offset] : void 0;\n}\nfunction last(input, offset = 0) {\n if (isArrayLike(input) && input.length > offset) {\n return input[input.length - 1 - offset];\n }\n}\nfunction isArrayLike(input) {\n return filterHasLength(input);\n}\nfunction toLinesWithContent(input = \"\", trimmed2 = true, separator = \"\\n\") {\n return input.split(separator).reduce((output, line) => {\n const lineContent = trimmed2 ? line.trim() : line;\n if (lineContent) {\n output.push(lineContent);\n }\n return output;\n }, []);\n}\nfunction forEachLineWithContent(input, callback) {\n return toLinesWithContent(input, true).map((line) => callback(line));\n}\nfunction folderExists(path) {\n return exists(path, FOLDER);\n}\nfunction append(target, item) {\n if (Array.isArray(target)) {\n if (!target.includes(item)) {\n target.push(item);\n }\n } else {\n target.add(item);\n }\n return item;\n}\nfunction including(target, item) {\n if (Array.isArray(target) && !target.includes(item)) {\n target.push(item);\n }\n return target;\n}\nfunction remove(target, item) {\n if (Array.isArray(target)) {\n const index = target.indexOf(item);\n if (index >= 0) {\n target.splice(index, 1);\n }\n } else {\n target.delete(item);\n }\n return item;\n}\nfunction asArray(source) {\n return Array.isArray(source) ? source : [source];\n}\nfunction asCamelCase(str) {\n return str.replace(/[\\s-]+(.)/g, (_all, chr) => {\n return chr.toUpperCase();\n });\n}\nfunction asStringArray(source) {\n return asArray(source).map((item) => {\n return item instanceof String ? item : String(item);\n });\n}\nfunction asNumber(source, onNaN = 0) {\n if (source == null) {\n return onNaN;\n }\n const num = parseInt(source, 10);\n return Number.isNaN(num) ? onNaN : num;\n}\nfunction prefixedArray(input, prefix) {\n const output = [];\n for (let i = 0, max = input.length; i < max; i++) {\n output.push(prefix, input[i]);\n }\n return output;\n}\nfunction bufferToString(input) {\n return (Array.isArray(input) ? Buffer2.concat(input) : input).toString(\"utf-8\");\n}\nfunction pick(source, properties) {\n const out = {};\n properties.forEach((key) => {\n if (source[key] !== void 0) {\n out[key] = source[key];\n }\n });\n return out;\n}\nfunction delay(duration = 0) {\n return new Promise((done) => setTimeout(done, duration));\n}\nfunction orVoid(input) {\n if (input === false) {\n return void 0;\n }\n return input;\n}\nvar NULL, NOOP, objectToString;\nvar init_util = __esm({\n \"src/lib/utils/util.ts\"() {\n \"use strict\";\n init_argument_filters();\n NULL = \"\\0\";\n NOOP = () => {\n };\n objectToString = Object.prototype.toString.call.bind(Object.prototype.toString);\n }\n});\n\n// src/lib/utils/argument-filters.ts\nfunction filterType(input, filter, def) {\n if (filter(input)) {\n return input;\n }\n return arguments.length > 2 ? def : void 0;\n}\nfunction filterPrimitives(input, omit) {\n const type = isPathSpec(input) ? \"string\" : typeof input;\n return /number|string|boolean/.test(type) && (!omit || !omit.includes(type));\n}\nfunction filterPlainObject(input) {\n return !!input && objectToString(input) === \"[object Object]\";\n}\nfunction filterFunction(input) {\n return typeof input === \"function\";\n}\nvar filterArray, filterNumber, filterString, filterStringOrStringArray, filterHasLength;\nvar init_argument_filters = __esm({\n \"src/lib/utils/argument-filters.ts\"() {\n \"use strict\";\n init_pathspec();\n init_util();\n filterArray = (input) => {\n return Array.isArray(input);\n };\n filterNumber = (input) => {\n return typeof input === \"number\";\n };\n filterString = (input) => {\n return typeof input === \"string\" || isPathSpec(input);\n };\n filterStringOrStringArray = (input) => {\n return filterString(input) || Array.isArray(input) && input.every(filterString);\n };\n filterHasLength = (input) => {\n if (input == null || \"number|boolean|function\".includes(typeof input)) {\n return false;\n }\n return typeof input.length === \"number\";\n };\n }\n});\n\n// src/lib/utils/exit-codes.ts\nvar ExitCodes;\nvar init_exit_codes = __esm({\n \"src/lib/utils/exit-codes.ts\"() {\n \"use strict\";\n ExitCodes = /* @__PURE__ */ ((ExitCodes2) => {\n ExitCodes2[ExitCodes2[\"SUCCESS\"] = 0] = \"SUCCESS\";\n ExitCodes2[ExitCodes2[\"ERROR\"] = 1] = \"ERROR\";\n ExitCodes2[ExitCodes2[\"NOT_FOUND\"] = -2] = \"NOT_FOUND\";\n ExitCodes2[ExitCodes2[\"UNCLEAN\"] = 128] = \"UNCLEAN\";\n return ExitCodes2;\n })(ExitCodes || {});\n }\n});\n\n// src/lib/utils/git-output-streams.ts\nvar GitOutputStreams;\nvar init_git_output_streams = __esm({\n \"src/lib/utils/git-output-streams.ts\"() {\n \"use strict\";\n GitOutputStreams = class _GitOutputStreams {\n constructor(stdOut, stdErr) {\n this.stdOut = stdOut;\n this.stdErr = stdErr;\n }\n asStrings() {\n return new _GitOutputStreams(this.stdOut.toString(\"utf8\"), this.stdErr.toString(\"utf8\"));\n }\n };\n }\n});\n\n// src/lib/utils/line-parser.ts\nfunction useMatchesDefault() {\n throw new Error(`LineParser:useMatches not implemented`);\n}\nvar LineParser, RemoteLineParser;\nvar init_line_parser = __esm({\n \"src/lib/utils/line-parser.ts\"() {\n \"use strict\";\n LineParser = class {\n constructor(regExp, useMatches) {\n this.matches = [];\n this.useMatches = useMatchesDefault;\n this.parse = (line, target) => {\n this.resetMatches();\n if (!this._regExp.every((reg, index) => this.addMatch(reg, index, line(index)))) {\n return false;\n }\n return this.useMatches(target, this.prepareMatches()) !== false;\n };\n this._regExp = Array.isArray(regExp) ? regExp : [regExp];\n if (useMatches) {\n this.useMatches = useMatches;\n }\n }\n resetMatches() {\n this.matches.length = 0;\n }\n prepareMatches() {\n return this.matches;\n }\n addMatch(reg, index, line) {\n const matched = line && reg.exec(line);\n if (matched) {\n this.pushMatch(index, matched);\n }\n return !!matched;\n }\n pushMatch(_index, matched) {\n this.matches.push(...matched.slice(1));\n }\n };\n RemoteLineParser = class extends LineParser {\n addMatch(reg, index, line) {\n return /^remote:\\s/.test(String(line)) && super.addMatch(reg, index, line);\n }\n pushMatch(index, matched) {\n if (index > 0 || matched.length > 1) {\n super.pushMatch(index, matched);\n }\n }\n };\n }\n});\n\n// src/lib/utils/simple-git-options.ts\nfunction createInstanceConfig(...options) {\n const baseDir = process.cwd();\n const config = Object.assign(\n { baseDir, ...defaultOptions },\n ...options.filter((o) => typeof o === \"object\" && o)\n );\n config.baseDir = config.baseDir || baseDir;\n config.trimmed = config.trimmed === true;\n return config;\n}\nvar defaultOptions;\nvar init_simple_git_options = __esm({\n \"src/lib/utils/simple-git-options.ts\"() {\n \"use strict\";\n defaultOptions = {\n binary: \"git\",\n maxConcurrentProcesses: 5,\n config: [],\n trimmed: false\n };\n }\n});\n\n// src/lib/utils/task-options.ts\nfunction appendTaskOptions(options, commands = []) {\n if (!filterPlainObject(options)) {\n return commands;\n }\n return Object.keys(options).reduce((commands2, key) => {\n const value = options[key];\n if (isPathSpec(value)) {\n commands2.push(value);\n } else if (filterPrimitives(value, [\"boolean\"])) {\n commands2.push(key + \"=\" + value);\n } else if (Array.isArray(value)) {\n for (const v of value) {\n if (!filterPrimitives(v, [\"string\", \"number\"])) {\n commands2.push(key + \"=\" + v);\n }\n }\n } else {\n commands2.push(key);\n }\n return commands2;\n }, commands);\n}\nfunction getTrailingOptions(args, initialPrimitive = 0, objectOnly = false) {\n const command = [];\n for (let i = 0, max = initialPrimitive < 0 ? args.length : initialPrimitive; i < max; i++) {\n if (\"string|number\".includes(typeof args[i])) {\n command.push(String(args[i]));\n }\n }\n appendTaskOptions(trailingOptionsArgument(args), command);\n if (!objectOnly) {\n command.push(...trailingArrayArgument(args));\n }\n return command;\n}\nfunction trailingArrayArgument(args) {\n const hasTrailingCallback = typeof last(args) === \"function\";\n return asStringArray(filterType(last(args, hasTrailingCallback ? 1 : 0), filterArray, []));\n}\nfunction trailingOptionsArgument(args) {\n const hasTrailingCallback = filterFunction(last(args));\n return filterType(last(args, hasTrailingCallback ? 1 : 0), filterPlainObject);\n}\nfunction trailingFunctionArgument(args, includeNoop = true) {\n const callback = asFunction(last(args));\n return includeNoop || isUserFunction(callback) ? callback : void 0;\n}\nvar init_task_options = __esm({\n \"src/lib/utils/task-options.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_util();\n init_pathspec();\n }\n});\n\n// src/lib/utils/task-parser.ts\nfunction callTaskParser(parser4, streams) {\n return parser4(streams.stdOut, streams.stdErr);\n}\nfunction parseStringResponse(result, parsers12, texts, trim = true) {\n asArray(texts).forEach((text) => {\n for (let lines = toLinesWithContent(text, trim), i = 0, max = lines.length; i < max; i++) {\n const line = (offset = 0) => {\n if (i + offset >= max) {\n return;\n }\n return lines[i + offset];\n };\n parsers12.some(({ parse }) => parse(line, result));\n }\n });\n return result;\n}\nvar init_task_parser = __esm({\n \"src/lib/utils/task-parser.ts\"() {\n \"use strict\";\n init_util();\n }\n});\n\n// src/lib/utils/index.ts\nvar utils_exports = {};\n__export(utils_exports, {\n ExitCodes: () => ExitCodes,\n GitOutputStreams: () => GitOutputStreams,\n LineParser: () => LineParser,\n NOOP: () => NOOP,\n NULL: () => NULL,\n RemoteLineParser: () => RemoteLineParser,\n append: () => append,\n appendTaskOptions: () => appendTaskOptions,\n asArray: () => asArray,\n asCamelCase: () => asCamelCase,\n asFunction: () => asFunction,\n asNumber: () => asNumber,\n asStringArray: () => asStringArray,\n bufferToString: () => bufferToString,\n callTaskParser: () => callTaskParser,\n createInstanceConfig: () => createInstanceConfig,\n delay: () => delay,\n filterArray: () => filterArray,\n filterFunction: () => filterFunction,\n filterHasLength: () => filterHasLength,\n filterNumber: () => filterNumber,\n filterPlainObject: () => filterPlainObject,\n filterPrimitives: () => filterPrimitives,\n filterString: () => filterString,\n filterStringOrStringArray: () => filterStringOrStringArray,\n filterType: () => filterType,\n first: () => first,\n folderExists: () => folderExists,\n forEachLineWithContent: () => forEachLineWithContent,\n getTrailingOptions: () => getTrailingOptions,\n including: () => including,\n isUserFunction: () => isUserFunction,\n last: () => last,\n objectToString: () => objectToString,\n orVoid: () => orVoid,\n parseStringResponse: () => parseStringResponse,\n pick: () => pick,\n prefixedArray: () => prefixedArray,\n remove: () => remove,\n splitOn: () => splitOn,\n toLinesWithContent: () => toLinesWithContent,\n trailingFunctionArgument: () => trailingFunctionArgument,\n trailingOptionsArgument: () => trailingOptionsArgument\n});\nvar init_utils = __esm({\n \"src/lib/utils/index.ts\"() {\n \"use strict\";\n init_argument_filters();\n init_exit_codes();\n init_git_output_streams();\n init_line_parser();\n init_simple_git_options();\n init_task_options();\n init_task_parser();\n init_util();\n }\n});\n\n// src/lib/tasks/check-is-repo.ts\nvar check_is_repo_exports = {};\n__export(check_is_repo_exports, {\n CheckRepoActions: () => CheckRepoActions,\n checkIsBareRepoTask: () => checkIsBareRepoTask,\n checkIsRepoRootTask: () => checkIsRepoRootTask,\n checkIsRepoTask: () => checkIsRepoTask\n});\nfunction checkIsRepoTask(action) {\n switch (action) {\n case \"bare\" /* BARE */:\n return checkIsBareRepoTask();\n case \"root\" /* IS_REPO_ROOT */:\n return checkIsRepoRootTask();\n }\n const commands = [\"rev-parse\", \"--is-inside-work-tree\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction checkIsRepoRootTask() {\n const commands = [\"rev-parse\", \"--git-dir\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser(path) {\n return /^\\.(git)?$/.test(path.trim());\n }\n };\n}\nfunction checkIsBareRepoTask() {\n const commands = [\"rev-parse\", \"--is-bare-repository\"];\n return {\n commands,\n format: \"utf-8\",\n onError,\n parser\n };\n}\nfunction isNotRepoMessage(error) {\n return /(Not a git repository|Kein Git-Repository)/i.test(String(error));\n}\nvar CheckRepoActions, onError, parser;\nvar init_check_is_repo = __esm({\n \"src/lib/tasks/check-is-repo.ts\"() {\n \"use strict\";\n init_utils();\n CheckRepoActions = /* @__PURE__ */ ((CheckRepoActions2) => {\n CheckRepoActions2[\"BARE\"] = \"bare\";\n CheckRepoActions2[\"IN_TREE\"] = \"tree\";\n CheckRepoActions2[\"IS_REPO_ROOT\"] = \"root\";\n return CheckRepoActions2;\n })(CheckRepoActions || {});\n onError = ({ exitCode }, error, done, fail) => {\n if (exitCode === 128 /* UNCLEAN */ && isNotRepoMessage(error)) {\n return done(Buffer.from(\"false\"));\n }\n fail(error);\n };\n parser = (text) => {\n return text.trim() === \"true\";\n };\n }\n});\n\n// src/lib/responses/CleanSummary.ts\nfunction cleanSummaryParser(dryRun, text) {\n const summary = new CleanResponse(dryRun);\n const regexp = dryRun ? dryRunRemovalRegexp : removalRegexp;\n toLinesWithContent(text).forEach((line) => {\n const removed = line.replace(regexp, \"\");\n summary.paths.push(removed);\n (isFolderRegexp.test(removed) ? summary.folders : summary.files).push(removed);\n });\n return summary;\n}\nvar CleanResponse, removalRegexp, dryRunRemovalRegexp, isFolderRegexp;\nvar init_CleanSummary = __esm({\n \"src/lib/responses/CleanSummary.ts\"() {\n \"use strict\";\n init_utils();\n CleanResponse = class {\n constructor(dryRun) {\n this.dryRun = dryRun;\n this.paths = [];\n this.files = [];\n this.folders = [];\n }\n };\n removalRegexp = /^[a-z]+\\s*/i;\n dryRunRemovalRegexp = /^[a-z]+\\s+[a-z]+\\s*/i;\n isFolderRegexp = /\\/$/;\n }\n});\n\n// src/lib/tasks/task.ts\nvar task_exports = {};\n__export(task_exports, {\n EMPTY_COMMANDS: () => EMPTY_COMMANDS,\n adhocExecTask: () => adhocExecTask,\n configurationErrorTask: () => configurationErrorTask,\n isBufferTask: () => isBufferTask,\n isEmptyTask: () => isEmptyTask,\n straightThroughBufferTask: () => straightThroughBufferTask,\n straightThroughStringTask: () => straightThroughStringTask\n});\nfunction adhocExecTask(parser4) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser: parser4\n };\n}\nfunction configurationErrorTask(error) {\n return {\n commands: EMPTY_COMMANDS,\n format: \"empty\",\n parser() {\n throw typeof error === \"string\" ? new TaskConfigurationError(error) : error;\n }\n };\n}\nfunction straightThroughStringTask(commands, trimmed2 = false) {\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return trimmed2 ? String(text).trim() : text;\n }\n };\n}\nfunction straightThroughBufferTask(commands) {\n return {\n commands,\n format: \"buffer\",\n parser(buffer) {\n return buffer;\n }\n };\n}\nfunction isBufferTask(task) {\n return task.format === \"buffer\";\n}\nfunction isEmptyTask(task) {\n return task.format === \"empty\" || !task.commands.length;\n}\nvar EMPTY_COMMANDS;\nvar init_task = __esm({\n \"src/lib/tasks/task.ts\"() {\n \"use strict\";\n init_task_configuration_error();\n EMPTY_COMMANDS = [];\n }\n});\n\n// src/lib/tasks/clean.ts\nvar clean_exports = {};\n__export(clean_exports, {\n CONFIG_ERROR_INTERACTIVE_MODE: () => CONFIG_ERROR_INTERACTIVE_MODE,\n CONFIG_ERROR_MODE_REQUIRED: () => CONFIG_ERROR_MODE_REQUIRED,\n CONFIG_ERROR_UNKNOWN_OPTION: () => CONFIG_ERROR_UNKNOWN_OPTION,\n CleanOptions: () => CleanOptions,\n cleanTask: () => cleanTask,\n cleanWithOptionsTask: () => cleanWithOptionsTask,\n isCleanOptionsArray: () => isCleanOptionsArray\n});\nfunction cleanWithOptionsTask(mode, customArgs) {\n const { cleanMode, options, valid } = getCleanOptions(mode);\n if (!cleanMode) {\n return configurationErrorTask(CONFIG_ERROR_MODE_REQUIRED);\n }\n if (!valid.options) {\n return configurationErrorTask(CONFIG_ERROR_UNKNOWN_OPTION + JSON.stringify(mode));\n }\n options.push(...customArgs);\n if (options.some(isInteractiveMode)) {\n return configurationErrorTask(CONFIG_ERROR_INTERACTIVE_MODE);\n }\n return cleanTask(cleanMode, options);\n}\nfunction cleanTask(mode, customArgs) {\n const commands = [\"clean\", `-${mode}`, ...customArgs];\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return cleanSummaryParser(mode === \"n\" /* DRY_RUN */, text);\n }\n };\n}\nfunction isCleanOptionsArray(input) {\n return Array.isArray(input) && input.every((test) => CleanOptionValues.has(test));\n}\nfunction getCleanOptions(input) {\n let cleanMode;\n let options = [];\n let valid = { cleanMode: false, options: true };\n input.replace(/[^a-z]i/g, \"\").split(\"\").forEach((char) => {\n if (isCleanMode(char)) {\n cleanMode = char;\n valid.cleanMode = true;\n } else {\n valid.options = valid.options && isKnownOption(options[options.length] = `-${char}`);\n }\n });\n return {\n cleanMode,\n options,\n valid\n };\n}\nfunction isCleanMode(cleanMode) {\n return cleanMode === \"f\" /* FORCE */ || cleanMode === \"n\" /* DRY_RUN */;\n}\nfunction isKnownOption(option) {\n return /^-[a-z]$/i.test(option) && CleanOptionValues.has(option.charAt(1));\n}\nfunction isInteractiveMode(option) {\n if (/^-[^\\-]/.test(option)) {\n return option.indexOf(\"i\") > 0;\n }\n return option === \"--interactive\";\n}\nvar CONFIG_ERROR_INTERACTIVE_MODE, CONFIG_ERROR_MODE_REQUIRED, CONFIG_ERROR_UNKNOWN_OPTION, CleanOptions, CleanOptionValues;\nvar init_clean = __esm({\n \"src/lib/tasks/clean.ts\"() {\n \"use strict\";\n init_CleanSummary();\n init_utils();\n init_task();\n CONFIG_ERROR_INTERACTIVE_MODE = \"Git clean interactive mode is not supported\";\n CONFIG_ERROR_MODE_REQUIRED = 'Git clean mode parameter (\"n\" or \"f\") is required';\n CONFIG_ERROR_UNKNOWN_OPTION = \"Git clean unknown option found in: \";\n CleanOptions = /* @__PURE__ */ ((CleanOptions2) => {\n CleanOptions2[\"DRY_RUN\"] = \"n\";\n CleanOptions2[\"FORCE\"] = \"f\";\n CleanOptions2[\"IGNORED_INCLUDED\"] = \"x\";\n CleanOptions2[\"IGNORED_ONLY\"] = \"X\";\n CleanOptions2[\"EXCLUDING\"] = \"e\";\n CleanOptions2[\"QUIET\"] = \"q\";\n CleanOptions2[\"RECURSIVE\"] = \"d\";\n return CleanOptions2;\n })(CleanOptions || {});\n CleanOptionValues = /* @__PURE__ */ new Set([\n \"i\",\n ...asStringArray(Object.values(CleanOptions))\n ]);\n }\n});\n\n// src/lib/responses/ConfigList.ts\nfunction configListParser(text) {\n const config = new ConfigList();\n for (const item of configParser(text)) {\n config.addValue(item.file, String(item.key), item.value);\n }\n return config;\n}\nfunction configGetParser(text, key) {\n let value = null;\n const values = [];\n const scopes = /* @__PURE__ */ new Map();\n for (const item of configParser(text, key)) {\n if (item.key !== key) {\n continue;\n }\n values.push(value = item.value);\n if (!scopes.has(item.file)) {\n scopes.set(item.file, []);\n }\n scopes.get(item.file).push(value);\n }\n return {\n key,\n paths: Array.from(scopes.keys()),\n scopes,\n value,\n values\n };\n}\nfunction configFilePath(filePath) {\n return filePath.replace(/^(file):/, \"\");\n}\nfunction* configParser(text, requestedKey = null) {\n const lines = text.split(\"\\0\");\n for (let i = 0, max = lines.length - 1; i < max; ) {\n const file = configFilePath(lines[i++]);\n let value = lines[i++];\n let key = requestedKey;\n if (value.includes(\"\\n\")) {\n const line = splitOn(value, \"\\n\");\n key = line[0];\n value = line[1];\n }\n yield { file, key, value };\n }\n}\nvar ConfigList;\nvar init_ConfigList = __esm({\n \"src/lib/responses/ConfigList.ts\"() {\n \"use strict\";\n init_utils();\n ConfigList = class {\n constructor() {\n this.files = [];\n this.values = /* @__PURE__ */ Object.create(null);\n }\n get all() {\n if (!this._all) {\n this._all = this.files.reduce((all, file) => {\n return Object.assign(all, this.values[file]);\n }, {});\n }\n return this._all;\n }\n addFile(file) {\n if (!(file in this.values)) {\n const latest = last(this.files);\n this.values[file] = latest ? Object.create(this.values[latest]) : {};\n this.files.push(file);\n }\n return this.values[file];\n }\n addValue(file, key, value) {\n const values = this.addFile(file);\n if (!Object.hasOwn(values, key)) {\n values[key] = value;\n } else if (Array.isArray(values[key])) {\n values[key].push(value);\n } else {\n values[key] = [values[key], value];\n }\n this._all = void 0;\n }\n };\n }\n});\n\n// src/lib/tasks/config.ts\nfunction asConfigScope(scope, fallback) {\n if (typeof scope === \"string\" && Object.hasOwn(GitConfigScope, scope)) {\n return scope;\n }\n return fallback;\n}\nfunction addConfigTask(key, value, append2, scope) {\n const commands = [\"config\", `--${scope}`];\n if (append2) {\n commands.push(\"--add\");\n }\n commands.push(key, value);\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return text;\n }\n };\n}\nfunction getConfigTask(key, scope) {\n const commands = [\"config\", \"--null\", \"--show-origin\", \"--get-all\", key];\n if (scope) {\n commands.splice(1, 0, `--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configGetParser(text, key);\n }\n };\n}\nfunction listConfigTask(scope) {\n const commands = [\"config\", \"--list\", \"--show-origin\", \"--null\"];\n if (scope) {\n commands.push(`--${scope}`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return configListParser(text);\n }\n };\n}\nfunction config_default() {\n return {\n addConfig(key, value, ...rest) {\n return this._runTask(\n addConfigTask(\n key,\n value,\n rest[0] === true,\n asConfigScope(rest[1], \"local\" /* local */)\n ),\n trailingFunctionArgument(arguments)\n );\n },\n getConfig(key, scope) {\n return this._runTask(\n getConfigTask(key, asConfigScope(scope, void 0)),\n trailingFunctionArgument(arguments)\n );\n },\n listConfig(...rest) {\n return this._runTask(\n listConfigTask(asConfigScope(rest[0], void 0)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar GitConfigScope;\nvar init_config = __esm({\n \"src/lib/tasks/config.ts\"() {\n \"use strict\";\n init_ConfigList();\n init_utils();\n GitConfigScope = /* @__PURE__ */ ((GitConfigScope2) => {\n GitConfigScope2[\"system\"] = \"system\";\n GitConfigScope2[\"global\"] = \"global\";\n GitConfigScope2[\"local\"] = \"local\";\n GitConfigScope2[\"worktree\"] = \"worktree\";\n return GitConfigScope2;\n })(GitConfigScope || {});\n }\n});\n\n// src/lib/tasks/diff-name-status.ts\nfunction isDiffNameStatus(input) {\n return diffNameStatus.has(input);\n}\nvar DiffNameStatus, diffNameStatus;\nvar init_diff_name_status = __esm({\n \"src/lib/tasks/diff-name-status.ts\"() {\n \"use strict\";\n DiffNameStatus = /* @__PURE__ */ ((DiffNameStatus2) => {\n DiffNameStatus2[\"ADDED\"] = \"A\";\n DiffNameStatus2[\"COPIED\"] = \"C\";\n DiffNameStatus2[\"DELETED\"] = \"D\";\n DiffNameStatus2[\"MODIFIED\"] = \"M\";\n DiffNameStatus2[\"RENAMED\"] = \"R\";\n DiffNameStatus2[\"CHANGED\"] = \"T\";\n DiffNameStatus2[\"UNMERGED\"] = \"U\";\n DiffNameStatus2[\"UNKNOWN\"] = \"X\";\n DiffNameStatus2[\"BROKEN\"] = \"B\";\n return DiffNameStatus2;\n })(DiffNameStatus || {});\n diffNameStatus = new Set(Object.values(DiffNameStatus));\n }\n});\n\n// src/lib/tasks/grep.ts\nfunction grepQueryBuilder(...params) {\n return new GrepQuery().param(...params);\n}\nfunction parseGrep(grep) {\n const paths = /* @__PURE__ */ new Set();\n const results = {};\n forEachLineWithContent(grep, (input) => {\n const [path, line, preview] = input.split(NULL);\n paths.add(path);\n (results[path] = results[path] || []).push({\n line: asNumber(line),\n path,\n preview\n });\n });\n return {\n paths,\n results\n };\n}\nfunction grep_default() {\n return {\n grep(searchTerm) {\n const then = trailingFunctionArgument(arguments);\n const options = getTrailingOptions(arguments);\n for (const option of disallowedOptions) {\n if (options.includes(option)) {\n return this._runTask(\n configurationErrorTask(`git.grep: use of \"${option}\" is not supported.`),\n then\n );\n }\n }\n if (typeof searchTerm === \"string\") {\n searchTerm = grepQueryBuilder().param(searchTerm);\n }\n const commands = [\"grep\", \"--null\", \"-n\", \"--full-name\", ...options, ...searchTerm];\n return this._runTask(\n {\n commands,\n format: \"utf-8\",\n parser(stdOut) {\n return parseGrep(stdOut);\n }\n },\n then\n );\n }\n };\n}\nvar disallowedOptions, Query, _a, GrepQuery;\nvar init_grep = __esm({\n \"src/lib/tasks/grep.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n disallowedOptions = [\"-h\"];\n Query = Symbol(\"grepQuery\");\n GrepQuery = class {\n constructor() {\n this[_a] = [];\n }\n *[(_a = Query, Symbol.iterator)]() {\n for (const query of this[Query]) {\n yield query;\n }\n }\n and(...and) {\n and.length && this[Query].push(\"--and\", \"(\", ...prefixedArray(and, \"-e\"), \")\");\n return this;\n }\n param(...param) {\n this[Query].push(...prefixedArray(param, \"-e\"));\n return this;\n }\n };\n }\n});\n\n// src/lib/tasks/reset.ts\nvar reset_exports = {};\n__export(reset_exports, {\n ResetMode: () => ResetMode,\n getResetMode: () => getResetMode,\n resetTask: () => resetTask\n});\nfunction resetTask(mode, customArgs) {\n const commands = [\"reset\"];\n if (isValidResetMode(mode)) {\n commands.push(`--${mode}`);\n }\n commands.push(...customArgs);\n return straightThroughStringTask(commands);\n}\nfunction getResetMode(mode) {\n if (isValidResetMode(mode)) {\n return mode;\n }\n switch (typeof mode) {\n case \"string\":\n case \"undefined\":\n return \"soft\" /* SOFT */;\n }\n return;\n}\nfunction isValidResetMode(mode) {\n return typeof mode === \"string\" && validResetModes.includes(mode);\n}\nvar ResetMode, validResetModes;\nvar init_reset = __esm({\n \"src/lib/tasks/reset.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n ResetMode = /* @__PURE__ */ ((ResetMode2) => {\n ResetMode2[\"MIXED\"] = \"mixed\";\n ResetMode2[\"SOFT\"] = \"soft\";\n ResetMode2[\"HARD\"] = \"hard\";\n ResetMode2[\"MERGE\"] = \"merge\";\n ResetMode2[\"KEEP\"] = \"keep\";\n return ResetMode2;\n })(ResetMode || {});\n validResetModes = asStringArray(Object.values(ResetMode));\n }\n});\n\n// src/lib/git-logger.ts\nimport debug from \"debug\";\nfunction createLog() {\n return debug(\"simple-git\");\n}\nfunction prefixedLogger(to, prefix, forward) {\n if (!prefix || !String(prefix).replace(/\\s*/, \"\")) {\n return !forward ? to : (message, ...args) => {\n to(message, ...args);\n forward(message, ...args);\n };\n }\n return (message, ...args) => {\n to(`%s ${message}`, prefix, ...args);\n if (forward) {\n forward(message, ...args);\n }\n };\n}\nfunction childLoggerName(name, childDebugger, { namespace: parentNamespace }) {\n if (typeof name === \"string\") {\n return name;\n }\n const childNamespace = childDebugger && childDebugger.namespace || \"\";\n if (childNamespace.startsWith(parentNamespace)) {\n return childNamespace.substr(parentNamespace.length + 1);\n }\n return childNamespace || parentNamespace;\n}\nfunction createLogger(label, verbose, initialStep, infoDebugger = createLog()) {\n const labelPrefix = label && `[${label}]` || \"\";\n const spawned = [];\n const debugDebugger = typeof verbose === \"string\" ? infoDebugger.extend(verbose) : verbose;\n const key = childLoggerName(filterType(verbose, filterString), debugDebugger, infoDebugger);\n return step(initialStep);\n function sibling(name, initial) {\n return append(\n spawned,\n createLogger(label, key.replace(/^[^:]+/, name), initial, infoDebugger)\n );\n }\n function step(phase) {\n const stepPrefix = phase && `[${phase}]` || \"\";\n const debug2 = debugDebugger && prefixedLogger(debugDebugger, stepPrefix) || NOOP;\n const info = prefixedLogger(infoDebugger, `${labelPrefix} ${stepPrefix}`, debug2);\n return Object.assign(debugDebugger ? debug2 : info, {\n label,\n sibling,\n info,\n step\n });\n }\n}\nvar init_git_logger = __esm({\n \"src/lib/git-logger.ts\"() {\n \"use strict\";\n init_utils();\n debug.formatters.L = (value) => String(filterHasLength(value) ? value.length : \"-\");\n debug.formatters.B = (value) => {\n if (Buffer.isBuffer(value)) {\n return value.toString(\"utf8\");\n }\n return objectToString(value);\n };\n }\n});\n\n// src/lib/runners/tasks-pending-queue.ts\nvar TasksPendingQueue;\nvar init_tasks_pending_queue = __esm({\n \"src/lib/runners/tasks-pending-queue.ts\"() {\n \"use strict\";\n init_git_error();\n init_git_logger();\n TasksPendingQueue = class _TasksPendingQueue {\n constructor(logLabel = \"GitExecutor\") {\n this.logLabel = logLabel;\n this._queue = /* @__PURE__ */ new Map();\n }\n withProgress(task) {\n return this._queue.get(task);\n }\n createProgress(task) {\n const name = _TasksPendingQueue.getName(task.commands[0]);\n const logger = createLogger(this.logLabel, name);\n return {\n task,\n logger,\n name\n };\n }\n push(task) {\n const progress = this.createProgress(task);\n progress.logger(\"Adding task to the queue, commands = %o\", task.commands);\n this._queue.set(task, progress);\n return progress;\n }\n fatal(err) {\n for (const [task, { logger }] of Array.from(this._queue.entries())) {\n if (task === err.task) {\n logger.info(`Failed %o`, err);\n logger(\n `Fatal exception, any as-yet un-started tasks run through this executor will not be attempted`\n );\n } else {\n logger.info(\n `A fatal exception occurred in a previous task, the queue has been purged: %o`,\n err.message\n );\n }\n this.complete(task);\n }\n if (this._queue.size !== 0) {\n throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`);\n }\n }\n complete(task) {\n const progress = this.withProgress(task);\n if (progress) {\n this._queue.delete(task);\n }\n }\n attempt(task) {\n const progress = this.withProgress(task);\n if (!progress) {\n throw new GitError(void 0, \"TasksPendingQueue: attempt called for an unknown task\");\n }\n progress.logger(\"Starting task\");\n return progress;\n }\n static getName(name = \"empty\") {\n return `task:${name}:${++_TasksPendingQueue.counter}`;\n }\n static {\n this.counter = 0;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor-chain.ts\nimport { spawn } from \"child_process\";\nfunction pluginContext(task, commands) {\n return {\n method: first(task.commands) || \"\",\n commands\n };\n}\nfunction onErrorReceived(target, logger) {\n return (err) => {\n logger(`[ERROR] child process exception %o`, err);\n target.push(Buffer.from(String(err.stack), \"ascii\"));\n };\n}\nfunction onDataReceived(target, name, logger, output) {\n return (buffer) => {\n logger(`%s received %L bytes`, name, buffer);\n output(`%B`, buffer);\n target.push(buffer);\n };\n}\nvar GitExecutorChain;\nvar init_git_executor_chain = __esm({\n \"src/lib/runners/git-executor-chain.ts\"() {\n \"use strict\";\n init_git_error();\n init_task();\n init_utils();\n init_tasks_pending_queue();\n GitExecutorChain = class {\n constructor(_executor, _scheduler, _plugins) {\n this._executor = _executor;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = Promise.resolve();\n this._queue = new TasksPendingQueue();\n }\n get cwd() {\n return this._cwd || this._executor.cwd;\n }\n set cwd(cwd) {\n this._cwd = cwd;\n }\n get env() {\n return this._executor.env;\n }\n get outputHandler() {\n return this._executor.outputHandler;\n }\n chain() {\n return this;\n }\n push(task) {\n this._queue.push(task);\n return this._chain = this._chain.then(() => this.attemptTask(task));\n }\n async attemptTask(task) {\n const onScheduleComplete = await this._scheduler.next();\n const onQueueComplete = () => this._queue.complete(task);\n try {\n const { logger } = this._queue.attempt(task);\n return await (isEmptyTask(task) ? this.attemptEmptyTask(task, logger) : this.attemptRemoteTask(task, logger));\n } catch (e) {\n throw this.onFatalException(task, e);\n } finally {\n onQueueComplete();\n onScheduleComplete();\n }\n }\n onFatalException(task, e) {\n const gitError = e instanceof GitError ? Object.assign(e, { task }) : new GitError(task, e && String(e));\n this._chain = Promise.resolve();\n this._queue.fatal(gitError);\n return gitError;\n }\n async attemptRemoteTask(task, logger) {\n const binary = this._plugins.exec(\"spawn.binary\", \"\", pluginContext(task, task.commands));\n const args = this._plugins.exec(\n \"spawn.args\",\n [...task.commands],\n pluginContext(task, task.commands)\n );\n const raw = await this.gitResponse(\n task,\n binary,\n args,\n this.outputHandler,\n logger.step(\"SPAWN\")\n );\n const outputStreams = await this.handleTaskData(task, args, raw, logger.step(\"HANDLE\"));\n logger(`passing response to task's parser as a %s`, task.format);\n if (isBufferTask(task)) {\n return callTaskParser(task.parser, outputStreams);\n }\n return callTaskParser(task.parser, outputStreams.asStrings());\n }\n async attemptEmptyTask(task, logger) {\n logger(`empty task bypassing child process to call to task's parser`);\n return task.parser(this);\n }\n handleTaskData(task, args, result, logger) {\n const { exitCode, rejection, stdOut, stdErr } = result;\n return new Promise((done, fail) => {\n logger(`Preparing to handle process response exitCode=%d stdOut=`, exitCode);\n const { error } = this._plugins.exec(\n \"task.error\",\n { error: rejection },\n {\n ...pluginContext(task, args),\n ...result\n }\n );\n if (error && task.onError) {\n logger.info(`exitCode=%s handling with custom error handler`);\n return task.onError(\n result,\n error,\n (newStdOut) => {\n logger.info(`custom error handler treated as success`);\n logger(`custom error returned a %s`, objectToString(newStdOut));\n done(\n new GitOutputStreams(\n Array.isArray(newStdOut) ? Buffer.concat(newStdOut) : newStdOut,\n Buffer.concat(stdErr)\n )\n );\n },\n fail\n );\n }\n if (error) {\n logger.info(\n `handling as error: exitCode=%s stdErr=%s rejection=%o`,\n exitCode,\n stdErr.length,\n rejection\n );\n return fail(error);\n }\n logger.info(`retrieving task output complete`);\n done(new GitOutputStreams(Buffer.concat(stdOut), Buffer.concat(stdErr)));\n });\n }\n async gitResponse(task, command, args, outputHandler, logger) {\n const outputLogger = logger.sibling(\"output\");\n const spawnOptions = this._plugins.exec(\n \"spawn.options\",\n {\n cwd: this.cwd,\n env: this.env,\n windowsHide: true\n },\n pluginContext(task, task.commands)\n );\n return new Promise((done) => {\n const stdOut = [];\n const stdErr = [];\n logger.info(`%s %o`, command, args);\n logger(\"%O\", spawnOptions);\n let rejection = this._beforeSpawn(task, args);\n if (rejection) {\n return done({\n stdOut,\n stdErr,\n exitCode: 9901,\n rejection\n });\n }\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n const spawned = spawn(command, args, spawnOptions);\n spawned.stdout.on(\n \"data\",\n onDataReceived(stdOut, \"stdOut\", logger, outputLogger.step(\"stdOut\"))\n );\n spawned.stderr.on(\n \"data\",\n onDataReceived(stdErr, \"stdErr\", logger, outputLogger.step(\"stdErr\"))\n );\n spawned.on(\"error\", onErrorReceived(stdErr, logger));\n if (outputHandler) {\n logger(`Passing child process stdOut/stdErr to custom outputHandler`);\n outputHandler(command, spawned.stdout, spawned.stderr, [...args]);\n }\n this._plugins.exec(\"spawn.after\", void 0, {\n ...pluginContext(task, args),\n spawned,\n close(exitCode, reason) {\n done({\n stdOut,\n stdErr,\n exitCode,\n rejection: rejection || reason\n });\n },\n kill(reason) {\n if (spawned.killed) {\n return;\n }\n rejection = reason;\n spawned.kill(\"SIGINT\");\n }\n });\n });\n }\n _beforeSpawn(task, args) {\n let rejection;\n this._plugins.exec(\"spawn.before\", void 0, {\n ...pluginContext(task, args),\n kill(reason) {\n rejection = reason || rejection;\n }\n });\n return rejection;\n }\n };\n }\n});\n\n// src/lib/runners/git-executor.ts\nvar git_executor_exports = {};\n__export(git_executor_exports, {\n GitExecutor: () => GitExecutor\n});\nvar GitExecutor;\nvar init_git_executor = __esm({\n \"src/lib/runners/git-executor.ts\"() {\n \"use strict\";\n init_git_executor_chain();\n GitExecutor = class {\n constructor(cwd, _scheduler, _plugins) {\n this.cwd = cwd;\n this._scheduler = _scheduler;\n this._plugins = _plugins;\n this._chain = new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n chain() {\n return new GitExecutorChain(this, this._scheduler, this._plugins);\n }\n push(task) {\n return this._chain.push(task);\n }\n };\n }\n});\n\n// src/lib/task-callback.ts\nfunction taskCallback(task, response, callback = NOOP) {\n const onSuccess = (data) => {\n callback(null, data);\n };\n const onError2 = (err) => {\n if (err?.task === task) {\n callback(\n err instanceof GitResponseError ? addDeprecationNoticeToError(err) : err,\n void 0\n );\n }\n };\n response.then(onSuccess, onError2);\n}\nfunction addDeprecationNoticeToError(err) {\n let log = (name) => {\n console.warn(\n `simple-git deprecation notice: accessing GitResponseError.${name} should be GitResponseError.git.${name}, this will no longer be available in version 3`\n );\n log = NOOP;\n };\n return Object.create(err, Object.getOwnPropertyNames(err.git).reduce(descriptorReducer, {}));\n function descriptorReducer(all, name) {\n if (name in err) {\n return all;\n }\n all[name] = {\n enumerable: false,\n configurable: false,\n get() {\n log(name);\n return err.git[name];\n }\n };\n return all;\n }\n}\nvar init_task_callback = __esm({\n \"src/lib/task-callback.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_utils();\n }\n});\n\n// src/lib/tasks/change-working-directory.ts\nfunction changeWorkingDirectoryTask(directory, root) {\n return adhocExecTask((instance) => {\n if (!folderExists(directory)) {\n throw new Error(`Git.cwd: cannot change to non-directory \"${directory}\"`);\n }\n return (root || instance).cwd = directory;\n });\n}\nvar init_change_working_directory = __esm({\n \"src/lib/tasks/change-working-directory.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/checkout.ts\nfunction checkoutTask(args) {\n const commands = [\"checkout\", ...args];\n if (commands[1] === \"-b\" && commands.includes(\"-B\")) {\n commands[1] = remove(commands, \"-B\");\n }\n return straightThroughStringTask(commands);\n}\nfunction checkout_default() {\n return {\n checkout() {\n return this._runTask(\n checkoutTask(getTrailingOptions(arguments, 1)),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutBranch(branchName, startPoint) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, startPoint, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n },\n checkoutLocalBranch(branchName) {\n return this._runTask(\n checkoutTask([\"-b\", branchName, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_checkout = __esm({\n \"src/lib/tasks/checkout.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/count-objects.ts\nfunction countObjectsResponse() {\n return {\n count: 0,\n garbage: 0,\n inPack: 0,\n packs: 0,\n prunePackable: 0,\n size: 0,\n sizeGarbage: 0,\n sizePack: 0\n };\n}\nfunction count_objects_default() {\n return {\n countObjects() {\n return this._runTask({\n commands: [\"count-objects\", \"--verbose\"],\n format: \"utf-8\",\n parser(stdOut) {\n return parseStringResponse(countObjectsResponse(), [parser2], stdOut);\n }\n });\n }\n };\n}\nvar parser2;\nvar init_count_objects = __esm({\n \"src/lib/tasks/count-objects.ts\"() {\n \"use strict\";\n init_utils();\n parser2 = new LineParser(\n /([a-z-]+): (\\d+)$/,\n (result, [key, value]) => {\n const property = asCamelCase(key);\n if (Object.hasOwn(result, property)) {\n result[property] = asNumber(value);\n }\n }\n );\n }\n});\n\n// src/lib/parsers/parse-commit.ts\nfunction parseCommitResult(stdOut) {\n const result = {\n author: null,\n branch: \"\",\n commit: \"\",\n root: false,\n summary: {\n changes: 0,\n insertions: 0,\n deletions: 0\n }\n };\n return parseStringResponse(result, parsers, stdOut);\n}\nvar parsers;\nvar init_parse_commit = __esm({\n \"src/lib/parsers/parse-commit.ts\"() {\n \"use strict\";\n init_utils();\n parsers = [\n new LineParser(/^\\[([^\\s]+)( \\([^)]+\\))? ([^\\]]+)/, (result, [branch, root, commit]) => {\n result.branch = branch;\n result.commit = commit;\n result.root = !!root;\n }),\n new LineParser(/\\s*Author:\\s(.+)/i, (result, [author]) => {\n const parts = author.split(\"<\");\n const email = parts.pop();\n if (!email || !email.includes(\"@\")) {\n return;\n }\n result.author = {\n email: email.substr(0, email.length - 1),\n name: parts.join(\"<\").trim()\n };\n }),\n new LineParser(\n /(\\d+)[^,]*(?:,\\s*(\\d+)[^,]*)(?:,\\s*(\\d+))/g,\n (result, [changes, insertions, deletions]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n result.summary.insertions = parseInt(insertions, 10) || 0;\n result.summary.deletions = parseInt(deletions, 10) || 0;\n }\n ),\n new LineParser(\n /^(\\d+)[^,]*(?:,\\s*(\\d+)[^(]+\\(([+-]))?/,\n (result, [changes, lines, direction]) => {\n result.summary.changes = parseInt(changes, 10) || 0;\n const count = parseInt(lines, 10) || 0;\n if (direction === \"-\") {\n result.summary.deletions = count;\n } else if (direction === \"+\") {\n result.summary.insertions = count;\n }\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/commit.ts\nfunction commitTask(message, files, customArgs) {\n const commands = [\n \"-c\",\n \"core.abbrev=40\",\n \"commit\",\n ...prefixedArray(message, \"-m\"),\n ...files,\n ...customArgs\n ];\n return {\n commands,\n format: \"utf-8\",\n parser: parseCommitResult\n };\n}\nfunction commit_default() {\n return {\n commit(message, ...rest) {\n const next = trailingFunctionArgument(arguments);\n const task = rejectDeprecatedSignatures(message) || commitTask(\n asArray(message),\n asArray(filterType(rest[0], filterStringOrStringArray, [])),\n [\n ...asStringArray(filterType(rest[1], filterArray, [])),\n ...getTrailingOptions(arguments, 0, true)\n ]\n );\n return this._runTask(task, next);\n }\n };\n function rejectDeprecatedSignatures(message) {\n return !filterStringOrStringArray(message) && configurationErrorTask(\n `git.commit: requires the commit message to be supplied as a string/string[]`\n );\n }\n}\nvar init_commit = __esm({\n \"src/lib/tasks/commit.ts\"() {\n \"use strict\";\n init_parse_commit();\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/first-commit.ts\nfunction first_commit_default() {\n return {\n firstCommit() {\n return this._runTask(\n straightThroughStringTask([\"rev-list\", \"--max-parents=0\", \"HEAD\"], true),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_first_commit = __esm({\n \"src/lib/tasks/first-commit.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/tasks/hash-object.ts\nfunction hashObjectTask(filePath, write) {\n const commands = [\"hash-object\", filePath];\n if (write) {\n commands.push(\"-w\");\n }\n return straightThroughStringTask(commands, true);\n}\nvar init_hash_object = __esm({\n \"src/lib/tasks/hash-object.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/InitSummary.ts\nfunction parseInit(bare, path, text) {\n const response = String(text).trim();\n let result;\n if (result = initResponseRegex.exec(response)) {\n return new InitSummary(bare, path, false, result[1]);\n }\n if (result = reInitResponseRegex.exec(response)) {\n return new InitSummary(bare, path, true, result[1]);\n }\n let gitDir = \"\";\n const tokens = response.split(\" \");\n while (tokens.length) {\n const token = tokens.shift();\n if (token === \"in\") {\n gitDir = tokens.join(\" \");\n break;\n }\n }\n return new InitSummary(bare, path, /^re/i.test(response), gitDir);\n}\nvar InitSummary, initResponseRegex, reInitResponseRegex;\nvar init_InitSummary = __esm({\n \"src/lib/responses/InitSummary.ts\"() {\n \"use strict\";\n InitSummary = class {\n constructor(bare, path, existing, gitDir) {\n this.bare = bare;\n this.path = path;\n this.existing = existing;\n this.gitDir = gitDir;\n }\n };\n initResponseRegex = /^Init.+ repository in (.+)$/;\n reInitResponseRegex = /^Rein.+ in (.+)$/;\n }\n});\n\n// src/lib/tasks/init.ts\nfunction hasBareCommand(command) {\n return command.includes(bareCommand);\n}\nfunction initTask(bare = false, path, customArgs) {\n const commands = [\"init\", ...customArgs];\n if (bare && !hasBareCommand(commands)) {\n commands.splice(1, 0, bareCommand);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(text) {\n return parseInit(commands.includes(\"--bare\"), path, text);\n }\n };\n}\nvar bareCommand;\nvar init_init = __esm({\n \"src/lib/tasks/init.ts\"() {\n \"use strict\";\n init_InitSummary();\n bareCommand = \"--bare\";\n }\n});\n\n// src/lib/args/log-format.ts\nfunction logFormatFromCommand(customArgs) {\n for (let i = 0; i < customArgs.length; i++) {\n const format = logFormatRegex.exec(customArgs[i]);\n if (format) {\n return `--${format[1]}`;\n }\n }\n return \"\" /* NONE */;\n}\nfunction isLogFormat(customArg) {\n return logFormatRegex.test(customArg);\n}\nvar logFormatRegex;\nvar init_log_format = __esm({\n \"src/lib/args/log-format.ts\"() {\n \"use strict\";\n logFormatRegex = /^--(stat|numstat|name-only|name-status)(=|$)/;\n }\n});\n\n// src/lib/responses/DiffSummary.ts\nvar DiffSummary;\nvar init_DiffSummary = __esm({\n \"src/lib/responses/DiffSummary.ts\"() {\n \"use strict\";\n DiffSummary = class {\n constructor() {\n this.changed = 0;\n this.deletions = 0;\n this.insertions = 0;\n this.files = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-diff-summary.ts\nfunction getDiffParser(format = \"\" /* NONE */) {\n const parser4 = diffSummaryParsers[format];\n return (stdOut) => parseStringResponse(new DiffSummary(), parser4, stdOut, false);\n}\nvar statParser, numStatParser, nameOnlyParser, nameStatusParser, diffSummaryParsers;\nvar init_parse_diff_summary = __esm({\n \"src/lib/parsers/parse-diff-summary.ts\"() {\n \"use strict\";\n init_log_format();\n init_DiffSummary();\n init_diff_name_status();\n init_utils();\n statParser = [\n new LineParser(\n /^(.+)\\s+\\|\\s+(\\d+)(\\s+[+\\-]+)?$/,\n (result, [file, changes, alterations = \"\"]) => {\n result.files.push({\n file: file.trim(),\n changes: asNumber(changes),\n insertions: alterations.replace(/[^+]/g, \"\").length,\n deletions: alterations.replace(/[^-]/g, \"\").length,\n binary: false\n });\n }\n ),\n new LineParser(\n /^(.+) \\|\\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,\n (result, [file, before, after]) => {\n result.files.push({\n file: file.trim(),\n before: asNumber(before),\n after: asNumber(after),\n binary: true\n });\n }\n ),\n new LineParser(\n /(\\d+) files? changed\\s*((?:, \\d+ [^,]+){0,2})/,\n (result, [changed, summary]) => {\n const inserted = /(\\d+) i/.exec(summary);\n const deleted = /(\\d+) d/.exec(summary);\n result.changed = asNumber(changed);\n result.insertions = asNumber(inserted?.[1]);\n result.deletions = asNumber(deleted?.[1]);\n }\n )\n ];\n numStatParser = [\n new LineParser(\n /(\\d+)\\t(\\d+)\\t(.+)$/,\n (result, [changesInsert, changesDelete, file]) => {\n const insertions = asNumber(changesInsert);\n const deletions = asNumber(changesDelete);\n result.changed++;\n result.insertions += insertions;\n result.deletions += deletions;\n result.files.push({\n file,\n changes: insertions + deletions,\n insertions,\n deletions,\n binary: false\n });\n }\n ),\n new LineParser(/-\\t-\\t(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n after: 0,\n before: 0,\n binary: true\n });\n })\n ];\n nameOnlyParser = [\n new LineParser(/(.+)$/, (result, [file]) => {\n result.changed++;\n result.files.push({\n file,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false\n });\n })\n ];\n nameStatusParser = [\n new LineParser(\n /([ACDMRTUXB])([0-9]{0,3})\\t(.[^\\t]*)(\\t(.[^\\t]*))?$/,\n (result, [status, similarity, from, _to, to]) => {\n result.changed++;\n result.files.push({\n file: to ?? from,\n changes: 0,\n insertions: 0,\n deletions: 0,\n binary: false,\n status: orVoid(isDiffNameStatus(status) && status),\n from: orVoid(!!to && from !== to && from),\n similarity: asNumber(similarity)\n });\n }\n )\n ];\n diffSummaryParsers = {\n [\"\" /* NONE */]: statParser,\n [\"--stat\" /* STAT */]: statParser,\n [\"--numstat\" /* NUM_STAT */]: numStatParser,\n [\"--name-status\" /* NAME_STATUS */]: nameStatusParser,\n [\"--name-only\" /* NAME_ONLY */]: nameOnlyParser\n };\n }\n});\n\n// src/lib/parsers/parse-list-log-summary.ts\nfunction lineBuilder(tokens, fields) {\n return fields.reduce(\n (line, field, index) => {\n line[field] = tokens[index] || \"\";\n return line;\n },\n /* @__PURE__ */ Object.create({ diff: null })\n );\n}\nfunction createListLogSummaryParser(splitter = SPLITTER, fields = defaultFieldNames, logFormat = \"\" /* NONE */) {\n const parseDiffResult = getDiffParser(logFormat);\n return function(stdOut) {\n const all = toLinesWithContent(\n stdOut.trim(),\n false,\n START_BOUNDARY\n ).map(function(item) {\n const lineDetail = item.split(COMMIT_BOUNDARY);\n const listLogLine = lineBuilder(lineDetail[0].split(splitter), fields);\n if (lineDetail.length > 1 && !!lineDetail[1].trim()) {\n listLogLine.diff = parseDiffResult(lineDetail[1]);\n }\n return listLogLine;\n });\n return {\n all,\n latest: all.length && all[0] || null,\n total: all.length\n };\n };\n}\nvar START_BOUNDARY, COMMIT_BOUNDARY, SPLITTER, defaultFieldNames;\nvar init_parse_list_log_summary = __esm({\n \"src/lib/parsers/parse-list-log-summary.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_diff_summary();\n init_log_format();\n START_BOUNDARY = \"\\xF2\\xF2\\xF2\\xF2\\xF2\\xF2 \";\n COMMIT_BOUNDARY = \" \\xF2\\xF2\";\n SPLITTER = \" \\xF2 \";\n defaultFieldNames = [\"hash\", \"date\", \"message\", \"refs\", \"author_name\", \"author_email\"];\n }\n});\n\n// src/lib/tasks/diff.ts\nvar diff_exports = {};\n__export(diff_exports, {\n diffSummaryTask: () => diffSummaryTask,\n validateLogFormatConfig: () => validateLogFormatConfig\n});\nfunction diffSummaryTask(customArgs) {\n let logFormat = logFormatFromCommand(customArgs);\n const commands = [\"diff\"];\n if (logFormat === \"\" /* NONE */) {\n logFormat = \"--stat\" /* STAT */;\n commands.push(\"--stat=4096\");\n }\n commands.push(...customArgs);\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: getDiffParser(logFormat)\n };\n}\nfunction validateLogFormatConfig(customArgs) {\n const flags = customArgs.filter(isLogFormat);\n if (flags.length > 1) {\n return configurationErrorTask(\n `Summary flags are mutually exclusive - pick one of ${flags.join(\",\")}`\n );\n }\n if (flags.length && customArgs.includes(\"-z\")) {\n return configurationErrorTask(\n `Summary flag ${flags} parsing is not compatible with null termination option '-z'`\n );\n }\n}\nvar init_diff = __esm({\n \"src/lib/tasks/diff.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_diff_summary();\n init_task();\n }\n});\n\n// src/lib/tasks/log.ts\nfunction prettyFormat(format, splitter) {\n const fields = [];\n const formatStr = [];\n Object.keys(format).forEach((field) => {\n fields.push(field);\n formatStr.push(String(format[field]));\n });\n return [fields, formatStr.join(splitter)];\n}\nfunction userOptions(input) {\n return Object.keys(input).reduce((out, key) => {\n if (!(key in excludeOptions)) {\n out[key] = input[key];\n }\n return out;\n }, {});\n}\nfunction parseLogOptions(opt = {}, customArgs = []) {\n const splitter = filterType(opt.splitter, filterString, SPLITTER);\n const format = filterPlainObject(opt.format) ? opt.format : {\n hash: \"%H\",\n date: opt.strictDate === false ? \"%ai\" : \"%aI\",\n message: \"%s\",\n refs: \"%D\",\n body: opt.multiLine ? \"%B\" : \"%b\",\n author_name: opt.mailMap !== false ? \"%aN\" : \"%an\",\n author_email: opt.mailMap !== false ? \"%aE\" : \"%ae\"\n };\n const [fields, formatStr] = prettyFormat(format, splitter);\n const suffix = [];\n const command = [\n `--pretty=format:${START_BOUNDARY}${formatStr}${COMMIT_BOUNDARY}`,\n ...customArgs\n ];\n const maxCount = opt.n || opt[\"max-count\"] || opt.maxCount;\n if (maxCount) {\n command.push(`--max-count=${maxCount}`);\n }\n if (opt.from || opt.to) {\n const rangeOperator = opt.symmetric !== false ? \"...\" : \"..\";\n suffix.push(`${opt.from || \"\"}${rangeOperator}${opt.to || \"\"}`);\n }\n if (filterString(opt.file)) {\n command.push(\"--follow\", pathspec(opt.file));\n }\n appendTaskOptions(userOptions(opt), command);\n return {\n fields,\n splitter,\n commands: [...command, ...suffix]\n };\n}\nfunction logTask(splitter, fields, customArgs) {\n const parser4 = createListLogSummaryParser(splitter, fields, logFormatFromCommand(customArgs));\n return {\n commands: [\"log\", ...customArgs],\n format: \"utf-8\",\n parser: parser4\n };\n}\nfunction log_default() {\n return {\n log(...rest) {\n const next = trailingFunctionArgument(arguments);\n const options = parseLogOptions(\n trailingOptionsArgument(arguments),\n asStringArray(filterType(arguments[0], filterArray, []))\n );\n const task = rejectDeprecatedSignatures(...rest) || validateLogFormatConfig(options.commands) || createLogTask(options);\n return this._runTask(task, next);\n }\n };\n function createLogTask(options) {\n return logTask(options.splitter, options.fields, options.commands);\n }\n function rejectDeprecatedSignatures(from, to) {\n return filterString(from) && filterString(to) && configurationErrorTask(\n `git.log(string, string) should be replaced with git.log({ from: string, to: string })`\n );\n }\n}\nvar excludeOptions;\nvar init_log = __esm({\n \"src/lib/tasks/log.ts\"() {\n \"use strict\";\n init_log_format();\n init_pathspec();\n init_parse_list_log_summary();\n init_utils();\n init_task();\n init_diff();\n excludeOptions = /* @__PURE__ */ ((excludeOptions2) => {\n excludeOptions2[excludeOptions2[\"--pretty\"] = 0] = \"--pretty\";\n excludeOptions2[excludeOptions2[\"max-count\"] = 1] = \"max-count\";\n excludeOptions2[excludeOptions2[\"maxCount\"] = 2] = \"maxCount\";\n excludeOptions2[excludeOptions2[\"n\"] = 3] = \"n\";\n excludeOptions2[excludeOptions2[\"file\"] = 4] = \"file\";\n excludeOptions2[excludeOptions2[\"format\"] = 5] = \"format\";\n excludeOptions2[excludeOptions2[\"from\"] = 6] = \"from\";\n excludeOptions2[excludeOptions2[\"to\"] = 7] = \"to\";\n excludeOptions2[excludeOptions2[\"splitter\"] = 8] = \"splitter\";\n excludeOptions2[excludeOptions2[\"symmetric\"] = 9] = \"symmetric\";\n excludeOptions2[excludeOptions2[\"mailMap\"] = 10] = \"mailMap\";\n excludeOptions2[excludeOptions2[\"multiLine\"] = 11] = \"multiLine\";\n excludeOptions2[excludeOptions2[\"strictDate\"] = 12] = \"strictDate\";\n return excludeOptions2;\n })(excludeOptions || {});\n }\n});\n\n// src/lib/responses/MergeSummary.ts\nvar MergeSummaryConflict, MergeSummaryDetail;\nvar init_MergeSummary = __esm({\n \"src/lib/responses/MergeSummary.ts\"() {\n \"use strict\";\n MergeSummaryConflict = class {\n constructor(reason, file = null, meta) {\n this.reason = reason;\n this.file = file;\n this.meta = meta;\n }\n toString() {\n return `${this.file}:${this.reason}`;\n }\n };\n MergeSummaryDetail = class {\n constructor() {\n this.conflicts = [];\n this.merges = [];\n this.result = \"success\";\n }\n get failed() {\n return this.conflicts.length > 0;\n }\n get reason() {\n return this.result;\n }\n toString() {\n if (this.conflicts.length) {\n return `CONFLICTS: ${this.conflicts.join(\", \")}`;\n }\n return \"OK\";\n }\n };\n }\n});\n\n// src/lib/responses/PullSummary.ts\nvar PullSummary, PullFailedSummary;\nvar init_PullSummary = __esm({\n \"src/lib/responses/PullSummary.ts\"() {\n \"use strict\";\n PullSummary = class {\n constructor() {\n this.remoteMessages = {\n all: []\n };\n this.created = [];\n this.deleted = [];\n this.files = [];\n this.deletions = {};\n this.insertions = {};\n this.summary = {\n changes: 0,\n deletions: 0,\n insertions: 0\n };\n }\n };\n PullFailedSummary = class {\n constructor() {\n this.remote = \"\";\n this.hash = {\n local: \"\",\n remote: \"\"\n };\n this.branch = {\n local: \"\",\n remote: \"\"\n };\n this.message = \"\";\n }\n toString() {\n return this.message;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-remote-objects.ts\nfunction objectEnumerationResult(remoteMessages) {\n return remoteMessages.objects = remoteMessages.objects || {\n compressing: 0,\n counting: 0,\n enumerating: 0,\n packReused: 0,\n reused: { count: 0, delta: 0 },\n total: { count: 0, delta: 0 }\n };\n}\nfunction asObjectCount(source) {\n const count = /^\\s*(\\d+)/.exec(source);\n const delta = /delta (\\d+)/i.exec(source);\n return {\n count: asNumber(count && count[1] || \"0\"),\n delta: asNumber(delta && delta[1] || \"0\")\n };\n}\nvar remoteMessagesObjectParsers;\nvar init_parse_remote_objects = __esm({\n \"src/lib/parsers/parse-remote-objects.ts\"() {\n \"use strict\";\n init_utils();\n remoteMessagesObjectParsers = [\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: (\\d+),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /^remote:\\s*(enumerating|counting|compressing) objects: \\d+% \\(\\d+\\/(\\d+)\\),/i,\n (result, [action, count]) => {\n const key = action.toLowerCase();\n const enumeration = objectEnumerationResult(result.remoteMessages);\n Object.assign(enumeration, { [key]: asNumber(count) });\n }\n ),\n new RemoteLineParser(\n /total ([^,]+), reused ([^,]+), pack-reused (\\d+)/i,\n (result, [total, reused, packReused]) => {\n const objects = objectEnumerationResult(result.remoteMessages);\n objects.total = asObjectCount(total);\n objects.reused = asObjectCount(reused);\n objects.packReused = asNumber(packReused);\n }\n )\n ];\n }\n});\n\n// src/lib/parsers/parse-remote-messages.ts\nfunction parseRemoteMessages(_stdOut, stdErr) {\n return parseStringResponse({ remoteMessages: new RemoteMessageSummary() }, parsers2, stdErr);\n}\nvar parsers2, RemoteMessageSummary;\nvar init_parse_remote_messages = __esm({\n \"src/lib/parsers/parse-remote-messages.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_objects();\n parsers2 = [\n new RemoteLineParser(/^remote:\\s*(.+)$/, (result, [text]) => {\n result.remoteMessages.all.push(text.trim());\n return false;\n }),\n ...remoteMessagesObjectParsers,\n new RemoteLineParser(\n [/create a (?:pull|merge) request/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [pullRequestUrl]) => {\n result.remoteMessages.pullRequestUrl = pullRequestUrl;\n }\n ),\n new RemoteLineParser(\n [/found (\\d+) vulnerabilities.+\\(([^)]+)\\)/i, /\\s(https?:\\/\\/\\S+)$/],\n (result, [count, summary, url]) => {\n result.remoteMessages.vulnerabilities = {\n count: asNumber(count),\n summary,\n url\n };\n }\n )\n ];\n RemoteMessageSummary = class {\n constructor() {\n this.all = [];\n }\n };\n }\n});\n\n// src/lib/parsers/parse-pull.ts\nfunction parsePullErrorResult(stdOut, stdErr) {\n const pullError = parseStringResponse(new PullFailedSummary(), errorParsers, [stdOut, stdErr]);\n return pullError.message && pullError;\n}\nvar FILE_UPDATE_REGEX, SUMMARY_REGEX, ACTION_REGEX, parsers3, errorParsers, parsePullDetail, parsePullResult;\nvar init_parse_pull = __esm({\n \"src/lib/parsers/parse-pull.ts\"() {\n \"use strict\";\n init_PullSummary();\n init_utils();\n init_parse_remote_messages();\n FILE_UPDATE_REGEX = /^\\s*(.+?)\\s+\\|\\s+\\d+\\s*(\\+*)(-*)/;\n SUMMARY_REGEX = /(\\d+)\\D+((\\d+)\\D+\\(\\+\\))?(\\D+(\\d+)\\D+\\(-\\))?/;\n ACTION_REGEX = /^(create|delete) mode \\d+ (.+)/;\n parsers3 = [\n new LineParser(FILE_UPDATE_REGEX, (result, [file, insertions, deletions]) => {\n result.files.push(file);\n if (insertions) {\n result.insertions[file] = insertions.length;\n }\n if (deletions) {\n result.deletions[file] = deletions.length;\n }\n }),\n new LineParser(SUMMARY_REGEX, (result, [changes, , insertions, , deletions]) => {\n if (insertions !== void 0 || deletions !== void 0) {\n result.summary.changes = +changes || 0;\n result.summary.insertions = +insertions || 0;\n result.summary.deletions = +deletions || 0;\n return true;\n }\n return false;\n }),\n new LineParser(ACTION_REGEX, (result, [action, file]) => {\n append(result.files, file);\n append(action === \"create\" ? result.created : result.deleted, file);\n })\n ];\n errorParsers = [\n new LineParser(/^from\\s(.+)$/i, (result, [remote]) => void (result.remote = remote)),\n new LineParser(/^fatal:\\s(.+)$/, (result, [message]) => void (result.message = message)),\n new LineParser(\n /([a-z0-9]+)\\.\\.([a-z0-9]+)\\s+(\\S+)\\s+->\\s+(\\S+)$/,\n (result, [hashLocal, hashRemote, branchLocal, branchRemote]) => {\n result.branch.local = branchLocal;\n result.hash.local = hashLocal;\n result.branch.remote = branchRemote;\n result.hash.remote = hashRemote;\n }\n )\n ];\n parsePullDetail = (stdOut, stdErr) => {\n return parseStringResponse(new PullSummary(), parsers3, [stdOut, stdErr]);\n };\n parsePullResult = (stdOut, stdErr) => {\n return Object.assign(\n new PullSummary(),\n parsePullDetail(stdOut, stdErr),\n parseRemoteMessages(stdOut, stdErr)\n );\n };\n }\n});\n\n// src/lib/parsers/parse-merge.ts\nvar parsers4, parseMergeResult, parseMergeDetail;\nvar init_parse_merge = __esm({\n \"src/lib/parsers/parse-merge.ts\"() {\n \"use strict\";\n init_MergeSummary();\n init_utils();\n init_parse_pull();\n parsers4 = [\n new LineParser(/^Auto-merging\\s+(.+)$/, (summary, [autoMerge]) => {\n summary.merges.push(autoMerge);\n }),\n new LineParser(/^CONFLICT\\s+\\((.+)\\): Merge conflict in (.+)$/, (summary, [reason, file]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file));\n }),\n new LineParser(\n /^CONFLICT\\s+\\((.+\\/delete)\\): (.+) deleted in (.+) and/,\n (summary, [reason, file, deleteRef]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, file, { deleteRef }));\n }\n ),\n new LineParser(/^CONFLICT\\s+\\((.+)\\):/, (summary, [reason]) => {\n summary.conflicts.push(new MergeSummaryConflict(reason, null));\n }),\n new LineParser(/^Automatic merge failed;\\s+(.+)$/, (summary, [result]) => {\n summary.result = result;\n })\n ];\n parseMergeResult = (stdOut, stdErr) => {\n return Object.assign(parseMergeDetail(stdOut, stdErr), parsePullResult(stdOut, stdErr));\n };\n parseMergeDetail = (stdOut) => {\n return parseStringResponse(new MergeSummaryDetail(), parsers4, stdOut);\n };\n }\n});\n\n// src/lib/tasks/merge.ts\nfunction mergeTask(customArgs) {\n if (!customArgs.length) {\n return configurationErrorTask(\"Git.merge requires at least one option\");\n }\n return {\n commands: [\"merge\", ...customArgs],\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n const merge = parseMergeResult(stdOut, stdErr);\n if (merge.failed) {\n throw new GitResponseError(merge);\n }\n return merge;\n }\n };\n}\nvar init_merge = __esm({\n \"src/lib/tasks/merge.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_merge();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-push.ts\nfunction pushResultPushedItem(local, remote, status) {\n const deleted = status.includes(\"deleted\");\n const tag = status.includes(\"tag\") || /^refs\\/tags/.test(local);\n const alreadyUpdated = !status.includes(\"new\");\n return {\n deleted,\n tag,\n branch: !tag,\n new: !alreadyUpdated,\n alreadyUpdated,\n local,\n remote\n };\n}\nvar parsers5, parsePushResult, parsePushDetail;\nvar init_parse_push = __esm({\n \"src/lib/parsers/parse-push.ts\"() {\n \"use strict\";\n init_utils();\n init_parse_remote_messages();\n parsers5 = [\n new LineParser(/^Pushing to (.+)$/, (result, [repo]) => {\n result.repo = repo;\n }),\n new LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {\n result.ref = {\n ...result.ref || {},\n local\n };\n }),\n new LineParser(/^[=*-]\\s+([^:]+):(\\S+)\\s+\\[(.+)]$/, (result, [local, remote, type]) => {\n result.pushed.push(pushResultPushedItem(local, remote, type));\n }),\n new LineParser(\n /^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,\n (result, [local, remote, remoteName]) => {\n result.branch = {\n ...result.branch || {},\n local,\n remote,\n remoteName\n };\n }\n ),\n new LineParser(\n /^([^:]+):(\\S+)\\s+([a-z0-9]+)\\.\\.([a-z0-9]+)$/,\n (result, [local, remote, from, to]) => {\n result.update = {\n head: {\n local,\n remote\n },\n hash: {\n from,\n to\n }\n };\n }\n )\n ];\n parsePushResult = (stdOut, stdErr) => {\n const pushDetail = parsePushDetail(stdOut, stdErr);\n const responseDetail = parseRemoteMessages(stdOut, stdErr);\n return {\n ...pushDetail,\n ...responseDetail\n };\n };\n parsePushDetail = (stdOut, stdErr) => {\n return parseStringResponse({ pushed: [] }, parsers5, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/tasks/push.ts\nvar push_exports = {};\n__export(push_exports, {\n pushTagsTask: () => pushTagsTask,\n pushTask: () => pushTask\n});\nfunction pushTagsTask(ref = {}, customArgs) {\n append(customArgs, \"--tags\");\n return pushTask(ref, customArgs);\n}\nfunction pushTask(ref = {}, customArgs) {\n const commands = [\"push\", ...customArgs];\n if (ref.branch) {\n commands.splice(1, 0, ref.branch);\n }\n if (ref.remote) {\n commands.splice(1, 0, ref.remote);\n }\n remove(commands, \"-v\");\n append(commands, \"--verbose\");\n append(commands, \"--porcelain\");\n return {\n commands,\n format: \"utf-8\",\n parser: parsePushResult\n };\n}\nvar init_push = __esm({\n \"src/lib/tasks/push.ts\"() {\n \"use strict\";\n init_parse_push();\n init_utils();\n }\n});\n\n// src/lib/tasks/show.ts\nfunction show_default() {\n return {\n showBuffer() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n if (!commands.includes(\"--binary\")) {\n commands.splice(1, 0, \"--binary\");\n }\n return this._runTask(\n straightThroughBufferTask(commands),\n trailingFunctionArgument(arguments)\n );\n },\n show() {\n const commands = [\"show\", ...getTrailingOptions(arguments, 1)];\n return this._runTask(\n straightThroughStringTask(commands),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar init_show = __esm({\n \"src/lib/tasks/show.ts\"() {\n \"use strict\";\n init_utils();\n init_task();\n }\n});\n\n// src/lib/responses/FileStatusSummary.ts\nvar fromPathRegex, FileStatusSummary;\nvar init_FileStatusSummary = __esm({\n \"src/lib/responses/FileStatusSummary.ts\"() {\n \"use strict\";\n fromPathRegex = /^(.+)\\0(.+)$/;\n FileStatusSummary = class {\n constructor(path, index, working_dir) {\n this.path = path;\n this.index = index;\n this.working_dir = working_dir;\n if (index === \"R\" || working_dir === \"R\") {\n const detail = fromPathRegex.exec(path) || [null, path, path];\n this.from = detail[2] || \"\";\n this.path = detail[1] || \"\";\n }\n }\n };\n }\n});\n\n// src/lib/responses/StatusSummary.ts\nfunction renamedFile(line) {\n const [to, from] = line.split(NULL);\n return {\n from: from || to,\n to\n };\n}\nfunction parser3(indexX, indexY, handler) {\n return [`${indexX}${indexY}`, handler];\n}\nfunction conflicts(indexX, ...indexY) {\n return indexY.map((y) => parser3(indexX, y, (result, file) => result.conflicted.push(file)));\n}\nfunction splitLine(result, lineStr) {\n const trimmed2 = lineStr.trim();\n switch (\" \") {\n case trimmed2.charAt(2):\n return data(trimmed2.charAt(0), trimmed2.charAt(1), trimmed2.slice(3));\n case trimmed2.charAt(1):\n return data(\" \" /* NONE */, trimmed2.charAt(0), trimmed2.slice(2));\n default:\n return;\n }\n function data(index, workingDir, path) {\n const raw = `${index}${workingDir}`;\n const handler = parsers6.get(raw);\n if (handler) {\n handler(result, path);\n }\n if (raw !== \"##\" && raw !== \"!!\") {\n result.files.push(new FileStatusSummary(path, index, workingDir));\n }\n }\n}\nvar StatusSummary, parsers6, parseStatusSummary;\nvar init_StatusSummary = __esm({\n \"src/lib/responses/StatusSummary.ts\"() {\n \"use strict\";\n init_utils();\n init_FileStatusSummary();\n StatusSummary = class {\n constructor() {\n this.not_added = [];\n this.conflicted = [];\n this.created = [];\n this.deleted = [];\n this.ignored = void 0;\n this.modified = [];\n this.renamed = [];\n this.files = [];\n this.staged = [];\n this.ahead = 0;\n this.behind = 0;\n this.current = null;\n this.tracking = null;\n this.detached = false;\n this.isClean = () => {\n return !this.files.length;\n };\n }\n };\n parsers6 = new Map([\n parser3(\n \" \" /* NONE */,\n \"A\" /* ADDED */,\n (result, file) => result.created.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"D\" /* DELETED */,\n (result, file) => result.deleted.push(file)\n ),\n parser3(\n \" \" /* NONE */,\n \"M\" /* MODIFIED */,\n (result, file) => result.modified.push(file)\n ),\n parser3(\"A\" /* ADDED */, \" \" /* NONE */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n }),\n parser3(\"A\" /* ADDED */, \"M\" /* MODIFIED */, (result, file) => {\n result.created.push(file);\n result.staged.push(file);\n result.modified.push(file);\n }),\n parser3(\"D\" /* DELETED */, \" \" /* NONE */, (result, file) => {\n result.deleted.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \" \" /* NONE */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"M\" /* MODIFIED */, \"M\" /* MODIFIED */, (result, file) => {\n result.modified.push(file);\n result.staged.push(file);\n }),\n parser3(\"R\" /* RENAMED */, \" \" /* NONE */, (result, file) => {\n result.renamed.push(renamedFile(file));\n }),\n parser3(\"R\" /* RENAMED */, \"M\" /* MODIFIED */, (result, file) => {\n const renamed = renamedFile(file);\n result.renamed.push(renamed);\n result.modified.push(renamed.to);\n }),\n parser3(\"!\" /* IGNORED */, \"!\" /* IGNORED */, (_result, _file) => {\n (_result.ignored = _result.ignored || []).push(_file);\n }),\n parser3(\n \"?\" /* UNTRACKED */,\n \"?\" /* UNTRACKED */,\n (result, file) => result.not_added.push(file)\n ),\n ...conflicts(\"A\" /* ADDED */, \"A\" /* ADDED */, \"U\" /* UNMERGED */),\n ...conflicts(\n \"D\" /* DELETED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n ...conflicts(\n \"U\" /* UNMERGED */,\n \"A\" /* ADDED */,\n \"D\" /* DELETED */,\n \"U\" /* UNMERGED */\n ),\n [\n \"##\",\n (result, line) => {\n const aheadReg = /ahead (\\d+)/;\n const behindReg = /behind (\\d+)/;\n const currentReg = /^(.+?(?=(?:\\.{3}|\\s|$)))/;\n const trackingReg = /\\.{3}(\\S*)/;\n const onEmptyBranchReg = /\\son\\s(\\S+?)(?=\\.{3}|$)/;\n let regexResult = aheadReg.exec(line);\n result.ahead = regexResult && +regexResult[1] || 0;\n regexResult = behindReg.exec(line);\n result.behind = regexResult && +regexResult[1] || 0;\n regexResult = currentReg.exec(line);\n result.current = filterType(regexResult?.[1], filterString, null);\n regexResult = trackingReg.exec(line);\n result.tracking = filterType(regexResult?.[1], filterString, null);\n regexResult = onEmptyBranchReg.exec(line);\n if (regexResult) {\n result.current = filterType(regexResult?.[1], filterString, result.current);\n }\n result.detached = /\\(no branch\\)/.test(line);\n }\n ]\n ]);\n parseStatusSummary = function(text) {\n const lines = text.split(NULL);\n const status = new StatusSummary();\n for (let i = 0, l = lines.length; i < l; ) {\n let line = lines[i++].trim();\n if (!line) {\n continue;\n }\n if (line.charAt(0) === \"R\" /* RENAMED */) {\n line += NULL + (lines[i++] || \"\");\n }\n splitLine(status, line);\n }\n return status;\n };\n }\n});\n\n// src/lib/tasks/status.ts\nfunction statusTask(customArgs) {\n const commands = [\n \"status\",\n \"--porcelain\",\n \"-b\",\n \"-u\",\n \"--null\",\n ...customArgs.filter((arg) => !ignoredOptions.includes(arg))\n ];\n return {\n format: \"utf-8\",\n commands,\n parser(text) {\n return parseStatusSummary(text);\n }\n };\n}\nvar ignoredOptions;\nvar init_status = __esm({\n \"src/lib/tasks/status.ts\"() {\n \"use strict\";\n init_StatusSummary();\n ignoredOptions = [\"--null\", \"-z\"];\n }\n});\n\n// src/lib/tasks/version.ts\nfunction versionResponse(major = 0, minor = 0, patch = 0, agent = \"\", installed = true) {\n return Object.defineProperty(\n {\n major,\n minor,\n patch,\n agent,\n installed\n },\n \"toString\",\n {\n value() {\n return `${this.major}.${this.minor}.${this.patch}`;\n },\n configurable: false,\n enumerable: false\n }\n );\n}\nfunction notInstalledResponse() {\n return versionResponse(0, 0, 0, \"\", false);\n}\nfunction version_default() {\n return {\n version() {\n return this._runTask({\n commands: [\"--version\"],\n format: \"utf-8\",\n parser: versionParser,\n onError(result, error, done, fail) {\n if (result.exitCode === -2 /* NOT_FOUND */) {\n return done(Buffer.from(NOT_INSTALLED));\n }\n fail(error);\n }\n });\n }\n };\n}\nfunction versionParser(stdOut) {\n if (stdOut === NOT_INSTALLED) {\n return notInstalledResponse();\n }\n return parseStringResponse(versionResponse(0, 0, 0, stdOut), parsers7, stdOut);\n}\nvar NOT_INSTALLED, parsers7;\nvar init_version = __esm({\n \"src/lib/tasks/version.ts\"() {\n \"use strict\";\n init_utils();\n NOT_INSTALLED = \"installed=false\";\n parsers7 = [\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\d+)(?:\\s*\\((.+)\\))?/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(\n result,\n versionResponse(asNumber(major), asNumber(minor), asNumber(patch), agent)\n );\n }\n ),\n new LineParser(\n /version (\\d+)\\.(\\d+)\\.(\\D+)(.+)?$/,\n (result, [major, minor, patch, agent = \"\"]) => {\n Object.assign(result, versionResponse(asNumber(major), asNumber(minor), patch, agent));\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/clone.ts\nfunction createCloneTask(api, task, repoPath, ...args) {\n if (!filterString(repoPath)) {\n return configurationErrorTask(`git.${api}() requires a string 'repoPath'`);\n }\n return task(repoPath, filterType(args[0], filterString), getTrailingOptions(arguments));\n}\nfunction clone_default() {\n return {\n clone(repo, ...rest) {\n return this._runTask(\n createCloneTask(\"clone\", cloneTask, filterType(repo, filterString), ...rest),\n trailingFunctionArgument(arguments)\n );\n },\n mirror(repo, ...rest) {\n return this._runTask(\n createCloneTask(\"mirror\", cloneMirrorTask, filterType(repo, filterString), ...rest),\n trailingFunctionArgument(arguments)\n );\n }\n };\n}\nvar cloneTask, cloneMirrorTask;\nvar init_clone = __esm({\n \"src/lib/tasks/clone.ts\"() {\n \"use strict\";\n init_task();\n init_utils();\n init_pathspec();\n cloneTask = (repo, directory, customArgs) => {\n const commands = [\"clone\", ...customArgs];\n filterString(repo) && commands.push(pathspec(repo));\n filterString(directory) && commands.push(pathspec(directory));\n return straightThroughStringTask(commands);\n };\n cloneMirrorTask = (repo, directory, customArgs) => {\n append(customArgs, \"--mirror\");\n return cloneTask(repo, directory, customArgs);\n };\n }\n});\n\n// src/lib/simple-git-api.ts\nvar simple_git_api_exports = {};\n__export(simple_git_api_exports, {\n SimpleGitApi: () => SimpleGitApi\n});\nvar SimpleGitApi;\nvar init_simple_git_api = __esm({\n \"src/lib/simple-git-api.ts\"() {\n \"use strict\";\n init_task_callback();\n init_change_working_directory();\n init_checkout();\n init_count_objects();\n init_commit();\n init_config();\n init_first_commit();\n init_grep();\n init_hash_object();\n init_init();\n init_log();\n init_merge();\n init_push();\n init_show();\n init_status();\n init_task();\n init_version();\n init_utils();\n init_clone();\n SimpleGitApi = class {\n constructor(_executor) {\n this._executor = _executor;\n }\n _runTask(task, then) {\n const chain = this._executor.chain();\n const promise = chain.push(task);\n if (then) {\n taskCallback(task, promise, then);\n }\n return Object.create(this, {\n then: { value: promise.then.bind(promise) },\n catch: { value: promise.catch.bind(promise) },\n _executor: { value: chain }\n });\n }\n add(files) {\n return this._runTask(\n straightThroughStringTask([\"add\", ...asArray(files)]),\n trailingFunctionArgument(arguments)\n );\n }\n cwd(directory) {\n const next = trailingFunctionArgument(arguments);\n if (typeof directory === \"string\") {\n return this._runTask(changeWorkingDirectoryTask(directory, this._executor), next);\n }\n if (typeof directory?.path === \"string\") {\n return this._runTask(\n changeWorkingDirectoryTask(\n directory.path,\n directory.root && this._executor || void 0\n ),\n next\n );\n }\n return this._runTask(\n configurationErrorTask(\"Git.cwd: workingDirectory must be supplied as a string\"),\n next\n );\n }\n hashObject(path, write) {\n return this._runTask(\n hashObjectTask(path, write === true),\n trailingFunctionArgument(arguments)\n );\n }\n init(bare) {\n return this._runTask(\n initTask(bare === true, this._executor.cwd, getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n merge() {\n return this._runTask(\n mergeTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n mergeFromTo(remote, branch) {\n if (!(filterString(remote) && filterString(branch))) {\n return this._runTask(\n configurationErrorTask(\n `Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings`\n )\n );\n }\n return this._runTask(\n mergeTask([remote, branch, ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments, false)\n );\n }\n outputHandler(handler) {\n this._executor.outputHandler = handler;\n return this;\n }\n push() {\n const task = pushTask(\n {\n remote: filterType(arguments[0], filterString),\n branch: filterType(arguments[1], filterString)\n },\n getTrailingOptions(arguments)\n );\n return this._runTask(task, trailingFunctionArgument(arguments));\n }\n stash() {\n return this._runTask(\n straightThroughStringTask([\"stash\", ...getTrailingOptions(arguments)]),\n trailingFunctionArgument(arguments)\n );\n }\n status() {\n return this._runTask(\n statusTask(getTrailingOptions(arguments)),\n trailingFunctionArgument(arguments)\n );\n }\n };\n Object.assign(\n SimpleGitApi.prototype,\n checkout_default(),\n clone_default(),\n commit_default(),\n config_default(),\n count_objects_default(),\n first_commit_default(),\n grep_default(),\n log_default(),\n show_default(),\n version_default()\n );\n }\n});\n\n// src/lib/runners/scheduler.ts\nvar scheduler_exports = {};\n__export(scheduler_exports, {\n Scheduler: () => Scheduler\n});\nimport { createDeferred } from \"@kwsites/promise-deferred\";\nvar createScheduledTask, Scheduler;\nvar init_scheduler = __esm({\n \"src/lib/runners/scheduler.ts\"() {\n \"use strict\";\n init_utils();\n init_git_logger();\n createScheduledTask = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n const { promise, done } = createDeferred();\n return {\n promise,\n done,\n id\n };\n };\n })();\n Scheduler = class {\n constructor(concurrency = 2) {\n this.concurrency = concurrency;\n this.logger = createLogger(\"\", \"scheduler\");\n this.pending = [];\n this.running = [];\n this.logger(`Constructed, concurrency=%s`, concurrency);\n }\n schedule() {\n if (!this.pending.length || this.running.length >= this.concurrency) {\n this.logger(\n `Schedule attempt ignored, pending=%s running=%s concurrency=%s`,\n this.pending.length,\n this.running.length,\n this.concurrency\n );\n return;\n }\n const task = append(this.running, this.pending.shift());\n this.logger(`Attempting id=%s`, task.id);\n task.done(() => {\n this.logger(`Completing id=`, task.id);\n remove(this.running, task);\n this.schedule();\n });\n }\n next() {\n const { promise, id } = append(this.pending, createScheduledTask());\n this.logger(`Scheduling id=%s`, id);\n this.schedule();\n return promise;\n }\n };\n }\n});\n\n// src/lib/tasks/apply-patch.ts\nvar apply_patch_exports = {};\n__export(apply_patch_exports, {\n applyPatchTask: () => applyPatchTask\n});\nfunction applyPatchTask(patches, customArgs) {\n return straightThroughStringTask([\"apply\", ...customArgs, ...patches]);\n}\nvar init_apply_patch = __esm({\n \"src/lib/tasks/apply-patch.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/BranchDeleteSummary.ts\nfunction branchDeletionSuccess(branch, hash) {\n return {\n branch,\n hash,\n success: true\n };\n}\nfunction branchDeletionFailure(branch) {\n return {\n branch,\n hash: null,\n success: false\n };\n}\nvar BranchDeletionBatch;\nvar init_BranchDeleteSummary = __esm({\n \"src/lib/responses/BranchDeleteSummary.ts\"() {\n \"use strict\";\n BranchDeletionBatch = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.errors = [];\n }\n get success() {\n return !this.errors.length;\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch-delete.ts\nfunction hasBranchDeletionError(data, processExitCode) {\n return processExitCode === 1 /* ERROR */ && deleteErrorRegex.test(data);\n}\nvar deleteSuccessRegex, deleteErrorRegex, parsers8, parseBranchDeletions;\nvar init_parse_branch_delete = __esm({\n \"src/lib/parsers/parse-branch-delete.ts\"() {\n \"use strict\";\n init_BranchDeleteSummary();\n init_utils();\n deleteSuccessRegex = /(\\S+)\\s+\\(\\S+\\s([^)]+)\\)/;\n deleteErrorRegex = /^error[^']+'([^']+)'/m;\n parsers8 = [\n new LineParser(deleteSuccessRegex, (result, [branch, hash]) => {\n const deletion = branchDeletionSuccess(branch, hash);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n }),\n new LineParser(deleteErrorRegex, (result, [branch]) => {\n const deletion = branchDeletionFailure(branch);\n result.errors.push(deletion);\n result.all.push(deletion);\n result.branches[branch] = deletion;\n })\n ];\n parseBranchDeletions = (stdOut, stdErr) => {\n return parseStringResponse(new BranchDeletionBatch(), parsers8, [stdOut, stdErr]);\n };\n }\n});\n\n// src/lib/responses/BranchSummary.ts\nvar BranchSummaryResult;\nvar init_BranchSummary = __esm({\n \"src/lib/responses/BranchSummary.ts\"() {\n \"use strict\";\n BranchSummaryResult = class {\n constructor() {\n this.all = [];\n this.branches = {};\n this.current = \"\";\n this.detached = false;\n }\n push(status, detached, name, commit, label) {\n if (status === \"*\" /* CURRENT */) {\n this.detached = detached;\n this.current = name;\n }\n this.all.push(name);\n this.branches[name] = {\n current: status === \"*\" /* CURRENT */,\n linkedWorkTree: status === \"+\" /* LINKED */,\n name,\n commit,\n label\n };\n }\n };\n }\n});\n\n// src/lib/parsers/parse-branch.ts\nfunction branchStatus(input) {\n return input ? input.charAt(0) : \"\";\n}\nfunction parseBranchSummary(stdOut, currentOnly = false) {\n return parseStringResponse(\n new BranchSummaryResult(),\n currentOnly ? [currentBranchParser] : parsers9,\n stdOut\n );\n}\nvar parsers9, currentBranchParser;\nvar init_parse_branch = __esm({\n \"src/lib/parsers/parse-branch.ts\"() {\n \"use strict\";\n init_BranchSummary();\n init_utils();\n parsers9 = [\n new LineParser(\n /^([*+]\\s)?\\((?:HEAD )?detached (?:from|at) (\\S+)\\)\\s+([a-z0-9]+)\\s(.*)$/,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), true, name, commit, label);\n }\n ),\n new LineParser(\n /^([*+]\\s)?(\\S+)\\s+([a-z0-9]+)\\s?(.*)$/s,\n (result, [current, name, commit, label]) => {\n result.push(branchStatus(current), false, name, commit, label);\n }\n )\n ];\n currentBranchParser = new LineParser(/^(\\S+)$/s, (result, [name]) => {\n result.push(\"*\" /* CURRENT */, false, name, \"\", \"\");\n });\n }\n});\n\n// src/lib/tasks/branch.ts\nvar branch_exports = {};\n__export(branch_exports, {\n branchLocalTask: () => branchLocalTask,\n branchTask: () => branchTask,\n containsDeleteBranchCommand: () => containsDeleteBranchCommand,\n deleteBranchTask: () => deleteBranchTask,\n deleteBranchesTask: () => deleteBranchesTask\n});\nfunction containsDeleteBranchCommand(commands) {\n const deleteCommands = [\"-d\", \"-D\", \"--delete\"];\n return commands.some((command) => deleteCommands.includes(command));\n}\nfunction branchTask(customArgs) {\n const isDelete = containsDeleteBranchCommand(customArgs);\n const isCurrentOnly = customArgs.includes(\"--show-current\");\n const commands = [\"branch\", ...customArgs];\n if (commands.length === 1) {\n commands.push(\"-a\");\n }\n if (!commands.includes(\"-v\")) {\n commands.splice(1, 0, \"-v\");\n }\n return {\n format: \"utf-8\",\n commands,\n parser(stdOut, stdErr) {\n if (isDelete) {\n return parseBranchDeletions(stdOut, stdErr).all[0];\n }\n return parseBranchSummary(stdOut, isCurrentOnly);\n }\n };\n}\nfunction branchLocalTask() {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\"],\n parser(stdOut) {\n return parseBranchSummary(stdOut);\n }\n };\n}\nfunction deleteBranchesTask(branches, forceDelete = false) {\n return {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", ...branches],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr);\n },\n onError({ exitCode, stdOut }, error, done, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n done(stdOut);\n }\n };\n}\nfunction deleteBranchTask(branch, forceDelete = false) {\n const task = {\n format: \"utf-8\",\n commands: [\"branch\", \"-v\", forceDelete ? \"-D\" : \"-d\", branch],\n parser(stdOut, stdErr) {\n return parseBranchDeletions(stdOut, stdErr).branches[branch];\n },\n onError({ exitCode, stdErr, stdOut }, error, _, fail) {\n if (!hasBranchDeletionError(String(error), exitCode)) {\n return fail(error);\n }\n throw new GitResponseError(\n task.parser(bufferToString(stdOut), bufferToString(stdErr)),\n String(error)\n );\n }\n };\n return task;\n}\nvar init_branch = __esm({\n \"src/lib/tasks/branch.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_branch_delete();\n init_parse_branch();\n init_utils();\n }\n});\n\n// src/lib/responses/CheckIgnore.ts\nimport { normalize } from \"node:path\";\nfunction toPath(input) {\n const path = input.trim().replace(/^[\"']|[\"']$/g, \"\");\n return path && normalize(path);\n}\nvar parseCheckIgnore;\nvar init_CheckIgnore = __esm({\n \"src/lib/responses/CheckIgnore.ts\"() {\n \"use strict\";\n parseCheckIgnore = (text) => {\n return text.split(/\\n/g).map(toPath).filter(Boolean);\n };\n }\n});\n\n// src/lib/tasks/check-ignore.ts\nvar check_ignore_exports = {};\n__export(check_ignore_exports, {\n checkIgnoreTask: () => checkIgnoreTask\n});\nfunction checkIgnoreTask(paths) {\n return {\n commands: [\"check-ignore\", ...paths],\n format: \"utf-8\",\n parser: parseCheckIgnore\n };\n}\nvar init_check_ignore = __esm({\n \"src/lib/tasks/check-ignore.ts\"() {\n \"use strict\";\n init_CheckIgnore();\n }\n});\n\n// src/lib/parsers/parse-fetch.ts\nfunction parseFetchResult(stdOut, stdErr) {\n const result = {\n raw: stdOut,\n remote: null,\n branches: [],\n tags: [],\n updated: [],\n deleted: []\n };\n return parseStringResponse(result, parsers10, [stdOut, stdErr]);\n}\nvar parsers10;\nvar init_parse_fetch = __esm({\n \"src/lib/parsers/parse-fetch.ts\"() {\n \"use strict\";\n init_utils();\n parsers10 = [\n new LineParser(/From (.+)$/, (result, [remote]) => {\n result.remote = remote;\n }),\n new LineParser(/\\* \\[new branch]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.branches.push({\n name,\n tracking\n });\n }),\n new LineParser(/\\* \\[new tag]\\s+(\\S+)\\s*-> (.+)$/, (result, [name, tracking]) => {\n result.tags.push({\n name,\n tracking\n });\n }),\n new LineParser(/- \\[deleted]\\s+\\S+\\s*-> (.+)$/, (result, [tracking]) => {\n result.deleted.push({\n tracking\n });\n }),\n new LineParser(\n /\\s*([^.]+)\\.\\.(\\S+)\\s+(\\S+)\\s*-> (.+)$/,\n (result, [from, to, name, tracking]) => {\n result.updated.push({\n name,\n tracking,\n to,\n from\n });\n }\n )\n ];\n }\n});\n\n// src/lib/tasks/fetch.ts\nvar fetch_exports = {};\n__export(fetch_exports, {\n fetchTask: () => fetchTask\n});\nfunction disallowedCommand(command) {\n return /^--upload-pack(=|$)/.test(command);\n}\nfunction fetchTask(remote, branch, customArgs) {\n const commands = [\"fetch\", ...customArgs];\n if (remote && branch) {\n commands.push(remote, branch);\n }\n const banned = commands.find(disallowedCommand);\n if (banned) {\n return configurationErrorTask(`git.fetch: potential exploit argument blocked.`);\n }\n return {\n commands,\n format: \"utf-8\",\n parser: parseFetchResult\n };\n}\nvar init_fetch = __esm({\n \"src/lib/tasks/fetch.ts\"() {\n \"use strict\";\n init_parse_fetch();\n init_task();\n }\n});\n\n// src/lib/parsers/parse-move.ts\nfunction parseMoveResult(stdOut) {\n return parseStringResponse({ moves: [] }, parsers11, stdOut);\n}\nvar parsers11;\nvar init_parse_move = __esm({\n \"src/lib/parsers/parse-move.ts\"() {\n \"use strict\";\n init_utils();\n parsers11 = [\n new LineParser(/^Renaming (.+) to (.+)$/, (result, [from, to]) => {\n result.moves.push({ from, to });\n })\n ];\n }\n});\n\n// src/lib/tasks/move.ts\nvar move_exports = {};\n__export(move_exports, {\n moveTask: () => moveTask\n});\nfunction moveTask(from, to) {\n return {\n commands: [\"mv\", \"-v\", ...asArray(from), to],\n format: \"utf-8\",\n parser: parseMoveResult\n };\n}\nvar init_move = __esm({\n \"src/lib/tasks/move.ts\"() {\n \"use strict\";\n init_parse_move();\n init_utils();\n }\n});\n\n// src/lib/tasks/pull.ts\nvar pull_exports = {};\n__export(pull_exports, {\n pullTask: () => pullTask\n});\nfunction pullTask(remote, branch, customArgs) {\n const commands = [\"pull\", ...customArgs];\n if (remote && branch) {\n commands.splice(1, 0, remote, branch);\n }\n return {\n commands,\n format: \"utf-8\",\n parser(stdOut, stdErr) {\n return parsePullResult(stdOut, stdErr);\n },\n onError(result, _error, _done, fail) {\n const pullError = parsePullErrorResult(\n bufferToString(result.stdOut),\n bufferToString(result.stdErr)\n );\n if (pullError) {\n return fail(new GitResponseError(pullError));\n }\n fail(_error);\n }\n };\n}\nvar init_pull = __esm({\n \"src/lib/tasks/pull.ts\"() {\n \"use strict\";\n init_git_response_error();\n init_parse_pull();\n init_utils();\n }\n});\n\n// src/lib/responses/GetRemoteSummary.ts\nfunction parseGetRemotes(text) {\n const remotes = {};\n forEach(text, ([name]) => remotes[name] = { name });\n return Object.values(remotes);\n}\nfunction parseGetRemotesVerbose(text) {\n const remotes = {};\n forEach(text, ([name, url, purpose]) => {\n if (!Object.hasOwn(remotes, name)) {\n remotes[name] = {\n name,\n refs: { fetch: \"\", push: \"\" }\n };\n }\n if (purpose && url) {\n remotes[name].refs[purpose.replace(/[^a-z]/g, \"\")] = url;\n }\n });\n return Object.values(remotes);\n}\nfunction forEach(text, handler) {\n forEachLineWithContent(text, (line) => handler(line.split(/\\s+/)));\n}\nvar init_GetRemoteSummary = __esm({\n \"src/lib/responses/GetRemoteSummary.ts\"() {\n \"use strict\";\n init_utils();\n }\n});\n\n// src/lib/tasks/remote.ts\nvar remote_exports = {};\n__export(remote_exports, {\n addRemoteTask: () => addRemoteTask,\n getRemotesTask: () => getRemotesTask,\n listRemotesTask: () => listRemotesTask,\n remoteTask: () => remoteTask,\n removeRemoteTask: () => removeRemoteTask\n});\nfunction addRemoteTask(remoteName, remoteRepo, customArgs) {\n return straightThroughStringTask([\"remote\", \"add\", ...customArgs, remoteName, remoteRepo]);\n}\nfunction getRemotesTask(verbose) {\n const commands = [\"remote\"];\n if (verbose) {\n commands.push(\"-v\");\n }\n return {\n commands,\n format: \"utf-8\",\n parser: verbose ? parseGetRemotesVerbose : parseGetRemotes\n };\n}\nfunction listRemotesTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"ls-remote\") {\n commands.unshift(\"ls-remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction remoteTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"remote\") {\n commands.unshift(\"remote\");\n }\n return straightThroughStringTask(commands);\n}\nfunction removeRemoteTask(remoteName) {\n return straightThroughStringTask([\"remote\", \"remove\", remoteName]);\n}\nvar init_remote = __esm({\n \"src/lib/tasks/remote.ts\"() {\n \"use strict\";\n init_GetRemoteSummary();\n init_task();\n }\n});\n\n// src/lib/tasks/stash-list.ts\nvar stash_list_exports = {};\n__export(stash_list_exports, {\n stashListTask: () => stashListTask\n});\nfunction stashListTask(opt = {}, customArgs) {\n const options = parseLogOptions(opt);\n const commands = [\"stash\", \"list\", ...options.commands, ...customArgs];\n const parser4 = createListLogSummaryParser(\n options.splitter,\n options.fields,\n logFormatFromCommand(commands)\n );\n return validateLogFormatConfig(commands) || {\n commands,\n format: \"utf-8\",\n parser: parser4\n };\n}\nvar init_stash_list = __esm({\n \"src/lib/tasks/stash-list.ts\"() {\n \"use strict\";\n init_log_format();\n init_parse_list_log_summary();\n init_diff();\n init_log();\n }\n});\n\n// src/lib/tasks/sub-module.ts\nvar sub_module_exports = {};\n__export(sub_module_exports, {\n addSubModuleTask: () => addSubModuleTask,\n initSubModuleTask: () => initSubModuleTask,\n subModuleTask: () => subModuleTask,\n updateSubModuleTask: () => updateSubModuleTask\n});\nfunction addSubModuleTask(repo, path) {\n return subModuleTask([\"add\", repo, path]);\n}\nfunction initSubModuleTask(customArgs) {\n return subModuleTask([\"init\", ...customArgs]);\n}\nfunction subModuleTask(customArgs) {\n const commands = [...customArgs];\n if (commands[0] !== \"submodule\") {\n commands.unshift(\"submodule\");\n }\n return straightThroughStringTask(commands);\n}\nfunction updateSubModuleTask(customArgs) {\n return subModuleTask([\"update\", ...customArgs]);\n}\nvar init_sub_module = __esm({\n \"src/lib/tasks/sub-module.ts\"() {\n \"use strict\";\n init_task();\n }\n});\n\n// src/lib/responses/TagList.ts\nfunction singleSorted(a, b) {\n const aIsNum = Number.isNaN(a);\n const bIsNum = Number.isNaN(b);\n if (aIsNum !== bIsNum) {\n return aIsNum ? 1 : -1;\n }\n return aIsNum ? sorted(a, b) : 0;\n}\nfunction sorted(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction trimmed(input) {\n return input.trim();\n}\nfunction toNumber(input) {\n if (typeof input === \"string\") {\n return parseInt(input.replace(/^\\D+/g, \"\"), 10) || 0;\n }\n return 0;\n}\nvar TagList, parseTagList;\nvar init_TagList = __esm({\n \"src/lib/responses/TagList.ts\"() {\n \"use strict\";\n TagList = class {\n constructor(all, latest) {\n this.all = all;\n this.latest = latest;\n }\n };\n parseTagList = function(data, customSort = false) {\n const tags = data.split(\"\\n\").map(trimmed).filter(Boolean);\n if (!customSort) {\n tags.sort(function(tagA, tagB) {\n const partsA = tagA.split(\".\");\n const partsB = tagB.split(\".\");\n if (partsA.length === 1 || partsB.length === 1) {\n return singleSorted(toNumber(partsA[0]), toNumber(partsB[0]));\n }\n for (let i = 0, l = Math.max(partsA.length, partsB.length); i < l; i++) {\n const diff = sorted(toNumber(partsA[i]), toNumber(partsB[i]));\n if (diff) {\n return diff;\n }\n }\n return 0;\n });\n }\n const latest = customSort ? tags[0] : [...tags].reverse().find((tag) => tag.indexOf(\".\") >= 0);\n return new TagList(tags, latest);\n };\n }\n});\n\n// src/lib/tasks/tag.ts\nvar tag_exports = {};\n__export(tag_exports, {\n addAnnotatedTagTask: () => addAnnotatedTagTask,\n addTagTask: () => addTagTask,\n tagListTask: () => tagListTask\n});\nfunction tagListTask(customArgs = []) {\n const hasCustomSort = customArgs.some((option) => /^--sort=/.test(option));\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-l\", ...customArgs],\n parser(text) {\n return parseTagList(text, hasCustomSort);\n }\n };\n}\nfunction addTagTask(name) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", name],\n parser() {\n return { name };\n }\n };\n}\nfunction addAnnotatedTagTask(name, tagMessage) {\n return {\n format: \"utf-8\",\n commands: [\"tag\", \"-a\", \"-m\", tagMessage, name],\n parser() {\n return { name };\n }\n };\n}\nvar init_tag = __esm({\n \"src/lib/tasks/tag.ts\"() {\n \"use strict\";\n init_TagList();\n }\n});\n\n// src/git.js\nvar require_git = __commonJS({\n \"src/git.js\"(exports, module) {\n \"use strict\";\n var { GitExecutor: GitExecutor2 } = (init_git_executor(), __toCommonJS(git_executor_exports));\n var { SimpleGitApi: SimpleGitApi2 } = (init_simple_git_api(), __toCommonJS(simple_git_api_exports));\n var { Scheduler: Scheduler2 } = (init_scheduler(), __toCommonJS(scheduler_exports));\n var { adhocExecTask: adhocExecTask2, configurationErrorTask: configurationErrorTask2 } = (init_task(), __toCommonJS(task_exports));\n var {\n asArray: asArray2,\n filterArray: filterArray2,\n filterPrimitives: filterPrimitives2,\n filterString: filterString2,\n filterStringOrStringArray: filterStringOrStringArray2,\n filterType: filterType2,\n getTrailingOptions: getTrailingOptions2,\n trailingFunctionArgument: trailingFunctionArgument2,\n trailingOptionsArgument: trailingOptionsArgument2\n } = (init_utils(), __toCommonJS(utils_exports));\n var { applyPatchTask: applyPatchTask2 } = (init_apply_patch(), __toCommonJS(apply_patch_exports));\n var {\n branchTask: branchTask2,\n branchLocalTask: branchLocalTask2,\n deleteBranchesTask: deleteBranchesTask2,\n deleteBranchTask: deleteBranchTask2\n } = (init_branch(), __toCommonJS(branch_exports));\n var { checkIgnoreTask: checkIgnoreTask2 } = (init_check_ignore(), __toCommonJS(check_ignore_exports));\n var { checkIsRepoTask: checkIsRepoTask2 } = (init_check_is_repo(), __toCommonJS(check_is_repo_exports));\n var { cleanWithOptionsTask: cleanWithOptionsTask2, isCleanOptionsArray: isCleanOptionsArray2 } = (init_clean(), __toCommonJS(clean_exports));\n var { diffSummaryTask: diffSummaryTask2 } = (init_diff(), __toCommonJS(diff_exports));\n var { fetchTask: fetchTask2 } = (init_fetch(), __toCommonJS(fetch_exports));\n var { moveTask: moveTask2 } = (init_move(), __toCommonJS(move_exports));\n var { pullTask: pullTask2 } = (init_pull(), __toCommonJS(pull_exports));\n var { pushTagsTask: pushTagsTask2 } = (init_push(), __toCommonJS(push_exports));\n var {\n addRemoteTask: addRemoteTask2,\n getRemotesTask: getRemotesTask2,\n listRemotesTask: listRemotesTask2,\n remoteTask: remoteTask2,\n removeRemoteTask: removeRemoteTask2\n } = (init_remote(), __toCommonJS(remote_exports));\n var { getResetMode: getResetMode2, resetTask: resetTask2 } = (init_reset(), __toCommonJS(reset_exports));\n var { stashListTask: stashListTask2 } = (init_stash_list(), __toCommonJS(stash_list_exports));\n var {\n addSubModuleTask: addSubModuleTask2,\n initSubModuleTask: initSubModuleTask2,\n subModuleTask: subModuleTask2,\n updateSubModuleTask: updateSubModuleTask2\n } = (init_sub_module(), __toCommonJS(sub_module_exports));\n var { addAnnotatedTagTask: addAnnotatedTagTask2, addTagTask: addTagTask2, tagListTask: tagListTask2 } = (init_tag(), __toCommonJS(tag_exports));\n var { straightThroughBufferTask: straightThroughBufferTask2, straightThroughStringTask: straightThroughStringTask2 } = (init_task(), __toCommonJS(task_exports));\n function Git2(options, plugins) {\n this._plugins = plugins;\n this._executor = new GitExecutor2(\n options.baseDir,\n new Scheduler2(options.maxConcurrentProcesses),\n plugins\n );\n this._trimmed = options.trimmed;\n }\n (Git2.prototype = Object.create(SimpleGitApi2.prototype)).constructor = Git2;\n Git2.prototype.customBinary = function(command) {\n this._plugins.reconfigure(\"binary\", command);\n return this;\n };\n Git2.prototype.env = function(name, value) {\n if (arguments.length === 1 && typeof name === \"object\") {\n this._executor.env = name;\n } else {\n (this._executor.env = this._executor.env || {})[name] = value;\n }\n return this;\n };\n Git2.prototype.stashList = function(options) {\n return this._runTask(\n stashListTask2(\n trailingOptionsArgument2(arguments) || {},\n filterArray2(options) && options || []\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.mv = function(from, to) {\n return this._runTask(moveTask2(from, to), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.checkoutLatestTag = function(then) {\n var git = this;\n return this.pull(function() {\n git.tags(function(err, tags) {\n git.checkout(tags.latest, then);\n });\n });\n };\n Git2.prototype.pull = function(remote, branch, options, then) {\n return this._runTask(\n pullTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.fetch = function(remote, branch) {\n return this._runTask(\n fetchTask2(\n filterType2(remote, filterString2),\n filterType2(branch, filterString2),\n getTrailingOptions2(arguments)\n ),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.silent = function(silence) {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.\"\n )\n )\n );\n };\n Git2.prototype.tags = function(options, then) {\n return this._runTask(\n tagListTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rebase = function() {\n return this._runTask(\n straightThroughStringTask2([\"rebase\", ...getTrailingOptions2(arguments)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.reset = function(mode) {\n return this._runTask(\n resetTask2(getResetMode2(mode), getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.revert = function(commit) {\n const next = trailingFunctionArgument2(arguments);\n if (typeof commit !== \"string\") {\n return this._runTask(configurationErrorTask2(\"Commit must be a string\"), next);\n }\n return this._runTask(\n straightThroughStringTask2([\"revert\", ...getTrailingOptions2(arguments, 0, true), commit]),\n next\n );\n };\n Git2.prototype.addTag = function(name) {\n const task = typeof name === \"string\" ? addTagTask2(name) : configurationErrorTask2(\"Git.addTag requires a tag name\");\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.addAnnotatedTag = function(tagName, tagMessage) {\n return this._runTask(\n addAnnotatedTagTask2(tagName, tagMessage),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranch = function(branchName, forceDelete, then) {\n return this._runTask(\n deleteBranchTask2(branchName, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.deleteLocalBranches = function(branchNames, forceDelete, then) {\n return this._runTask(\n deleteBranchesTask2(branchNames, typeof forceDelete === \"boolean\" ? forceDelete : false),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branch = function(options, then) {\n return this._runTask(\n branchTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.branchLocal = function(then) {\n return this._runTask(branchLocalTask2(), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.raw = function(commands) {\n const createRestCommands = !Array.isArray(commands);\n const command = [].slice.call(createRestCommands ? arguments : commands, 0);\n for (let i = 0; i < command.length && createRestCommands; i++) {\n if (!filterPrimitives2(command[i])) {\n command.splice(i, command.length - i);\n break;\n }\n }\n command.push(...getTrailingOptions2(arguments, 0, true));\n var next = trailingFunctionArgument2(arguments);\n if (!command.length) {\n return this._runTask(\n configurationErrorTask2(\"Raw: must supply one or more command to execute\"),\n next\n );\n }\n return this._runTask(straightThroughStringTask2(command, this._trimmed), next);\n };\n Git2.prototype.submoduleAdd = function(repo, path, then) {\n return this._runTask(addSubModuleTask2(repo, path), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.submoduleUpdate = function(args, then) {\n return this._runTask(\n updateSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.submoduleInit = function(args, then) {\n return this._runTask(\n initSubModuleTask2(getTrailingOptions2(arguments, true)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.subModule = function(options, then) {\n return this._runTask(\n subModuleTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.listRemote = function() {\n return this._runTask(\n listRemotesTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.addRemote = function(remoteName, remoteRepo, then) {\n return this._runTask(\n addRemoteTask2(remoteName, remoteRepo, getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.removeRemote = function(remoteName, then) {\n return this._runTask(removeRemoteTask2(remoteName), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.getRemotes = function(verbose, then) {\n return this._runTask(getRemotesTask2(verbose === true), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.remote = function(options, then) {\n return this._runTask(\n remoteTask2(getTrailingOptions2(arguments)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.tag = function(options, then) {\n const command = getTrailingOptions2(arguments);\n if (command[0] !== \"tag\") {\n command.unshift(\"tag\");\n }\n return this._runTask(straightThroughStringTask2(command), trailingFunctionArgument2(arguments));\n };\n Git2.prototype.updateServerInfo = function(then) {\n return this._runTask(\n straightThroughStringTask2([\"update-server-info\"]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.pushTags = function(remote, then) {\n const task = pushTagsTask2(\n { remote: filterType2(remote, filterString2) },\n getTrailingOptions2(arguments)\n );\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.rm = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"-f\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.rmKeepLocal = function(files) {\n return this._runTask(\n straightThroughStringTask2([\"rm\", \"--cached\", ...asArray2(files)]),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.catFile = function(options, then) {\n return this._catFile(\"utf-8\", arguments);\n };\n Git2.prototype.binaryCatFile = function() {\n return this._catFile(\"buffer\", arguments);\n };\n Git2.prototype._catFile = function(format, args) {\n var handler = trailingFunctionArgument2(args);\n var command = [\"cat-file\"];\n var options = args[0];\n if (typeof options === \"string\") {\n return this._runTask(\n configurationErrorTask2(\"Git.catFile: options must be supplied as an array of strings\"),\n handler\n );\n }\n if (Array.isArray(options)) {\n command.push.apply(command, options);\n }\n const task = format === \"buffer\" ? straightThroughBufferTask2(command) : straightThroughStringTask2(command);\n return this._runTask(task, handler);\n };\n Git2.prototype.diff = function(options, then) {\n const task = filterString2(options) ? configurationErrorTask2(\n \"git.diff: supplying options as a single string is no longer supported, switch to an array of strings\"\n ) : straightThroughStringTask2([\"diff\", ...getTrailingOptions2(arguments)]);\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.diffSummary = function() {\n return this._runTask(\n diffSummaryTask2(getTrailingOptions2(arguments, 1)),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.applyPatch = function(patches) {\n const task = !filterStringOrStringArray2(patches) ? configurationErrorTask2(\n `git.applyPatch requires one or more string patches as the first argument`\n ) : applyPatchTask2(asArray2(patches), getTrailingOptions2([].slice.call(arguments, 1)));\n return this._runTask(task, trailingFunctionArgument2(arguments));\n };\n Git2.prototype.revparse = function() {\n const commands = [\"rev-parse\", ...getTrailingOptions2(arguments, true)];\n return this._runTask(\n straightThroughStringTask2(commands, true),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.clean = function(mode, options, then) {\n const usingCleanOptionsArray = isCleanOptionsArray2(mode);\n const cleanMode = usingCleanOptionsArray && mode.join(\"\") || filterType2(mode, filterString2) || \"\";\n const customArgs = getTrailingOptions2([].slice.call(arguments, usingCleanOptionsArray ? 1 : 0));\n return this._runTask(\n cleanWithOptionsTask2(cleanMode, customArgs),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.exec = function(then) {\n const task = {\n commands: [],\n format: \"utf-8\",\n parser() {\n if (typeof then === \"function\") {\n then();\n }\n }\n };\n return this._runTask(task);\n };\n Git2.prototype.clearQueue = function() {\n return this._runTask(\n adhocExecTask2(\n () => console.warn(\n \"simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.\"\n )\n )\n );\n };\n Git2.prototype.checkIgnore = function(pathnames, then) {\n return this._runTask(\n checkIgnoreTask2(asArray2(filterType2(pathnames, filterStringOrStringArray2, []))),\n trailingFunctionArgument2(arguments)\n );\n };\n Git2.prototype.checkIsRepo = function(checkType, then) {\n return this._runTask(\n checkIsRepoTask2(filterType2(checkType, filterString2)),\n trailingFunctionArgument2(arguments)\n );\n };\n module.exports = Git2;\n }\n});\n\n// src/lib/api.ts\ninit_pathspec();\n\n// src/lib/errors/git-construct-error.ts\ninit_git_error();\nvar GitConstructError = class extends GitError {\n constructor(config, message) {\n super(void 0, message);\n this.config = config;\n }\n};\n\n// src/lib/api.ts\ninit_git_error();\n\n// src/lib/errors/git-plugin-error.ts\ninit_git_error();\nvar GitPluginError = class extends GitError {\n constructor(task, plugin, message) {\n super(task, message);\n this.task = task;\n this.plugin = plugin;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n};\n\n// src/lib/api.ts\ninit_git_response_error();\ninit_task_configuration_error();\ninit_check_is_repo();\ninit_clean();\ninit_config();\ninit_diff_name_status();\ninit_grep();\ninit_reset();\n\n// src/lib/plugins/abort-plugin.ts\nfunction abortPlugin(signal) {\n if (!signal) {\n return;\n }\n const onSpawnAfter = {\n type: \"spawn.after\",\n action(_data, context) {\n function kill() {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort signal received\"));\n }\n signal.addEventListener(\"abort\", kill);\n context.spawned.on(\"close\", () => signal.removeEventListener(\"abort\", kill));\n }\n };\n const onSpawnBefore = {\n type: \"spawn.before\",\n action(_data, context) {\n if (signal.aborted) {\n context.kill(new GitPluginError(void 0, \"abort\", \"Abort already signaled\"));\n }\n }\n };\n return [onSpawnBefore, onSpawnAfter];\n}\n\n// src/lib/plugins/block-unsafe-operations-plugin.ts\nfunction isConfigSwitch(arg) {\n return typeof arg === \"string\" && arg.trim().toLowerCase() === \"-c\";\n}\nfunction isCloneUploadPackSwitch(char, arg) {\n if (typeof arg !== \"string\" || !arg.includes(char)) {\n return false;\n }\n const cleaned = arg.trim().replace(/\\0/g, \"\");\n return /^(--no)?-{1,2}[\\dlsqvnobucj]+(\\s|$)/.test(cleaned);\n}\nfunction preventConfigBuilder(config, setting, message = String(config)) {\n const regex = typeof config === \"string\" ? new RegExp(`\\\\s*${config}`, \"i\") : config;\n return function preventCommand(options, arg, next) {\n if (options[setting] !== true && isConfigSwitch(arg) && regex.test(next)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Configuring ${message} is not permitted without enabling ${setting}`\n );\n }\n };\n}\nvar preventUnsafeConfig = [\n preventConfigBuilder(\n /^\\s*protocol(.[a-z]+)?.allow/i,\n \"allowUnsafeProtocolOverride\",\n \"protocol.allow\"\n ),\n preventConfigBuilder(\"core.sshCommand\", \"allowUnsafeSshCommand\"),\n preventConfigBuilder(\"core.gitProxy\", \"allowUnsafeGitProxy\"),\n preventConfigBuilder(\"core.hooksPath\", \"allowUnsafeHooksPath\"),\n preventConfigBuilder(\"diff.external\", \"allowUnsafeDiffExternal\")\n];\nfunction preventUploadPack(arg, method) {\n if (/^\\s*--(upload|receive)-pack/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of --upload-pack or --receive-pack is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"clone\" && isCloneUploadPackSwitch(\"u\", arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of clone with option -u is not permitted without enabling allowUnsafePack`\n );\n }\n if (method === \"push\" && /^\\s*--exec\\b/.test(arg)) {\n throw new GitPluginError(\n void 0,\n \"unsafe\",\n `Use of push with option --exec is not permitted without enabling allowUnsafePack`\n );\n }\n}\nfunction blockUnsafeOperationsPlugin({\n allowUnsafePack = false,\n ...options\n} = {}) {\n return {\n type: \"spawn.args\",\n action(args, context) {\n args.forEach((current, index) => {\n const next = index < args.length ? args[index + 1] : \"\";\n allowUnsafePack || preventUploadPack(current, context.method);\n preventUnsafeConfig.forEach((helper) => helper(options, current, next));\n });\n return args;\n }\n };\n}\n\n// src/lib/plugins/command-config-prefixing-plugin.ts\ninit_utils();\nfunction commandConfigPrefixingPlugin(configuration) {\n const prefix = prefixedArray(configuration, \"-c\");\n return {\n type: \"spawn.args\",\n action(data) {\n return [...prefix, ...data];\n }\n };\n}\n\n// src/lib/plugins/completion-detection.plugin.ts\ninit_utils();\nimport { deferred } from \"@kwsites/promise-deferred\";\nvar never = deferred().promise;\nfunction completionDetectionPlugin({\n onClose = true,\n onExit = 50\n} = {}) {\n function createEvents() {\n let exitCode = -1;\n const events = {\n close: deferred(),\n closeTimeout: deferred(),\n exit: deferred(),\n exitTimeout: deferred()\n };\n const result = Promise.race([\n onClose === false ? never : events.closeTimeout.promise,\n onExit === false ? never : events.exitTimeout.promise\n ]);\n configureTimeout(onClose, events.close, events.closeTimeout);\n configureTimeout(onExit, events.exit, events.exitTimeout);\n return {\n close(code) {\n exitCode = code;\n events.close.done();\n },\n exit(code) {\n exitCode = code;\n events.exit.done();\n },\n get exitCode() {\n return exitCode;\n },\n result\n };\n }\n function configureTimeout(flag, event, timeout) {\n if (flag === false) {\n return;\n }\n (flag === true ? event.promise : event.promise.then(() => delay(flag))).then(timeout.done);\n }\n return {\n type: \"spawn.after\",\n async action(_data, { spawned, close }) {\n const events = createEvents();\n let deferClose = true;\n let quickClose = () => void (deferClose = false);\n spawned.stdout?.on(\"data\", quickClose);\n spawned.stderr?.on(\"data\", quickClose);\n spawned.on(\"error\", quickClose);\n spawned.on(\"close\", (code) => events.close(code));\n spawned.on(\"exit\", (code) => events.exit(code));\n try {\n await events.result;\n if (deferClose) {\n await delay(50);\n }\n close(events.exitCode);\n } catch (err) {\n close(events.exitCode, err);\n }\n }\n };\n}\n\n// src/lib/plugins/custom-binary.plugin.ts\ninit_utils();\nvar WRONG_NUMBER_ERR = `Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings`;\nvar WRONG_CHARS_ERR = `Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option`;\nfunction isBadArgument(arg) {\n return !arg || !/^([a-z]:)?([a-z0-9/.\\\\_~-]+)$/i.test(arg);\n}\nfunction toBinaryConfig(input, allowUnsafe) {\n if (input.length < 1 || input.length > 2) {\n throw new GitPluginError(void 0, \"binary\", WRONG_NUMBER_ERR);\n }\n const isBad = input.some(isBadArgument);\n if (isBad) {\n if (allowUnsafe) {\n console.warn(WRONG_CHARS_ERR);\n } else {\n throw new GitPluginError(void 0, \"binary\", WRONG_CHARS_ERR);\n }\n }\n const [binary, prefix] = input;\n return {\n binary,\n prefix\n };\n}\nfunction customBinaryPlugin(plugins, input = [\"git\"], allowUnsafe = false) {\n let config = toBinaryConfig(asArray(input), allowUnsafe);\n plugins.on(\"binary\", (input2) => {\n config = toBinaryConfig(asArray(input2), allowUnsafe);\n });\n plugins.append(\"spawn.binary\", () => {\n return config.binary;\n });\n plugins.append(\"spawn.args\", (data) => {\n return config.prefix ? [config.prefix, ...data] : data;\n });\n}\n\n// src/lib/plugins/error-detection.plugin.ts\ninit_git_error();\nfunction isTaskError(result) {\n return !!(result.exitCode && result.stdErr.length);\n}\nfunction getErrorMessage(result) {\n return Buffer.concat([...result.stdOut, ...result.stdErr]);\n}\nfunction errorDetectionHandler(overwrite = false, isError = isTaskError, errorMessage = getErrorMessage) {\n return (error, result) => {\n if (!overwrite && error || !isError(result)) {\n return error;\n }\n return errorMessage(result);\n };\n}\nfunction errorDetectionPlugin(config) {\n return {\n type: \"task.error\",\n action(data, context) {\n const error = config(data.error, {\n stdErr: context.stdErr,\n stdOut: context.stdOut,\n exitCode: context.exitCode\n });\n if (Buffer.isBuffer(error)) {\n return { error: new GitError(void 0, error.toString(\"utf-8\")) };\n }\n return {\n error\n };\n }\n };\n}\n\n// src/lib/plugins/plugin-store.ts\ninit_utils();\nimport { EventEmitter } from \"node:events\";\nvar PluginStore = class {\n constructor() {\n this.plugins = /* @__PURE__ */ new Set();\n this.events = new EventEmitter();\n }\n on(type, listener) {\n this.events.on(type, listener);\n }\n reconfigure(type, data) {\n this.events.emit(type, data);\n }\n append(type, action) {\n const plugin = append(this.plugins, { type, action });\n return () => this.plugins.delete(plugin);\n }\n add(plugin) {\n const plugins = [];\n asArray(plugin).forEach((plugin2) => plugin2 && this.plugins.add(append(plugins, plugin2)));\n return () => {\n plugins.forEach((plugin2) => this.plugins.delete(plugin2));\n };\n }\n exec(type, data, context) {\n let output = data;\n const contextual = Object.freeze(Object.create(context));\n for (const plugin of this.plugins) {\n if (plugin.type === type) {\n output = plugin.action(output, contextual);\n }\n }\n return output;\n }\n};\n\n// src/lib/plugins/progress-monitor-plugin.ts\ninit_utils();\nfunction progressMonitorPlugin(progress) {\n const progressCommand = \"--progress\";\n const progressMethods = [\"checkout\", \"clone\", \"fetch\", \"pull\", \"push\"];\n const onProgress = {\n type: \"spawn.after\",\n action(_data, context) {\n if (!context.commands.includes(progressCommand)) {\n return;\n }\n context.spawned.stderr?.on(\"data\", (chunk) => {\n const message = /^([\\s\\S]+?):\\s*(\\d+)% \\((\\d+)\\/(\\d+)\\)/.exec(chunk.toString(\"utf8\"));\n if (!message) {\n return;\n }\n progress({\n method: context.method,\n stage: progressEventStage(message[1]),\n progress: asNumber(message[2]),\n processed: asNumber(message[3]),\n total: asNumber(message[4])\n });\n });\n }\n };\n const onArgs = {\n type: \"spawn.args\",\n action(args, context) {\n if (!progressMethods.includes(context.method)) {\n return args;\n }\n return including(args, progressCommand);\n }\n };\n return [onArgs, onProgress];\n}\nfunction progressEventStage(input) {\n return String(input.toLowerCase().split(\" \", 1)) || \"unknown\";\n}\n\n// src/lib/plugins/spawn-options-plugin.ts\ninit_utils();\nfunction spawnOptionsPlugin(spawnOptions) {\n const options = pick(spawnOptions, [\"uid\", \"gid\"]);\n return {\n type: \"spawn.options\",\n action(data) {\n return { ...options, ...data };\n }\n };\n}\n\n// src/lib/plugins/timout-plugin.ts\nfunction timeoutPlugin({\n block,\n stdErr = true,\n stdOut = true\n}) {\n if (block > 0) {\n return {\n type: \"spawn.after\",\n action(_data, context) {\n let timeout;\n function wait() {\n timeout && clearTimeout(timeout);\n timeout = setTimeout(kill, block);\n }\n function stop() {\n context.spawned.stdout?.off(\"data\", wait);\n context.spawned.stderr?.off(\"data\", wait);\n context.spawned.off(\"exit\", stop);\n context.spawned.off(\"close\", stop);\n timeout && clearTimeout(timeout);\n }\n function kill() {\n stop();\n context.kill(new GitPluginError(void 0, \"timeout\", `block timeout reached`));\n }\n stdOut && context.spawned.stdout?.on(\"data\", wait);\n stdErr && context.spawned.stderr?.on(\"data\", wait);\n context.spawned.on(\"exit\", stop);\n context.spawned.on(\"close\", stop);\n wait();\n }\n };\n }\n}\n\n// src/lib/plugins/suffix-paths.plugin.ts\ninit_pathspec();\nfunction suffixPathsPlugin() {\n return {\n type: \"spawn.args\",\n action(data) {\n const prefix = [];\n let suffix;\n function append2(args) {\n (suffix = suffix || []).push(...args);\n }\n for (let i = 0; i < data.length; i++) {\n const param = data[i];\n if (isPathSpec(param)) {\n append2(toPaths(param));\n continue;\n }\n if (param === \"--\") {\n append2(\n data.slice(i + 1).flatMap((item) => isPathSpec(item) && toPaths(item) || item)\n );\n break;\n }\n prefix.push(param);\n }\n return !suffix ? prefix : [...prefix, \"--\", ...suffix.map(String)];\n }\n };\n}\n\n// src/lib/git-factory.ts\ninit_utils();\nvar Git = require_git();\nfunction gitInstanceFactory(baseDir, options) {\n const plugins = new PluginStore();\n const config = createInstanceConfig(\n baseDir && (typeof baseDir === \"string\" ? { baseDir } : baseDir) || {},\n options\n );\n if (!folderExists(config.baseDir)) {\n throw new GitConstructError(\n config,\n `Cannot use simple-git on a directory that does not exist`\n );\n }\n if (Array.isArray(config.config)) {\n plugins.add(commandConfigPrefixingPlugin(config.config));\n }\n plugins.add(blockUnsafeOperationsPlugin(config.unsafe));\n plugins.add(completionDetectionPlugin(config.completion));\n config.abort && plugins.add(abortPlugin(config.abort));\n config.progress && plugins.add(progressMonitorPlugin(config.progress));\n config.timeout && plugins.add(timeoutPlugin(config.timeout));\n config.spawnOptions && plugins.add(spawnOptionsPlugin(config.spawnOptions));\n plugins.add(suffixPathsPlugin());\n plugins.add(errorDetectionPlugin(errorDetectionHandler(true)));\n config.errors && plugins.add(errorDetectionPlugin(config.errors));\n customBinaryPlugin(plugins, config.binary, config.unsafe?.allowUnsafeCustomBinary);\n return new Git(config, plugins);\n}\n\n// src/lib/runners/promise-wrapped.ts\ninit_git_response_error();\nvar functionNamesBuilderApi = [\"customBinary\", \"env\", \"outputHandler\", \"silent\"];\nvar functionNamesPromiseApi = [\n \"add\",\n \"addAnnotatedTag\",\n \"addConfig\",\n \"addRemote\",\n \"addTag\",\n \"applyPatch\",\n \"binaryCatFile\",\n \"branch\",\n \"branchLocal\",\n \"catFile\",\n \"checkIgnore\",\n \"checkIsRepo\",\n \"checkout\",\n \"checkoutBranch\",\n \"checkoutLatestTag\",\n \"checkoutLocalBranch\",\n \"clean\",\n \"clone\",\n \"commit\",\n \"cwd\",\n \"deleteLocalBranch\",\n \"deleteLocalBranches\",\n \"diff\",\n \"diffSummary\",\n \"exec\",\n \"fetch\",\n \"getRemotes\",\n \"init\",\n \"listConfig\",\n \"listRemote\",\n \"log\",\n \"merge\",\n \"mergeFromTo\",\n \"mirror\",\n \"mv\",\n \"pull\",\n \"push\",\n \"pushTags\",\n \"raw\",\n \"rebase\",\n \"remote\",\n \"removeRemote\",\n \"reset\",\n \"revert\",\n \"revparse\",\n \"rm\",\n \"rmKeepLocal\",\n \"show\",\n \"stash\",\n \"stashList\",\n \"status\",\n \"subModule\",\n \"submoduleAdd\",\n \"submoduleInit\",\n \"submoduleUpdate\",\n \"tag\",\n \"tags\",\n \"updateServerInfo\"\n];\nfunction gitP(...args) {\n let git;\n let chain = Promise.resolve();\n try {\n git = gitInstanceFactory(...args);\n } catch (e) {\n chain = Promise.reject(e);\n }\n function builderReturn() {\n return promiseApi;\n }\n function chainReturn() {\n return chain;\n }\n const promiseApi = [...functionNamesBuilderApi, ...functionNamesPromiseApi].reduce(\n (api, name) => {\n const isAsync = functionNamesPromiseApi.includes(name);\n const valid = isAsync ? asyncWrapper(name, git) : syncWrapper(name, git, api);\n const alternative = isAsync ? chainReturn : builderReturn;\n Object.defineProperty(api, name, {\n enumerable: false,\n configurable: false,\n value: git ? valid : alternative\n });\n return api;\n },\n {}\n );\n return promiseApi;\n function asyncWrapper(fn, git2) {\n return function(...args2) {\n if (typeof args2[args2.length] === \"function\") {\n throw new TypeError(\n \"Promise interface requires that handlers are not supplied inline, trailing function not allowed in call to \" + fn\n );\n }\n return chain.then(function() {\n return new Promise(function(resolve, reject) {\n const callback = (err, result) => {\n if (err) {\n return reject(toError(err));\n }\n resolve(result);\n };\n args2.push(callback);\n git2[fn].apply(git2, args2);\n });\n });\n };\n }\n function syncWrapper(fn, git2, api) {\n return (...args2) => {\n git2[fn](...args2);\n return api;\n };\n }\n}\nfunction toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n return new GitResponseError(error);\n}\n\n// src/esm.mjs\nvar simpleGit = gitInstanceFactory;\nvar esm_default = gitInstanceFactory;\nexport {\n CheckRepoActions,\n CleanOptions,\n DiffNameStatus,\n GitConfigScope,\n GitConstructError,\n GitError,\n GitPluginError,\n GitResponseError,\n ResetMode,\n TaskConfigurationError,\n esm_default as default,\n gitP,\n grepQueryBuilder,\n pathspec,\n simpleGit\n};\n//# sourceMappingURL=index.js.map\n","export const COMMENT_DIRECTORY_PREFIX = \"expect-comment-\";\nexport const FLOW_DIRECTORY_NAME = \"flows\";\nexport const FLOW_DESCRIPTION_CHAR_LIMIT = 120;\nexport const SAVED_FLOW_FORMAT_VERSION = 3;\nexport const GIT_TIMEOUT_MS = 5000;\nexport const GITHUB_TIMEOUT_MS = 15000;\nexport const PR_LIMIT = 100;\nexport const EXECUTION_CONTEXT_FILE_LIMIT = 12;\nexport const EXECUTION_RECENT_COMMIT_LIMIT = 5;\nexport const EXPECT_STATE_DIR = \".expect\";\nexport const EXPECT_REPLAY_OUTPUT_ENV_NAME = \"EXPECT_REPLAY_OUTPUT_PATH\";\nexport const TESTED_FINGERPRINT_FILE = \"last-tested\";\n\nexport const SOURCE_EXTENSIONS = [\".ts\", \".tsx\", \".js\", \".jsx\", \".mts\", \".mjs\", \".cts\", \".cjs\"];\n\nexport const SKIP_DIRECTORIES = new Set([\n \"node_modules\",\n \"dist\",\n \"build\",\n \".git\",\n \".next\",\n \".turbo\",\n \"coverage\",\n \".nyc_output\",\n \".cache\",\n \".repos\",\n \".specs\",\n \"__snapshots__\",\n \"__fixtures__\",\n]);\n\nexport const TEST_FILE_CONTENT_SIZE_LIMIT_BYTES = 256 * 1024;\nexport const TEST_FILE_SCAN_LIMIT = 200;\nexport const TEST_COVERAGE_TIMEOUT_MS = 15_000;\n\nexport const ALL_STEPS_TERMINAL_GRACE_MS = 2 * 60 * 1000;\n\nexport const FRAMEWORK_DEFAULT_PORTS: Record<string, number> = {\n next: 3000,\n vite: 5173,\n angular: 4200,\n remix: 5173,\n astro: 4321,\n nuxt: 3000,\n sveltekit: 5173,\n gatsby: 8000,\n \"create-react-app\": 3000,\n unknown: 3000,\n};\n","import { Schema } from \"effect\";\n\nexport class GitError extends Schema.ErrorClass<GitError>(\"GitError\")({\n _tag: Schema.tag(\"GitError\"),\n operation: Schema.String,\n cause: Schema.Defect,\n}) {\n message = `Git error during \"${this.operation}\"`;\n}\n\nexport class FindRepoRootError extends Schema.ErrorClass<FindRepoRootError>(\"FindRepoRootError\")({\n _tag: Schema.tag(\"FindRepoRootError\"),\n cause: Schema.Defect,\n}) {\n message = \"Could not find git repository root\";\n}\n","import * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { Effect, FileSystem, Layer, ServiceMap } from \"effect\";\nimport * as Arr from \"effect/Array\";\nimport * as Str from \"effect/String\";\nimport * as F from \"effect/Function\";\nimport * as crypto from \"node:crypto\";\nimport * as path from \"node:path\";\nimport simpleGit from \"simple-git\";\n\nimport {\n type ChangedFile,\n ChangesFor,\n type CommitSummary,\n FileStat,\n GitState,\n} from \"@expect/shared/models\";\nimport { EXPECT_STATE_DIR, TESTED_FINGERPRINT_FILE } from \"../constants\";\nimport { GitError, FindRepoRootError } from \"./errors\";\n\n// ── GitRepoRoot context service ──────────────────────────────────────\n\nexport class GitRepoRoot extends ServiceMap.Service<GitRepoRoot, string>()(\n \"@supervisor/GitRepoRoot\",\n) {}\n\n// ── Git Service ──────────────────────────────────────────────────────\n\nexport class Git extends ServiceMap.Service<Git>()(\"@supervisor/Git\", {\n make: Effect.gen(function* () {\n const fileSystem = yield* FileSystem.FileSystem;\n\n // ── Low-level helpers ────────────────────────────────────\n\n const raw = (options: { args: string[]; operation: string; trim?: boolean }) =>\n Effect.gen(function* () {\n const repoRoot = yield* GitRepoRoot;\n return yield* Effect.tryPromise({\n try: () => simpleGit(repoRoot).raw(options.args),\n catch: (cause) => new GitError({ operation: options.operation, cause }),\n }).pipe(Effect.map(options.trim ? Str.trim : F.identity));\n });\n\n // ── Repo root ────────────────────────────────────────────\n\n const getRepoRoot = (cwd: string) =>\n Effect.tryPromise({\n try: () => simpleGit(cwd).revparse([\"--show-toplevel\"]),\n catch: (cause) => new FindRepoRootError({ cause }),\n }).pipe(Effect.map(Str.trim));\n\n const withRepoRoot =\n (cwd: string) =>\n <A, E, R>(effect: Effect.Effect<A, E, R>) =>\n Effect.gen(function* () {\n const repoRoot = yield* getRepoRoot(cwd);\n return yield* effect.pipe(Effect.provideService(GitRepoRoot, repoRoot));\n });\n\n // ── Branch operations ────────────────────────────────────\n\n const FALLBACK_PRIMARY_BRANCH = \"main\";\n\n const getMainBranch = raw({\n args: [\"symbolic-ref\", \"refs/remotes/origin/HEAD\"],\n operation: \"getting main branch\",\n trim: true,\n }).pipe(\n Effect.map((ref) => ref.replace(\"refs/remotes/origin/\", \"\")),\n Effect.catchTag(\"GitError\", () =>\n raw({\n args: [\"revparse\", \"--verify\", \"origin/main\"],\n operation: \"getting main branch (origin/main)\",\n trim: true,\n }).pipe(Effect.as(\"main\")),\n ),\n Effect.catchTag(\"GitError\", () =>\n raw({\n args: [\"rev-parse\", \"--verify\", \"main\"],\n operation: \"getting main branch (main)\",\n trim: true,\n }).pipe(Effect.as(\"main\")),\n ),\n Effect.catchTag(\"GitError\", () => Effect.succeed(FALLBACK_PRIMARY_BRANCH)),\n );\n\n const getCurrentBranch = raw({\n args: [\"rev-parse\", \"--abbrev-ref\", \"HEAD\"],\n operation: \"getting current branch\",\n trim: true,\n }).pipe(Effect.catchTag(\"GitError\", () => Effect.succeed(\"HEAD\")));\n\n const isInsideWorkTree = raw({\n args: [\"rev-parse\", \"--is-inside-work-tree\"],\n operation: \"checking if inside work tree\",\n trim: true,\n }).pipe(\n Effect.map((output) => output === \"true\"),\n Effect.catchTag(\"GitError\", () => Effect.succeed(false)),\n );\n\n // ── File stats ───────────────────────────────────────────\n\n const parseFileStatLine = (line: string) => {\n const [added, removed, relativePath] = line.split(\"\\t\");\n return new FileStat({\n relativePath: relativePath ?? \"\",\n added: Number.parseInt(added ?? \"0\", 10) || 0,\n removed: Number.parseInt(removed ?? \"0\", 10) || 0,\n });\n };\n\n const getFileStats = Effect.fn(\"Git.getFileStats\")(function* (changesFor: ChangesFor) {\n if (changesFor._tag === \"WorkingTree\") {\n return yield* raw({\n args: [\"diff\", \"HEAD\", \"--numstat\"],\n operation: \"getting working tree file stats\",\n }).pipe(\n Effect.map(Str.split(\"\\n\")),\n Effect.map(Arr.map(Str.trim)),\n Effect.map(Arr.filter(Str.isNonEmpty)),\n Effect.map(Arr.map(parseFileStatLine)),\n Effect.catchTag(\"GitError\", () => Effect.succeed([] as FileStat[])),\n );\n }\n\n const diffRange =\n changesFor._tag === \"Branch\" || changesFor._tag === \"Changes\"\n ? `${changesFor.mainBranch}..HEAD`\n : `${changesFor.hash}^..${changesFor.hash}`;\n\n return yield* raw({\n args: [\"diff\", diffRange, \"--numstat\"],\n operation: \"getting file stats\",\n }).pipe(\n Effect.map(Str.split(\"\\n\")),\n Effect.map(Arr.map(Str.trim)),\n Effect.map(Arr.filter(Str.isNonEmpty)),\n Effect.map(Arr.map(parseFileStatLine)),\n Effect.catchTag(\"GitError\", () => Effect.succeed([] as FileStat[])),\n );\n });\n\n // ── Changed files (lightweight) ──────────────────────────\n\n const parseStatusLetter = (letter: string): ChangedFile[\"status\"] => {\n if (letter === \"A\") return \"A\";\n if (letter === \"D\") return \"D\";\n if (letter === \"R\") return \"R\";\n if (letter === \"C\") return \"C\";\n if (letter === \"?\") return \"?\";\n return \"M\";\n };\n\n const getChangedFiles = Effect.fn(\"Git.getChangedFiles\")(function* (changesFor: ChangesFor) {\n if (changesFor._tag === \"WorkingTree\") {\n const files = yield* raw({\n args: [\"status\", \"--porcelain\"],\n operation: \"getting working tree changes\",\n }).pipe(\n Effect.map(Str.split(\"\\n\")),\n Effect.map(Arr.filter(Str.isNonEmpty)),\n Effect.map(\n Arr.map((line): ChangedFile => {\n const statusLetter = line.at(0) ?? \"M\";\n const path = line.slice(3).trim();\n return { path, status: parseStatusLetter(statusLetter) };\n }),\n ),\n Effect.catchTag(\"GitError\", (error) =>\n Effect.logWarning(\"Git failed to get working tree changes\", {\n error: error.message,\n }).pipe(Effect.map(() => [] as ChangedFile[])),\n ),\n );\n yield* Effect.logDebug(\"Changed files resolved\", {\n scope: \"WorkingTree\",\n count: files.length,\n });\n return files;\n }\n\n const diffRange =\n changesFor._tag === \"Branch\" || changesFor._tag === \"Changes\"\n ? `${changesFor.mainBranch}..HEAD`\n : `${changesFor.hash}^..${changesFor.hash}`;\n\n const files = yield* raw({\n args: [\"diff\", \"--name-status\", diffRange],\n operation: \"getting changed files\",\n trim: true,\n }).pipe(\n Effect.map(Str.split(\"\\n\")),\n Effect.map(Arr.map(Str.trim)),\n Effect.map(Arr.filter(Str.isNonEmpty)),\n Effect.map(\n Arr.map((line): ChangedFile => {\n const parts = line.split(\"\\t\");\n const statusLetter = (parts[0] ?? \"M\").at(0) ?? \"M\";\n const isRenameOrCopy = statusLetter === \"R\" || statusLetter === \"C\";\n const path = (isRenameOrCopy ? parts[2] : parts[1]) ?? \"\";\n return { path, status: parseStatusLetter(statusLetter) };\n }),\n ),\n Effect.catchTag(\"GitError\", (error) =>\n Effect.logWarning(\"Git failed to get changed files\", {\n error: error.message,\n diffRange,\n }).pipe(Effect.map(() => [] as ChangedFile[])),\n ),\n );\n yield* Effect.logDebug(\"Changed files resolved\", {\n scope: changesFor._tag,\n count: files.length,\n });\n return files;\n });\n\n // ── Diff preview ─────────────────────────────────────────\n\n const getDiffPreview = Effect.fn(\"Git.getDiffPreview\")(function* (changesFor: ChangesFor) {\n if (changesFor._tag === \"WorkingTree\") {\n const diff = yield* raw({\n args: [\"diff\", \"HEAD\"],\n operation: \"getting diff preview\",\n trim: true,\n }).pipe(\n Effect.catchTag(\"GitError\", (error) =>\n Effect.logWarning(\"Git failed to get diff preview\", {\n error: error.message,\n scope: \"WorkingTree\",\n }).pipe(Effect.map(() => \"\")),\n ),\n );\n yield* Effect.logDebug(\"Git diff computed\", {\n scope: \"WorkingTree\",\n diffLength: diff.length,\n });\n return diff;\n }\n\n const diffRange =\n changesFor._tag === \"Branch\" || changesFor._tag === \"Changes\"\n ? `${changesFor.mainBranch}..HEAD`\n : `${changesFor.hash}^..${changesFor.hash}`;\n\n const diff = yield* raw({\n args: [\"diff\", diffRange],\n operation: \"getting diff preview\",\n trim: true,\n }).pipe(\n Effect.catchTag(\"GitError\", (error) =>\n Effect.logWarning(\"Git failed to get diff preview\", {\n error: error.message,\n diffRange,\n }).pipe(Effect.map(() => \"\")),\n ),\n );\n yield* Effect.logDebug(\"Git diff computed\", {\n scope: changesFor._tag,\n diffLength: diff.length,\n });\n return diff;\n });\n\n // ── Recent commits ───────────────────────────────────────\n\n const getRecentCommits = Effect.fn(\"Git.getRecentCommits\")(function* (range: string) {\n const commits = yield* raw({\n args: [\"log\", \"--format=%H\\t%h\\t%s\", range],\n operation: \"getting recent commits\",\n trim: true,\n }).pipe(\n Effect.map(Str.split(\"\\n\")),\n Effect.map(Arr.map(Str.trim)),\n Effect.map(Arr.filter(Str.isNonEmpty)),\n Effect.map(\n Arr.map((line): CommitSummary => {\n const [hash, shortHash, ...subjectParts] = line.split(\"\\t\");\n return {\n hash: hash ?? \"\",\n shortHash: shortHash ?? \"\",\n subject: subjectParts.join(\"\\t\"),\n };\n }),\n ),\n Effect.catchTag(\"GitError\", (error) =>\n Effect.logWarning(\"Git failed to get recent commits\", {\n error: error.message,\n range,\n }).pipe(Effect.map(() => [] as CommitSummary[])),\n ),\n );\n yield* Effect.logDebug(\"Recent commits fetched\", { range, count: commits.length });\n return commits;\n });\n\n const getCommitSummary = Effect.fn(\"Git.getCommitSummary\")(function* (hash: string) {\n return yield* raw({\n args: [\"log\", \"-1\", \"--format=%H\\t%h\\t%s\", hash],\n operation: \"getting commit summary\",\n trim: true,\n }).pipe(\n Effect.map((line) => {\n const [fullHash, shortHash, ...subjectParts] = line.split(\"\\t\");\n if (!fullHash || !shortHash) return undefined;\n return {\n hash: fullHash,\n shortHash,\n subject: subjectParts.join(\"\\t\"),\n } satisfies CommitSummary;\n }),\n Effect.catchTag(\"GitError\", () => Effect.succeed(undefined as CommitSummary | undefined)),\n );\n });\n\n // ── Fingerprint ──────────────────────────────────────────\n\n const NULL_SEPARATOR = \"\\0\";\n\n const computeFingerprint = Effect.fn(\"Git.computeFingerprint\")(function* () {\n const head = yield* raw({\n args: [\"rev-parse\", \"HEAD\"],\n operation: \"getting HEAD for fingerprint\",\n trim: true,\n }).pipe(Effect.catchTag(\"GitError\", () => Effect.succeed(\"\")));\n\n if (!head) return undefined;\n\n const unstaged = yield* raw({\n args: [\"diff\"],\n operation: \"getting unstaged diff for fingerprint\",\n }).pipe(Effect.catchTag(\"GitError\", () => Effect.succeed(\"\")));\n\n const staged = yield* raw({\n args: [\"diff\", \"--cached\"],\n operation: \"getting staged diff for fingerprint\",\n }).pipe(Effect.catchTag(\"GitError\", () => Effect.succeed(\"\")));\n\n return crypto\n .createHash(\"sha256\")\n .update(head)\n .update(NULL_SEPARATOR)\n .update(unstaged)\n .update(NULL_SEPARATOR)\n .update(staged)\n .digest(\"hex\");\n });\n\n /** @todo(rasmus): cleanup */\n const ensureStateDir = Effect.fn(\"ensureStateDir\")(function* (baseDir: string) {\n const stateDir = path.join(baseDir, EXPECT_STATE_DIR);\n\n yield* fileSystem\n .makeDirectory(stateDir, { recursive: true })\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.void));\n\n const gitignorePath = path.join(stateDir, \".gitignore\");\n const gitignoreExists = yield* fileSystem\n .exists(gitignorePath)\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.succeed(false)));\n\n if (!gitignoreExists) {\n yield* fileSystem\n .writeFileString(gitignorePath, \"*\\n\")\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.void));\n }\n\n return stateDir;\n });\n\n const getFingerprintPath = Effect.gen(function* () {\n const repoRoot = yield* GitRepoRoot;\n const stateDir = yield* ensureStateDir(repoRoot);\n return path.join(stateDir, TESTED_FINGERPRINT_FILE);\n });\n\n const loadSavedFingerprint = Effect.fn(\"Git.loadSavedFingerprint\")(function* () {\n const fingerprintPath = yield* getFingerprintPath;\n return yield* fileSystem.readFileString(fingerprintPath).pipe(\n Effect.map(Str.trim),\n Effect.catchTag(\"PlatformError\", () => Effect.succeed(undefined as string | undefined)),\n );\n });\n\n const saveTestedFingerprint = Effect.fn(\"Git.saveTestedFingerprint\")(function* () {\n const fingerprint = yield* computeFingerprint();\n if (!fingerprint) return;\n\n const fingerprintPath = yield* getFingerprintPath;\n yield* fileSystem.writeFileString(fingerprintPath, fingerprint);\n });\n\n // ── State ─────────────────────────────────────────────────\n\n const getState = Effect.fn(\"Git.getState\")(function* () {\n const isInside = yield* isInsideWorkTree;\n if (!isInside) {\n return new GitState({\n isGitRepo: false,\n currentBranch: \"HEAD\",\n mainBranch: undefined,\n isOnMain: false,\n hasChangesFromMain: false,\n hasUnstagedChanges: false,\n hasBranchCommits: false,\n branchCommitCount: 0,\n fileStats: [],\n workingTreeFileStats: [],\n fingerprint: undefined,\n savedFingerprint: undefined,\n });\n }\n\n const [currentBranch, mainBranch, fingerprint, savedFingerprint] = yield* Effect.all(\n [getCurrentBranch, getMainBranch, computeFingerprint(), loadSavedFingerprint()],\n { concurrency: \"unbounded\" },\n );\n\n const isOnMain = currentBranch === mainBranch;\n\n const [branchFileStats, workingTreeFileStats, recentCommits] = yield* Effect.all(\n [\n getFileStats(ChangesFor.makeUnsafe({ _tag: \"Changes\", mainBranch })),\n getFileStats(ChangesFor.makeUnsafe({ _tag: \"WorkingTree\" })),\n getRecentCommits(`${mainBranch}..HEAD`),\n ],\n { concurrency: \"unbounded\" },\n );\n\n return new GitState({\n isGitRepo: true,\n currentBranch,\n mainBranch,\n isOnMain,\n hasChangesFromMain: branchFileStats.length > 0,\n hasUnstagedChanges: workingTreeFileStats.length > 0,\n hasBranchCommits: recentCommits.length > 0,\n branchCommitCount: recentCommits.length,\n fileStats: branchFileStats,\n workingTreeFileStats,\n fingerprint,\n savedFingerprint,\n });\n });\n\n return {\n withRepoRoot,\n getMainBranch,\n getCurrentBranch,\n isInsideWorkTree,\n getFileStats,\n getChangedFiles,\n getDiffPreview,\n getRecentCommits,\n getCommitSummary,\n getState,\n computeFingerprint,\n saveTestedFingerprint,\n } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(Layer.provide(NodeServices.layer));\n\n static withRepoRoot = (cwd: string) => {\n const repoRootLayer = Layer.effect(GitRepoRoot)(\n Effect.tryPromise({\n try: () => simpleGit(cwd).revparse([\"--show-toplevel\"]),\n catch: (cause) => new FindRepoRootError({ cause }),\n }).pipe(Effect.map((root) => root.trim())),\n );\n return Layer.mergeAll(Git.layer.pipe(Layer.provide(repoRootLayer)), repoRootLayer);\n };\n}\n","export const EXPECT_LIVE_VIEW_URL_ENV_NAME = \"EXPECT_LIVE_VIEW_URL\";\nexport const EXPECT_REPLAY_OUTPUT_ENV_NAME = \"EXPECT_REPLAY_OUTPUT_PATH\";\nexport const EXPECT_COOKIE_BROWSERS_ENV_NAME = \"EXPECT_COOKIE_BROWSERS\";\nexport const EXPECT_CDP_URL_ENV_NAME = \"EXPECT_CDP_URL\";\nexport const EXPECT_BASE_URL_ENV_NAME = \"EXPECT_BASE_URL\";\nexport const LIVE_VIEW_PAGE_POLL_INTERVAL_MS = 500;\nexport const DUPLICATE_REQUEST_WINDOW_MS = 500;\n","import net from 'node:net';\nimport os from 'node:os';\n\nclass Locked extends Error {\n\tconstructor(port) {\n\t\tsuper(`${port} is locked`);\n\t}\n}\n\nconst lockedPorts = {\n\told: new Set(),\n\tyoung: new Set(),\n};\n\n// On this interval, the old locked ports are discarded,\n// the young locked ports are moved to old locked ports,\n// and a new young set for locked ports are created.\nconst releaseOldLockedPortsIntervalMs = 1000 * 15;\n\nconst minPort = 1024;\nconst maxPort = 65_535;\n\n// Lazily create timeout on first use\nlet timeout;\n\nconst getLocalHosts = () => {\n\tconst interfaces = os.networkInterfaces();\n\n\t// Add undefined value for createServer function to use default host,\n\t// and default IPv4 host in case createServer defaults to IPv6.\n\tconst results = new Set([undefined, '0.0.0.0']);\n\n\tfor (const _interface of Object.values(interfaces)) {\n\t\tfor (const config of _interface) {\n\t\t\tresults.add(config.address);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nconst checkAvailablePort = options =>\n\tnew Promise((resolve, reject) => {\n\t\tconst server = net.createServer();\n\t\tserver.unref();\n\t\tserver.on('error', reject);\n\n\t\tserver.listen(options, () => {\n\t\t\tconst {port} = server.address();\n\t\t\tserver.close(() => {\n\t\t\t\tresolve(port);\n\t\t\t});\n\t\t});\n\t});\n\nconst getAvailablePort = async (options, hosts) => {\n\tif (options.host || options.port === 0) {\n\t\treturn checkAvailablePort(options);\n\t}\n\n\tfor (const host of hosts) {\n\t\ttry {\n\t\t\tawait checkAvailablePort({port: options.port, host}); // eslint-disable-line no-await-in-loop\n\t\t} catch (error) {\n\t\t\tif (!['EADDRNOTAVAIL', 'EINVAL'].includes(error.code)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn options.port;\n};\n\nconst portCheckSequence = function * (ports) {\n\tif (ports) {\n\t\tyield * ports;\n\t}\n\n\tyield 0; // Fall back to 0 if anything else failed\n};\n\nexport default async function getPorts(options) {\n\tlet ports;\n\tlet exclude = new Set();\n\n\tif (options) {\n\t\tif (options.port) {\n\t\t\tports = typeof options.port === 'number' ? [options.port] : options.port;\n\t\t}\n\n\t\tif (options.exclude) {\n\t\t\tconst excludeIterable = options.exclude;\n\n\t\t\tif (typeof excludeIterable[Symbol.iterator] !== 'function') {\n\t\t\t\tthrow new TypeError('The `exclude` option must be an iterable.');\n\t\t\t}\n\n\t\t\tfor (const element of excludeIterable) {\n\t\t\t\tif (typeof element !== 'number') {\n\t\t\t\t\tthrow new TypeError('Each item in the `exclude` option must be a number corresponding to the port you want excluded.');\n\t\t\t\t}\n\n\t\t\t\tif (!Number.isSafeInteger(element)) {\n\t\t\t\t\tthrow new TypeError(`Number ${element} in the exclude option is not a safe integer and can't be used`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\texclude = new Set(excludeIterable);\n\t\t}\n\t}\n\n\tif (timeout === undefined) {\n\t\ttimeout = setTimeout(() => {\n\t\t\ttimeout = undefined;\n\n\t\t\tlockedPorts.old = lockedPorts.young;\n\t\t\tlockedPorts.young = new Set();\n\t\t}, releaseOldLockedPortsIntervalMs);\n\n\t\t// Does not exist in some environments (Electron, Jest jsdom env, browser, etc).\n\t\tif (timeout.unref) {\n\t\t\ttimeout.unref();\n\t\t}\n\t}\n\n\tconst hosts = getLocalHosts();\n\n\tfor (const port of portCheckSequence(ports)) {\n\t\ttry {\n\t\t\tif (exclude.has(port)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet availablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop\n\t\t\twhile (lockedPorts.old.has(availablePort) || lockedPorts.young.has(availablePort)) {\n\t\t\t\tif (port !== 0) {\n\t\t\t\t\tthrow new Locked(port);\n\t\t\t\t}\n\n\t\t\t\tavailablePort = await getAvailablePort({...options, port}, hosts); // eslint-disable-line no-await-in-loop\n\t\t\t}\n\n\t\t\tlockedPorts.young.add(availablePort);\n\n\t\t\treturn availablePort;\n\t\t} catch (error) {\n\t\t\tif (!['EADDRINUSE', 'EACCES'].includes(error.code) && !(error instanceof Locked)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow new Error('No available ports found');\n}\n\nexport function portNumbers(from, to) {\n\tif (!Number.isInteger(from) || !Number.isInteger(to)) {\n\t\tthrow new TypeError('`from` and `to` must be integer numbers');\n\t}\n\n\tif (from < minPort || from > maxPort) {\n\t\tthrow new RangeError(`'from' must be between ${minPort} and ${maxPort}`);\n\t}\n\n\tif (to < minPort || to > maxPort) {\n\t\tthrow new RangeError(`'to' must be between ${minPort} and ${maxPort}`);\n\t}\n\n\tif (from > to) {\n\t\tthrow new RangeError('`to` must be greater than or equal to `from`');\n\t}\n\n\tconst generator = function * (from, to) {\n\t\tfor (let port = from; port <= to; port++) {\n\t\t\tyield port;\n\t\t}\n\t};\n\n\treturn generator(from, to);\n}\n\nexport function clearLockedPorts() {\n\tlockedPorts.old.clear();\n\tlockedPorts.young.clear();\n}\n","import { Cause, Schema } from \"effect\";\n\nexport class CookieDatabaseNotFoundError extends Schema.ErrorClass<CookieDatabaseNotFoundError>(\n \"CookieDatabaseNotFoundError\",\n)({\n _tag: Schema.tag(\"CookieDatabaseNotFoundError\"),\n browser: Schema.String,\n}) {\n message = `Cookie database not found for ${this.browser}`;\n}\n\nexport class CpdInvalidResponsePayload extends Schema.ErrorClass<CpdInvalidResponsePayload>(\n \"CpdInvalidResponsePayload\",\n)({\n _tag: Schema.tag(\"CpdInvalidResponsePayload\"),\n code: Schema.Number,\n errorMessage: Schema.String,\n}) {\n message = `Network.getAllCookies responded with #${this.code}: ${this.errorMessage}`;\n}\n\nexport class DebuggerUrlNotFoundError extends Schema.ErrorClass<DebuggerUrlNotFoundError>(\n \"DebuggerUrlNotFoundError\",\n)({\n _tag: Schema.tag(\"DebuggerUrlNotFoundError\"),\n}) {\n message = `Debugger URL not found`;\n}\n\nexport class UnknownError extends Schema.ErrorClass<UnknownError>(\"UnknownError\")({\n _tag: Schema.tag(\"UnknownError\"),\n cause: Schema.Unknown,\n}) {\n message = `An unexpected error occurred. ${\n Cause.isCause(this.cause) ? Cause.pretty(this.cause) : String(this.cause)\n }`;\n}\n\nexport class RequiresFullDiskAccess extends Schema.ErrorClass<RequiresFullDiskAccess>(\n \"RequiresFullDiskAccess\",\n)({\n _tag: Schema.tag(\"RequiresFullDiskAccess\"),\n}) {\n message = `Safari cookie extraction requires Full Disk Access`;\n}\n\nexport class ExtractionError extends Schema.ErrorClass<ExtractionError>(\"ExtractionError\")({\n _tag: Schema.tag(\"ExtractionError\"),\n reason: Schema.Union([\n CpdInvalidResponsePayload,\n DebuggerUrlNotFoundError,\n RequiresFullDiskAccess,\n UnknownError,\n ]),\n}) {\n message = `Extracting cookies failed. Error: ${this.reason.message}`;\n}\n\nexport class CookieDatabaseCopyError extends Schema.ErrorClass<CookieDatabaseCopyError>(\n \"CookieDatabaseCopyError\",\n)({\n _tag: Schema.tag(\"CookieDatabaseCopyError\"),\n browser: Schema.String,\n databasePath: Schema.String,\n cause: Schema.String,\n}) {\n message = `Failed to copy cookie database for ${this.browser}: ${this.cause}`;\n}\n\nexport class CookieDecryptionKeyError extends Schema.ErrorClass<CookieDecryptionKeyError>(\n \"CookieDecryptionKeyError\",\n)({\n _tag: Schema.tag(\"CookieDecryptionKeyError\"),\n browser: Schema.String,\n platform: Schema.String,\n}) {\n message = `Decryption key not found for ${this.browser} on ${this.platform}`;\n}\n\nexport class CookieReadError extends Schema.ErrorClass<CookieReadError>(\"CookieReadError\")({\n _tag: Schema.tag(\"CookieReadError\"),\n browser: Schema.String,\n cause: Schema.String,\n}) {\n message = `Failed to read cookies for ${this.browser}: ${this.cause}`;\n}\n\nexport class CdpConnectionError extends Schema.ErrorClass<CdpConnectionError>(\"CdpConnectionError\")(\n {\n _tag: Schema.tag(\"CdpConnectionError\"),\n port: Schema.Number,\n cause: Schema.String,\n },\n) {\n message = `CDP connection failed on port ${this.port}: ${this.cause}`;\n}\n\nexport class BrowserSpawnError extends Schema.ErrorClass<BrowserSpawnError>(\"BrowserSpawnError\")({\n _tag: Schema.tag(\"BrowserSpawnError\"),\n executablePath: Schema.String,\n cause: Schema.String,\n}) {\n message = `Failed to spawn browser at ${this.executablePath}: ${this.cause}`;\n}\n\nexport class UnsupportedPlatformError extends Schema.ErrorClass<UnsupportedPlatformError>(\n \"UnsupportedPlatformError\",\n)({\n _tag: Schema.tag(\"UnsupportedPlatformError\"),\n platform: Schema.String,\n}) {\n message = `Unsupported platform: ${this.platform}`;\n}\n\nexport class UnsupportedBrowserError extends Schema.ErrorClass<UnsupportedBrowserError>(\n \"UnsupportedBrowserError\",\n)({\n _tag: Schema.tag(\"UnsupportedBrowserError\"),\n browser: Schema.String,\n}) {\n message = `Unsupported browser: ${this.browser}`;\n}\n\nexport class ListBrowsersError extends Schema.ErrorClass<ListBrowsersError>(\"ListBrowsersError\")({\n _tag: Schema.tag(\"ListBrowsersError\"),\n cause: Schema.String,\n}) {\n message = `Failed to list browsers: ${this.cause}`;\n}\n","import { Order, Schema, SchemaGetter } from \"effect\";\n\nexport const SameSitePolicy = Schema.Literals([\"Strict\", \"Lax\", \"None\"] as const);\nexport type SameSitePolicy = typeof SameSitePolicy.Type;\n\nexport const BrowserKey = Schema.Literals([\n \"chrome\",\n \"edge\",\n \"brave\",\n \"arc\",\n \"dia\",\n \"helium\",\n \"chromium\",\n \"vivaldi\",\n \"opera\",\n \"ghost\",\n \"sidekick\",\n \"yandex\",\n \"iridium\",\n \"thorium\",\n \"sigmaos\",\n \"wavebox\",\n \"comet\",\n \"blisk\",\n \"firefox\",\n \"safari\",\n] as const);\nexport type BrowserKey = typeof BrowserKey.Type;\n\nexport const ChromiumBrowserKey = Schema.Literals([\n \"chrome\",\n \"edge\",\n \"brave\",\n \"arc\",\n \"dia\",\n \"helium\",\n \"chromium\",\n \"vivaldi\",\n \"opera\",\n \"ghost\",\n \"sidekick\",\n \"yandex\",\n \"iridium\",\n \"thorium\",\n \"sigmaos\",\n \"wavebox\",\n \"comet\",\n \"blisk\",\n] as const);\nexport type ChromiumBrowserKey = typeof ChromiumBrowserKey.Type;\n\nconst DotlessDomain = Schema.String.pipe(\n Schema.decodeTo(Schema.String, {\n decode: SchemaGetter.transform((domain) => (domain.startsWith(\".\") ? domain.slice(1) : domain)),\n encode: SchemaGetter.transform((domain) => domain),\n }),\n);\n\nexport class Cookie extends Schema.Class<Cookie>(\"@cookies/Cookie\")({\n name: Schema.String,\n value: Schema.String,\n domain: DotlessDomain,\n path: Schema.String,\n expires: Schema.optional(\n Schema.Number.pipe(\n Schema.decodeTo(Schema.Number, {\n decode: SchemaGetter.transform((value) => Math.floor(value)),\n encode: SchemaGetter.transform((value) => value),\n }),\n ),\n ),\n secure: Schema.Boolean,\n httpOnly: Schema.Boolean,\n sameSite: Schema.optional(SameSitePolicy),\n}) {\n static make = Schema.decodeUnknownSync(this);\n\n get playwrightFormat() {\n const SESSION_EXPIRES = -1;\n const domain = this.name.startsWith(\"__Host-\")\n ? this.domain\n : this.domain.startsWith(\".\")\n ? this.domain\n : `.${this.domain}`;\n\n return {\n name: this.name,\n value: this.value,\n domain,\n path: this.path,\n expires: this.expires ?? SESSION_EXPIRES,\n secure: this.secure,\n httpOnly: this.httpOnly,\n sameSite: this.sameSite,\n };\n }\n}\n\nexport class ChromiumBrowser extends Schema.Class<ChromiumBrowser>(\"@cookies/ChromiumBrowser\")({\n _tag: Schema.tag(\"ChromiumBrowser\"),\n key: ChromiumBrowserKey,\n profileName: Schema.String,\n profilePath: Schema.String,\n executablePath: Schema.String,\n locale: Schema.optional(Schema.String),\n}) {\n static orderBy = (lastUsedProfileName: string | undefined) =>\n Order.combine(\n Order.mapInput(\n Order.Boolean,\n (profile: ChromiumBrowser) => profile.profileName === lastUsedProfileName,\n ),\n Order.mapInput(\n Order.make(\n (left: string, right: string) =>\n left.localeCompare(right, undefined, { numeric: true }) as -1 | 0 | 1,\n ),\n (profile: ChromiumBrowser) => profile.profileName,\n ),\n );\n}\n\nexport class FirefoxBrowser extends Schema.Class<FirefoxBrowser>(\"@cookies/FirefoxBrowser\")({\n _tag: Schema.tag(\"FirefoxBrowser\"),\n profileName: Schema.String,\n profilePath: Schema.String,\n}) {}\n\nexport class SafariBrowser extends Schema.Class<SafariBrowser>(\"@cookies/SafariBrowser\")({\n _tag: Schema.tag(\"SafariBrowser\"),\n cookieFilePath: Schema.OptionFromNullishOr(Schema.String),\n}) {}\n\nexport const Browser = Schema.Union([ChromiumBrowser, FirefoxBrowser, SafariBrowser]);\nexport type Browser = typeof Browser.Type;\n\nexport interface ExtractOptions {\n url: string;\n browsers?: BrowserKey[];\n names?: string[];\n includeExpired?: boolean;\n}\n\nexport const browserKeyOf = (browser: Browser): BrowserKey => {\n if (browser._tag === \"ChromiumBrowser\") return browser.key;\n if (browser._tag === \"FirefoxBrowser\") return \"firefox\";\n return \"safari\";\n};\n","import os from \"node:os\";\nimport path from \"node:path\";\nimport {\n Effect,\n Layer,\n Schedule,\n Schema,\n ServiceMap,\n Array as Arr,\n Option,\n Deferred,\n Duration,\n} from \"effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport * as NodeHttpClient from \"@effect/platform-node/NodeHttpClient\";\nimport getPort from \"get-port\";\nimport {\n CpdInvalidResponsePayload,\n DebuggerUrlNotFoundError,\n ExtractionError,\n UnknownError,\n} from \"./errors\";\nimport { Cookie } from \"./types\";\nimport { ChildProcess, ChildProcessSpawner } from \"effect/unstable/process\";\nimport { HttpClient } from \"effect/unstable/http/HttpClient\";\nimport { HttpClientResponse } from \"effect/unstable/http\";\nimport { Socket } from \"effect/unstable/socket/Socket\";\nimport * as NodeSocket from \"@effect/platform-node/NodeSocket\";\n\nconst CDP_RETRY_COUNT = 15;\nconst CPD_COOKIE_READ_TIMEOUT: Duration.Input = \"10 seconds\";\nconst HEADLESS_CHROME_ARGS = [\n \"--headless=new\",\n \"--disable-gpu\",\n \"--no-first-run\",\n \"--no-default-browser-check\",\n \"--remote-debugging-address=127.0.0.1\",\n] as const;\n\nconst CdpCookieResponse = Schema.Struct({\n id: Schema.Number,\n error: Schema.optionalKey(\n Schema.Struct({\n code: Schema.Number,\n message: Schema.String,\n }),\n ),\n result: Schema.optionalKey(\n Schema.Struct({\n cookies: Schema.Array(Cookie),\n }),\n ),\n});\n\nexport class CdpClient extends ServiceMap.Service<CdpClient>()(\"@cookies/CdpClient\", {\n make: Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;\n const httpClient = yield* HttpClient;\n\n const tempBasePath = os.tmpdir();\n const tempEntries = yield* fs\n .readDirectory(tempBasePath)\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.succeed([] as readonly string[])));\n const staleCdpDirectories = tempEntries.filter((entry) => entry.startsWith(\"cookies-cdp-\"));\n if (staleCdpDirectories.length > 0) {\n yield* Effect.logInfo(\"Cleaning up stale CDP temp directories\", {\n count: staleCdpDirectories.length,\n });\n yield* Effect.forEach(\n staleCdpDirectories,\n (entry) =>\n fs\n .remove(path.join(tempBasePath, entry), { recursive: true })\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.void)),\n { concurrency: \"unbounded\" },\n );\n }\n\n const getAllCookies = Effect.fn(\"CdpClient.getAllCookies\")(function* () {\n const socket = yield* Socket;\n const write = yield* socket.writer;\n const cookiesDeferred = yield* Deferred.make<readonly Cookie[], ExtractionError>();\n\n /** setup handler */\n yield* socket\n .runRaw((payload) =>\n Effect.gen(function* () {\n const decoded = yield* Schema.decodeEffect(Schema.fromJsonString(CdpCookieResponse))(\n payload.toString(),\n );\n\n if (decoded.error) {\n return yield* Deferred.fail(\n cookiesDeferred,\n new ExtractionError({\n reason: new CpdInvalidResponsePayload({\n code: decoded.error.code,\n errorMessage: decoded.error.message,\n }),\n }),\n );\n }\n\n if (decoded.result) {\n yield* Deferred.succeed(cookiesDeferred, decoded.result.cookies);\n }\n }),\n )\n .pipe(\n Effect.tapCause((cause) =>\n Deferred.fail(\n cookiesDeferred,\n new ExtractionError({\n reason: new UnknownError({ cause }),\n }),\n ),\n ),\n Effect.forkScoped,\n );\n\n /** send payload */\n yield* write(JSON.stringify({ id: 1, method: \"Network.getAllCookies\" }));\n\n return yield* Deferred.await(cookiesDeferred).pipe(Effect.timeout(CPD_COOKIE_READ_TIMEOUT));\n });\n\n const extractCookies = Effect.fn(\"CdpClient.extractCookies\")(function* ({\n key,\n profilePath,\n executablePath,\n }: {\n key: string;\n profilePath: string;\n executablePath: string;\n }) {\n const port = yield* Effect.tryPromise({\n try: () => getPort(),\n catch: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause: String(cause) }) }),\n });\n\n yield* Effect.annotateCurrentSpan({\n profilePath,\n executablePath,\n });\n\n const tempUserDataDirPath = yield* fs.makeTempDirectoryScoped({\n prefix: \"cookies-cdp-\",\n });\n\n const profileDirectoryName = path.basename(profilePath);\n const tempProfilePath = path.join(tempUserDataDirPath, profileDirectoryName);\n\n yield* fs.copy(profilePath, tempProfilePath);\n const localStatePath = path.join(path.dirname(profilePath), \"Local State\");\n if (yield* fs.exists(localStatePath)) {\n yield* fs.copyFile(localStatePath, path.join(tempUserDataDirPath, \"Local State\"));\n }\n\n yield* fs.writeFile(path.join(tempUserDataDirPath, \"First Run\"), new Uint8Array(0));\n\n const chromeArgs = [\n `--remote-debugging-port=${port}`,\n ...(key === \"dia\" ? [] : [`--user-data-dir=${tempUserDataDirPath}`]),\n `--profile-directory=${profileDirectoryName}`,\n ...HEADLESS_CHROME_ARGS,\n ];\n\n yield* ChildProcess.make(executablePath, chromeArgs, {\n stdin: \"ignore\",\n }).pipe(spawner.spawn, Effect.forkScoped);\n\n const debuggerUrl = yield* httpClient.get(`http://localhost:${port}/json`).pipe(\n Effect.flatMap(\n HttpClientResponse.schemaBodyJson(\n Schema.Array(\n Schema.Struct({\n type: Schema.String,\n webSocketDebuggerUrl: Schema.optionalKey(Schema.String),\n }),\n ),\n ),\n ),\n Effect.map(Arr.findFirst((target) => target.type === \"page\")),\n Effect.map(Option.flatMap((target) => Option.fromNullishOr(target.webSocketDebuggerUrl))),\n Effect.flatMap((debuggerUrlOption) => debuggerUrlOption.asEffect()),\n Effect.catchTag(\"NoSuchElementError\", () =>\n new ExtractionError({\n reason: new DebuggerUrlNotFoundError(),\n }).asEffect(),\n ),\n Effect.retry({\n times: CDP_RETRY_COUNT,\n schedule: Schedule.exponential(\"100 millis\"),\n }),\n );\n\n const cookies = yield* getAllCookies().pipe(\n Effect.provide(NodeSocket.layerWebSocket(debuggerUrl), {\n local: true,\n }),\n );\n yield* Effect.logInfo(\"CDP cookies extracted\", {\n profile: profilePath,\n count: cookies.length,\n });\n return cookies;\n }, Effect.scoped);\n\n return { extractCookies } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(\n Layer.provide(NodeServices.layer),\n /** @note(rasmus): unidici is more performant than fetch API on Node.js */\n Layer.provide(NodeHttpClient.layerUndici),\n );\n\n static layerTest = Layer.mock(this)({\n extractCookies: () => Effect.succeed([] as Cookie[]),\n });\n}\n","import path from \"node:path\";\nimport { Effect, Layer, Scope, ServiceMap } from \"effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { CookieDatabaseCopyError, CookieReadError } from \"./errors\";\n\nconst IS_BUN = \"Bun\" in globalThis;\nconst BUN_SQLITE_MODULE = \"bun:sqlite\";\nconst NODE_SQLITE_MODULE = \"node:sqlite\";\n\ninterface SqliteDatabase {\n prepare(sql: string): { all(): Record<string, unknown>[] };\n close(): void;\n}\n\nexport class SqliteEngine extends ServiceMap.Service<\n SqliteEngine,\n {\n readonly open: (\n databasePath: string,\n ) => Effect.Effect<SqliteDatabase, CookieReadError, Scope.Scope>;\n }\n>()(\"@cookies/SqliteEngine\") {\n static layerBun = Layer.succeed(this, {\n open: (databasePath: string) =>\n Effect.acquireRelease(\n Effect.tryPromise({\n try: async () => {\n const { Database } = await import(BUN_SQLITE_MODULE);\n return new Database(databasePath, {\n readonly: true,\n }) as SqliteDatabase;\n },\n catch: (cause) => new CookieReadError({ browser: \"unknown\", cause: String(cause) }),\n }),\n (database) => Effect.sync(() => database.close()),\n ),\n });\n\n static layerNodeJs = Layer.succeed(this, {\n open: (databasePath: string) =>\n Effect.acquireRelease(\n Effect.tryPromise({\n try: async () => {\n const { DatabaseSync } = await import(NODE_SQLITE_MODULE);\n return new DatabaseSync(databasePath, {\n readOnly: true,\n readBigInts: true,\n }) as unknown as SqliteDatabase;\n },\n catch: (cause) => new CookieReadError({ browser: \"unknown\", cause: String(cause) }),\n }),\n (database) => Effect.sync(() => database.close()),\n ),\n });\n\n static layerLibSql = Layer.succeed(this, {\n open: (databasePath: string) =>\n Effect.acquireRelease(\n Effect.tryPromise({\n try: async () => {\n const { default: LibsqlDatabase } = await import(\"libsql\");\n return new LibsqlDatabase(databasePath, {\n readonly: true,\n }) as unknown as SqliteDatabase;\n },\n catch: (cause) => new CookieReadError({ browser: \"unknown\", cause: String(cause) }),\n }),\n (database) => Effect.sync(() => database.close()),\n ),\n });\n}\n\nexport class SqliteClient extends ServiceMap.Service<SqliteClient>()(\"@cookies/SqliteClient\", {\n make: Effect.gen(function* () {\n const engine = yield* SqliteEngine;\n const fileSystem = yield* FileSystem.FileSystem;\n\n const query = Effect.fn(\"SqliteClient.query\")(function* (\n databasePath: string,\n sqlQuery: string,\n browser: string,\n ) {\n yield* Effect.annotateCurrentSpan({ browser, databasePath });\n const database = yield* engine\n .open(databasePath)\n .pipe(\n Effect.catchTag(\"CookieReadError\", (error) =>\n new CookieReadError({ browser, cause: error.cause }).asEffect(),\n ),\n );\n return yield* Effect.try({\n try: () => database.prepare(sqlQuery).all(),\n catch: (cause) => new CookieReadError({ browser, cause: String(cause) }),\n });\n }, Effect.scoped);\n\n const copyToTemp = Effect.fn(\"SqliteClient.copyToTemp\")(function* (\n databasePath: string,\n prefix: string,\n filename: string,\n browser: string,\n ) {\n const tempDir = yield* fileSystem.makeTempDirectory({ prefix });\n yield* Effect.addFinalizer(() =>\n fileSystem.remove(tempDir, { recursive: true }).pipe(Effect.catch(() => Effect.void)),\n );\n\n const tempDatabasePath = path.join(tempDir, filename);\n yield* fileSystem.copyFile(databasePath, tempDatabasePath).pipe(\n Effect.catchTag(\"PlatformError\", (cause) =>\n new CookieDatabaseCopyError({\n browser,\n databasePath,\n cause: String(cause),\n }).asEffect(),\n ),\n );\n yield* fileSystem\n .copyFile(`${databasePath}-wal`, `${tempDatabasePath}-wal`)\n .pipe(Effect.catch(() => Effect.void));\n yield* fileSystem\n .copyFile(`${databasePath}-shm`, `${tempDatabasePath}-shm`)\n .pipe(Effect.catch(() => Effect.void));\n\n return { tempDir, tempDatabasePath };\n });\n\n return { query, copyToTemp } as const;\n }),\n}) {\n static layerBun = Layer.effect(this, this.make).pipe(\n Layer.provide(SqliteEngine.layerBun),\n Layer.provide(NodeServices.layer),\n );\n\n static layerNodeJs = Layer.effect(this, this.make).pipe(\n Layer.provide(SqliteEngine.layerNodeJs),\n Layer.provide(NodeServices.layer),\n );\n\n static layer = IS_BUN ? this.layerBun : this.layerNodeJs;\n}\n","import type { BrowserKey, ChromiumBrowserKey } from \"./types\";\n\ninterface PlatformPaths {\n readonly darwin: string;\n readonly linux: string;\n readonly win32: string;\n}\n\nexport interface ChromiumConfig {\n readonly kind: \"chromium\";\n readonly key: ChromiumBrowserKey;\n readonly displayName: string;\n readonly bundleId: string;\n readonly desktopFiles: readonly string[];\n readonly registryKey: string;\n readonly executable: {\n readonly darwin: string;\n readonly linux: readonly string[];\n readonly win32: readonly string[];\n };\n readonly userData: PlatformPaths;\n readonly cookieRelativePath: PlatformPaths;\n readonly keychainService: string;\n readonly linuxSecretLabel: string;\n readonly localStatePath: string;\n}\n\nexport interface FirefoxConfig {\n readonly kind: \"firefox\";\n readonly key: \"firefox\";\n readonly displayName: string;\n readonly bundleId: string;\n readonly desktopFiles: readonly string[];\n readonly executable: {\n readonly darwin: string;\n readonly linux: readonly string[];\n readonly win32: readonly string[];\n };\n readonly dataDir: PlatformPaths;\n}\n\nexport interface SafariConfig {\n readonly kind: \"safari\";\n readonly key: \"safari\";\n readonly displayName: string;\n readonly bundleId: string;\n readonly executable: string;\n readonly cookieRelativePaths: readonly string[];\n}\n\nexport type BrowserConfig = ChromiumConfig | FirefoxConfig | SafariConfig;\n\nconst chromium = (\n key: ChromiumBrowserKey,\n displayName: string,\n bundleId: string,\n desktopFiles: readonly string[],\n registryKey: string,\n darwinExe: string,\n linuxExe: readonly string[],\n win32Exe: readonly string[],\n userData: PlatformPaths,\n cookieRelativePath: PlatformPaths,\n keychainService: string,\n linuxSecretLabel: string,\n localStatePath: string,\n): ChromiumConfig => ({\n kind: \"chromium\",\n key,\n displayName,\n bundleId,\n desktopFiles,\n registryKey,\n executable: { darwin: darwinExe, linux: linuxExe, win32: win32Exe },\n userData,\n cookieRelativePath,\n keychainService,\n linuxSecretLabel,\n localStatePath,\n});\n\nexport const CHROMIUM_CONFIGS: readonly ChromiumConfig[] = [\n chromium(\n \"chrome\",\n \"Google Chrome\",\n \"com.google.chrome\",\n [\"google-chrome\"],\n \"chrome.exe\",\n \"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome\",\n [\"/usr/bin/google-chrome\", \"/usr/local/bin/google-chrome\", \"/snap/bin/google-chrome\"],\n [\"Google\\\\Chrome\\\\Application\\\\chrome.exe\"],\n { darwin: \"Google/Chrome\", linux: \"google-chrome\", win32: \"Google\\\\Chrome\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Google/Chrome/Default\",\n linux: \".config/google-chrome/Default\",\n win32: \"AppData/Local/Google/Chrome/User Data/Default\",\n },\n \"Chrome Safe Storage\",\n \"chrome\",\n \"AppData/Local/Google/Chrome/User Data/Local State\",\n ),\n chromium(\n \"brave\",\n \"Brave Browser\",\n \"com.brave.browser\",\n [\"brave-browser\"],\n \"brave.exe\",\n \"/Applications/Brave Browser.app/Contents/MacOS/Brave Browser\",\n [\"/usr/bin/brave-browser\", \"/usr/local/bin/brave-browser\", \"/snap/bin/brave-browser\"],\n [\"BraveSoftware\\\\Brave-Browser\\\\Application\\\\brave.exe\"],\n {\n darwin: \"BraveSoftware/Brave-Browser\",\n linux: \"BraveSoftware/Brave-Browser\",\n win32: \"BraveSoftware\\\\Brave-Browser\\\\User Data\",\n },\n {\n darwin: \"Library/Application Support/BraveSoftware/Brave-Browser/Default\",\n linux: \".config/BraveSoftware/Brave-Browser/Default\",\n win32: \"AppData/Local/BraveSoftware/Brave-Browser/User Data/Default\",\n },\n \"Brave Safe Storage\",\n \"brave\",\n \"AppData/Local/BraveSoftware/Brave-Browser/User Data/Local State\",\n ),\n chromium(\n \"edge\",\n \"Microsoft Edge\",\n \"com.microsoft.edgemac\",\n [\"microsoft-edge\"],\n \"msedge.exe\",\n \"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge\",\n [\"/usr/bin/microsoft-edge\", \"/usr/local/bin/microsoft-edge\", \"/snap/bin/microsoft-edge\"],\n [\"Microsoft\\\\Edge\\\\Application\\\\msedge.exe\"],\n { darwin: \"Microsoft Edge\", linux: \"microsoft-edge\", win32: \"Microsoft\\\\Edge\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Microsoft Edge/Default\",\n linux: \".config/microsoft-edge/Default\",\n win32: \"AppData/Local/Microsoft/Edge/User Data/Default\",\n },\n \"Microsoft Edge Safe Storage\",\n \"microsoft-edge\",\n \"AppData/Local/Microsoft/Edge/User Data/Local State\",\n ),\n chromium(\n \"arc\",\n \"Arc\",\n \"company.thebrowser.browser\",\n [\"arc\"],\n \"arc.exe\",\n \"/Applications/Arc.app/Contents/MacOS/Arc\",\n [\"/usr/bin/arc\", \"/usr/local/bin/arc\", \"/snap/bin/arc\"],\n [\"Arc\\\\Application\\\\arc.exe\"],\n { darwin: \"Arc/User Data\", linux: \"arc\", win32: \"Arc\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Arc/User Data/Default\",\n linux: \".config/arc/Default\",\n win32: \"AppData/Local/Arc/User Data/Default\",\n },\n \"Arc Safe Storage\",\n \"arc\",\n \"AppData/Local/Arc/User Data/Local State\",\n ),\n chromium(\n \"dia\",\n \"Dia\",\n \"company.thebrowser.dia\",\n [\"dia\"],\n \"dia.exe\",\n \"/Applications/Dia.app/Contents/MacOS/Dia\",\n [\"/usr/bin/dia\", \"/usr/local/bin/dia\", \"/snap/bin/dia\"],\n [\"Dia\\\\Application\\\\dia.exe\"],\n { darwin: \"Dia/User Data\", linux: \"dia\", win32: \"Dia\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Dia/User Data/Default\",\n linux: \".config/dia/Default\",\n win32: \"AppData/Local/Dia/User Data/Default\",\n },\n \"Dia Safe Storage\",\n \"dia\",\n \"AppData/Local/Dia/User Data/Local State\",\n ),\n chromium(\n \"helium\",\n \"Helium\",\n \"net.imput.helium\",\n [\"helium\"],\n \"helium.exe\",\n \"/Applications/Helium.app/Contents/MacOS/Helium\",\n [\"/usr/bin/helium\", \"/usr/local/bin/helium\", \"/snap/bin/helium\"],\n [\"Helium\\\\Application\\\\helium.exe\"],\n { darwin: \"net.imput.helium\", linux: \"helium\", win32: \"Helium\\\\User Data\" },\n {\n darwin: \"Library/Application Support/net.imput.helium/Default\",\n linux: \".config/helium/Default\",\n win32: \"AppData/Local/Helium/User Data/Default\",\n },\n \"Helium Storage Key\",\n \"helium\",\n \"AppData/Local/Helium/User Data/Local State\",\n ),\n chromium(\n \"chromium\",\n \"Chromium\",\n \"org.chromium.chromium\",\n [\"chromium\", \"chromium-browser\"],\n \"chromium.exe\",\n \"/Applications/Chromium.app/Contents/MacOS/Chromium\",\n [\"/usr/bin/chromium\", \"/usr/local/bin/chromium\", \"/snap/bin/chromium\"],\n [\"Chromium\\\\Application\\\\chrome.exe\"],\n { darwin: \"Chromium\", linux: \"chromium\", win32: \"Chromium\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Chromium/Default\",\n linux: \".config/chromium/Default\",\n win32: \"AppData/Local/Chromium/User Data/Default\",\n },\n \"Chromium Safe Storage\",\n \"chromium\",\n \"AppData/Local/Chromium/User Data/Local State\",\n ),\n chromium(\n \"vivaldi\",\n \"Vivaldi\",\n \"com.vivaldi.vivaldi\",\n [\"vivaldi\", \"vivaldi-stable\"],\n \"vivaldi.exe\",\n \"/Applications/Vivaldi.app/Contents/MacOS/Vivaldi\",\n [\"/usr/bin/vivaldi\", \"/usr/local/bin/vivaldi\", \"/snap/bin/vivaldi\"],\n [\"Vivaldi\\\\Application\\\\vivaldi.exe\"],\n { darwin: \"Vivaldi\", linux: \"vivaldi\", win32: \"Vivaldi\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Vivaldi/Default\",\n linux: \".config/vivaldi/Default\",\n win32: \"AppData/Local/Vivaldi/User Data/Default\",\n },\n \"Vivaldi Safe Storage\",\n \"vivaldi\",\n \"AppData/Local/Vivaldi/User Data/Local State\",\n ),\n chromium(\n \"opera\",\n \"Opera\",\n \"com.operasoftware.opera\",\n [\"opera\", \"opera-stable\"],\n \"opera.exe\",\n \"/Applications/Opera.app/Contents/MacOS/Opera\",\n [\"/usr/bin/opera\", \"/usr/local/bin/opera\", \"/snap/bin/opera\"],\n [\"Opera\\\\launcher.exe\"],\n { darwin: \"com.operasoftware.Opera\", linux: \"opera\", win32: \"Opera Software\\\\Opera Stable\" },\n {\n darwin: \"Library/Application Support/com.operasoftware.Opera\",\n linux: \".config/opera\",\n win32: \"AppData/Roaming/Opera Software/Opera Stable\",\n },\n \"Opera Safe Storage\",\n \"opera\",\n \"AppData/Roaming/Opera Software/Opera Stable/Local State\",\n ),\n chromium(\n \"ghost\",\n \"Ghost Browser\",\n \"com.nickvision.ghost\",\n [\"ghost-browser\"],\n \"ghost.exe\",\n \"/Applications/Ghost Browser.app/Contents/MacOS/Ghost Browser\",\n [\"/usr/bin/ghost-browser\", \"/usr/local/bin/ghost-browser\", \"/snap/bin/ghost-browser\"],\n [\"Ghost Browser\\\\Application\\\\ghost.exe\"],\n { darwin: \"Ghost Browser\", linux: \"ghost-browser\", win32: \"Ghost Browser\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Ghost Browser/Default\",\n linux: \".config/ghost-browser/Default\",\n win32: \"AppData/Local/Ghost Browser/User Data/Default\",\n },\n \"Ghost Browser Safe Storage\",\n \"ghost-browser\",\n \"AppData/Local/Ghost Browser/User Data/Local State\",\n ),\n chromium(\n \"sidekick\",\n \"Sidekick\",\n \"pushplaylabs.sidekick\",\n [\"sidekick\"],\n \"sidekick.exe\",\n \"/Applications/Sidekick.app/Contents/MacOS/Sidekick\",\n [\"/usr/bin/sidekick\", \"/usr/local/bin/sidekick\", \"/snap/bin/sidekick\"],\n [\"Sidekick\\\\Application\\\\sidekick.exe\"],\n { darwin: \"Sidekick\", linux: \"sidekick\", win32: \"Sidekick\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Sidekick/Default\",\n linux: \".config/sidekick/Default\",\n win32: \"AppData/Local/Sidekick/User Data/Default\",\n },\n \"Sidekick Safe Storage\",\n \"sidekick\",\n \"AppData/Local/Sidekick/User Data/Local State\",\n ),\n chromium(\n \"yandex\",\n \"Yandex\",\n \"ru.yandex.desktop.yandex-browser\",\n [\"yandex-browser\"],\n \"browser.exe\",\n \"/Applications/Yandex.app/Contents/MacOS/Yandex\",\n [\"/usr/bin/yandex-browser\", \"/usr/local/bin/yandex-browser\", \"/snap/bin/yandex-browser\"],\n [\"Yandex\\\\YandexBrowser\\\\Application\\\\browser.exe\"],\n { darwin: \"YandexBrowser\", linux: \"yandex-browser\", win32: \"Yandex\\\\YandexBrowser\\\\User Data\" },\n {\n darwin: \"Library/Application Support/YandexBrowser/Default\",\n linux: \".config/yandex-browser/Default\",\n win32: \"AppData/Local/Yandex/YandexBrowser/User Data/Default\",\n },\n \"Yandex Safe Storage\",\n \"yandex-browser\",\n \"AppData/Local/Yandex/YandexBrowser/User Data/Local State\",\n ),\n chromium(\n \"iridium\",\n \"Iridium\",\n \"de.nickvision.iridium\",\n [\"iridium\"],\n \"iridium.exe\",\n \"/Applications/Iridium.app/Contents/MacOS/Iridium\",\n [\"/usr/bin/iridium\", \"/usr/local/bin/iridium\", \"/snap/bin/iridium\"],\n [\"Iridium\\\\Application\\\\iridium.exe\"],\n { darwin: \"Iridium\", linux: \"iridium\", win32: \"Iridium\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Iridium/Default\",\n linux: \".config/iridium/Default\",\n win32: \"AppData/Local/Iridium/User Data/Default\",\n },\n \"Iridium Safe Storage\",\n \"iridium\",\n \"AppData/Local/Iridium/User Data/Local State\",\n ),\n chromium(\n \"thorium\",\n \"Thorium\",\n \"nickvision.thorium\",\n [\"thorium\"],\n \"thorium.exe\",\n \"/Applications/Thorium.app/Contents/MacOS/Thorium\",\n [\"/usr/bin/thorium\", \"/usr/local/bin/thorium\", \"/snap/bin/thorium\"],\n [\"Thorium\\\\Application\\\\thorium.exe\"],\n { darwin: \"Thorium\", linux: \"thorium\", win32: \"Thorium\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Thorium/Default\",\n linux: \".config/thorium/Default\",\n win32: \"AppData/Local/Thorium/User Data/Default\",\n },\n \"Thorium Safe Storage\",\n \"thorium\",\n \"AppData/Local/Thorium/User Data/Local State\",\n ),\n chromium(\n \"sigmaos\",\n \"SigmaOS\",\n \"com.nickvision.sigmaos\",\n [\"sigmaos\"],\n \"sigmaos.exe\",\n \"/Applications/SigmaOS.app/Contents/MacOS/SigmaOS\",\n [\"/usr/bin/sigmaos\", \"/usr/local/bin/sigmaos\", \"/snap/bin/sigmaos\"],\n [\"SigmaOS\\\\Application\\\\sigmaos.exe\"],\n { darwin: \"SigmaOS\", linux: \"sigmaos\", win32: \"SigmaOS\\\\User Data\" },\n {\n darwin: \"Library/Application Support/SigmaOS/Default\",\n linux: \".config/sigmaos/Default\",\n win32: \"AppData/Local/SigmaOS/User Data/Default\",\n },\n \"SigmaOS Safe Storage\",\n \"sigmaos\",\n \"AppData/Local/SigmaOS/User Data/Local State\",\n ),\n chromium(\n \"wavebox\",\n \"Wavebox\",\n \"io.wavebox.wavebox\",\n [\"wavebox\"],\n \"wavebox.exe\",\n \"/Applications/Wavebox.app/Contents/MacOS/Wavebox\",\n [\"/usr/bin/wavebox\", \"/usr/local/bin/wavebox\", \"/snap/bin/wavebox\"],\n [\"Wavebox\\\\Application\\\\wavebox.exe\"],\n { darwin: \"Wavebox\", linux: \"wavebox\", win32: \"Wavebox\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Wavebox/Default\",\n linux: \".config/wavebox/Default\",\n win32: \"AppData/Local/Wavebox/User Data/Default\",\n },\n \"Wavebox Safe Storage\",\n \"wavebox\",\n \"AppData/Local/Wavebox/User Data/Local State\",\n ),\n chromium(\n \"comet\",\n \"Comet\",\n \"com.nickvision.comet\",\n [\"comet\"],\n \"comet.exe\",\n \"/Applications/Comet.app/Contents/MacOS/Comet\",\n [\"/usr/bin/comet\", \"/usr/local/bin/comet\", \"/snap/bin/comet\"],\n [\"Comet\\\\Application\\\\comet.exe\"],\n { darwin: \"Comet\", linux: \"comet\", win32: \"Comet\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Comet/Default\",\n linux: \".config/comet/Default\",\n win32: \"AppData/Local/Comet/User Data/Default\",\n },\n \"Comet Safe Storage\",\n \"comet\",\n \"AppData/Local/Comet/User Data/Local State\",\n ),\n chromium(\n \"blisk\",\n \"Blisk\",\n \"com.nickvision.blisk\",\n [\"blisk\"],\n \"blisk.exe\",\n \"/Applications/Blisk.app/Contents/MacOS/Blisk\",\n [\"/usr/bin/blisk\", \"/usr/local/bin/blisk\", \"/snap/bin/blisk\"],\n [\"Blisk\\\\Application\\\\blisk.exe\"],\n { darwin: \"Blisk\", linux: \"blisk\", win32: \"Blisk\\\\User Data\" },\n {\n darwin: \"Library/Application Support/Blisk/Default\",\n linux: \".config/blisk/Default\",\n win32: \"AppData/Local/Blisk/User Data/Default\",\n },\n \"Blisk Safe Storage\",\n \"blisk\",\n \"AppData/Local/Blisk/User Data/Local State\",\n ),\n];\n\nexport const FIREFOX_CONFIG: FirefoxConfig = {\n kind: \"firefox\",\n key: \"firefox\",\n displayName: \"Firefox\",\n bundleId: \"org.mozilla.firefox\",\n desktopFiles: [\"firefox\"],\n executable: {\n darwin: \"/Applications/Firefox.app/Contents/MacOS/firefox\",\n linux: [\"/usr/bin/firefox\", \"/usr/local/bin/firefox\", \"/snap/bin/firefox\"],\n win32: [\"Mozilla Firefox\\\\firefox.exe\"],\n },\n dataDir: {\n darwin: \"Library/Application Support/Firefox\",\n linux: \".mozilla/firefox\",\n win32: \"AppData/Roaming/Mozilla/Firefox\",\n },\n};\n\nexport const SAFARI_CONFIG: SafariConfig = {\n kind: \"safari\",\n key: \"safari\",\n displayName: \"Safari\",\n bundleId: \"com.apple.safari\",\n executable: \"/Applications/Safari.app/Contents/MacOS/Safari\",\n cookieRelativePaths: [\n \"Library/Cookies\",\n \"Library/Containers/com.apple.Safari/Data/Library/Cookies\",\n ],\n};\n\nexport const BROWSER_CONFIGS: readonly BrowserConfig[] = [\n ...CHROMIUM_CONFIGS,\n FIREFOX_CONFIG,\n SAFARI_CONFIG,\n];\n\nconst bundleIdMap = new Map<string, BrowserConfig>();\nconst desktopFileMap = new Map<string, BrowserConfig>();\nconst displayNameMap = new Map<string, BrowserConfig>();\nconst keyMap = new Map<BrowserKey, BrowserConfig>();\n\nfor (const config of BROWSER_CONFIGS) {\n keyMap.set(config.key, config);\n bundleIdMap.set(config.bundleId.toLowerCase(), config);\n displayNameMap.set(config.displayName, config);\n if (\"desktopFiles\" in config) {\n for (const desktopFile of config.desktopFiles) {\n desktopFileMap.set(desktopFile, config);\n }\n }\n}\n\n// HACK: Edge has two bundle IDs\nbundleIdMap.set(\"com.microsoft.edge\", keyMap.get(\"edge\")!);\n\nexport const configByKey = (key: BrowserKey): BrowserConfig | undefined => keyMap.get(key);\n\nexport const configByBundleId = (identifier: string): BrowserConfig | undefined =>\n bundleIdMap.get(identifier.toLowerCase());\n\nexport const configByDesktopFile = (name: string): BrowserConfig | undefined =>\n desktopFileMap.get(name.replace(/\\.desktop$/, \"\"));\n\nexport const configByDisplayName = (name: string): BrowserConfig | undefined =>\n displayNameMap.get(name);\n\nexport const chromiumConfig = (key: ChromiumBrowserKey): ChromiumConfig =>\n CHROMIUM_CONFIGS.find((config) => config.key === key)!;\n","import * as crypto from \"node:crypto\";\n\nconst PBKDF2_SALT = \"saltysalt\";\nconst PBKDF2_KEY_LENGTH_BYTES = 16;\nconst PBKDF2_IV_FILL = 0x20;\nconst CHROMIUM_COOKIE_PREFIX_LENGTH_BYTES = 3;\nconst AES_HASH_PREFIX_LENGTH_BYTES = 32;\nconst GCM_NONCE_LENGTH_BYTES = 12;\nconst GCM_TAG_LENGTH_BYTES = 16;\nconst GCM_MIN_PAYLOAD_BYTES = 28;\n\nconst COOKIE_PREFIX_PATTERN = /^v\\d\\d$/;\n\nexport const deriveKey = (password: string, iterations: number): Buffer =>\n crypto.pbkdf2Sync(password, PBKDF2_SALT, iterations, PBKDF2_KEY_LENGTH_BYTES, \"sha1\");\n\nexport const decryptAes128Cbc = (\n encryptedValue: Uint8Array,\n keyCandidates: readonly Buffer[],\n stripHashPrefix: boolean,\n): string | undefined => {\n const buffer = Buffer.from(encryptedValue);\n if (buffer.length < CHROMIUM_COOKIE_PREFIX_LENGTH_BYTES) return undefined;\n\n const prefix = buffer.subarray(0, CHROMIUM_COOKIE_PREFIX_LENGTH_BYTES).toString(\"utf8\");\n if (!COOKIE_PREFIX_PATTERN.test(prefix)) {\n return decodeCookieBytes(buffer, false);\n }\n\n const ciphertext = buffer.subarray(CHROMIUM_COOKIE_PREFIX_LENGTH_BYTES);\n if (!ciphertext.length) return \"\";\n\n for (const decryptionKey of keyCandidates) {\n const decrypted = tryAes128Cbc(ciphertext, decryptionKey);\n if (!decrypted) continue;\n const decoded = decodeCookieBytes(decrypted, stripHashPrefix);\n if (decoded !== undefined) return decoded;\n }\n\n return undefined;\n};\n\nexport const decryptAes256Gcm = (\n encryptedValue: Uint8Array,\n masterKey: Buffer,\n stripHashPrefix: boolean,\n): string | undefined => {\n const buffer = Buffer.from(encryptedValue);\n if (buffer.length < CHROMIUM_COOKIE_PREFIX_LENGTH_BYTES) return undefined;\n\n const prefix = buffer.subarray(0, CHROMIUM_COOKIE_PREFIX_LENGTH_BYTES).toString(\"utf8\");\n if (!COOKIE_PREFIX_PATTERN.test(prefix)) return undefined;\n\n const payload = buffer.subarray(CHROMIUM_COOKIE_PREFIX_LENGTH_BYTES);\n if (payload.length < GCM_MIN_PAYLOAD_BYTES) return undefined;\n\n const nonce = payload.subarray(0, GCM_NONCE_LENGTH_BYTES);\n const authTag = payload.subarray(payload.length - GCM_TAG_LENGTH_BYTES);\n const ciphertext = payload.subarray(\n GCM_NONCE_LENGTH_BYTES,\n payload.length - GCM_TAG_LENGTH_BYTES,\n );\n\n try {\n const decipher = crypto.createDecipheriv(\"aes-256-gcm\", masterKey, nonce);\n decipher.setAuthTag(authTag);\n const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);\n return decodeCookieBytes(plaintext, stripHashPrefix);\n } catch {\n return undefined;\n }\n};\n\nconst tryAes128Cbc = (ciphertext: Buffer, key: Buffer): Buffer | undefined => {\n try {\n const initVector = Buffer.alloc(PBKDF2_KEY_LENGTH_BYTES, PBKDF2_IV_FILL);\n const decipher = crypto.createDecipheriv(\"aes-128-cbc\", key, initVector);\n decipher.setAutoPadding(false);\n const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);\n return removePkcs7Padding(plaintext);\n } catch {\n return undefined;\n }\n};\n\nconst removePkcs7Padding = (paddedBuffer: Buffer): Buffer => {\n if (!paddedBuffer.length) return paddedBuffer;\n const padding = paddedBuffer[paddedBuffer.length - 1];\n if (!padding || padding > PBKDF2_KEY_LENGTH_BYTES) return paddedBuffer;\n return paddedBuffer.subarray(0, paddedBuffer.length - padding);\n};\n\nconst UTF8_DECODER = new TextDecoder(\"utf-8\", { fatal: true });\n\nconst decodeCookieBytes = (\n plaintextBytes: Buffer,\n stripHashPrefix: boolean,\n): string | undefined => {\n const bytes =\n stripHashPrefix && plaintextBytes.length >= AES_HASH_PREFIX_LENGTH_BYTES\n ? plaintextBytes.subarray(AES_HASH_PREFIX_LENGTH_BYTES)\n : plaintextBytes;\n try {\n const decoded = UTF8_DECODER.decode(bytes);\n let index = 0;\n while (index < decoded.length && decoded.charCodeAt(index) < PBKDF2_IV_FILL) {\n index += 1;\n }\n return decoded.slice(index);\n } catch {\n return undefined;\n }\n};\n","const MAX_UNIX_EPOCH_SECONDS = 253_402_300_799;\nconst CHROME_EPOCH_THRESHOLD = 10_000_000_000_000;\nconst CHROME_EPOCH_MICROSECONDS = 1_000_000;\nconst CHROME_EPOCH_OFFSET_SECONDS = 11_644_473_600;\nconst MILLISECOND_THRESHOLD = 10_000_000_000;\nconst MS_PER_SECOND = 1000;\n\nconst SAME_SITE_NONE = 0;\nconst SAME_SITE_LAX = 1;\nconst SAME_SITE_STRICT = 2;\n\nconst clampExpiration = (value: number): number | undefined =>\n value > 0 && value <= MAX_UNIX_EPOCH_SECONDS ? Math.round(value) : undefined;\n\nexport const normalizeChromiumExpiration = (\n expires?: number | bigint | string,\n): number | undefined => {\n if (expires === undefined) return undefined;\n\n if (typeof expires === \"string\") {\n const parsed = Number(expires);\n if (!Number.isFinite(parsed)) return undefined;\n return normalizeChromiumExpiration(parsed);\n }\n\n if (typeof expires === \"bigint\") {\n if (expires <= 0n) return undefined;\n if (expires > BigInt(CHROME_EPOCH_THRESHOLD)) {\n return clampExpiration(\n Number(expires / BigInt(CHROME_EPOCH_MICROSECONDS) - BigInt(CHROME_EPOCH_OFFSET_SECONDS)),\n );\n }\n if (expires > BigInt(MILLISECOND_THRESHOLD))\n return clampExpiration(Number(expires / BigInt(MS_PER_SECOND)));\n return clampExpiration(Number(expires));\n }\n\n if (!expires || Number.isNaN(expires)) return undefined;\n if (expires <= 0) return undefined;\n\n if (expires > CHROME_EPOCH_THRESHOLD) {\n return clampExpiration(expires / CHROME_EPOCH_MICROSECONDS - CHROME_EPOCH_OFFSET_SECONDS);\n }\n if (expires > MILLISECOND_THRESHOLD) return clampExpiration(expires / MS_PER_SECOND);\n return clampExpiration(expires);\n};\n\nexport const normalizeChromiumSameSite = (\n value: unknown,\n): \"Strict\" | \"Lax\" | \"None\" | undefined => {\n const numeric =\n typeof value === \"bigint\" ? Number(value) : typeof value === \"number\" ? value : undefined;\n if (numeric === undefined) return undefined;\n if (numeric === SAME_SITE_STRICT) return \"Strict\";\n if (numeric === SAME_SITE_LAX) return \"Lax\";\n if (numeric === SAME_SITE_NONE) return \"None\";\n return undefined;\n};\n","// HACK: Fallback for Chromium cookie extraction when CDP (headless browser) fails.\n// Reads the SQLite cookie database directly and decrypts values using\n// platform-specific key retrieval (macOS Keychain, Linux secret-tool, Windows DPAPI).\nimport path from \"node:path\";\nimport * as os from \"node:os\";\nimport { Effect, Layer, Schema, ServiceMap } from \"effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport { ChildProcess } from \"effect/unstable/process\";\nimport { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { chromiumConfig } from \"./browser-config\";\nimport { deriveKey, decryptAes128Cbc, decryptAes256Gcm } from \"./utils/crypto\";\nimport { normalizeChromiumExpiration, normalizeChromiumSameSite } from \"./utils/chromium-normalize\";\nimport {\n CookieDatabaseNotFoundError,\n CookieDecryptionKeyError,\n ExtractionError,\n UnknownError,\n} from \"./errors\";\nimport { SqliteClient } from \"./sqlite-client\";\nimport { Cookie, type ChromiumBrowser, type ChromiumBrowserKey } from \"./types\";\n\nconst CHROMIUM_META_VERSION_HASH_PREFIX = 24;\nconst PBKDF2_ITERATIONS_DARWIN = 1003;\nconst PBKDF2_ITERATIONS_LINUX = 1;\nconst DPAPI_PREFIX_LENGTH_BYTES = 5;\n\nconst ChromiumLocalStateSchema = Schema.Struct({\n os_crypt: Schema.Struct({\n encrypted_key: Schema.String,\n }),\n});\n\ninterface DecryptFn {\n (encrypted: Uint8Array): string | undefined;\n}\n\nexport class ChromiumKeyProvider extends ServiceMap.Service<\n ChromiumKeyProvider,\n {\n readonly buildDecryptor: (\n browserKey: ChromiumBrowserKey,\n stripHashPrefix: boolean,\n ) => Effect.Effect<DecryptFn, CookieDecryptionKeyError>;\n }\n>()(\"@cookies/ChromiumKeyProvider\") {\n static layerDarwin = Layer.effect(this)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner;\n\n const buildDecryptor = Effect.fn(\"ChromiumKeyProvider.buildDecryptor\")(function* (\n browserKey: ChromiumBrowserKey,\n stripHashPrefix: boolean,\n ) {\n const config = chromiumConfig(browserKey);\n const password = yield* spawner\n .string(\n ChildProcess.make(\"security\", [\n \"find-generic-password\",\n \"-w\",\n \"-s\",\n config.keychainService,\n ]),\n )\n .pipe(\n Effect.map((output) => output.trim()),\n Effect.catchTag(\"PlatformError\", () =>\n new CookieDecryptionKeyError({\n browser: browserKey,\n platform: \"darwin\",\n }).asEffect(),\n ),\n );\n\n if (!password) {\n return yield* new CookieDecryptionKeyError({\n browser: browserKey,\n platform: \"darwin\",\n }).asEffect();\n }\n\n const key = deriveKey(password, PBKDF2_ITERATIONS_DARWIN);\n return ((encrypted: Uint8Array) =>\n decryptAes128Cbc(encrypted, [key], stripHashPrefix)) satisfies DecryptFn;\n });\n\n return { buildDecryptor } as const;\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n\n static layerLinux = Layer.effect(this)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner;\n\n const buildDecryptor = Effect.fn(\"ChromiumKeyProvider.buildDecryptor\")(function* (\n browserKey: ChromiumBrowserKey,\n stripHashPrefix: boolean,\n ) {\n const config = chromiumConfig(browserKey);\n const lookups = [\n [\"secret-tool\", \"lookup\", \"application\", config.linuxSecretLabel],\n [\"secret-tool\", \"lookup\", \"xdg:schema\", \"chrome_libsecret_os_crypt_password_v2\"],\n [\"secret-tool\", \"lookup\", \"xdg:schema\", \"chrome_libsecret_os_crypt_password_v1\"],\n ];\n\n let password = \"\";\n for (const args of lookups) {\n const command = args[0]!;\n const commandArgs = args.slice(1);\n const result = yield* spawner.string(ChildProcess.make(command, commandArgs)).pipe(\n Effect.map((output) => output.trim()),\n Effect.catchTag(\"PlatformError\", () => Effect.succeed(\"\")),\n );\n if (result) {\n password = result;\n break;\n }\n }\n\n if (!password) password = \"peanuts\";\n\n const keys = new Set<string>([password, \"peanuts\", \"\"]);\n const candidates = Array.from(keys).map((candidateKey) =>\n deriveKey(candidateKey, PBKDF2_ITERATIONS_LINUX),\n );\n return ((encrypted: Uint8Array) =>\n decryptAes128Cbc(encrypted, candidates, stripHashPrefix)) satisfies DecryptFn;\n });\n\n return { buildDecryptor } as const;\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n\n static layerWin32 = Layer.effect(this)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner;\n const fileSystem = yield* FileSystem.FileSystem;\n\n const buildDecryptor = Effect.fn(\"ChromiumKeyProvider.buildDecryptor\")(function* (\n browserKey: ChromiumBrowserKey,\n stripHashPrefix: boolean,\n ) {\n const config = chromiumConfig(browserKey);\n const localStatePath = path.join(os.homedir(), config.localStatePath);\n\n const localStateContent = yield* fileSystem.readFileString(localStatePath).pipe(\n Effect.catchTag(\"PlatformError\", () =>\n new CookieDecryptionKeyError({\n browser: browserKey,\n platform: \"win32\",\n }).asEffect(),\n ),\n );\n\n const localState = yield* Effect.try({\n try: () =>\n Schema.decodeUnknownSync(ChromiumLocalStateSchema)(JSON.parse(localStateContent)),\n catch: () => new CookieDecryptionKeyError({ browser: browserKey, platform: \"win32\" }),\n });\n\n const encodedKey = localState.os_crypt.encrypted_key;\n\n const encryptedKey = Buffer.from(encodedKey, \"base64\");\n const base64Key = encryptedKey.subarray(DPAPI_PREFIX_LENGTH_BYTES).toString(\"base64\");\n\n const psCommand = `Add-Type -AssemblyName System.Security; $encrypted = [Convert]::FromBase64String('${base64Key}'); $decrypted = [System.Security.Cryptography.ProtectedData]::Unprotect($encrypted, $null, 'CurrentUser'); [Convert]::ToBase64String($decrypted)`;\n const result = yield* spawner\n .string(ChildProcess.make(\"powershell\", [\"-Command\", psCommand]))\n .pipe(\n Effect.map((output) => output.trim()),\n Effect.catchTag(\"PlatformError\", () =>\n new CookieDecryptionKeyError({\n browser: browserKey,\n platform: \"win32\",\n }).asEffect(),\n ),\n );\n\n if (!result) {\n return yield* new CookieDecryptionKeyError({\n browser: browserKey,\n platform: \"win32\",\n }).asEffect();\n }\n\n const masterKey = Buffer.from(result, \"base64\");\n return ((encrypted: Uint8Array) =>\n decryptAes256Gcm(encrypted, masterKey, stripHashPrefix)) satisfies DecryptFn;\n });\n\n return { buildDecryptor } as const;\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n}\n\nexport class ChromiumSqliteFallback extends ServiceMap.Service<ChromiumSqliteFallback>()(\n \"@cookies/ChromiumSqliteFallback\",\n {\n make: Effect.gen(function* () {\n const sqliteClient = yield* SqliteClient;\n const fileSystem = yield* FileSystem.FileSystem;\n const keyProvider = yield* ChromiumKeyProvider;\n\n const resolveCookieDbPath = Effect.fn(\"ChromiumSqliteFallback.resolveCookieDbPath\")(\n function* (profilePath: string, browserKey: string) {\n const networkPath = path.join(profilePath, \"Network\", \"Cookies\");\n if (yield* fileSystem.exists(networkPath)) return networkPath;\n\n const legacyPath = path.join(profilePath, \"Cookies\");\n if (yield* fileSystem.exists(legacyPath)) return legacyPath;\n\n return yield* new CookieDatabaseNotFoundError({ browser: browserKey }).asEffect();\n },\n );\n\n const readMetaVersion = Effect.fn(\"ChromiumSqliteFallback.readMetaVersion\")(function* (\n databasePath: string,\n ) {\n const rows = yield* sqliteClient\n .query(databasePath, \"SELECT value FROM meta WHERE key = 'version'\", \"chromium\")\n .pipe(\n Effect.catchTag(\"CookieReadError\", () =>\n Effect.succeed([] as Array<Record<string, unknown>>),\n ),\n );\n\n const value = rows[0]?.value;\n if (typeof value === \"number\") return Math.floor(value);\n if (typeof value === \"bigint\") return Math.floor(Number(value));\n if (typeof value === \"string\") {\n const parsed = Number.parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : 0;\n }\n return 0;\n });\n\n const extractImpl = Effect.fn(\"ChromiumSqliteFallback.extract\")(function* (\n browser: ChromiumBrowser,\n ) {\n yield* Effect.annotateCurrentSpan({ browser: browser.key });\n\n const databasePath = yield* resolveCookieDbPath(browser.profilePath, browser.key);\n const { tempDatabasePath } = yield* sqliteClient.copyToTemp(\n databasePath,\n `cookies-sqlite-${browser.key}-`,\n \"Cookies\",\n browser.key,\n );\n\n const metaVersion = yield* readMetaVersion(tempDatabasePath);\n const stripHashPrefix = metaVersion >= CHROMIUM_META_VERSION_HASH_PREFIX;\n const decryptValue = yield* keyProvider.buildDecryptor(browser.key, stripHashPrefix);\n\n const cookieRows = yield* sqliteClient.query(\n tempDatabasePath,\n `SELECT name, value, host_key, path, expires_utc, samesite, encrypted_value, is_secure, is_httponly FROM cookies ORDER BY expires_utc DESC`,\n browser.key,\n );\n\n const cookies: Cookie[] = [];\n for (const row of cookieRows) {\n const cookieName = typeof row.name === \"string\" ? row.name : undefined;\n if (!cookieName) continue;\n\n const hostKey = typeof row.host_key === \"string\" ? row.host_key : undefined;\n if (!hostKey) continue;\n\n let cookieValue = typeof row.value === \"string\" ? row.value : undefined;\n if (!cookieValue || cookieValue.length === 0) {\n const encrypted =\n row.encrypted_value instanceof Uint8Array ? row.encrypted_value : undefined;\n if (!encrypted) continue;\n const decrypted = decryptValue(encrypted);\n if (decrypted === undefined) continue;\n cookieValue = decrypted;\n }\n\n const rawExpiry = row.expires_utc;\n const expires = normalizeChromiumExpiration(\n typeof rawExpiry === \"number\" ||\n typeof rawExpiry === \"bigint\" ||\n typeof rawExpiry === \"string\"\n ? rawExpiry\n : undefined,\n );\n\n cookies.push(\n Cookie.make({\n name: cookieName,\n value: cookieValue,\n domain: hostKey,\n path: typeof row.path === \"string\" ? row.path : \"/\",\n ...(expires !== undefined ? { expires } : {}),\n secure: Number(row.is_secure) !== 0,\n httpOnly: Number(row.is_httponly) !== 0,\n sameSite: normalizeChromiumSameSite(row.samesite),\n }),\n );\n }\n\n yield* Effect.logInfo(\"Chromium SQLite fallback cookies extracted\", {\n browser: browser.key,\n count: cookies.length,\n });\n\n return cookies;\n }, Effect.scoped);\n\n const extract = (browser: ChromiumBrowser) =>\n extractImpl(browser).pipe(\n Effect.catchTags({\n CookieDatabaseNotFoundError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n CookieDatabaseCopyError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n CookieReadError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n CookieDecryptionKeyError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n PlatformError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n }),\n );\n\n return { extract } as const;\n }),\n },\n) {\n static layer = Layer.effect(this)(this.make).pipe(\n Layer.provide(SqliteClient.layer),\n Layer.provide(\n Layer.unwrap(\n Effect.sync(() => {\n const currentPlatform = os.platform();\n if (currentPlatform === \"darwin\") return ChromiumKeyProvider.layerDarwin;\n if (currentPlatform === \"win32\") return ChromiumKeyProvider.layerWin32;\n return ChromiumKeyProvider.layerLinux;\n }),\n ),\n ),\n Layer.provide(NodeServices.layer),\n );\n}\n","import { Cookie } from \"../types\";\n\nconst MAC_EPOCH_DELTA_SECONDS = 978_307_200;\nconst BINARY_COOKIE_PAGE_HEADER = 0x00000100;\nconst BINARY_COOKIE_MAGIC = \"cook\";\nconst UINT32_SIZE_BYTES = 4;\nconst DOUBLE_SIZE_BYTES = 8;\nconst BINARY_COOKIE_MIN_HEADER_BYTES = 8;\nconst BINARY_COOKIE_MIN_PAGE_BYTES = 16;\nconst BINARY_COOKIE_MIN_RECORD_BYTES = 48;\nconst BINARY_COOKIE_SECURE_FLAG = 0x1;\nconst BINARY_COOKIE_HTTP_ONLY_FLAG = 0x4;\nconst BINARY_COOKIE_FLAGS_OFFSET = 8;\nconst BINARY_COOKIE_URL_OFFSET = 16;\nconst BINARY_COOKIE_NAME_OFFSET = 20;\nconst BINARY_COOKIE_PATH_OFFSET = 24;\nconst BINARY_COOKIE_VALUE_OFFSET = 28;\nconst BINARY_COOKIE_EXPIRATION_OFFSET = 40;\n\nexport const parseBinaryCookies = (buffer: Buffer): Cookie[] => {\n if (buffer.length < BINARY_COOKIE_MIN_HEADER_BYTES) return [];\n if (buffer.subarray(0, UINT32_SIZE_BYTES).toString(\"utf8\") !== BINARY_COOKIE_MAGIC) return [];\n\n const pageCount = buffer.readUInt32BE(UINT32_SIZE_BYTES);\n let cursor = BINARY_COOKIE_MIN_HEADER_BYTES;\n const pageSizes: number[] = [];\n\n for (let index = 0; index < pageCount; index += 1) {\n pageSizes.push(buffer.readUInt32BE(cursor));\n cursor += UINT32_SIZE_BYTES;\n }\n\n const cookies: Cookie[] = [];\n for (const pageSize of pageSizes) {\n const page = buffer.subarray(cursor, cursor + pageSize);\n cursor += pageSize;\n cookies.push(...decodePage(page));\n }\n return cookies;\n};\n\nconst decodePage = (page: Buffer): Cookie[] => {\n if (page.length < BINARY_COOKIE_MIN_PAGE_BYTES) return [];\n\n const header = page.readUInt32BE(0);\n if (header !== BINARY_COOKIE_PAGE_HEADER) return [];\n\n const cookieCount = page.readUInt32LE(UINT32_SIZE_BYTES);\n const offsets: number[] = [];\n let cursor = BINARY_COOKIE_MIN_HEADER_BYTES;\n\n for (let index = 0; index < cookieCount; index += 1) {\n offsets.push(page.readUInt32LE(cursor));\n cursor += UINT32_SIZE_BYTES;\n }\n\n const cookies: Cookie[] = [];\n for (const offset of offsets) {\n const cookie = decodeCookieRecord(page.subarray(offset));\n if (cookie) cookies.push(cookie);\n }\n return cookies;\n};\n\nconst decodeCookieRecord = (record: Buffer): Cookie | undefined => {\n if (record.length < BINARY_COOKIE_MIN_RECORD_BYTES) return undefined;\n\n const size = record.readUInt32LE(0);\n if (size < BINARY_COOKIE_MIN_RECORD_BYTES || size > record.length) return undefined;\n\n const flags = record.readUInt32LE(BINARY_COOKIE_FLAGS_OFFSET);\n const isSecure = (flags & BINARY_COOKIE_SECURE_FLAG) !== 0;\n const isHttpOnly = (flags & BINARY_COOKIE_HTTP_ONLY_FLAG) !== 0;\n\n const urlOffset = record.readUInt32LE(BINARY_COOKIE_URL_OFFSET);\n const nameOffset = record.readUInt32LE(BINARY_COOKIE_NAME_OFFSET);\n const pathOffset = record.readUInt32LE(BINARY_COOKIE_PATH_OFFSET);\n const valueOffset = record.readUInt32LE(BINARY_COOKIE_VALUE_OFFSET);\n\n const expiration = readDoubleLE(record, BINARY_COOKIE_EXPIRATION_OFFSET);\n\n const rawUrl = readCString(record, urlOffset, size);\n const name = readCString(record, nameOffset, size);\n const cookiePath = readCString(record, pathOffset, size) ?? \"/\";\n const value = readCString(record, valueOffset, size) ?? \"\";\n\n if (!name) return undefined;\n\n const domain = rawUrl ? safeHostname(rawUrl) : undefined;\n const expires =\n expiration && expiration > 0 ? Math.round(expiration + MAC_EPOCH_DELTA_SECONDS) : undefined;\n\n return Cookie.make({\n name,\n value,\n domain: domain ?? \"\",\n path: cookiePath,\n expires,\n secure: isSecure,\n httpOnly: isHttpOnly,\n });\n};\n\nconst readDoubleLE = (buffer: Buffer, offset: number): number => {\n if (offset + DOUBLE_SIZE_BYTES > buffer.length) return 0;\n return buffer.subarray(offset, offset + DOUBLE_SIZE_BYTES).readDoubleLE(0);\n};\n\nconst readCString = (buffer: Buffer, offset: number, end: number): string | undefined => {\n if (offset <= 0 || offset >= end) return undefined;\n\n let cursor = offset;\n while (cursor < end && buffer[cursor] !== 0) {\n cursor += 1;\n }\n if (cursor >= end) return undefined;\n return buffer.toString(\"utf8\", offset, cursor);\n};\n\nconst safeHostname = (raw: string): string | undefined => {\n try {\n const url = raw.includes(\"://\") ? raw : `https://${raw}`;\n return new URL(url).hostname;\n } catch {\n const cleaned = raw.trim();\n if (cleaned === \"\") return undefined;\n return cleaned;\n }\n};\n","import path from \"node:path\";\nimport { Effect, Layer, Match, Option, Schema, SchemaGetter, ServiceMap } from \"effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { CdpClient } from \"./cdp-client\";\nimport { SqliteClient } from \"./sqlite-client\";\nimport { ChromiumSqliteFallback } from \"./chromium-sqlite\";\nimport { ExtractionError, RequiresFullDiskAccess, UnknownError } from \"./errors\";\nimport { parseBinaryCookies } from \"./utils/binary-cookies\";\nimport { SameSitePolicy, Cookie, type Browser } from \"./types\";\n\nconst SAME_SITE_NONE = 0;\nconst SAME_SITE_LAX = 1;\nconst SAME_SITE_STRICT = 2;\nconst MS_PER_SECOND = 1000;\n\nconst SqliteBool = Schema.Union([Schema.Number, Schema.BigInt]).pipe(\n Schema.decodeTo(Schema.Boolean, {\n decode: SchemaGetter.transform((value) => Number(value) !== 0),\n encode: SchemaGetter.transform((value) => (value ? 1 : 0)),\n }),\n);\n\nconst FirefoxExpiry = Schema.Union([Schema.Number, Schema.BigInt, Schema.String]).pipe(\n Schema.decodeTo(Schema.optional(Schema.Number), {\n decode: SchemaGetter.transform((value) => {\n const milliseconds = Number(value);\n if (Number.isNaN(milliseconds) || milliseconds <= 0) return undefined;\n return Math.floor(milliseconds / MS_PER_SECOND);\n }),\n encode: SchemaGetter.transform((value) => (value ?? 0) * MS_PER_SECOND),\n }),\n);\n\nconst FirefoxSameSite = Schema.Union([Schema.Number, Schema.BigInt, Schema.String]).pipe(\n Schema.decodeTo(Schema.optional(SameSitePolicy), {\n decode: SchemaGetter.transform((value) => {\n const numeric = Number(value);\n if (numeric === SAME_SITE_STRICT) return \"Strict\" as const;\n if (numeric === SAME_SITE_LAX) return \"Lax\" as const;\n if (numeric === SAME_SITE_NONE) return \"None\" as const;\n return undefined;\n }),\n encode: SchemaGetter.transform((value) => {\n if (value === \"Strict\") return SAME_SITE_STRICT;\n if (value === \"Lax\") return SAME_SITE_LAX;\n return SAME_SITE_NONE;\n }),\n }),\n);\n\nconst FirefoxCookieRow = Schema.Struct({\n name: Schema.String,\n value: Schema.String,\n host: Schema.String,\n path: Schema.String,\n expiry: FirefoxExpiry,\n isSecure: SqliteBool,\n isHttpOnly: SqliteBool,\n sameSite: FirefoxSameSite,\n});\n\nconst firefoxRowToCookie = (row: typeof FirefoxCookieRow.Type) =>\n Cookie.make({\n name: row.name,\n value: row.value,\n domain: row.host,\n path: row.path || \"/\",\n expires: row.expiry,\n secure: row.isSecure,\n httpOnly: row.isHttpOnly,\n sameSite: row.sameSite,\n });\n\nexport class Cookies extends ServiceMap.Service<Cookies>()(\"@cookies/Cookies\", {\n make: Effect.gen(function* () {\n const cdpClient = yield* CdpClient;\n const sqliteClient = yield* SqliteClient;\n const sqliteFallback = yield* ChromiumSqliteFallback;\n const fs = yield* FileSystem.FileSystem;\n\n const extractChromium = (browser: Extract<Browser, { _tag: \"ChromiumBrowser\" }>) =>\n cdpClient\n .extractCookies({\n key: browser.key,\n profilePath: browser.profilePath,\n executablePath: browser.executablePath,\n })\n .pipe(\n Effect.catchTags({\n TimeoutError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n SchemaError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n SocketError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n HttpClientError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n PlatformError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n }),\n Effect.catchTag(\"ExtractionError\", (cdpError) =>\n Effect.gen(function* () {\n yield* Effect.logWarning(\"CDP extraction failed, trying SQLite fallback\", {\n browser: browser.key,\n error: cdpError.message,\n });\n return yield* sqliteFallback.extract(browser);\n }).pipe(Effect.catchTag(\"ExtractionError\", () => cdpError.asEffect())),\n ),\n );\n\n const extractFirefox = (browser: Extract<Browser, { _tag: \"FirefoxBrowser\" }>) =>\n Effect.gen(function* () {\n const cookieDbPath = path.join(browser.profilePath, \"cookies.sqlite\");\n const { tempDatabasePath } = yield* sqliteClient.copyToTemp(\n cookieDbPath,\n \"cookies-firefox-\",\n \"cookies.sqlite\",\n \"firefox\",\n );\n\n const rows = yield* sqliteClient.query(\n tempDatabasePath,\n `SELECT name, value, host, path, expiry, isSecure, isHttpOnly, sameSite FROM moz_cookies ORDER BY expiry DESC`,\n \"firefox\",\n );\n\n return yield* Effect.forEach(rows, (row) =>\n Schema.decodeUnknownEffect(FirefoxCookieRow)(row).pipe(Effect.map(firefoxRowToCookie)),\n );\n }).pipe(\n Effect.scoped,\n Effect.catchTags({\n CookieReadError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n CookieDatabaseCopyError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n SchemaError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n }),\n );\n\n const extractSafari = (browser: Extract<Browser, { _tag: \"SafariBrowser\" }>) =>\n Effect.gen(function* () {\n if (Option.isNone(browser.cookieFilePath)) {\n return yield* new ExtractionError({\n reason: new RequiresFullDiskAccess(),\n }).asEffect();\n }\n\n const data = yield* fs.readFile(browser.cookieFilePath.value);\n return parseBinaryCookies(Buffer.from(data)).filter(\n (cookie) => Boolean(cookie.name) && Boolean(cookie.domain),\n );\n }).pipe(\n Effect.catchTags({\n PlatformError: (cause) =>\n new ExtractionError({ reason: new UnknownError({ cause }) }).asEffect(),\n }),\n );\n\n const extract = (browser: Browser) =>\n Match.valueTags(browser, {\n ChromiumBrowser: extractChromium,\n FirefoxBrowser: extractFirefox,\n SafariBrowser: extractSafari,\n });\n\n return { extract } as const;\n }),\n}) {\n static layer = Layer.effect(this, this.make).pipe(\n Layer.provide(CdpClient.layer),\n Layer.provide(SqliteClient.layer),\n Layer.provide(ChromiumSqliteFallback.layer),\n Layer.provide(NodeServices.layer),\n );\n\n static layerTest = Layer.effect(this, this.make).pipe(\n Layer.provide(CdpClient.layerTest),\n Layer.provide(SqliteClient.layer),\n Layer.provide(ChromiumSqliteFallback.layer),\n Layer.provide(NodeServices.layer),\n );\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport default async function defaultBrowserId() {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst {stdout} = await execFileAsync('defaults', ['read', 'com.apple.LaunchServices/com.apple.launchservices.secure', 'LSHandlers']);\n\n\t// `(?!-)` is to prevent matching `LSHandlerRoleAll = \"-\";`.\n\tconst match = /LSHandlerRoleAll = \"(?!-)(?<id>[^\"]+?)\";\\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);\n\n\tconst browserId = match?.groups.id ?? 'com.apple.Safari';\n\n\t// Correct the case for Safari's bundle identifier\n\tif (browserId === 'com.apple.safari') {\n\t\treturn 'com.apple.Safari';\n\t}\n\n\treturn browserId;\n}\n","import process from 'node:process';\nimport {promisify} from 'node:util';\nimport {execFile, execFileSync} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\nexport async function runAppleScript(script, {humanReadableOutput = true, signal} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst execOptions = {};\n\tif (signal) {\n\t\texecOptions.signal = signal;\n\t}\n\n\tconst {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments], execOptions);\n\treturn stdout.trim();\n}\n\nexport function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {\n\tif (process.platform !== 'darwin') {\n\t\tthrow new Error('macOS only');\n\t}\n\n\tconst outputArguments = humanReadableOutput ? [] : ['-ss'];\n\n\tconst stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {\n\t\tencoding: 'utf8',\n\t\tstdio: ['ignore', 'pipe', 'ignore'],\n\t\ttimeout: 500,\n\t});\n\n\treturn stdout.trim();\n}\n","import {runAppleScript} from 'run-applescript';\n\nexport default async function bundleName(bundleId) {\n\treturn runAppleScript(`tell application \"Finder\" to set app_path to application file id \"${bundleId}\" as string\\ntell application \"System Events\" to get value of property list item \"CFBundleName\" of property list file (app_path & \":Contents:Info.plist\")`);\n}\n","import {promisify} from 'node:util';\nimport {execFile} from 'node:child_process';\n\nconst execFileAsync = promisify(execFile);\n\n// TODO: Fix the casing of bundle identifiers in the next major version.\n\n// Windows doesn't have browser IDs in the same way macOS/Linux does so we give fake\n// ones that look real and match the macOS/Linux versions for cross-platform apps.\nconst windowsBrowserProgIds = {\n\tMSEdgeHTM: {name: 'Edge', id: 'com.microsoft.edge'}, // The missing `L` is correct.\n\tMSEdgeBHTML: {name: 'Edge Beta', id: 'com.microsoft.edge.beta'},\n\tMSEdgeDHTML: {name: 'Edge Dev', id: 'com.microsoft.edge.dev'},\n\tAppXq0fevzme2pys62n3e0fbqa7peapykr8v: {name: 'Edge', id: 'com.microsoft.edge.old'},\n\tChromeHTML: {name: 'Chrome', id: 'com.google.chrome'},\n\tChromeBHTML: {name: 'Chrome Beta', id: 'com.google.chrome.beta'},\n\tChromeDHTML: {name: 'Chrome Dev', id: 'com.google.chrome.dev'},\n\tChromiumHTM: {name: 'Chromium', id: 'org.chromium.Chromium'},\n\tBraveHTML: {name: 'Brave', id: 'com.brave.Browser'},\n\tBraveBHTML: {name: 'Brave Beta', id: 'com.brave.Browser.beta'},\n\tBraveDHTML: {name: 'Brave Dev', id: 'com.brave.Browser.dev'},\n\tBraveSSHTM: {name: 'Brave Nightly', id: 'com.brave.Browser.nightly'},\n\tFirefoxURL: {name: 'Firefox', id: 'org.mozilla.firefox'},\n\tOperaStable: {name: 'Opera', id: 'com.operasoftware.Opera'},\n\tVivaldiHTM: {name: 'Vivaldi', id: 'com.vivaldi.Vivaldi'},\n\t'IE.HTTP': {name: 'Internet Explorer', id: 'com.microsoft.ie'},\n};\n\nexport const _windowsBrowserProgIdMap = new Map(Object.entries(windowsBrowserProgIds));\n\nexport class UnknownBrowserError extends Error {}\n\nexport default async function defaultBrowser(_execFileAsync = execFileAsync) {\n\tconst {stdout} = await _execFileAsync('reg', [\n\t\t'QUERY',\n\t\t' HKEY_CURRENT_USER\\\\Software\\\\Microsoft\\\\Windows\\\\Shell\\\\Associations\\\\UrlAssociations\\\\http\\\\UserChoice',\n\t\t'/v',\n\t\t'ProgId',\n\t]);\n\n\tconst match = /ProgId\\s*REG_SZ\\s*(?<id>\\S+)/.exec(stdout);\n\tif (!match) {\n\t\tthrow new UnknownBrowserError(`Cannot find Windows browser in stdout: ${JSON.stringify(stdout)}`);\n\t}\n\n\tconst {id} = match.groups;\n\n\t// Windows can append a hash suffix to ProgIds using a dot or hyphen\n\t// (e.g., `ChromeHTML.ABC123`, `FirefoxURL-6F193CCC56814779`).\n\t// Try exact match first, then try without the suffix.\n\tconst dotIndex = id.lastIndexOf('.');\n\tconst hyphenIndex = id.lastIndexOf('-');\n\tconst baseIdByDot = dotIndex === -1 ? undefined : id.slice(0, dotIndex);\n\tconst baseIdByHyphen = hyphenIndex === -1 ? undefined : id.slice(0, hyphenIndex);\n\n\treturn windowsBrowserProgIds[id] ?? windowsBrowserProgIds[baseIdByDot] ?? windowsBrowserProgIds[baseIdByHyphen] ?? {name: id, id};\n}\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport {execFile} from 'node:child_process';\nimport defaultBrowserId from 'default-browser-id';\nimport bundleName from 'bundle-name';\nimport windows from './windows.js';\n\nexport {_windowsBrowserProgIdMap} from './windows.js';\n\nconst execFileAsync = promisify(execFile);\n\n// Inlined: https://github.com/sindresorhus/titleize/blob/main/index.js\nconst titleize = string => string.toLowerCase().replaceAll(/(?:^|\\s|-)\\S/g, x => x.toUpperCase());\n\nexport default async function defaultBrowser() {\n\tif (process.platform === 'darwin') {\n\t\tconst id = await defaultBrowserId();\n\t\tconst name = await bundleName(id);\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'linux') {\n\t\tconst {stdout} = await execFileAsync('xdg-mime', ['query', 'default', 'x-scheme-handler/http']);\n\t\tconst id = stdout.trim();\n\t\tconst name = titleize(id.replace(/.desktop$/, '').replace('-', ' '));\n\t\treturn {name, id};\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows();\n\t}\n\n\tthrow new Error('Only macOS, Linux, and Windows are supported');\n}\n","import { Effect, identity, Layer, Option, ServiceMap, Array as Arr } from \"effect\";\nimport getDefaultBrowser from \"default-browser\";\nimport { configByBundleId, configByDesktopFile } from \"./browser-config\";\nimport { ListBrowsersError } from \"./errors\";\nimport type { Browser } from \"./types\";\n\nexport class Browsers extends ServiceMap.Service<Browsers>()(\"@cookies/Browsers\", {\n make: Effect.gen(function* () {\n const sources = new Set<Effect.Effect<Browser[], ListBrowsersError>>();\n\n const register = (source: Effect.Effect<Browser[], ListBrowsersError>) =>\n Effect.sync(() => {\n sources.add(source);\n });\n\n const list = Effect.forEach(sources, identity, {\n concurrency: \"unbounded\",\n }).pipe(Effect.map(Arr.flatten), Effect.withSpan(\"Browsers.list\"));\n\n const defaultBrowser = Effect.fn(\"Browsers.defaultBrowser\")(function* () {\n const result = yield* Effect.tryPromise({\n try: () => getDefaultBrowser(),\n catch: (cause) => new ListBrowsersError({ cause: String(cause) }),\n }).pipe(\n Effect.catchTag(\"ListBrowsersError\", (error) =>\n Effect.logWarning(\"Default browser detection failed\", { cause: error.cause }).pipe(\n Effect.as(undefined),\n ),\n ),\n );\n\n if (!result) return Option.none<Browser>();\n\n const normalizedId = result.id.toLowerCase();\n const desktopKey = normalizedId.replace(/\\.desktop$/, \"\");\n const config = configByBundleId(normalizedId) ?? configByDesktopFile(desktopKey);\n if (!config) return Option.none<Browser>();\n\n const browsers = yield* list;\n return Option.fromNullishOr(\n browsers.find((browser) => {\n if (browser._tag === \"ChromiumBrowser\") return browser.key === config.key;\n if (browser._tag === \"FirefoxBrowser\") return config.key === \"firefox\";\n if (browser._tag === \"SafariBrowser\") return config.key === \"safari\";\n return false;\n }),\n );\n });\n\n return { register, list, defaultBrowser };\n }),\n}) {\n static layer = Layer.effect(this, this.make);\n}\n","import path from \"node:path\";\nimport * as os from \"node:os\";\nimport { Array as Arr, Effect, Layer, Option, Predicate, Schema, ServiceMap } from \"effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport { ChildProcess } from \"effect/unstable/process\";\nimport { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { ChromiumBrowser, type ChromiumBrowserKey } from \"./types\";\nimport { CHROMIUM_CONFIGS, type ChromiumConfig } from \"./browser-config\";\nimport { ListBrowsersError } from \"./errors\";\nimport { Browsers } from \"./browser-detector\";\n\nconst CONCURRENCY_PROFILE_SCAN = 10;\n\nconst LocalStateSchema = Schema.Struct({\n profile: Schema.optional(\n Schema.Struct({\n last_used: Schema.optional(Schema.String),\n }),\n ),\n});\n\nconst PreferencesSchema = Schema.Struct({\n intl: Schema.optional(\n Schema.Struct({\n selected_languages: Schema.optional(Schema.String),\n accept_languages: Schema.optional(Schema.String),\n }),\n ),\n});\n\nexport class ChromiumPlatform extends ServiceMap.Service<\n ChromiumPlatform,\n {\n executableCandidates: (config: ChromiumConfig) => readonly string[];\n userDataDir: (config: ChromiumConfig) => string;\n }\n>()(\"@cookies/ChromiumPlatform\") {\n static layerDarwin = Layer.succeed(this, {\n executableCandidates: (config: ChromiumConfig) => [config.executable.darwin],\n userDataDir: (config: ChromiumConfig) =>\n path.join(os.homedir(), \"Library\", \"Application Support\", config.userData.darwin),\n });\n\n static layerLinux = Layer.succeed(this, {\n executableCandidates: (config: ChromiumConfig) => config.executable.linux,\n userDataDir: (config: ChromiumConfig) =>\n path.join(\n process.env[\"XDG_CONFIG_HOME\"] ?? path.join(os.homedir(), \".config\"),\n config.userData.linux,\n ),\n });\n\n static layerWin32 = Layer.effect(this)(\n Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner;\n const registryPaths = new Map<string, string>();\n\n for (const config of CHROMIUM_CONFIGS) {\n const regPath = `HKLM\\\\SOFTWARE\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\App Paths\\\\${config.registryKey}`;\n const output = yield* spawner\n .string(ChildProcess.make(\"reg\", [\"query\", regPath, \"/ve\"]))\n .pipe(\n Effect.map((result) => result.trim()),\n Effect.catch(() => Effect.succeed(\"\")),\n );\n if (output) {\n const match = output.match(/REG_SZ\\s+(.+)/);\n const registryExePath = match?.[1]?.trim();\n if (registryExePath) registryPaths.set(config.key, registryExePath);\n }\n }\n\n const programFiles = process.env[\"ProgramFiles\"] ?? \"C:\\\\Program Files\";\n const programFilesX86 = process.env[\"ProgramFiles(x86)\"] ?? \"C:\\\\Program Files (x86)\";\n const localAppData =\n process.env[\"LOCALAPPDATA\"] ?? path.join(os.homedir(), \"AppData\", \"Local\");\n\n return {\n executableCandidates: (config: ChromiumConfig) => {\n const candidates: string[] = [];\n const regPath = registryPaths.get(config.key);\n if (regPath) candidates.push(regPath);\n for (const relative of config.executable.win32) {\n candidates.push(\n path.join(programFiles, relative),\n path.join(programFilesX86, relative),\n path.join(localAppData, relative),\n );\n }\n return candidates;\n },\n userDataDir: (config: ChromiumConfig) => path.join(localAppData, config.userData.win32),\n };\n }),\n ).pipe(Layer.provide(NodeServices.layer));\n}\n\nexport class ChromiumSource extends ServiceMap.Service<ChromiumSource>()(\n \"@cookies/ChromiumSource\",\n {\n make: Effect.gen(function* () {\n const browsers = yield* Browsers;\n const config = yield* ChromiumPlatform;\n const fs = yield* FileSystem.FileSystem;\n\n const getLastUsedProfile = (userDataDir: string) =>\n fs.readFileString(path.join(userDataDir, \"Local State\")).pipe(\n Effect.flatMap((content) =>\n Schema.decodeEffect(Schema.fromJsonString(LocalStateSchema))(content),\n ),\n Effect.map((localState) => Option.fromNullishOr(localState.profile?.last_used)),\n Effect.catchReason(\"PlatformError\", \"NotFound\", () =>\n Effect.succeed(Option.none<string>()),\n ),\n );\n\n const loadProfileLocale = (profilePath: string) =>\n fs.readFileString(path.join(profilePath, \"Preferences\")).pipe(\n Effect.flatMap((content) =>\n Schema.decodeEffect(Schema.fromJsonString(PreferencesSchema))(content),\n ),\n Effect.map((preferences) => {\n const languages =\n preferences.intl?.selected_languages ?? preferences.intl?.accept_languages;\n if (!languages) return undefined;\n return languages\n .split(\",\")\n .map((language) => language.trim())\n .find((language) => language.length > 0);\n }),\n Effect.catch(() => Effect.succeed(undefined)),\n );\n\n const detectProfiles = (\n key: ChromiumBrowserKey,\n executablePath: string,\n userDataDir: string,\n ) =>\n Effect.gen(function* () {\n if (!(yield* fs.exists(userDataDir))) return [];\n\n const lastUsedProfileName = yield* getLastUsedProfile(userDataDir);\n const entries = yield* fs\n .readDirectory(userDataDir)\n .pipe(\n Effect.catchReason(\"PlatformError\", \"NotFound\", () => Effect.succeed([] as string[])),\n );\n\n const hasPreferences = (profileEntryPath: string) =>\n fs\n .exists(path.join(profileEntryPath, \"Preferences\"))\n .pipe(\n Effect.catchReason(\"PlatformError\", \"BadResource\", () => Effect.succeed(false)),\n );\n\n return yield* Effect.forEach(\n entries,\n (entry) =>\n Effect.gen(function* () {\n const profileEntryPath = path.join(userDataDir, entry);\n if (!(yield* hasPreferences(profileEntryPath))) return undefined;\n\n const locale = yield* loadProfileLocale(profileEntryPath);\n\n return new ChromiumBrowser({\n key,\n profileName: entry,\n profilePath: profileEntryPath,\n executablePath,\n ...(locale ? { locale } : {}),\n });\n }),\n { concurrency: CONCURRENCY_PROFILE_SCAN },\n ).pipe(\n Effect.map(Arr.filter(Predicate.isNotUndefined)),\n Effect.map(\n Arr.sort(ChromiumBrowser.orderBy(Option.getOrUndefined(lastUsedProfileName))),\n ),\n );\n });\n\n yield* browsers.register(\n Effect.forEach(\n CHROMIUM_CONFIGS,\n (chromiumConfig) =>\n Effect.gen(function* () {\n let executablePath: string | undefined;\n for (const candidate of config.executableCandidates(chromiumConfig)) {\n if (yield* fs.exists(candidate)) {\n executablePath = candidate;\n break;\n }\n }\n if (!executablePath) return [];\n\n return yield* detectProfiles(\n chromiumConfig.key,\n executablePath,\n config.userDataDir(chromiumConfig),\n );\n }),\n { concurrency: \"unbounded\" },\n ).pipe(\n Effect.map(Arr.flatten),\n Effect.catch((cause) => new ListBrowsersError({ cause: String(cause) }).asEffect()),\n ),\n );\n }),\n },\n) {\n static layer = Layer.effectDiscard(this.make).pipe(Layer.provide(NodeServices.layer));\n}\n","const { hasOwnProperty } = Object.prototype\n\nconst encode = (obj, opt = {}) => {\n if (typeof opt === 'string') {\n opt = { section: opt }\n }\n opt.align = opt.align === true\n opt.newline = opt.newline === true\n opt.sort = opt.sort === true\n opt.whitespace = opt.whitespace === true || opt.align === true\n // The `typeof` check is required because accessing the `process` directly fails on browsers.\n /* istanbul ignore next */\n opt.platform = opt.platform || (typeof process !== 'undefined' && process.platform)\n opt.bracketedArray = opt.bracketedArray !== false\n\n /* istanbul ignore next */\n const eol = opt.platform === 'win32' ? '\\r\\n' : '\\n'\n const separator = opt.whitespace ? ' = ' : '='\n const children = []\n\n const keys = opt.sort ? Object.keys(obj).sort() : Object.keys(obj)\n\n let padToChars = 0\n // If aligning on the separator, then padToChars is determined as follows:\n // 1. Get the keys\n // 2. Exclude keys pointing to objects unless the value is null or an array\n // 3. Add `[]` to array keys\n // 4. Ensure non empty set of keys\n // 5. Reduce the set to the longest `safe` key\n // 6. Get the `safe` length\n if (opt.align) {\n padToChars = safe(\n (\n keys\n .filter(k => obj[k] === null || Array.isArray(obj[k]) || typeof obj[k] !== 'object')\n .map(k => Array.isArray(obj[k]) ? `${k}[]` : k)\n )\n .concat([''])\n .reduce((a, b) => safe(a).length >= safe(b).length ? a : b)\n ).length\n }\n\n let out = ''\n const arraySuffix = opt.bracketedArray ? '[]' : ''\n\n for (const k of keys) {\n const val = obj[k]\n if (val && Array.isArray(val)) {\n for (const item of val) {\n out += safe(`${k}${arraySuffix}`).padEnd(padToChars, ' ') + separator + safe(item) + eol\n }\n } else if (val && typeof val === 'object') {\n children.push(k)\n } else {\n out += safe(k).padEnd(padToChars, ' ') + separator + safe(val) + eol\n }\n }\n\n if (opt.section && out.length) {\n out = '[' + safe(opt.section) + ']' + (opt.newline ? eol + eol : eol) + out\n }\n\n for (const k of children) {\n const nk = splitSections(k, '.').join('\\\\.')\n const section = (opt.section ? opt.section + '.' : '') + nk\n const child = encode(obj[k], {\n ...opt,\n section,\n })\n if (out.length && child.length) {\n out += eol\n }\n\n out += child\n }\n\n return out\n}\n\nfunction splitSections (str, separator) {\n var lastMatchIndex = 0\n var lastSeparatorIndex = 0\n var nextIndex = 0\n var sections = []\n\n do {\n nextIndex = str.indexOf(separator, lastMatchIndex)\n\n if (nextIndex !== -1) {\n lastMatchIndex = nextIndex + separator.length\n\n if (nextIndex > 0 && str[nextIndex - 1] === '\\\\') {\n continue\n }\n\n sections.push(str.slice(lastSeparatorIndex, nextIndex))\n lastSeparatorIndex = nextIndex + separator.length\n }\n } while (nextIndex !== -1)\n\n sections.push(str.slice(lastSeparatorIndex))\n\n return sections\n}\n\nconst decode = (str, opt = {}) => {\n opt.bracketedArray = opt.bracketedArray !== false\n const out = Object.create(null)\n let p = out\n let section = null\n // section |key = value\n const re = /^\\[([^\\]]*)\\]\\s*$|^([^=]+)(=(.*))?$/i\n const lines = str.split(/[\\r\\n]+/g)\n const duplicates = {}\n\n for (const line of lines) {\n if (!line || line.match(/^\\s*[;#]/) || line.match(/^\\s*$/)) {\n continue\n }\n const match = line.match(re)\n if (!match) {\n continue\n }\n if (match[1] !== undefined) {\n section = unsafe(match[1])\n if (section === '__proto__') {\n // not allowed\n // keep parsing the section, but don't attach it.\n p = Object.create(null)\n continue\n }\n p = out[section] = out[section] || Object.create(null)\n continue\n }\n const keyRaw = unsafe(match[2])\n let isArray\n if (opt.bracketedArray) {\n isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]'\n } else {\n duplicates[keyRaw] = (duplicates?.[keyRaw] || 0) + 1\n isArray = duplicates[keyRaw] > 1\n }\n const key = isArray && keyRaw.endsWith('[]')\n ? keyRaw.slice(0, -2) : keyRaw\n\n if (key === '__proto__') {\n continue\n }\n const valueRaw = match[3] ? unsafe(match[4]) : true\n const value = valueRaw === 'true' ||\n valueRaw === 'false' ||\n valueRaw === 'null' ? JSON.parse(valueRaw)\n : valueRaw\n\n // Convert keys with '[]' suffix to an array\n if (isArray) {\n if (!hasOwnProperty.call(p, key)) {\n p[key] = []\n } else if (!Array.isArray(p[key])) {\n p[key] = [p[key]]\n }\n }\n\n // safeguard against resetting a previously defined\n // array by accidentally forgetting the brackets\n if (Array.isArray(p[key])) {\n p[key].push(value)\n } else {\n p[key] = value\n }\n }\n\n // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n // use a filter to return the keys that have to be deleted.\n const remove = []\n for (const k of Object.keys(out)) {\n if (!hasOwnProperty.call(out, k) ||\n typeof out[k] !== 'object' ||\n Array.isArray(out[k])) {\n continue\n }\n\n // see if the parent section is also an object.\n // if so, add it to that, and mark this one for deletion\n const parts = splitSections(k, '.')\n p = out\n const l = parts.pop()\n const nl = l.replace(/\\\\\\./g, '.')\n for (const part of parts) {\n if (part === '__proto__') {\n continue\n }\n if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object') {\n p[part] = Object.create(null)\n }\n p = p[part]\n }\n if (p === out && nl === l) {\n continue\n }\n\n p[nl] = out[k]\n remove.push(k)\n }\n for (const del of remove) {\n delete out[del]\n }\n\n return out\n}\n\nconst isQuoted = val => {\n return (val.startsWith('\"') && val.endsWith('\"')) ||\n (val.startsWith(\"'\") && val.endsWith(\"'\"))\n}\n\nconst safe = val => {\n if (\n typeof val !== 'string' ||\n val.match(/[=\\r\\n]/) ||\n val.match(/^\\[/) ||\n (val.length > 1 && isQuoted(val)) ||\n val !== val.trim()\n ) {\n return JSON.stringify(val)\n }\n return val.split(';').join('\\\\;').split('#').join('\\\\#')\n}\n\nconst unsafe = val => {\n val = (val || '').trim()\n if (isQuoted(val)) {\n // remove the single quotes before calling JSON.parse\n if (val.charAt(0) === \"'\") {\n val = val.slice(1, -1)\n }\n try {\n val = JSON.parse(val)\n } catch {\n // ignore errors\n }\n } else {\n // walk the val to find the first not-escaped ; character\n let esc = false\n let unesc = ''\n for (let i = 0, l = val.length; i < l; i++) {\n const c = val.charAt(i)\n if (esc) {\n if ('\\\\;#'.indexOf(c) !== -1) {\n unesc += c\n } else {\n unesc += '\\\\' + c\n }\n\n esc = false\n } else if (';#'.indexOf(c) !== -1) {\n break\n } else if (c === '\\\\') {\n esc = true\n } else {\n unesc += c\n }\n }\n if (esc) {\n unesc += '\\\\'\n }\n\n return unesc.trim()\n }\n return val\n}\n\nmodule.exports = {\n parse: decode,\n decode,\n stringify: encode,\n encode,\n safe,\n unsafe,\n}\n","import path from \"node:path\";\nimport * as os from \"node:os\";\nimport { parse } from \"ini\";\nimport { Effect, Layer, Predicate, Schema, ServiceMap } from \"effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport { FirefoxBrowser } from \"./types\";\nimport { FIREFOX_CONFIG } from \"./browser-config\";\nimport { ListBrowsersError } from \"./errors\";\nimport { Browsers } from \"./browser-detector\";\n\nconst ProfileSection = Schema.Struct({\n Name: Schema.String,\n Path: Schema.String,\n IsRelative: Schema.optional(Schema.String),\n});\n\nconst parseProfilesIni = (content: string) =>\n Object.values(parse(content))\n .map((section) => Schema.decodeUnknownOption(ProfileSection)(section))\n .filter((option) => option._tag === \"Some\")\n .map((option) => ({\n name: option.value.Name,\n path: option.value.Path,\n isRelative: option.value.IsRelative !== \"0\",\n }));\n\nexport class FirefoxPlatform extends ServiceMap.Service<\n FirefoxPlatform,\n { dataDir: string; executablePaths: readonly string[] }\n>()(\"@cookies/FirefoxPlatform\") {\n static layerDarwin = Layer.succeed(this, {\n dataDir: path.join(os.homedir(), FIREFOX_CONFIG.dataDir.darwin),\n executablePaths: [FIREFOX_CONFIG.executable.darwin],\n });\n\n static layerLinux = Layer.succeed(this, {\n dataDir: path.join(os.homedir(), FIREFOX_CONFIG.dataDir.linux),\n executablePaths: FIREFOX_CONFIG.executable.linux,\n });\n\n static layerWin32 = Layer.succeed(this, {\n dataDir: path.join(os.homedir(), FIREFOX_CONFIG.dataDir.win32),\n executablePaths: FIREFOX_CONFIG.executable.win32.flatMap((relative) => {\n const programFiles = process.env[\"ProgramFiles\"] ?? \"C:\\\\Program Files\";\n const programFilesX86 = process.env[\"ProgramFiles(x86)\"] ?? \"C:\\\\Program Files (x86)\";\n return [path.join(programFiles, relative), path.join(programFilesX86, relative)];\n }),\n });\n}\n\nexport class FirefoxSource extends ServiceMap.Service<FirefoxSource>()(\"@cookies/FirefoxSource\", {\n make: Effect.gen(function* () {\n const browsers = yield* Browsers;\n const config = yield* FirefoxPlatform;\n const fileSystem = yield* FileSystem.FileSystem;\n\n yield* browsers.register(\n Effect.gen(function* () {\n let executablePath: string | undefined;\n for (const candidate of config.executablePaths) {\n if (yield* fileSystem.exists(candidate)) {\n executablePath = candidate;\n break;\n }\n }\n if (!executablePath) return [];\n\n const iniPath = path.join(config.dataDir, \"profiles.ini\");\n const iniContent = yield* fileSystem.readFileString(iniPath);\n\n const parsedProfiles = parseProfilesIni(iniContent);\n\n return yield* Effect.forEach(\n parsedProfiles,\n (parsed) =>\n Effect.gen(function* () {\n const profileEntryPath = parsed.isRelative\n ? path.join(config.dataDir, parsed.path)\n : parsed.path;\n const cookiesPath = path.join(profileEntryPath, \"cookies.sqlite\");\n if (!(yield* fileSystem.exists(cookiesPath))) return undefined;\n\n return new FirefoxBrowser({\n profileName: path.basename(profileEntryPath),\n profilePath: profileEntryPath,\n });\n }),\n { concurrency: \"unbounded\" },\n ).pipe(Effect.map((results) => results.filter(Predicate.isNotUndefined)));\n }).pipe(Effect.catch((cause) => new ListBrowsersError({ cause: String(cause) }).asEffect())),\n );\n }),\n}) {\n static layer = Layer.effectDiscard(this.make);\n}\n","import path from \"node:path\";\nimport * as os from \"node:os\";\nimport { Effect, Layer, Option, ServiceMap } from \"effect\";\nimport * as FileSystem from \"effect/FileSystem\";\nimport { SafariBrowser } from \"./types\";\nimport { SAFARI_CONFIG } from \"./browser-config\";\nimport { ListBrowsersError } from \"./errors\";\nimport { Browsers } from \"./browser-detector\";\n\nexport class SafariPlatform extends ServiceMap.Service<\n SafariPlatform,\n { executable: string; cookieRelativePaths: readonly string[] }\n>()(\"@cookies/SafariPlatform\") {\n static layerDarwin = Layer.succeed(this, {\n executable: SAFARI_CONFIG.executable,\n cookieRelativePaths: SAFARI_CONFIG.cookieRelativePaths,\n });\n}\n\nexport class SafariSource extends ServiceMap.Service<SafariSource>()(\"@cookies/SafariSource\", {\n make: Effect.gen(function* () {\n const browsers = yield* Browsers;\n const config = yield* SafariPlatform;\n const fileSystem = yield* FileSystem.FileSystem;\n\n yield* browsers.register(\n Effect.gen(function* () {\n if (!(yield* fileSystem.exists(config.executable))) return [];\n\n let cookieFilePath = Option.none<string>();\n for (const relativePath of config.cookieRelativePaths) {\n const candidate = path.join(os.homedir(), relativePath, \"Cookies.binarycookies\");\n if (yield* fileSystem.exists(candidate)) {\n cookieFilePath = Option.some(candidate);\n break;\n }\n }\n\n return [new SafariBrowser({ cookieFilePath })];\n }).pipe(\n Effect.catchTag(\"PlatformError\", (cause) =>\n new ListBrowsersError({ cause: String(cause) }).asEffect(),\n ),\n ),\n );\n }),\n}) {\n static layer = Layer.effectDiscard(this.make);\n}\n","import * as os from \"node:os\";\nimport { Effect, Layer } from \"effect\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { Browsers } from \"./browser-detector\";\nimport { ChromiumSource, ChromiumPlatform } from \"./chromium\";\nimport { FirefoxSource, FirefoxPlatform } from \"./firefox\";\nimport { SafariSource, SafariPlatform } from \"./safari\";\n\nconst base = Browsers.layer;\n\nconst layerLiveDarwin = Layer.mergeAll(\n base,\n ChromiumSource.layer.pipe(\n Layer.provide(base),\n Layer.provide(ChromiumPlatform.layerDarwin),\n Layer.provide(NodeServices.layer),\n ),\n FirefoxSource.layer.pipe(\n Layer.provide(base),\n Layer.provide(FirefoxPlatform.layerDarwin),\n Layer.provide(NodeServices.layer),\n ),\n SafariSource.layer.pipe(\n Layer.provide(base),\n Layer.provide(SafariPlatform.layerDarwin),\n Layer.provide(NodeServices.layer),\n ),\n);\n\nconst layerLiveLinux = Layer.mergeAll(\n base,\n ChromiumSource.layer.pipe(\n Layer.provide(base),\n Layer.provide(ChromiumPlatform.layerLinux),\n Layer.provide(NodeServices.layer),\n ),\n FirefoxSource.layer.pipe(\n Layer.provide(base),\n Layer.provide(FirefoxPlatform.layerLinux),\n Layer.provide(NodeServices.layer),\n ),\n);\n\nconst layerLiveWin32 = Layer.mergeAll(\n base,\n ChromiumSource.layer.pipe(\n Layer.provide(base),\n Layer.provide(ChromiumPlatform.layerWin32),\n Layer.provide(NodeServices.layer),\n ),\n FirefoxSource.layer.pipe(\n Layer.provide(base),\n Layer.provide(FirefoxPlatform.layerWin32),\n Layer.provide(NodeServices.layer),\n ),\n);\n\nexport const layerLive = Layer.unwrap(\n Effect.sync(() => {\n const currentPlatform = os.platform();\n if (currentPlatform === \"darwin\") return layerLiveDarwin;\n if (currentPlatform === \"win32\") return layerLiveWin32;\n return layerLiveLinux;\n }),\n);\n","export const SNAPSHOT_TIMEOUT_MS = 30_000;\nexport const REF_PREFIX = \"e\";\nexport const EXCLUDED_ARIA_ROLE = \"text\";\nexport const HEADLESS_CHROMIUM_ARGS = [\n \"--enable-webgl\",\n \"--use-gl=angle\",\n \"--use-angle=swiftshader\",\n \"--ignore-gpu-blocklist\",\n];\n\nexport const INTERACTIVE_ROLES = new Set([\n \"button\",\n \"link\",\n \"textbox\",\n \"checkbox\",\n \"radio\",\n \"combobox\",\n \"listbox\",\n \"menuitem\",\n \"menuitemcheckbox\",\n \"menuitemradio\",\n \"option\",\n \"searchbox\",\n \"slider\",\n \"spinbutton\",\n \"switch\",\n \"tab\",\n \"treeitem\",\n]);\n\nexport const CONTENT_ROLES = new Set([\n \"heading\",\n \"cell\",\n \"gridcell\",\n \"columnheader\",\n \"rowheader\",\n \"listitem\",\n \"article\",\n \"region\",\n \"main\",\n \"navigation\",\n]);\n\nexport const NAVIGATION_DETECT_DELAY_MS = 1_000;\nexport const POST_NAVIGATION_SETTLE_MS = 500;\n\nexport const ESTIMATED_CHARS_PER_TOKEN = 4;\nexport const MAX_ELEMENT_TEXT_LENGTH = 100;\nexport const MAX_CURSOR_INTERACTIVE_ELEMENTS = 100;\nexport const OVERLAY_CONTAINER_ID = \"__expect_annotation_overlay__\";\nexport const EVENT_COLLECT_INTERVAL_MS = 250;\nexport const RRWEB_CHECKOUT_INTERVAL_MS = 10_000;\n\nexport const REPLAY_PLAYER_WIDTH_PX = 960;\nexport const REPLAY_PLAYER_HEIGHT_PX = 540;\n\nexport const CDP_DISCOVERY_TIMEOUT_MS = 2_000;\nexport const CDP_PORT_PROBE_TIMEOUT_MS = 500;\nexport const CDP_COMMON_PORTS = [9222, 9229] as const;\n","import { Schema } from \"effect\";\n\nexport class BrowserLaunchError extends Schema.ErrorClass<BrowserLaunchError>(\"BrowserLaunchError\")(\n {\n _tag: Schema.tag(\"BrowserLaunchError\"),\n cause: Schema.String,\n },\n) {\n message = `Failed to launch browser: ${this.cause}`;\n}\n\nexport class SnapshotTimeoutError extends Schema.ErrorClass<SnapshotTimeoutError>(\n \"SnapshotTimeoutError\",\n)({\n _tag: Schema.tag(\"SnapshotTimeoutError\"),\n selector: Schema.String,\n timeoutMs: Schema.Number,\n cause: Schema.String,\n}) {\n message = `Snapshot timed out after ${this.timeoutMs}ms on selector \"${this.selector}\": ${this.cause}`;\n}\n\nexport class RefNotFoundError extends Schema.ErrorClass<RefNotFoundError>(\"RefNotFoundError\")({\n _tag: Schema.tag(\"RefNotFoundError\"),\n ref: Schema.String,\n availableRefs: Schema.Array(Schema.String),\n}) {\n message =\n this.availableRefs.length === 0\n ? `Unknown ref \"${this.ref}\" (no refs available — page may be empty)`\n : `Unknown ref \"${this.ref}\" (available refs: ${this.availableRefs.join(\", \")})`;\n}\n\nexport class RefAmbiguousError extends Schema.ErrorClass<RefAmbiguousError>(\"RefAmbiguousError\")({\n _tag: Schema.tag(\"RefAmbiguousError\"),\n ref: Schema.String,\n matchCount: Schema.String,\n}) {\n message = `Ref \"${this.ref}\" matched ${this.matchCount} elements. Run snapshot to get updated refs.`;\n}\n\nexport class RefBlockedError extends Schema.ErrorClass<RefBlockedError>(\"RefBlockedError\")({\n _tag: Schema.tag(\"RefBlockedError\"),\n ref: Schema.String,\n}) {\n message = `Ref \"${this.ref}\" is blocked by an overlay. Dismiss any modals or banners first.`;\n}\n\nexport class RefNotVisibleError extends Schema.ErrorClass<RefNotVisibleError>(\"RefNotVisibleError\")(\n {\n _tag: Schema.tag(\"RefNotVisibleError\"),\n ref: Schema.String,\n },\n) {\n message = `Ref \"${this.ref}\" is not visible. Try scrolling it into view.`;\n}\n\nexport class ActionTimeoutError extends Schema.ErrorClass<ActionTimeoutError>(\"ActionTimeoutError\")(\n {\n _tag: Schema.tag(\"ActionTimeoutError\"),\n ref: Schema.String,\n },\n) {\n message = `Action on \"${this.ref}\" timed out. The element may be blocked or still loading. Run snapshot to check.`;\n}\n\nexport class ActionUnknownError extends Schema.ErrorClass<ActionUnknownError>(\"ActionUnknownError\")(\n {\n _tag: Schema.tag(\"ActionUnknownError\"),\n ref: Schema.String,\n cause: Schema.String,\n },\n) {\n message = `Action on \"${this.ref}\" failed: ${this.cause}`;\n}\n\nexport class NavigationError extends Schema.ErrorClass<NavigationError>(\"NavigationError\")({\n _tag: Schema.tag(\"NavigationError\"),\n url: Schema.String,\n cause: Schema.String,\n}) {\n message = `Navigation to \"${this.url}\" failed: ${this.cause}`;\n}\n\nexport class RecorderInjectionError extends Schema.ErrorClass<RecorderInjectionError>(\n \"RecorderInjectionError\",\n)({\n _tag: Schema.tag(\"RecorderInjectionError\"),\n cause: Schema.String,\n}) {\n message = `Failed to inject rrweb recorder: ${this.cause}`;\n}\n\nexport class SessionLoadError extends Schema.ErrorClass<SessionLoadError>(\"SessionLoadError\")({\n _tag: Schema.tag(\"SessionLoadError\"),\n path: Schema.String,\n cause: Schema.String,\n}) {\n message = `Failed to load session from ${this.path}: ${this.cause}`;\n}\n\nexport class CdpDiscoveryError extends Schema.ErrorClass<CdpDiscoveryError>(\"CdpDiscoveryError\")({\n _tag: Schema.tag(\"CdpDiscoveryError\"),\n cause: Schema.String,\n}) {\n message = `CDP discovery failed: ${this.cause}`;\n}\n\nexport class CdpConnectionError extends Schema.ErrorClass<CdpConnectionError>(\"CdpConnectionError\")(\n {\n _tag: Schema.tag(\"CdpConnectionError\"),\n endpointUrl: Schema.String,\n cause: Schema.String,\n },\n) {\n message = `Failed to connect to CDP endpoint ${this.endpointUrl}: ${this.cause}`;\n}\n\nexport type ActionError =\n | RefAmbiguousError\n | RefBlockedError\n | RefNotVisibleError\n | ActionTimeoutError\n | ActionUnknownError;\n","import {\n ActionTimeoutError,\n ActionUnknownError,\n RefAmbiguousError,\n RefBlockedError,\n RefNotVisibleError,\n} from \"../errors\";\nimport type { ActionError } from \"../errors\";\n\n// HACK: Playwright only exports `errors.TimeoutError` publicly. All other failure\n// modes are thrown as plain `Error` with descriptive messages — internal classes\n// like `NonRecoverableDOMError` are serialized away by the client/server protocol\n// boundary (client/connection.ts:172-173 calls parseError → rewriteErrorMessage),\n// so consumers can only pattern-match on message strings.\n//\n// Complete list of error messages thrown by Playwright (@ ef45dd4):\n//\n// ── TimeoutError (server/progress.ts:100) ──────────────────────────────────────\n// \"Timeout {N}ms exceeded.\"\n// + appended call log via formatCallLog (client/connection.ts:345-351):\n// \"Call log:\\n waiting for locator(...) to be visible\\n element is not visible\"\n//\n// ── Strict mode (injected/injectedScript.ts:1258) ──────────────────────────────\n// \"strict mode violation: locator(...) resolved to {N} elements:\\n ...\"\n//\n// ── NonRecoverableDOMError (server/dom.ts) ──────────────────────────────────────\n// \"Element is not visible\" (line 322)\n// \"Element is outside of the viewport\" (line 328)\n// \"Did not find some options\" (line 334)\n// \"Option being selected is not enabled\" (line 340)\n// \"{desc} intercepts pointer events\" (line 346)\n// \"Element is not {state}\" (state = stable|enabled|editable|visible) (line 352)\n// \"Cannot uncheck radio button. Radio buttons can only be unchecked\n// by selecting another radio button in the same group.\" (line 750)\n// \"Clicking the checkbox did not change its state\" (line 758)\n// \"Element(s) not found\" (frames.ts:1115,1139)\n// \"Element is not attached to the DOM\" (frames.ts:1149)\n//\n// ── createStacklessError (injected/injectedScript.ts) ──────────────────────────\n// 'Unknown engine \"{name}\" while parsing selector {sel}' (line 262)\n// \"Can only capture aria snapshot of Element nodes.\" (line 311)\n// \"Can't query n-th element in a request with the capture.\" (line 338)\n// \"Node is not queryable.\" (line 349)\n// \"Internal error: there should not be a capture in the selector.\" (line 353)\n// \"Expected a Node but got {type}\" (line 396)\n// \"Element is not an <input>, <textarea>, <select> or [contenteditable]\n// and does not have a role allowing [aria-readonly]\" (line 745)\n// \"Not a checkbox or radio button\" (line 756,768)\n// 'Unexpected element state \"{state}\"' (line 774)\n// \"Element is not a <select> element\" (line 782)\n// 'Input of type \"{type}\" cannot be filled' (line 834)\n// \"Cannot type text into input[type=number]\" (line 838)\n// \"Malformed value\" (line 847)\n// \"Element is not an <input>, <textarea> or [contenteditable] element\" (line 855)\n// \"Node is not an element\" (line 899,927)\n// \"Element is not connected\" (line 1481)\n// \"Not a select element with a multiple attribute\" (line 1514)\n// 'Expected text is not provided for {expr}' (line 1543,1589)\n// \"Not an input element\" (line 1565)\n// 'Unknown expect matcher: {expr}' (line 1575,1606)\n// \"Node is not an HTMLElement\" (frames.ts:1254)\n// \"Node is not an <input>, <textarea> or <select> element\" (frames.ts:1271)\n//\n// ── Plain Error (server/frames.ts) ──────────────────────────────────────────────\n// \"Element is not attached to the DOM\" (dom.ts:881)\n// \"Frame is currently attempting a navigation\" (frames.ts:549)\n// \"Open JavaScript dialog prevents evaluation\" (frames.ts:551)\n// 'Failed to find element matching selector \"{sel}\"' (frames.ts:836)\n// \"The page does not support tap.\" (frames.ts:1201)\n// 'No element matching {sel}' (frames.ts:1220)\n\nconst ELEMENT_COUNT_REGEX = /resolved to (\\d+) elements/;\nconst TIMEOUT_REGEX = /Timeout \\d+ms exceeded/;\n\nconst AMBIGUOUS_PATTERNS = [\"strict mode violation\"] as const;\n\nconst BLOCKED_PATTERNS = [\"intercepts pointer events\"] as const;\n\nconst NOT_VISIBLE_PATTERNS = [\n \"Element is not visible\",\n \"Element is outside of the viewport\",\n \"element is not visible\",\n \"element is outside of the viewport\",\n \"to be visible\",\n \"Element is not stable\",\n \"element is not stable\",\n \"Element(s) not found\",\n \"Element is not attached to the DOM\",\n \"Element is not connected\",\n \"No element matching\",\n \"Failed to find element matching selector\",\n \"not attached\",\n] as const;\n\nconst matchesAny = (message: string, patterns: readonly string[]): boolean =>\n patterns.some((pattern) => message.includes(pattern));\n\nexport const toActionError = (error: unknown, ref: string): ActionError => {\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n if (matchesAny(errorMessage, AMBIGUOUS_PATTERNS)) {\n const countMatch = ELEMENT_COUNT_REGEX.exec(errorMessage);\n return new RefAmbiguousError({ matchCount: countMatch ? countMatch[1] : \"multiple\", ref });\n }\n\n if (matchesAny(errorMessage, BLOCKED_PATTERNS)) {\n return new RefBlockedError({ ref });\n }\n\n if (matchesAny(errorMessage, NOT_VISIBLE_PATTERNS)) {\n return new RefNotVisibleError({ ref });\n }\n\n if (TIMEOUT_REGEX.test(errorMessage)) {\n return new ActionTimeoutError({ ref });\n }\n\n return new ActionUnknownError({ ref, cause: errorMessage });\n};\n","const INDENT_SIZE = 2;\n\nexport const getIndentLevel = (line: string): number => {\n let spaces = 0;\n while (spaces < line.length && line[spaces] === \" \") spaces++;\n return Math.floor(spaces / INDENT_SIZE);\n};\n","import { getIndentLevel } from \"./get-indent-level\";\n\nconst REF_MARKER = \"[ref=\";\n\nconst isContentLine = (line: string): boolean =>\n line.includes(REF_MARKER) || (line.includes(\":\") && !line.endsWith(\":\"));\n\nexport const compactTree = (tree: string): string => {\n const lines = tree.split(\"\\n\");\n const indents = lines.map(getIndentLevel);\n const retained = new Array<boolean>(lines.length).fill(false);\n const parentStack: number[] = [];\n\n for (let index = lines.length - 1; index >= 0; index--) {\n if (!isContentLine(lines[index])) continue;\n\n retained[index] = true;\n\n parentStack.length = 0;\n for (let ancestor = index - 1; ancestor >= 0; ancestor--) {\n if (indents[ancestor] >= indents[index]) continue;\n if (retained[ancestor]) break;\n retained[ancestor] = true;\n parentStack.push(ancestor);\n }\n }\n\n return lines.filter((_, index) => retained[index]).join(\"\\n\");\n};\n","import type { Locator, Page } from \"playwright\";\nimport type { AriaRole, RefEntry } from \"../types\";\n\n// HACK: role is `string` throughout the ref system because it comes from Playwright's\n// aria snapshot output. This is the only place we narrow it back for `getByRole`.\nexport const resolveLocator = (page: Page, entry: RefEntry): Locator => {\n if (entry.selector) return page.locator(entry.selector);\n const locator = page.getByRole(entry.role as AriaRole, { name: entry.name, exact: true });\n return entry.nth !== undefined ? locator.nth(entry.nth) : locator;\n};\n","import { Effect } from \"effect\";\nimport type { Page } from \"playwright\";\nimport { RefNotFoundError } from \"../errors\";\nimport type { RefMap } from \"../types\";\nimport { resolveLocator } from \"./resolve-locator\";\n\nexport const createLocator = (page: Page, refs: RefMap) =>\n Effect.fn(\"Browser.resolveRef\")(function* (ref: string) {\n const entry = refs[ref];\n if (!entry) {\n return yield* new RefNotFoundError({ ref, availableRefs: Object.keys(refs) });\n }\n return resolveLocator(page, entry);\n });\n","import type { Page } from \"playwright\";\nimport { Effect } from \"effect\";\nimport type { ExpectRuntime } from \"../generated/runtime-types\";\n\n// HACK: page.evaluate erases types across the serialization boundary; casts are confined here\nexport const evaluateRuntime = <K extends keyof ExpectRuntime>(\n page: Page,\n method: K,\n ...args: Parameters<ExpectRuntime[K]>\n) =>\n Effect.promise(\n () =>\n page.evaluate(\n ({ method, args }: { method: string; args: unknown[] }) => {\n const runtime = Reflect.get(globalThis, \"__EXPECT_RUNTIME__\");\n if (!runtime || typeof runtime !== \"object\") {\n throw new Error(\"Browser runtime is not initialized\");\n }\n\n const fn = Reflect.get(runtime, method);\n if (typeof fn !== \"function\") {\n throw new Error(`Browser runtime method not found: ${method}`);\n }\n\n return fn(...args);\n },\n { method, args: args as unknown[] },\n ) as Promise<ReturnType<ExpectRuntime[K]>>,\n );\n","import { Effect } from \"effect\";\nimport {\n INTERACTIVE_ROLES,\n MAX_CURSOR_INTERACTIVE_ELEMENTS,\n MAX_ELEMENT_TEXT_LENGTH,\n} from \"../constants\";\nimport type { Page } from \"playwright\";\nimport { evaluateRuntime } from \"./evaluate-runtime\";\n\nconst INTERACTIVE_HTML_TAGS = [\"a\", \"button\", \"input\", \"select\", \"textarea\", \"details\", \"summary\"];\n\nexport const findCursorInteractive = Effect.fn(\"findCursorInteractive\")(function* (\n page: Page,\n rootSelector?: string,\n) {\n return yield* evaluateRuntime(\n page,\n \"findCursorInteractiveElements\",\n rootSelector || \"body\",\n MAX_ELEMENT_TEXT_LENGTH,\n [...INTERACTIVE_ROLES],\n INTERACTIVE_HTML_TAGS,\n MAX_CURSOR_INTERACTIVE_ELEMENTS,\n );\n});\n","import { Option } from \"effect\";\nimport { EXCLUDED_ARIA_ROLE } from \"../constants\";\n\nexport interface ParsedAriaLine {\n role: string;\n name: string;\n}\n\nconst ARIA_LINE_REGEX = /- (\\w+)\\s*(?:\"((?:[^\"\\\\]|\\\\.)*)\")?/;\n\nexport const parseAriaLine = (line: string): Option.Option<ParsedAriaLine> => {\n const match = ARIA_LINE_REGEX.exec(line);\n if (!match) return Option.none();\n\n const role = match[1];\n if (role === EXCLUDED_ARIA_ROLE) return Option.none();\n\n const name = match[2]?.replace(/\\\\(.)/g, \"$1\") ?? \"\";\n return Option.some({ role, name });\n};\n","import type { RefMap } from \"../types\";\n\nconst groupKey = (role: string, name: string): string => `${role}|${name}`;\n\nexport const resolveNthDuplicates = (refs: RefMap): void => {\n const groups = new Map<string, string[]>();\n\n for (const [ref, entry] of Object.entries(refs)) {\n const key = groupKey(entry.role, entry.name);\n const existing = groups.get(key);\n if (existing) existing.push(ref);\n else groups.set(key, [ref]);\n }\n\n for (const refIds of groups.values()) {\n if (refIds.length <= 1) continue;\n for (let nthIndex = 0; nthIndex < refIds.length; nthIndex++) {\n refs[refIds[nthIndex]].nth = nthIndex;\n }\n }\n};\n","import { ESTIMATED_CHARS_PER_TOKEN, INTERACTIVE_ROLES } from \"../constants\";\nimport type { RefMap, SnapshotStats } from \"../types\";\nimport type { ScrollContainerResult } from \"../runtime/scroll-detection\";\n\nexport const computeSnapshotStats = (\n tree: string,\n refs: RefMap,\n scrollContainers?: ScrollContainerResult[],\n): SnapshotStats => {\n const entries = Object.values(refs);\n const lines = tree.split(\"\\n\").length;\n const hasScrollFiltering = scrollContainers !== undefined && scrollContainers.length > 0;\n const totalHidden = hasScrollFiltering\n ? scrollContainers.reduce(\n (sum, container) => sum + container.hiddenAbove + container.hiddenBelow,\n 0,\n )\n : 0;\n\n return {\n lines,\n characters: tree.length,\n estimatedTokens: Math.ceil(tree.length / ESTIMATED_CHARS_PER_TOKEN),\n totalRefs: entries.length,\n interactiveRefs: entries.filter((entry) => INTERACTIVE_ROLES.has(entry.role)).length,\n ...(hasScrollFiltering && { totalNodes: lines + totalHidden, visibleNodes: lines }),\n };\n};\n","export const RUNTIME_SCRIPT = \"\\\"use strict\\\";var __EXPECT_RUNTIME__=(()=>{var Cr=Object.defineProperty;var wa=Object.getOwnPropertyDescriptor;var ba=Object.getOwnPropertyNames;var Sa=Object.prototype.hasOwnProperty;var va=(s,e)=>{for(var t in e)Cr(s,t,{get:e[t],enumerable:!0})},Ca=(s,e,t,r)=>{if(e&&typeof e==\\\"object\\\"||typeof e==\\\"function\\\")for(let i of ba(e))!Sa.call(s,i)&&i!==t&&Cr(s,i,{get:()=>e[i],enumerable:!(r=wa(e,i))||r.enumerable});return s};var Ea=s=>Ca(Cr({},\\\"__esModule\\\",{value:!0}),s);var sd={};va(sd,{findCursorInteractiveElements:()=>di,getAllEvents:()=>ca,getEventCount:()=>ha,getEvents:()=>ua,getPerformanceMetrics:()=>Er,getPerformanceTrace:()=>ni,injectOverlayLabels:()=>hi,prepareViewportSnapshot:()=>ma,removeOverlay:()=>fi,restoreViewportSnapshot:()=>ga,startRecording:()=>aa,stopRecording:()=>la});var ae={fcp:null,lcp:null,cls:0,interactionDurations:new Map,loafEntries:[]},Ia={FCP:[1800,3e3],LCP:[2500,4e3],CLS:[.1,.25],INP:[200,500]},xa=(s,e)=>{let t=Ia[s];return t?e<t[0]?\\\"good\\\":e<t[1]?\\\"needs-improvement\\\":\\\"poor\\\":\\\"unknown\\\"};try{new PerformanceObserver(s=>{for(let e of s.getEntries())e.name===\\\"first-contentful-paint\\\"&&(ae.fcp=e.startTime)}).observe({type:\\\"paint\\\",buffered:!0})}catch{}try{new PerformanceObserver(s=>{for(let e of s.getEntries())ae.lcp=e.startTime}).observe({type:\\\"largest-contentful-paint\\\",buffered:!0})}catch{}try{new PerformanceObserver(s=>{for(let e of s.getEntries()){let{interactionId:t}=e;if(t&&t>0){let r=ae.interactionDurations.get(t)??0;ae.interactionDurations.set(t,Math.max(r,e.duration))}}}).observe({type:\\\"event\\\",buffered:!0,durationThreshold:16})}catch{}try{let s=[];new PerformanceObserver(e=>{for(let o of e.getEntries()){let l=o;l.hadRecentInput||s.push(l)}let t=0,r=0,i=0,n=0;for(let o of s)(o.startTime-n>1e3||o.startTime-i>5e3)&&(r=0,i=o.startTime),r+=o.value,n=o.startTime+o.duration,r>t&&(t=r);ae.cls=t}).observe({type:\\\"layout-shift\\\",buffered:!0})}catch{}try{typeof PerformanceObserver<\\\"u\\\"&&PerformanceObserver.supportedEntryTypes.includes(\\\"long-animation-frame\\\")&&new PerformanceObserver(s=>{for(let e of s.getEntries()){let t=e;ae.loafEntries.push({startTime:t.startTime,duration:t.duration,blockingDuration:t.blockingDuration,renderStart:t.renderStart,styleAndLayoutStart:t.styleAndLayoutStart,firstUIEventTimestamp:t.firstUIEventTimestamp,scripts:t.scripts.map(r=>({invokerType:r.invokerType,invoker:r.invoker,sourceURL:r.sourceURL,sourceFunctionName:r.sourceFunctionName,sourceCharPosition:r.sourceCharPosition,duration:r.duration,forcedStyleAndLayoutDuration:r.forcedStyleAndLayoutDuration}))}),ae.loafEntries.length>50&&ae.loafEntries.shift()}}).observe({type:\\\"long-animation-frame\\\",buffered:!0})}catch{}var pt=(s,e)=>e===null?null:{value:s===\\\"CLS\\\"?Math.round(e*1e3)/1e3:Math.round(e),rating:xa(s,e)},Er=()=>{let{fcp:s,lcp:e,cls:t,interactionDurations:r}=ae,i=null;return r.size>0&&(i=[...r.values()].sort((o,l)=>l-o)[0]),{fcp:pt(\\\"FCP\\\",s),lcp:pt(\\\"LCP\\\",e),cls:pt(\\\"CLS\\\",t),inp:pt(\\\"INP\\\",i)}},ni=()=>{let s=Er(),e=null;try{let r=performance.getEntriesByType(\\\"navigation\\\");if(r.length>0){let i=r[0];e={ttfb:Math.round(i.responseStart-i.requestStart),domContentLoaded:Math.round(i.domContentLoadedEventEnd-i.startTime),loadComplete:Math.round(i.loadEventEnd-i.startTime),redirectDuration:Math.round(i.redirectEnd-i.redirectStart),serverTiming:(i.serverTiming??[]).map(n=>({name:n.name,duration:n.duration,description:n.description}))}}}catch{}let t={totalCount:0,totalTransferSizeBytes:0,slowest:[],largest:[]};try{let i=performance.getEntriesByType(\\\"resource\\\").map(a=>({name:a.name,initiatorType:a.initiatorType,transferSize:a.transferSize,duration:Math.round(a.duration)})),n=i.reduce((a,u)=>a+u.transferSize,0),o=[...i].sort((a,u)=>u.duration-a.duration).slice(0,10),l=[...i].sort((a,u)=>u.transferSize-a.transferSize).slice(0,10);t={totalCount:i.length,totalTransferSizeBytes:n,slowest:o,largest:l}}catch{}return{webVitals:s,navigation:e,longAnimationFrames:[...ae.loafEntries],resources:t}};var Ma=new Set([\\\"role\\\",\\\"name\\\",\\\"aria-label\\\",\\\"rel\\\",\\\"href\\\"]);function Na(s,e){let t=Ma.has(s);t||(t=s.startsWith(\\\"data-\\\")&&Be(s));let r=Be(e)&&e.length<100;return r||(r=e.startsWith(\\\"#\\\")&&Be(e.slice(1))),t&&r}function Ra(s){return Be(s)}function Aa(s){return Be(s)}function Oa(s){return!0}function ai(s,e){if(s.nodeType!==Node.ELEMENT_NODE)throw new Error(\\\"Can't generate CSS selector for non-element node type.\\\");if(s.tagName.toLowerCase()===\\\"html\\\")return\\\"html\\\";let t={root:document.body,idName:Ra,className:Aa,tagName:Oa,attr:Na,timeoutMs:1e3,seedMinLength:3,optimizedMinLength:2,maxNumberOfPathChecks:1/0},r=new Date,i={...t,...e},n=La(i.root,t),o,l=0;for(let u of Ta(s,i,n)){if(new Date().getTime()-r.getTime()>i.timeoutMs||l>=i.maxNumberOfPathChecks){let h=_a(s,n);if(!h)throw new Error(`Timeout: Can't find a unique selector after ${i.timeoutMs}ms`);return We(h)}if(l++,Mr(u,n)){o=u;break}}if(!o)throw new Error(\\\"Selector was not found.\\\");let a=[...ci(o,s,i,n,r)];return a.sort(Ir),a.length>0?We(a[0]):We(o)}function*Ta(s,e,t){let r=[],i=[],n=s,o=0;for(;n&&n!==t;){let l=Da(n,e);for(let a of l)a.level=o;if(r.push(l),n=n.parentElement,o++,i.push(...ui(r)),o>=e.seedMinLength){i.sort(Ir);for(let a of i)yield a;i=[]}}i.sort(Ir);for(let l of i)yield l}function Be(s){if(/^[a-z\\\\-]{3,}$/i.test(s)){let e=s.split(/-|[A-Z]/);for(let t of e)if(t.length<=2||/[^aeiou]{4,}/i.test(t))return!1;return!0}return!1}function Da(s,e){let t=[],r=s.getAttribute(\\\"id\\\");r&&e.idName(r)&&t.push({name:\\\"#\\\"+CSS.escape(r),penalty:0});for(let o=0;o<s.classList.length;o++){let l=s.classList[o];e.className(l)&&t.push({name:\\\".\\\"+CSS.escape(l),penalty:1})}for(let o=0;o<s.attributes.length;o++){let l=s.attributes[o];e.attr(l.name,l.value)&&t.push({name:`[${CSS.escape(l.name)}=\\\"${CSS.escape(l.value)}\\\"]`,penalty:2})}let i=s.tagName.toLowerCase();if(e.tagName(i)){t.push({name:i,penalty:5});let o=xr(s,i);o!==void 0&&t.push({name:li(i,o),penalty:10})}let n=xr(s);return n!==void 0&&t.push({name:Pa(i,n),penalty:50}),t}function We(s){let e=s[0],t=e.name;for(let r=1;r<s.length;r++){let i=s[r].level||0;e.level===i-1?t=`${s[r].name} > ${t}`:t=`${s[r].name} ${t}`,e=s[r]}return t}function oi(s){return s.map(e=>e.penalty).reduce((e,t)=>e+t,0)}function Ir(s,e){return oi(s)-oi(e)}function xr(s,e){let t=s.parentNode;if(!t)return;let r=t.firstChild;if(!r)return;let i=0;for(;r&&(r.nodeType===Node.ELEMENT_NODE&&(e===void 0||r.tagName.toLowerCase()===e)&&i++,r!==s);)r=r.nextSibling;return i}function _a(s,e){let t=0,r=s,i=[];for(;r&&r!==e;){let n=r.tagName.toLowerCase(),o=xr(r,n);if(o===void 0)return;i.push({name:li(n,o),penalty:NaN,level:t}),r=r.parentElement,t++}if(Mr(i,e))return i}function Pa(s,e){return s===\\\"html\\\"?\\\"html\\\":`${s}:nth-child(${e})`}function li(s,e){return s===\\\"html\\\"?\\\"html\\\":`${s}:nth-of-type(${e})`}function*ui(s,e=[]){if(s.length>0)for(let t of s[0])yield*ui(s.slice(1,s.length),e.concat(t));else yield e}function La(s,e){return s.nodeType===Node.DOCUMENT_NODE?s:s===e.root?s.ownerDocument:s}function Mr(s,e){let t=We(s);switch(e.querySelectorAll(t).length){case 0:throw new Error(`Can't select any node with this selector: ${t}`);case 1:return!0;default:return!1}}function*ci(s,e,t,r,i){if(s.length>2&&s.length>t.optimizedMinLength)for(let n=1;n<s.length-1;n++){if(new Date().getTime()-i.getTime()>t.timeoutMs)return;let l=[...s];l.splice(n,1),Mr(l,r)&&r.querySelector(We(l))===e&&(yield l,yield*ci(l,e,t,r,i))}}var hi=(s,e)=>{let t=document.createElement(\\\"div\\\");t.id=s,t.style.position=\\\"absolute\\\",t.style.top=\\\"0\\\",t.style.left=\\\"0\\\",t.style.zIndex=\\\"2147483647\\\",t.style.pointerEvents=\\\"none\\\";for(let r of e){let i=document.createElement(\\\"div\\\");i.textContent=`[${r.label}]`,i.style.position=\\\"absolute\\\",i.style.left=`${r.x}px`,i.style.top=`${r.y}px`,i.style.background=\\\"rgba(255, 0, 0, 0.85)\\\",i.style.color=\\\"white\\\",i.style.fontSize=\\\"11px\\\",i.style.fontFamily=\\\"monospace\\\",i.style.fontWeight=\\\"bold\\\",i.style.padding=\\\"1px 3px\\\",i.style.borderRadius=\\\"3px\\\",i.style.lineHeight=\\\"1.2\\\",i.style.whiteSpace=\\\"nowrap\\\",t.appendChild(i)}document.body.appendChild(t)},fi=s=>{document.getElementById(s)?.remove()},di=(s,e,t,r,i)=>{let n=new Set(t),o=new Set(r),l=document.querySelector(s)||document.body,a=l.querySelectorAll(\\\"*\\\"),u=[];for(let c of a){let h=c.tagName.toLowerCase();if(o.has(h))continue;let p=c.getAttribute(\\\"role\\\");if(p&&n.has(p.toLowerCase()))continue;let m=getComputedStyle(c).cursor===\\\"pointer\\\",d=c.hasAttribute(\\\"onclick\\\")||c instanceof HTMLElement&&c.onclick!==null,f=c.getAttribute(\\\"tabindex\\\"),b=f!==null&&f!==\\\"-1\\\";if(!m&&!d&&!b)continue;if(m&&!d&&!b){let N=c.parentElement;if(N&&getComputedStyle(N).cursor===\\\"pointer\\\")continue}let S=(c.textContent||\\\"\\\").trim().slice(0,e);if(!S)continue;let y=c.getBoundingClientRect();if(y.width===0||y.height===0)continue;let v=[];if(m&&v.push(\\\"cursor:pointer\\\"),d&&v.push(\\\"onclick\\\"),b&&v.push(\\\"tabindex\\\"),u.push({selector:ai(c,{root:l}),text:S,reason:v.join(\\\", \\\")}),u.length>=i)break}return u};var ka=Object.defineProperty,$a=(s,e,t)=>e in s?ka(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,w=(s,e,t)=>$a(s,typeof e!=\\\"symbol\\\"?e+\\\"\\\":e,t),pi,Fa=Object.defineProperty,Ua=(s,e,t)=>e in s?Fa(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,mi=(s,e,t)=>Ua(s,typeof e!=\\\"symbol\\\"?e+\\\"\\\":e,t),j=(s=>(s[s.Document=0]=\\\"Document\\\",s[s.DocumentType=1]=\\\"DocumentType\\\",s[s.Element=2]=\\\"Element\\\",s[s.Text=3]=\\\"Text\\\",s[s.CDATA=4]=\\\"CDATA\\\",s[s.Comment=5]=\\\"Comment\\\",s))(j||{}),gi={Node:[\\\"childNodes\\\",\\\"parentNode\\\",\\\"parentElement\\\",\\\"textContent\\\",\\\"ownerDocument\\\"],ShadowRoot:[\\\"host\\\",\\\"styleSheets\\\"],Element:[\\\"shadowRoot\\\",\\\"querySelector\\\",\\\"querySelectorAll\\\"],MutationObserver:[]},yi={Node:[\\\"contains\\\",\\\"getRootNode\\\"],ShadowRoot:[\\\"getSelection\\\"],Element:[],MutationObserver:[\\\"constructor\\\"]},mt={},Ba=()=>!!globalThis.Zone;function Os(s){if(mt[s])return mt[s];let e=globalThis[s],t=e.prototype,r=s in gi?gi[s]:void 0,i=!!(r&&r.every(l=>{var a,u;return!!((u=(a=Object.getOwnPropertyDescriptor(t,l))==null?void 0:a.get)!=null&&u.toString().includes(\\\"[native code]\\\"))})),n=s in yi?yi[s]:void 0,o=!!(n&&n.every(l=>{var a;return typeof t[l]==\\\"function\\\"&&((a=t[l])==null?void 0:a.toString().includes(\\\"[native code]\\\"))}));if(i&&o&&!Ba())return mt[s]=e.prototype,e.prototype;try{let l=document.createElement(\\\"iframe\\\");document.body.appendChild(l);let a=l.contentWindow;if(!a)return e.prototype;let u=a[s].prototype;return document.body.removeChild(l),u?mt[s]=u:t}catch{return t}}var Nr={};function de(s,e,t){var r;let i=`${s}.${String(t)}`;if(Nr[i])return Nr[i].call(e);let n=Os(s),o=(r=Object.getOwnPropertyDescriptor(n,t))==null?void 0:r.get;return o?(Nr[i]=o,o.call(e)):e[t]}var Rr={};function dn(s,e,t){let r=`${s}.${String(t)}`;if(Rr[r])return Rr[r].bind(e);let n=Os(s)[t];return typeof n!=\\\"function\\\"?e[t]:(Rr[r]=n,n.bind(e))}function Wa(s){return de(\\\"Node\\\",s,\\\"ownerDocument\\\")}function za(s){return de(\\\"Node\\\",s,\\\"childNodes\\\")}function Va(s){return de(\\\"Node\\\",s,\\\"parentNode\\\")}function Ga(s){return de(\\\"Node\\\",s,\\\"parentElement\\\")}function ja(s){return de(\\\"Node\\\",s,\\\"textContent\\\")}function Ha(s,e){return dn(\\\"Node\\\",s,\\\"contains\\\")(e)}function Ya(s){return dn(\\\"Node\\\",s,\\\"getRootNode\\\")()}function Za(s){return!s||!(\\\"host\\\"in s)?null:de(\\\"ShadowRoot\\\",s,\\\"host\\\")}function Xa(s){return s.styleSheets}function Ja(s){return!s||!(\\\"shadowRoot\\\"in s)?null:de(\\\"Element\\\",s,\\\"shadowRoot\\\")}function Ka(s,e){return de(\\\"Element\\\",s,\\\"querySelector\\\")(e)}function qa(s,e){return de(\\\"Element\\\",s,\\\"querySelectorAll\\\")(e)}function Qa(){return Os(\\\"MutationObserver\\\").constructor}function el(s,e,t){try{if(!(e in s))return()=>{};let r=s[e],i=t(r);return typeof i==\\\"function\\\"&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:r}})),s[e]=i,()=>{s[e]=r}}catch{return()=>{}}}var Y={ownerDocument:Wa,childNodes:za,parentNode:Va,parentElement:Ga,textContent:ja,contains:Ha,getRootNode:Ya,host:Za,styleSheets:Xa,shadowRoot:Ja,querySelector:Ka,querySelectorAll:qa,mutationObserver:Qa,patch:el};function pn(s){return s.nodeType===s.ELEMENT_NODE}function Ye(s){let e=s&&\\\"host\\\"in s&&\\\"mode\\\"in s&&Y.host(s)||null;return!!(e&&\\\"shadowRoot\\\"in e&&Y.shadowRoot(e)===s)}function Ze(s){return Object.prototype.toString.call(s)===\\\"[object ShadowRoot]\\\"}function tl(s){return s.includes(\\\" background-clip: text;\\\")&&!s.includes(\\\" -webkit-background-clip: text;\\\")&&(s=s.replace(/\\\\sbackground-clip:\\\\s*text;/g,\\\" -webkit-background-clip: text; background-clip: text;\\\")),s}function rl(s){let{cssText:e}=s;if(e.split('\\\"').length<3)return e;let t=[\\\"@import\\\",`url(${JSON.stringify(s.href)})`];return s.layerName===\\\"\\\"?t.push(\\\"layer\\\"):s.layerName&&t.push(`layer(${s.layerName})`),s.supportsText&&t.push(`supports(${s.supportsText})`),s.media.length&&t.push(s.media.mediaText),t.join(\\\" \\\")+\\\";\\\"}function Wr(s){try{let e=s.rules||s.cssRules;if(!e)return null;let t=s.href;!t&&s.ownerNode&&(t=s.ownerNode.baseURI);let r=Array.from(e,i=>mn(i,t)).join(\\\"\\\");return tl(r)}catch{return null}}function mn(s,e){if(il(s)){let t;try{t=Wr(s.styleSheet)||rl(s)}catch{t=s.cssText}return s.styleSheet.href?Yt(t,s.styleSheet.href):t}else{let t=s.cssText;return nl(s)&&s.selectorText.includes(\\\":\\\")&&(t=sl(t)),e?Yt(t,e):t}}function sl(s){let e=/(\\\\[(?:[\\\\w-]+)[^\\\\\\\\])(:(?:[\\\\w-]+)\\\\])/gm;return s.replace(e,\\\"$1\\\\\\\\$2\\\")}function il(s){return\\\"styleSheet\\\"in s}function nl(s){return\\\"selectorText\\\"in s}var Gt=class{constructor(){mi(this,\\\"idNodeMap\\\",new Map),mi(this,\\\"nodeMetaMap\\\",new WeakMap)}getId(e){var t;return e?((t=this.getMeta(e))==null?void 0:t.id)??-1:-1}getNode(e){return this.idNodeMap.get(e)||null}getIds(){return Array.from(this.idNodeMap.keys())}getMeta(e){return this.nodeMetaMap.get(e)||null}removeNodeFromMap(e){let t=this.getId(e);this.idNodeMap.delete(t),e.childNodes&&e.childNodes.forEach(r=>this.removeNodeFromMap(r))}has(e){return this.idNodeMap.has(e)}hasNode(e){return this.nodeMetaMap.has(e)}add(e,t){let r=t.id;this.idNodeMap.set(r,e),this.nodeMetaMap.set(e,t)}replace(e,t){let r=this.getNode(e);if(r){let i=this.nodeMetaMap.get(r);i&&this.nodeMetaMap.set(t,i)}this.idNodeMap.set(e,t)}reset(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap}};function ol(){return new Gt}function jt({element:s,maskInputOptions:e,tagName:t,type:r,value:i,maskInputFn:n}){let o=i||\\\"\\\",l=r&&ve(r);return(e[t.toLowerCase()]||l&&e[l])&&(n?o=n(o,s):o=\\\"*\\\".repeat(o.length)),o}function ve(s){return s.toLowerCase()}var wi=\\\"__rrweb_original__\\\";function al(s){let e=s.getContext(\\\"2d\\\");if(!e)return!0;let t=50;for(let r=0;r<s.width;r+=t)for(let i=0;i<s.height;i+=t){let n=e.getImageData,o=wi in n?n[wi]:n;if(new Uint32Array(o.call(e,r,i,Math.min(t,s.width-r),Math.min(t,s.height-i)).data.buffer).some(a=>a!==0))return!1}return!0}function Ht(s){let e=s.type;return s.hasAttribute(\\\"data-rr-is-password\\\")?\\\"password\\\":e?ve(e):null}function gn(s,e){let t;try{t=new URL(s,e??window.location.href)}catch{return null}let r=/\\\\.([0-9a-z]+)(?:$)/i,i=t.pathname.match(r);return i?.[1]??null}function ll(s){let e=\\\"\\\";return s.indexOf(\\\"//\\\")>-1?e=s.split(\\\"/\\\").slice(0,3).join(\\\"/\\\"):e=s.split(\\\"/\\\")[0],e=e.split(\\\"?\\\")[0],e}var ul=/url\\\\((?:(')([^']*)'|(\\\")(.*?)\\\"|([^)]*))\\\\)/gm,cl=/^(?:[a-z+]+:)?\\\\/\\\\//i,hl=/^www\\\\..*/i,fl=/^(data:)([^,]*),(.*)/i;function Yt(s,e){return(s||\\\"\\\").replace(ul,(t,r,i,n,o,l)=>{let a=i||o||l,u=r||n||\\\"\\\";if(!a)return t;if(cl.test(a)||hl.test(a))return`url(${u}${a}${u})`;if(fl.test(a))return`url(${u}${a}${u})`;if(a[0]===\\\"/\\\")return`url(${u}${ll(e)+a}${u})`;let c=e.split(\\\"/\\\"),h=a.split(\\\"/\\\");c.pop();for(let p of h)p!==\\\".\\\"&&(p===\\\"..\\\"?c.pop():c.push(p));return`url(${u}${c.join(\\\"/\\\")}${u})`})}function gt(s,e=!1){return e?s.replace(/(\\\\/\\\\*[^*]*\\\\*\\\\/)|[\\\\s;]/g,\\\"\\\"):s.replace(/(\\\\/\\\\*[^*]*\\\\*\\\\/)|[\\\\s;]/g,\\\"\\\").replace(/0px/g,\\\"0\\\")}function dl(s,e,t=!1){let r=Array.from(e.childNodes),i=[],n=0;if(r.length>1&&s&&typeof s==\\\"string\\\"){let o=gt(s,t),l=o.length/s.length;for(let a=1;a<r.length;a++)if(r[a].textContent&&typeof r[a].textContent==\\\"string\\\"){let u=gt(r[a].textContent,t),c=100,h=3;for(;h<u.length&&(u[h].match(/[a-zA-Z0-9]/)||u.indexOf(u.substring(0,h),1)!==-1);h++);for(;h<u.length;h++){let p=u.substring(0,h),g=o.split(p),m=-1;if(g.length===2)m=g[0].length;else if(g.length>2&&g[0]===\\\"\\\"&&r[a-1].textContent!==\\\"\\\")m=o.indexOf(p,1);else if(g.length===1){if(p=p.substring(0,p.length-1),g=o.split(p),g.length<=1)return i.push(s),i;h=c+1}else h===u.length-1&&(m=o.indexOf(p));if(g.length>=2&&h>c){let d=r[a-1].textContent;if(d&&typeof d==\\\"string\\\"){let f=gt(d).length;m=o.indexOf(p,f)}m===-1&&(m=g[0].length)}if(m!==-1){let d=Math.floor(m/l);for(;d>0&&d<s.length;){if(n+=1,n>50*r.length)return i.push(s),i;let f=gt(s.substring(0,d),t);if(f.length===m){i.push(s.substring(0,d)),s=s.substring(d),o=o.substring(m);break}else f.length<m?d+=Math.max(1,Math.floor((m-f.length)/l)):d-=Math.max(1,Math.floor((f.length-m)*l))}break}}}}return i.push(s),i}function pl(s,e){return dl(s,e).join(\\\"/* rr_split */\\\")}var ml=1,gl=new RegExp(\\\"[^a-z0-9-_:]\\\"),Je=-2;function yn(){return ml++}function yl(s){if(s instanceof HTMLFormElement)return\\\"form\\\";let e=ve(s.tagName);return gl.test(e)?\\\"div\\\":e}var xe,bi,wl=/^[^ \\\\t\\\\n\\\\r\\\\u000c]+/,bl=/^[, \\\\t\\\\n\\\\r\\\\u000c]+/;function Sl(s,e){if(e.trim()===\\\"\\\")return e;let t=0;function r(n){let o,l=n.exec(e.substring(t));return l?(o=l[0],t+=o.length,o):\\\"\\\"}let i=[];for(;r(bl),!(t>=e.length);){let n=r(wl);if(n.slice(-1)===\\\",\\\")n=Re(s,n.substring(0,n.length-1)),i.push(n);else{let o=\\\"\\\";n=Re(s,n);let l=!1;for(;;){let a=e.charAt(t);if(a===\\\"\\\"){i.push((n+o).trim());break}else if(l)a===\\\")\\\"&&(l=!1);else if(a===\\\",\\\"){t+=1,i.push((n+o).trim());break}else a===\\\"(\\\"&&(l=!0);o+=a,t+=1}}}return i.join(\\\", \\\")}var Si=new WeakMap;function Re(s,e){return!e||e.trim()===\\\"\\\"?e:Ts(s,e)}function vl(s){return!!(s.tagName===\\\"svg\\\"||s.ownerSVGElement)}function Ts(s,e){let t=Si.get(s);if(t||(t=s.createElement(\\\"a\\\"),Si.set(s,t)),!e)e=\\\"\\\";else if(e.startsWith(\\\"blob:\\\")||e.startsWith(\\\"data:\\\"))return e;return t.setAttribute(\\\"href\\\",e),t.href}function wn(s,e,t,r){return r&&(t===\\\"src\\\"||t===\\\"href\\\"&&!(e===\\\"use\\\"&&r[0]===\\\"#\\\")||t===\\\"xlink:href\\\"&&r[0]!==\\\"#\\\"||t===\\\"background\\\"&&[\\\"table\\\",\\\"td\\\",\\\"th\\\"].includes(e)?Re(s,r):t===\\\"srcset\\\"?Sl(s,r):t===\\\"style\\\"?Yt(r,Ts(s)):e===\\\"object\\\"&&t===\\\"data\\\"?Re(s,r):r)}function bn(s,e,t){return[\\\"video\\\",\\\"audio\\\"].includes(s)&&e===\\\"autoplay\\\"}function Cl(s,e,t){try{if(typeof e==\\\"string\\\"){if(s.classList.contains(e))return!0}else for(let r=s.classList.length;r--;){let i=s.classList[r];if(e.test(i))return!0}if(t)return s.matches(t)}catch{}return!1}function Zt(s,e,t){if(!s)return!1;if(s.nodeType!==s.ELEMENT_NODE)return t?Zt(Y.parentNode(s),e,t):!1;for(let r=s.classList.length;r--;){let i=s.classList[r];if(e.test(i))return!0}return t?Zt(Y.parentNode(s),e,t):!1}function Sn(s,e,t,r){let i;if(pn(s)){if(i=s,!Y.childNodes(i).length)return!1}else{if(Y.parentElement(s)===null)return!1;i=Y.parentElement(s)}try{if(typeof e==\\\"string\\\"){if(r){if(i.closest(`.${e}`))return!0}else if(i.classList.contains(e))return!0}else if(Zt(i,e,r))return!0;if(t){if(r){if(i.closest(t))return!0}else if(i.matches(t))return!0}}catch{}return!1}function El(s,e,t){let r=s.contentWindow;if(!r)return;let i=!1,n;try{n=r.document.readyState}catch{return}if(n!==\\\"complete\\\"){let l=setTimeout(()=>{i||(e(),i=!0)},t);s.addEventListener(\\\"load\\\",()=>{clearTimeout(l),i=!0,e()});return}let o=\\\"about:blank\\\";if(r.location.href!==o||s.src===o||s.src===\\\"\\\")return setTimeout(e,0),s.addEventListener(\\\"load\\\",e);s.addEventListener(\\\"load\\\",e)}function Il(s,e,t){let r=!1,i;try{i=s.sheet}catch{return}if(i)return;let n=setTimeout(()=>{r||(e(),r=!0)},t);s.addEventListener(\\\"load\\\",()=>{clearTimeout(n),r=!0,e()})}function xl(s,e){let{doc:t,mirror:r,blockClass:i,blockSelector:n,needsMask:o,inlineStylesheet:l,maskInputOptions:a={},maskTextFn:u,maskInputFn:c,dataURLOptions:h={},inlineImages:p,recordCanvas:g,keepIframeSrcFn:m,newlyAddedElement:d=!1,cssCaptured:f=!1}=e,b=Ml(t,r);switch(s.nodeType){case s.DOCUMENT_NODE:return s.compatMode!==\\\"CSS1Compat\\\"?{type:j.Document,childNodes:[],compatMode:s.compatMode}:{type:j.Document,childNodes:[]};case s.DOCUMENT_TYPE_NODE:return{type:j.DocumentType,name:s.name,publicId:s.publicId,systemId:s.systemId,rootId:b};case s.ELEMENT_NODE:return Rl(s,{doc:t,blockClass:i,blockSelector:n,inlineStylesheet:l,maskInputOptions:a,maskInputFn:c,dataURLOptions:h,inlineImages:p,recordCanvas:g,keepIframeSrcFn:m,newlyAddedElement:d,rootId:b});case s.TEXT_NODE:return Nl(s,{doc:t,needsMask:o,maskTextFn:u,rootId:b,cssCaptured:f});case s.CDATA_SECTION_NODE:return{type:j.CDATA,textContent:\\\"\\\",rootId:b};case s.COMMENT_NODE:return{type:j.Comment,textContent:Y.textContent(s)||\\\"\\\",rootId:b};default:return!1}}function Ml(s,e){if(!e.hasNode(s))return;let t=e.getId(s);return t===1?void 0:t}function Nl(s,e){let{needsMask:t,maskTextFn:r,rootId:i,cssCaptured:n}=e,o=Y.parentNode(s),l=o&&o.tagName,a=\\\"\\\",u=l===\\\"STYLE\\\"?!0:void 0,c=l===\\\"SCRIPT\\\"?!0:void 0;return c?a=\\\"SCRIPT_PLACEHOLDER\\\":n||(a=Y.textContent(s),u&&a&&(a=Yt(a,Ts(e.doc)))),!u&&!c&&a&&t&&(a=r?r(a,Y.parentElement(s)):a.replace(/[\\\\S]/g,\\\"*\\\")),{type:j.Text,textContent:a||\\\"\\\",rootId:i}}function Rl(s,e){let{doc:t,blockClass:r,blockSelector:i,inlineStylesheet:n,maskInputOptions:o={},maskInputFn:l,dataURLOptions:a={},inlineImages:u,recordCanvas:c,keepIframeSrcFn:h,newlyAddedElement:p=!1,rootId:g}=e,m=Cl(s,r,i),d=yl(s),f={},b=s.attributes.length;for(let y=0;y<b;y++){let v=s.attributes[y];bn(d,v.name,v.value)||(f[v.name]=wn(t,d,ve(v.name),v.value))}if(d===\\\"link\\\"&&n){let y=Array.from(t.styleSheets).find(N=>N.href===s.href),v=null;y&&(v=Wr(y)),v&&(delete f.rel,delete f.href,f._cssText=v)}if(d===\\\"style\\\"&&s.sheet){let y=Wr(s.sheet);y&&(s.childNodes.length>1&&(y=pl(y,s)),f._cssText=y)}if([\\\"input\\\",\\\"textarea\\\",\\\"select\\\"].includes(d)){let y=s.value,v=s.checked;f.type!==\\\"radio\\\"&&f.type!==\\\"checkbox\\\"&&f.type!==\\\"submit\\\"&&f.type!==\\\"button\\\"&&y?f.value=jt({element:s,type:Ht(s),tagName:d,value:y,maskInputOptions:o,maskInputFn:l}):v&&(f.checked=v)}if(d===\\\"option\\\"&&(s.selected&&!o.select?f.selected=!0:delete f.selected),d===\\\"dialog\\\"&&s.open&&(f.rr_open_mode=s.matches(\\\"dialog:modal\\\")?\\\"modal\\\":\\\"non-modal\\\"),d===\\\"canvas\\\"&&c){if(s.__context===\\\"2d\\\")al(s)||(f.rr_dataURL=s.toDataURL(a.type,a.quality));else if(!(\\\"__context\\\"in s)){let y=s.toDataURL(a.type,a.quality),v=t.createElement(\\\"canvas\\\");v.width=s.width,v.height=s.height;let N=v.toDataURL(a.type,a.quality);y!==N&&(f.rr_dataURL=y)}}if(d===\\\"img\\\"&&u){xe||(xe=t.createElement(\\\"canvas\\\"),bi=xe.getContext(\\\"2d\\\"));let y=s,v=y.currentSrc||y.getAttribute(\\\"src\\\")||\\\"<unknown-src>\\\",N=y.crossOrigin,D=()=>{y.removeEventListener(\\\"load\\\",D);try{xe.width=y.naturalWidth,xe.height=y.naturalHeight,bi.drawImage(y,0,0),f.rr_dataURL=xe.toDataURL(a.type,a.quality)}catch(V){if(y.crossOrigin!==\\\"anonymous\\\"){y.crossOrigin=\\\"anonymous\\\",y.complete&&y.naturalWidth!==0?D():y.addEventListener(\\\"load\\\",D);return}else console.warn(`Cannot inline img src=${v}! Error: ${V}`)}y.crossOrigin===\\\"anonymous\\\"&&(N?f.crossOrigin=N:y.removeAttribute(\\\"crossorigin\\\"))};y.complete&&y.naturalWidth!==0?D():y.addEventListener(\\\"load\\\",D)}if([\\\"audio\\\",\\\"video\\\"].includes(d)){let y=f;y.rr_mediaState=s.paused?\\\"paused\\\":\\\"played\\\",y.rr_mediaCurrentTime=s.currentTime,y.rr_mediaPlaybackRate=s.playbackRate,y.rr_mediaMuted=s.muted,y.rr_mediaLoop=s.loop,y.rr_mediaVolume=s.volume}if(p||(s.scrollLeft&&(f.rr_scrollLeft=s.scrollLeft),s.scrollTop&&(f.rr_scrollTop=s.scrollTop)),m){let{width:y,height:v}=s.getBoundingClientRect();f={class:f.class,rr_width:`${y}px`,rr_height:`${v}px`}}d===\\\"iframe\\\"&&!h(f.src)&&(s.contentDocument||(f.rr_src=f.src),delete f.src);let S;try{customElements.get(d)&&(S=!0)}catch{}return{type:j.Element,tagName:d,attributes:f,childNodes:[],isSVG:vl(s)||void 0,needBlock:m,rootId:g,isCustom:S}}function _(s){return s==null?\\\"\\\":s.toLowerCase()}function vn(s){return s===!0||s===\\\"all\\\"?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:s===\\\"all\\\",headMetaDescKeywords:s===\\\"all\\\",headTitleMutations:s===\\\"all\\\"}:s||{}}function Al(s,e){if(e.comment&&s.type===j.Comment)return!0;if(s.type===j.Element){if(e.script&&(s.tagName===\\\"script\\\"||s.tagName===\\\"link\\\"&&(s.attributes.rel===\\\"preload\\\"&&s.attributes.as===\\\"script\\\"||s.attributes.rel===\\\"modulepreload\\\")||s.tagName===\\\"link\\\"&&s.attributes.rel===\\\"prefetch\\\"&&typeof s.attributes.href==\\\"string\\\"&&gn(s.attributes.href)===\\\"js\\\"))return!0;if(e.headFavicon&&(s.tagName===\\\"link\\\"&&s.attributes.rel===\\\"shortcut icon\\\"||s.tagName===\\\"meta\\\"&&(_(s.attributes.name).match(/^msapplication-tile(image|color)$/)||_(s.attributes.name)===\\\"application-name\\\"||_(s.attributes.rel)===\\\"icon\\\"||_(s.attributes.rel)===\\\"apple-touch-icon\\\"||_(s.attributes.rel)===\\\"shortcut icon\\\")))return!0;if(s.tagName===\\\"meta\\\"){if(e.headMetaDescKeywords&&_(s.attributes.name).match(/^description|keywords$/))return!0;if(e.headMetaSocial&&(_(s.attributes.property).match(/^(og|twitter|fb):/)||_(s.attributes.name).match(/^(og|twitter):/)||_(s.attributes.name)===\\\"pinterest\\\"))return!0;if(e.headMetaRobots&&(_(s.attributes.name)===\\\"robots\\\"||_(s.attributes.name)===\\\"googlebot\\\"||_(s.attributes.name)===\\\"bingbot\\\"))return!0;if(e.headMetaHttpEquiv&&s.attributes[\\\"http-equiv\\\"]!==void 0)return!0;if(e.headMetaAuthorship&&(_(s.attributes.name)===\\\"author\\\"||_(s.attributes.name)===\\\"generator\\\"||_(s.attributes.name)===\\\"framework\\\"||_(s.attributes.name)===\\\"publisher\\\"||_(s.attributes.name)===\\\"progid\\\"||_(s.attributes.property).match(/^article:/)||_(s.attributes.property).match(/^product:/)))return!0;if(e.headMetaVerification&&(_(s.attributes.name)===\\\"google-site-verification\\\"||_(s.attributes.name)===\\\"yandex-verification\\\"||_(s.attributes.name)===\\\"csrf-token\\\"||_(s.attributes.name)===\\\"p:domain_verify\\\"||_(s.attributes.name)===\\\"verify-v1\\\"||_(s.attributes.name)===\\\"verification\\\"||_(s.attributes.name)===\\\"shopify-checkout-api-token\\\"))return!0}}return!1}function Ae(s,e){let{doc:t,mirror:r,blockClass:i,blockSelector:n,maskTextClass:o,maskTextSelector:l,skipChild:a=!1,inlineStylesheet:u=!0,maskInputOptions:c={},maskTextFn:h,maskInputFn:p,slimDOMOptions:g,dataURLOptions:m={},inlineImages:d=!1,recordCanvas:f=!1,onSerialize:b,onIframeLoad:S,iframeLoadTimeout:y=5e3,onStylesheetLoad:v,stylesheetLoadTimeout:N=5e3,keepIframeSrcFn:D=()=>!1,newlyAddedElement:V=!1,cssCaptured:k=!1}=e,{needsMask:z}=e,{preserveWhiteSpace:H=!0}=e;z||(z=Sn(s,o,l,z===void 0));let q=xl(s,{doc:t,mirror:r,blockClass:i,blockSelector:n,needsMask:z,inlineStylesheet:u,maskInputOptions:c,maskTextFn:h,maskInputFn:p,dataURLOptions:m,inlineImages:d,recordCanvas:f,keepIframeSrcFn:D,newlyAddedElement:V,cssCaptured:k});if(!q)return console.warn(s,\\\"not serialized\\\"),null;let ne;r.hasNode(s)?ne=r.getId(s):Al(q,g)||!H&&q.type===j.Text&&!q.textContent.replace(/^\\\\s+|\\\\s+$/gm,\\\"\\\").length?ne=Je:ne=yn();let M=Object.assign(q,{id:ne});if(r.add(s,M),ne===Je)return null;b&&b(s);let Fe=!a;if(M.type===j.Element){Fe=Fe&&!M.needBlock,delete M.needBlock;let G=Y.shadowRoot(s);G&&Ze(G)&&(M.isShadowHost=!0)}if((M.type===j.Document||M.type===j.Element)&&Fe){g.headWhitespace&&M.type===j.Element&&M.tagName===\\\"head\\\"&&(H=!1);let G={doc:t,mirror:r,blockClass:i,blockSelector:n,needsMask:z,maskTextClass:o,maskTextSelector:l,skipChild:a,inlineStylesheet:u,maskInputOptions:c,maskTextFn:h,maskInputFn:p,slimDOMOptions:g,dataURLOptions:m,inlineImages:d,recordCanvas:f,preserveWhiteSpace:H,onSerialize:b,onIframeLoad:S,iframeLoadTimeout:y,onStylesheetLoad:v,stylesheetLoadTimeout:N,keepIframeSrcFn:D,cssCaptured:!1};if(!(M.type===j.Element&&M.tagName===\\\"textarea\\\"&&M.attributes.value!==void 0)){M.type===j.Element&&M.attributes._cssText!==void 0&&typeof M.attributes._cssText==\\\"string\\\"&&(G.cssCaptured=!0);for(let ye of Array.from(Y.childNodes(s))){let oe=Ae(ye,G);oe&&M.childNodes.push(oe)}}let Q=null;if(pn(s)&&(Q=Y.shadowRoot(s)))for(let ye of Array.from(Y.childNodes(Q))){let oe=Ae(ye,G);oe&&(Ze(Q)&&(oe.isShadow=!0),M.childNodes.push(oe))}}let Ue=Y.parentNode(s);return Ue&&Ye(Ue)&&Ze(Ue)&&(M.isShadow=!0),M.type===j.Element&&M.tagName===\\\"iframe\\\"&&El(s,()=>{let G=s.contentDocument;if(G&&S){let Q=Ae(G,{doc:G,mirror:r,blockClass:i,blockSelector:n,needsMask:z,maskTextClass:o,maskTextSelector:l,skipChild:!1,inlineStylesheet:u,maskInputOptions:c,maskTextFn:h,maskInputFn:p,slimDOMOptions:g,dataURLOptions:m,inlineImages:d,recordCanvas:f,preserveWhiteSpace:H,onSerialize:b,onIframeLoad:S,iframeLoadTimeout:y,onStylesheetLoad:v,stylesheetLoadTimeout:N,keepIframeSrcFn:D});Q&&S(s,Q)}},y),M.type===j.Element&&M.tagName===\\\"link\\\"&&typeof M.attributes.rel==\\\"string\\\"&&(M.attributes.rel===\\\"stylesheet\\\"||M.attributes.rel===\\\"preload\\\"&&typeof M.attributes.href==\\\"string\\\"&&gn(M.attributes.href)===\\\"css\\\")&&Il(s,()=>{if(v){let G=Ae(s,{doc:t,mirror:r,blockClass:i,blockSelector:n,needsMask:z,maskTextClass:o,maskTextSelector:l,skipChild:!1,inlineStylesheet:u,maskInputOptions:c,maskTextFn:h,maskInputFn:p,slimDOMOptions:g,dataURLOptions:m,inlineImages:d,recordCanvas:f,preserveWhiteSpace:H,onSerialize:b,onIframeLoad:S,iframeLoadTimeout:y,onStylesheetLoad:v,stylesheetLoadTimeout:N,keepIframeSrcFn:D});G&&v(s,G)}},N),M}function Ol(s,e){let{mirror:t=new Gt,blockClass:r=\\\"rr-block\\\",blockSelector:i=null,maskTextClass:n=\\\"rr-mask\\\",maskTextSelector:o=null,inlineStylesheet:l=!0,inlineImages:a=!1,recordCanvas:u=!1,maskAllInputs:c=!1,maskTextFn:h,maskInputFn:p,slimDOM:g=!1,dataURLOptions:m,preserveWhiteSpace:d,onSerialize:f,onIframeLoad:b,iframeLoadTimeout:S,onStylesheetLoad:y,stylesheetLoadTimeout:v,keepIframeSrcFn:N=()=>!1}=e||{},D=c===!0?{color:!0,date:!0,\\\"datetime-local\\\":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:c===!1?{password:!0}:c,V=vn(g);return Ae(s,{doc:s,mirror:t,blockClass:r,blockSelector:i,maskTextClass:n,maskTextSelector:o,skipChild:!1,inlineStylesheet:l,maskInputOptions:D,maskTextFn:h,maskInputFn:p,slimDOMOptions:V,dataURLOptions:m,inlineImages:a,recordCanvas:u,preserveWhiteSpace:d,onSerialize:f,onIframeLoad:b,iframeLoadTimeout:S,onStylesheetLoad:y,stylesheetLoadTimeout:v,keepIframeSrcFn:N,newlyAddedElement:!1})}var Tl=/(max|min)-device-(width|height)/,ud=new RegExp(Tl.source,\\\"g\\\");function Dl(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,\\\"default\\\")?s.default:s}function _l(s){if(s.__esModule)return s;var e=s.default;if(typeof e==\\\"function\\\"){var t=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,\\\"__esModule\\\",{value:!0}),Object.keys(s).forEach(function(r){var i=Object.getOwnPropertyDescriptor(s,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return s[r]}})}),t}var Ds={exports:{}},P=String,Cn=function(){return{isColorSupported:!1,reset:P,bold:P,dim:P,italic:P,underline:P,inverse:P,hidden:P,strikethrough:P,black:P,red:P,green:P,yellow:P,blue:P,magenta:P,cyan:P,white:P,gray:P,bgBlack:P,bgRed:P,bgGreen:P,bgYellow:P,bgBlue:P,bgMagenta:P,bgCyan:P,bgWhite:P}};Ds.exports=Cn();Ds.exports.createColors=Cn;var Pl=Ds.exports,Ll={},kl=Object.freeze(Object.defineProperty({__proto__:null,default:Ll},Symbol.toStringTag,{value:\\\"Module\\\"})),se=_l(kl),vi=Pl,Ci=se,zr=class En extends Error{constructor(e,t,r,i,n,o){super(e),this.name=\\\"CssSyntaxError\\\",this.reason=e,n&&(this.file=n),i&&(this.source=i),o&&(this.plugin=o),typeof t<\\\"u\\\"&&typeof r<\\\"u\\\"&&(typeof t==\\\"number\\\"?(this.line=t,this.column=r):(this.line=t.line,this.column=t.column,this.endLine=r.line,this.endColumn=r.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,En)}setMessage(){this.message=this.plugin?this.plugin+\\\": \\\":\\\"\\\",this.message+=this.file?this.file:\\\"<css input>\\\",typeof this.line<\\\"u\\\"&&(this.message+=\\\":\\\"+this.line+\\\":\\\"+this.column),this.message+=\\\": \\\"+this.reason}showSourceCode(e){if(!this.source)return\\\"\\\";let t=this.source;e==null&&(e=vi.isColorSupported),Ci&&e&&(t=Ci(t));let r=t.split(/\\\\r?\\\\n/),i=Math.max(this.line-3,0),n=Math.min(this.line+2,r.length),o=String(n).length,l,a;if(e){let{bold:u,gray:c,red:h}=vi.createColors(!0);l=p=>u(h(p)),a=p=>c(p)}else l=a=u=>u;return r.slice(i,n).map((u,c)=>{let h=i+1+c,p=\\\" \\\"+(\\\" \\\"+h).slice(-o)+\\\" | \\\";if(h===this.line){let g=a(p.replace(/\\\\d/g,\\\" \\\"))+u.slice(0,this.column-1).replace(/[^\\\\t]/g,\\\" \\\");return l(\\\">\\\")+a(p)+u+`\\n `+g+l(\\\"^\\\")}return\\\" \\\"+a(p)+u}).join(`\\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\\n\\n`+e+`\\n`),this.name+\\\": \\\"+this.message+e}},_s=zr;zr.default=zr;var ot={};ot.isClean=Symbol(\\\"isClean\\\");ot.my=Symbol(\\\"my\\\");var Ei={after:`\\n`,beforeClose:`\\n`,beforeComment:`\\n`,beforeDecl:`\\n`,beforeOpen:\\\" \\\",beforeRule:`\\n`,colon:\\\": \\\",commentLeft:\\\" \\\",commentRight:\\\" \\\",emptyBody:\\\"\\\",indent:\\\" \\\",semicolon:!1};function $l(s){return s[0].toUpperCase()+s.slice(1)}var Vr=class{constructor(e){this.builder=e}atrule(e,t){let r=\\\"@\\\"+e.name,i=e.params?this.rawValue(e,\\\"params\\\"):\\\"\\\";if(typeof e.raws.afterName<\\\"u\\\"?r+=e.raws.afterName:i&&(r+=\\\" \\\"),e.nodes)this.block(e,r+i);else{let n=(e.raws.between||\\\"\\\")+(t?\\\";\\\":\\\"\\\");this.builder(r+i+n,e)}}beforeAfter(e,t){let r;e.type===\\\"decl\\\"?r=this.raw(e,null,\\\"beforeDecl\\\"):e.type===\\\"comment\\\"?r=this.raw(e,null,\\\"beforeComment\\\"):t===\\\"before\\\"?r=this.raw(e,null,\\\"beforeRule\\\"):r=this.raw(e,null,\\\"beforeClose\\\");let i=e.parent,n=0;for(;i&&i.type!==\\\"root\\\";)n+=1,i=i.parent;if(r.includes(`\\n`)){let o=this.raw(e,null,\\\"indent\\\");if(o.length)for(let l=0;l<n;l++)r+=o}return r}block(e,t){let r=this.raw(e,\\\"between\\\",\\\"beforeOpen\\\");this.builder(t+r+\\\"{\\\",e,\\\"start\\\");let i;e.nodes&&e.nodes.length?(this.body(e),i=this.raw(e,\\\"after\\\")):i=this.raw(e,\\\"after\\\",\\\"emptyBody\\\"),i&&this.builder(i),this.builder(\\\"}\\\",e,\\\"end\\\")}body(e){let t=e.nodes.length-1;for(;t>0&&e.nodes[t].type===\\\"comment\\\";)t-=1;let r=this.raw(e,\\\"semicolon\\\");for(let i=0;i<e.nodes.length;i++){let n=e.nodes[i],o=this.raw(n,\\\"before\\\");o&&this.builder(o),this.stringify(n,t!==i||r)}}comment(e){let t=this.raw(e,\\\"left\\\",\\\"commentLeft\\\"),r=this.raw(e,\\\"right\\\",\\\"commentRight\\\");this.builder(\\\"/*\\\"+t+e.text+r+\\\"*/\\\",e)}decl(e,t){let r=this.raw(e,\\\"between\\\",\\\"colon\\\"),i=e.prop+r+this.rawValue(e,\\\"value\\\");e.important&&(i+=e.raws.important||\\\" !important\\\"),t&&(i+=\\\";\\\"),this.builder(i,e)}document(e){this.body(e)}raw(e,t,r){let i;if(r||(r=t),t&&(i=e.raws[t],typeof i<\\\"u\\\"))return i;let n=e.parent;if(r===\\\"before\\\"&&(!n||n.type===\\\"root\\\"&&n.first===e||n&&n.type===\\\"document\\\"))return\\\"\\\";if(!n)return Ei[r];let o=e.root();if(o.rawCache||(o.rawCache={}),typeof o.rawCache[r]<\\\"u\\\")return o.rawCache[r];if(r===\\\"before\\\"||r===\\\"after\\\")return this.beforeAfter(e,r);{let l=\\\"raw\\\"+$l(r);this[l]?i=this[l](o,e):o.walk(a=>{if(i=a.raws[t],typeof i<\\\"u\\\")return!1})}return typeof i>\\\"u\\\"&&(i=Ei[r]),o.rawCache[r]=i,i}rawBeforeClose(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length>0&&typeof r.raws.after<\\\"u\\\")return t=r.raws.after,t.includes(`\\n`)&&(t=t.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),t&&(t=t.replace(/\\\\S/g,\\\"\\\")),t}rawBeforeComment(e,t){let r;return e.walkComments(i=>{if(typeof i.raws.before<\\\"u\\\")return r=i.raws.before,r.includes(`\\n`)&&(r=r.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),typeof r>\\\"u\\\"?r=this.raw(t,null,\\\"beforeDecl\\\"):r&&(r=r.replace(/\\\\S/g,\\\"\\\")),r}rawBeforeDecl(e,t){let r;return e.walkDecls(i=>{if(typeof i.raws.before<\\\"u\\\")return r=i.raws.before,r.includes(`\\n`)&&(r=r.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),typeof r>\\\"u\\\"?r=this.raw(t,null,\\\"beforeRule\\\"):r&&(r=r.replace(/\\\\S/g,\\\"\\\")),r}rawBeforeOpen(e){let t;return e.walk(r=>{if(r.type!==\\\"decl\\\"&&(t=r.raws.between,typeof t<\\\"u\\\"))return!1}),t}rawBeforeRule(e){let t;return e.walk(r=>{if(r.nodes&&(r.parent!==e||e.first!==r)&&typeof r.raws.before<\\\"u\\\")return t=r.raws.before,t.includes(`\\n`)&&(t=t.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),t&&(t=t.replace(/\\\\S/g,\\\"\\\")),t}rawColon(e){let t;return e.walkDecls(r=>{if(typeof r.raws.between<\\\"u\\\")return t=r.raws.between.replace(/[^\\\\s:]/g,\\\"\\\"),!1}),t}rawEmptyBody(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length===0&&(t=r.raws.after,typeof t<\\\"u\\\"))return!1}),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk(r=>{let i=r.parent;if(i&&i!==e&&i.parent&&i.parent===e&&typeof r.raws.before<\\\"u\\\"){let n=r.raws.before.split(`\\n`);return t=n[n.length-1],t=t.replace(/\\\\S/g,\\\"\\\"),!1}}),t}rawSemicolon(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length&&r.last.type===\\\"decl\\\"&&(t=r.raws.semicolon,typeof t<\\\"u\\\"))return!1}),t}rawValue(e,t){let r=e[t],i=e.raws[t];return i&&i.value===r?i.raw:r}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,\\\"selector\\\")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,\\\"end\\\")}stringify(e,t){if(!this[e.type])throw new Error(\\\"Unknown AST node type \\\"+e.type+\\\". Maybe you need to change PostCSS stringifier.\\\");this[e.type](e,t)}},In=Vr;Vr.default=Vr;var Fl=In;function Gr(s,e){new Fl(e).stringify(s)}var ar=Gr;Gr.default=Gr;var{isClean:yt,my:Ul}=ot,Bl=_s,Wl=In,zl=ar;function jr(s,e){let t=new s.constructor;for(let r in s){if(!Object.prototype.hasOwnProperty.call(s,r)||r===\\\"proxyCache\\\")continue;let i=s[r],n=typeof i;r===\\\"parent\\\"&&n===\\\"object\\\"?e&&(t[r]=e):r===\\\"source\\\"?t[r]=i:Array.isArray(i)?t[r]=i.map(o=>jr(o,t)):(n===\\\"object\\\"&&i!==null&&(i=jr(i)),t[r]=i)}return t}var Hr=class{constructor(e={}){this.raws={},this[yt]=!1,this[Ul]=!0;for(let t in e)if(t===\\\"nodes\\\"){this.nodes=[];for(let r of e[t])typeof r.clone==\\\"function\\\"?this.append(r.clone()):this.append(r)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\\\n\\\\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\\\\n\\\\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=jr(this);for(let r in e)t[r]=e[r];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:r,start:i}=this.rangeBy(t);return this.source.input.error(e,{column:i.column,line:i.line},{column:r.column,line:r.line},t)}return new Bl(e)}getProxyProcessor(){return{get(e,t){return t===\\\"proxyOf\\\"?e:t===\\\"root\\\"?()=>e.root().toProxy():e[t]},set(e,t,r){return e[t]===r||(e[t]=r,(t===\\\"prop\\\"||t===\\\"value\\\"||t===\\\"name\\\"||t===\\\"params\\\"||t===\\\"important\\\"||t===\\\"text\\\")&&e.markDirty()),!0}}}markDirty(){if(this[yt]){this[yt]=!1;let e=this;for(;e=e.parent;)e[yt]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){t=this.toString();let i=t.indexOf(e.word);i!==-1&&(r=this.positionInside(i,t))}return r}positionInside(e,t){let r=t||this.toString(),i=this.source.start.column,n=this.source.start.line;for(let o=0;o<e;o++)r[o]===`\\n`?(i=1,n+=1):i+=1;return{column:i,line:n}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e){let t={column:this.source.start.column,line:this.source.start.line},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line}:{column:t.column+1,line:t.line};if(e.word){let i=this.toString(),n=i.indexOf(e.word);n!==-1&&(t=this.positionInside(n,i),r=this.positionInside(n+e.word.length,i))}else e.start?t={column:e.start.column,line:e.start.line}:e.index&&(t=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line}:typeof e.endIndex==\\\"number\\\"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return(r.line<t.line||r.line===t.line&&r.column<=t.column)&&(r={column:t.column+1,line:t.line}),{end:r,start:t}}raw(e,t){return new Wl().raw(this,e,t)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let t=this,r=!1;for(let i of e)i===this?r=!0:r?(this.parent.insertAfter(t,i),t=i):this.parent.insertBefore(t,i);r||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!==\\\"document\\\";)e=e.parent;return e}toJSON(e,t){let r={},i=t==null;t=t||new Map;let n=0;for(let o in this){if(!Object.prototype.hasOwnProperty.call(this,o)||o===\\\"parent\\\"||o===\\\"proxyCache\\\")continue;let l=this[o];if(Array.isArray(l))r[o]=l.map(a=>typeof a==\\\"object\\\"&&a.toJSON?a.toJSON(null,t):a);else if(typeof l==\\\"object\\\"&&l.toJSON)r[o]=l.toJSON(null,t);else if(o===\\\"source\\\"){let a=t.get(l.input);a==null&&(a=n,t.set(l.input,n),n++),r[o]={end:l.end,inputId:a,start:l.start}}else r[o]=l}return i&&(r.inputs=[...t.keys()].map(o=>o.toJSON())),r}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=zl){e.stringify&&(e=e.stringify);let t=\\\"\\\";return e(this,r=>{t+=r}),t}warn(e,t,r){let i={node:this};for(let n in r)i[n]=r[n];return e.warn(t,i)}get proxyOf(){return this}},lr=Hr;Hr.default=Hr;var Vl=lr,Yr=class extends Vl{constructor(e){e&&typeof e.value<\\\"u\\\"&&typeof e.value!=\\\"string\\\"&&(e={...e,value:String(e.value)}),super(e),this.type=\\\"decl\\\"}get variable(){return this.prop.startsWith(\\\"--\\\")||this.prop[0]===\\\"$\\\"}},ur=Yr;Yr.default=Yr;var Gl=\\\"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\\\",jl=(s,e=21)=>(t=e)=>{let r=\\\"\\\",i=t;for(;i--;)r+=s[Math.random()*s.length|0];return r},Hl=(s=21)=>{let e=\\\"\\\",t=s;for(;t--;)e+=Gl[Math.random()*64|0];return e},Yl={nanoid:Hl,customAlphabet:jl},{SourceMapConsumer:Ii,SourceMapGenerator:xi}=se,{existsSync:Zl,readFileSync:Xl}=se,{dirname:Ar,join:Jl}=se;function Kl(s){return Buffer?Buffer.from(s,\\\"base64\\\").toString():window.atob(s)}var Zr=class{constructor(e,t){if(t.map===!1)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,\\\"data:\\\");let r=t.map?t.map.prev:void 0,i=this.loadMap(t.from,r);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=Ar(this.mapFile)),i&&(this.text=i)}consumer(){return this.consumerCache||(this.consumerCache=new Ii(this.text)),this.consumerCache}decodeInline(e){let t=/^data:application\\\\/json;charset=utf-?8;base64,/,r=/^data:application\\\\/json;base64,/,i=/^data:application\\\\/json;charset=utf-?8,/,n=/^data:application\\\\/json,/;if(i.test(e)||n.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(t.test(e)||r.test(e))return Kl(e.substr(RegExp.lastMatch.length));let o=e.match(/data:application\\\\/json;([^,]+),/)[1];throw new Error(\\\"Unsupported source map encoding \\\"+o)}getAnnotationURL(e){return e.replace(/^\\\\/\\\\*\\\\s*# sourceMappingURL=/,\\\"\\\").trim()}isMap(e){return typeof e!=\\\"object\\\"?!1:typeof e.mappings==\\\"string\\\"||typeof e._mappings==\\\"string\\\"||Array.isArray(e.sections)}loadAnnotation(e){let t=e.match(/\\\\/\\\\*\\\\s*# sourceMappingURL=/gm);if(!t)return;let r=e.lastIndexOf(t.pop()),i=e.indexOf(\\\"*/\\\",r);r>-1&&i>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,i)))}loadFile(e){if(this.root=Ar(e),Zl(e))return this.mapFile=e,Xl(e,\\\"utf-8\\\").toString().trim()}loadMap(e,t){if(t===!1)return!1;if(t){if(typeof t==\\\"string\\\")return t;if(typeof t==\\\"function\\\"){let r=t(e);if(r){let i=this.loadFile(r);if(!i)throw new Error(\\\"Unable to load previous source map: \\\"+r.toString());return i}}else{if(t instanceof Ii)return xi.fromSourceMap(t).toString();if(t instanceof xi)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error(\\\"Unsupported previous source map format: \\\"+t.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let r=this.annotation;return e&&(r=Jl(Ar(e),r)),this.loadFile(r)}}}startWith(e,t){return e?e.substr(0,t.length)===t:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}},xn=Zr;Zr.default=Zr;var{SourceMapConsumer:ql,SourceMapGenerator:Ql}=se,{fileURLToPath:Mi,pathToFileURL:wt}=se,{isAbsolute:Xr,resolve:Jr}=se,{nanoid:eu}=Yl,Or=se,Ni=_s,tu=xn,Tr=Symbol(\\\"fromOffsetCache\\\"),ru=!!(ql&&Ql),Ri=!!(Jr&&Xr),Xt=class{constructor(e,t={}){if(e===null||typeof e>\\\"u\\\"||typeof e==\\\"object\\\"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]===\\\"\\\\uFEFF\\\"||this.css[0]===\\\"\\\\uFFFE\\\"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Ri||/^\\\\w+:\\\\/\\\\//.test(t.from)||Xr(t.from)?this.file=t.from:this.file=Jr(t.from)),Ri&&ru){let r=new tu(this.css,t);if(r.text){this.map=r;let i=r.consumer().file;!this.file&&i&&(this.file=this.mapResolve(i))}}this.file||(this.id=\\\"<input css \\\"+eu(6)+\\\">\\\"),this.map&&(this.map.file=this.from)}error(e,t,r,i={}){let n,o,l;if(t&&typeof t==\\\"object\\\"){let u=t,c=r;if(typeof u.offset==\\\"number\\\"){let h=this.fromOffset(u.offset);t=h.line,r=h.col}else t=u.line,r=u.column;if(typeof c.offset==\\\"number\\\"){let h=this.fromOffset(c.offset);o=h.line,l=h.col}else o=c.line,l=c.column}else if(!r){let u=this.fromOffset(t);t=u.line,r=u.col}let a=this.origin(t,r,o,l);return a?n=new Ni(e,a.endLine===void 0?a.line:{column:a.column,line:a.line},a.endLine===void 0?a.column:{column:a.endColumn,line:a.endLine},a.source,a.file,i.plugin):n=new Ni(e,o===void 0?t:{column:r,line:t},o===void 0?r:{column:l,line:o},this.css,this.file,i.plugin),n.input={column:r,endColumn:l,endLine:o,line:t,source:this.css},this.file&&(wt&&(n.input.url=wt(this.file).toString()),n.input.file=this.file),n}fromOffset(e){let t,r;if(this[Tr])r=this[Tr];else{let n=this.css.split(`\\n`);r=new Array(n.length);let o=0;for(let l=0,a=n.length;l<a;l++)r[l]=o,o+=n[l].length+1;this[Tr]=r}t=r[r.length-1];let i=0;if(e>=t)i=r.length-1;else{let n=r.length-2,o;for(;i<n;)if(o=i+(n-i>>1),e<r[o])n=o-1;else if(e>=r[o+1])i=o+1;else{i=o;break}}return{col:e-r[i]+1,line:i+1}}mapResolve(e){return/^\\\\w+:\\\\/\\\\//.test(e)?e:Jr(this.map.consumer().sourceRoot||this.map.root||\\\".\\\",e)}origin(e,t,r,i){if(!this.map)return!1;let n=this.map.consumer(),o=n.originalPositionFor({column:t,line:e});if(!o.source)return!1;let l;typeof r==\\\"number\\\"&&(l=n.originalPositionFor({column:i,line:r}));let a;Xr(o.source)?a=wt(o.source):a=new URL(o.source,this.map.consumer().sourceRoot||wt(this.map.mapFile));let u={column:o.column,endColumn:l&&l.column,endLine:l&&l.line,line:o.line,url:a.toString()};if(a.protocol===\\\"file:\\\")if(Mi)u.file=Mi(a);else throw new Error(\\\"file: protocol is not available in this PostCSS build\\\");let c=n.sourceContentFor(o.source);return c&&(u.source=c),u}toJSON(){let e={};for(let t of[\\\"hasBOM\\\",\\\"css\\\",\\\"file\\\",\\\"id\\\"])this[t]!=null&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}},cr=Xt;Xt.default=Xt;Or&&Or.registerInput&&Or.registerInput(Xt);var{SourceMapConsumer:Mn,SourceMapGenerator:Ft}=se,{dirname:Ut,relative:Nn,resolve:Rn,sep:An}=se,{pathToFileURL:Ai}=se,su=cr,iu=!!(Mn&&Ft),nu=!!(Ut&&Rn&&Nn&&An),ou=class{constructor(e,t,r,i){this.stringify=e,this.mapOpts=r.map||{},this.root=t,this.opts=r,this.css=i,this.originalCSS=i,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;this.isInline()?e=\\\"data:application/json;base64,\\\"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation==\\\"string\\\"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation==\\\"function\\\"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+\\\".map\\\";let t=`\\n`;this.css.includes(`\\\\r\\n`)&&(t=`\\\\r\\n`),this.css+=t+\\\"/*# sourceMappingURL=\\\"+e+\\\" */\\\"}applyPrevMaps(){for(let e of this.previous()){let t=this.toUrl(this.path(e.file)),r=e.root||Ut(e.file),i;this.mapOpts.sourcesContent===!1?(i=new Mn(e.text),i.sourcesContent&&(i.sourcesContent=null)):i=e.consumer(),this.map.applySourceMap(i,t,this.toUrl(this.path(r)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],e.type===\\\"comment\\\"&&e.text.indexOf(\\\"# sourceMappingURL=\\\")===0&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\\\\n*?\\\\/\\\\*#[\\\\S\\\\s]*?\\\\*\\\\/$/gm,\\\"\\\"))}generate(){if(this.clearAnnotation(),nu&&iu&&this.isMap())return this.generateMap();{let e=\\\"\\\";return this.stringify(this.root,t=>{e+=t}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Ft.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Ft({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):\\\"<no source>\\\"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css=\\\"\\\",this.map=new Ft({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,t=1,r=\\\"<no source>\\\",i={generated:{column:0,line:0},original:{column:0,line:0},source:\\\"\\\"},n,o;this.stringify(this.root,(l,a,u)=>{if(this.css+=l,a&&u!==\\\"end\\\"&&(i.generated.line=e,i.generated.column=t-1,a.source&&a.source.start?(i.source=this.sourcePath(a),i.original.line=a.source.start.line,i.original.column=a.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),n=l.match(/\\\\n/g),n?(e+=n.length,o=l.lastIndexOf(`\\n`),t=l.length-o):t+=l.length,a&&u!==\\\"start\\\"){let c=a.parent||{raws:{}};(!(a.type===\\\"decl\\\"||a.type===\\\"atrule\\\"&&!a.nodes)||a!==c.last||c.raws.semicolon)&&(a.source&&a.source.end?(i.source=this.sourcePath(a),i.original.line=a.source.end.line,i.original.column=a.source.end.column-1,i.generated.line=e,i.generated.column=t-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=e,i.generated.column=t-1,this.map.addMapping(i)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<\\\"u\\\"?this.mapOpts.annotation:this.previous().length?this.previous().some(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<\\\"u\\\")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<\\\"u\\\"&&e!==!0?!1:this.previous().length?this.previous().some(t=>t.inline):!0}isMap(){return typeof this.opts.map<\\\"u\\\"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<\\\"u\\\"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):\\\"to.css\\\"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\\\w+:\\\\/\\\\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let r=this.opts.to?Ut(this.opts.to):\\\".\\\";typeof this.mapOpts.annotation==\\\"string\\\"&&(r=Ut(Rn(r,this.mapOpts.annotation)));let i=Nn(r,e);return this.memoizedPaths.set(e,i),i}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}});else{let e=new su(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(t=>{if(t.source){let r=t.source.input.from;if(r&&!e[r]){e[r]=!0;let i=this.usesFileUrls?this.toFileUrl(r):this.toUrl(this.path(r));this.map.setSourceContent(i,t.source.input.css)}}});else if(this.css){let t=this.opts.from?this.toUrl(this.path(this.opts.from)):\\\"<no source>\\\";this.map.setSourceContent(t,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString(\\\"base64\\\"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(Ai){let r=Ai(e).toString();return this.memoizedFileURLs.set(e,r),r}else throw new Error(\\\"`map.absolute` option is not available in this PostCSS build\\\")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;An===\\\"\\\\\\\\\\\"&&(e=e.replace(/\\\\\\\\/g,\\\"/\\\"));let r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r}},On=ou,au=lr,Kr=class extends au{constructor(e){super(e),this.type=\\\"comment\\\"}},hr=Kr;Kr.default=Kr;var{isClean:Tn,my:Dn}=ot,_n=ur,Pn=hr,lu=lr,Ln,Ps,Ls,kn;function $n(s){return s.map(e=>(e.nodes&&(e.nodes=$n(e.nodes)),delete e.source,e))}function Fn(s){if(s[Tn]=!1,s.proxyOf.nodes)for(let e of s.proxyOf.nodes)Fn(e)}var he=class Un extends lu{append(...e){for(let t of e){let r=this.normalize(t,this.last);for(let i of r)this.proxyOf.nodes.push(i)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t=this.getIterator(),r,i;for(;this.indexes[t]<this.proxyOf.nodes.length&&(r=this.indexes[t],i=e(this.proxyOf.nodes[r],r),i!==!1);)this.indexes[t]+=1;return delete this.indexes[t],i}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,t){return t===\\\"proxyOf\\\"?e:e[t]?t===\\\"each\\\"||typeof t==\\\"string\\\"&&t.startsWith(\\\"walk\\\")?(...r)=>e[t](...r.map(i=>typeof i==\\\"function\\\"?(n,o)=>i(n.toProxy(),o):i)):t===\\\"every\\\"||t===\\\"some\\\"?r=>e[t]((i,...n)=>r(i.toProxy(),...n)):t===\\\"root\\\"?()=>e.root().toProxy():t===\\\"nodes\\\"?e.nodes.map(r=>r.toProxy()):t===\\\"first\\\"||t===\\\"last\\\"?e[t].toProxy():e[t]:e[t]},set(e,t,r){return e[t]===r||(e[t]=r,(t===\\\"name\\\"||t===\\\"params\\\"||t===\\\"selector\\\")&&e.markDirty()),!0}}}index(e){return typeof e==\\\"number\\\"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let r=this.index(e),i=this.normalize(t,this.proxyOf.nodes[r]).reverse();r=this.index(e);for(let o of i)this.proxyOf.nodes.splice(r+1,0,o);let n;for(let o in this.indexes)n=this.indexes[o],r<n&&(this.indexes[o]=n+i.length);return this.markDirty(),this}insertBefore(e,t){let r=this.index(e),i=r===0?\\\"prepend\\\":!1,n=this.normalize(t,this.proxyOf.nodes[r],i).reverse();r=this.index(e);for(let l of n)this.proxyOf.nodes.splice(r,0,l);let o;for(let l in this.indexes)o=this.indexes[l],r<=o&&(this.indexes[l]=o+n.length);return this.markDirty(),this}normalize(e,t){if(typeof e==\\\"string\\\")e=$n(Ln(e).nodes);else if(typeof e>\\\"u\\\")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let i of e)i.parent&&i.parent.removeChild(i,\\\"ignore\\\")}else if(e.type===\\\"root\\\"&&this.type!==\\\"document\\\"){e=e.nodes.slice(0);for(let i of e)i.parent&&i.parent.removeChild(i,\\\"ignore\\\")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>\\\"u\\\")throw new Error(\\\"Value field is missed in node creation\\\");typeof e.value!=\\\"string\\\"&&(e.value=String(e.value)),e=[new _n(e)]}else if(e.selector)e=[new Ps(e)];else if(e.name)e=[new Ls(e)];else if(e.text)e=[new Pn(e)];else throw new Error(\\\"Unknown node type in node creation\\\");return e.map(i=>(i[Dn]||Un.rebuild(i),i=i.proxyOf,i.parent&&i.parent.removeChild(i),i[Tn]&&Fn(i),typeof i.raws.before>\\\"u\\\"&&t&&typeof t.raws.before<\\\"u\\\"&&(i.raws.before=t.raws.before.replace(/\\\\S/g,\\\"\\\")),i.parent=this.proxyOf,i))}prepend(...e){e=e.reverse();for(let t of e){let r=this.normalize(t,this.first,\\\"prepend\\\").reverse();for(let i of r)this.proxyOf.nodes.unshift(i);for(let i in this.indexes)this.indexes[i]=this.indexes[i]+r.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let t;for(let r in this.indexes)t=this.indexes[r],t>=e&&(this.indexes[r]=t-1);return this.markDirty(),this}replaceValues(e,t,r){return r||(r=t,t={}),this.walkDecls(i=>{t.props&&!t.props.includes(i.prop)||t.fast&&!i.value.includes(t.fast)||(i.value=i.value.replace(e,r))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((t,r)=>{let i;try{i=e(t,r)}catch(n){throw t.addToError(n)}return i!==!1&&t.walk&&(i=t.walk(e)),i})}walkAtRules(e,t){return t?e instanceof RegExp?this.walk((r,i)=>{if(r.type===\\\"atrule\\\"&&e.test(r.name))return t(r,i)}):this.walk((r,i)=>{if(r.type===\\\"atrule\\\"&&r.name===e)return t(r,i)}):(t=e,this.walk((r,i)=>{if(r.type===\\\"atrule\\\")return t(r,i)}))}walkComments(e){return this.walk((t,r)=>{if(t.type===\\\"comment\\\")return e(t,r)})}walkDecls(e,t){return t?e instanceof RegExp?this.walk((r,i)=>{if(r.type===\\\"decl\\\"&&e.test(r.prop))return t(r,i)}):this.walk((r,i)=>{if(r.type===\\\"decl\\\"&&r.prop===e)return t(r,i)}):(t=e,this.walk((r,i)=>{if(r.type===\\\"decl\\\")return t(r,i)}))}walkRules(e,t){return t?e instanceof RegExp?this.walk((r,i)=>{if(r.type===\\\"rule\\\"&&e.test(r.selector))return t(r,i)}):this.walk((r,i)=>{if(r.type===\\\"rule\\\"&&r.selector===e)return t(r,i)}):(t=e,this.walk((r,i)=>{if(r.type===\\\"rule\\\")return t(r,i)}))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};he.registerParse=s=>{Ln=s};he.registerRule=s=>{Ps=s};he.registerAtRule=s=>{Ls=s};he.registerRoot=s=>{kn=s};var Ce=he;he.default=he;he.rebuild=s=>{s.type===\\\"atrule\\\"?Object.setPrototypeOf(s,Ls.prototype):s.type===\\\"rule\\\"?Object.setPrototypeOf(s,Ps.prototype):s.type===\\\"decl\\\"?Object.setPrototypeOf(s,_n.prototype):s.type===\\\"comment\\\"?Object.setPrototypeOf(s,Pn.prototype):s.type===\\\"root\\\"&&Object.setPrototypeOf(s,kn.prototype),s[Dn]=!0,s.nodes&&s.nodes.forEach(e=>{he.rebuild(e)})};var uu=Ce,Bn,Wn,Ke=class extends uu{constructor(e){super({type:\\\"document\\\",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Bn(new Wn,this,e).stringify()}};Ke.registerLazyResult=s=>{Bn=s};Ke.registerProcessor=s=>{Wn=s};var ks=Ke;Ke.default=Ke;var qr=class{constructor(e,t={}){if(this.type=\\\"warning\\\",this.text=e,t.node&&t.node.source){let r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(let r in t)this[r]=t[r]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+\\\": \\\"+this.text:this.text}},zn=qr;qr.default=qr;var cu=zn,Qr=class{constructor(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let r=new cu(e,t);return this.messages.push(r),r}warnings(){return this.messages.filter(e=>e.type===\\\"warning\\\")}get content(){return this.css}},$s=Qr;Qr.default=Qr;var Dr=39,Oi=34,bt=92,Ti=47,St=10,ze=32,vt=12,Ct=9,Et=13,hu=91,fu=93,du=40,pu=41,mu=123,gu=125,yu=59,wu=42,bu=58,Su=64,It=/[\\\\t\\\\n\\\\f\\\\r \\\"#'()/;[\\\\\\\\\\\\]{}]/g,xt=/[\\\\t\\\\n\\\\f\\\\r !\\\"#'():;@[\\\\\\\\\\\\]{}]|\\\\/(?=\\\\*)/g,vu=/.[\\\\r\\\\n\\\"'(/\\\\\\\\]/,Di=/[\\\\da-f]/i,Cu=function(e,t={}){let r=e.css.valueOf(),i=t.ignoreErrors,n,o,l,a,u,c,h,p,g,m,d=r.length,f=0,b=[],S=[];function y(){return f}function v(k){throw e.error(\\\"Unclosed \\\"+k,f)}function N(){return S.length===0&&f>=d}function D(k){if(S.length)return S.pop();if(f>=d)return;let z=k?k.ignoreUnclosed:!1;switch(n=r.charCodeAt(f),n){case St:case ze:case Ct:case Et:case vt:{o=f;do o+=1,n=r.charCodeAt(o);while(n===ze||n===St||n===Ct||n===Et||n===vt);m=[\\\"space\\\",r.slice(f,o)],f=o-1;break}case hu:case fu:case mu:case gu:case bu:case yu:case pu:{let H=String.fromCharCode(n);m=[H,H,f];break}case du:{if(p=b.length?b.pop()[1]:\\\"\\\",g=r.charCodeAt(f+1),p===\\\"url\\\"&&g!==Dr&&g!==Oi&&g!==ze&&g!==St&&g!==Ct&&g!==vt&&g!==Et){o=f;do{if(c=!1,o=r.indexOf(\\\")\\\",o+1),o===-1)if(i||z){o=f;break}else v(\\\"bracket\\\");for(h=o;r.charCodeAt(h-1)===bt;)h-=1,c=!c}while(c);m=[\\\"brackets\\\",r.slice(f,o+1),f,o],f=o}else o=r.indexOf(\\\")\\\",f+1),a=r.slice(f,o+1),o===-1||vu.test(a)?m=[\\\"(\\\",\\\"(\\\",f]:(m=[\\\"brackets\\\",a,f,o],f=o);break}case Dr:case Oi:{l=n===Dr?\\\"'\\\":'\\\"',o=f;do{if(c=!1,o=r.indexOf(l,o+1),o===-1)if(i||z){o=f+1;break}else v(\\\"string\\\");for(h=o;r.charCodeAt(h-1)===bt;)h-=1,c=!c}while(c);m=[\\\"string\\\",r.slice(f,o+1),f,o],f=o;break}case Su:{It.lastIndex=f+1,It.test(r),It.lastIndex===0?o=r.length-1:o=It.lastIndex-2,m=[\\\"at-word\\\",r.slice(f,o+1),f,o],f=o;break}case bt:{for(o=f,u=!0;r.charCodeAt(o+1)===bt;)o+=1,u=!u;if(n=r.charCodeAt(o+1),u&&n!==Ti&&n!==ze&&n!==St&&n!==Ct&&n!==Et&&n!==vt&&(o+=1,Di.test(r.charAt(o)))){for(;Di.test(r.charAt(o+1));)o+=1;r.charCodeAt(o+1)===ze&&(o+=1)}m=[\\\"word\\\",r.slice(f,o+1),f,o],f=o;break}default:{n===Ti&&r.charCodeAt(f+1)===wu?(o=r.indexOf(\\\"*/\\\",f+2)+1,o===0&&(i||z?o=r.length:v(\\\"comment\\\")),m=[\\\"comment\\\",r.slice(f,o+1),f,o],f=o):(xt.lastIndex=f+1,xt.test(r),xt.lastIndex===0?o=r.length-1:o=xt.lastIndex-2,m=[\\\"word\\\",r.slice(f,o+1),f,o],b.push(m),f=o);break}}return f++,m}function V(k){S.push(k)}return{back:V,endOfFile:N,nextToken:D,position:y}},Vn=Ce,Jt=class extends Vn{constructor(e){super(e),this.type=\\\"atrule\\\"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}},Fs=Jt;Jt.default=Jt;Vn.registerAtRule(Jt);var Gn=Ce,jn,Hn,Te=class extends Gn{constructor(e){super(e),this.type=\\\"root\\\",this.nodes||(this.nodes=[])}normalize(e,t,r){let i=super.normalize(e);if(t){if(r===\\\"prepend\\\")this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let n of i)n.raws.before=t.raws.before}return i}removeChild(e,t){let r=this.index(e);return!t&&r===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),super.removeChild(e)}toResult(e={}){return new jn(new Hn,this,e).stringify()}};Te.registerLazyResult=s=>{jn=s};Te.registerProcessor=s=>{Hn=s};var at=Te;Te.default=Te;Gn.registerRoot(Te);var qe={comma(s){return qe.split(s,[\\\",\\\"],!0)},space(s){let e=[\\\" \\\",`\\n`,\\\"\\t\\\"];return qe.split(s,e)},split(s,e,t){let r=[],i=\\\"\\\",n=!1,o=0,l=!1,a=\\\"\\\",u=!1;for(let c of s)u?u=!1:c===\\\"\\\\\\\\\\\"?u=!0:l?c===a&&(l=!1):c==='\\\"'||c===\\\"'\\\"?(l=!0,a=c):c===\\\"(\\\"?o+=1:c===\\\")\\\"?o>0&&(o-=1):o===0&&e.includes(c)&&(n=!0),n?(i!==\\\"\\\"&&r.push(i.trim()),i=\\\"\\\",n=!1):i+=c;return(t||i!==\\\"\\\")&&r.push(i.trim()),r}},Yn=qe;qe.default=qe;var Zn=Ce,Eu=Yn,Kt=class extends Zn{constructor(e){super(e),this.type=\\\"rule\\\",this.nodes||(this.nodes=[])}get selectors(){return Eu.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\\\\s*/):null,r=t?t[0]:\\\",\\\"+this.raw(\\\"between\\\",\\\"beforeOpen\\\");this.selector=e.join(r)}},Us=Kt;Kt.default=Kt;Zn.registerRule(Kt);var Iu=ur,xu=Cu,Mu=hr,Nu=Fs,Ru=at,_i=Us,Pi={empty:!0,space:!0};function Au(s){for(let e=s.length-1;e>=0;e--){let t=s[e],r=t[3]||t[2];if(r)return r}}var Ou=class{constructor(e){this.input=e,this.root=new Ru,this.current=this.root,this.spaces=\\\"\\\",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t=new Nu;t.name=e[1].slice(1),t.name===\\\"\\\"&&this.unnamedAtrule(t,e),this.init(t,e[2]);let r,i,n,o=!1,l=!1,a=[],u=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),r=e[0],r===\\\"(\\\"||r===\\\"[\\\"?u.push(r===\\\"(\\\"?\\\")\\\":\\\"]\\\"):r===\\\"{\\\"&&u.length>0?u.push(\\\"}\\\"):r===u[u.length-1]&&u.pop(),u.length===0)if(r===\\\";\\\"){t.source.end=this.getPosition(e[2]),t.source.end.offset++,this.semicolon=!0;break}else if(r===\\\"{\\\"){l=!0;break}else if(r===\\\"}\\\"){if(a.length>0){for(n=a.length-1,i=a[n];i&&i[0]===\\\"space\\\";)i=a[--n];i&&(t.source.end=this.getPosition(i[3]||i[2]),t.source.end.offset++)}this.end(e);break}else a.push(e);else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}t.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(t.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(t,\\\"params\\\",a),o&&(e=a[a.length-1],t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++,this.spaces=t.raws.between,t.raws.between=\\\"\\\")):(t.raws.afterName=\\\"\\\",t.params=\\\"\\\"),l&&(t.nodes=[],this.current=t)}checkMissedSemicolon(e){let t=this.colon(e);if(t===!1)return;let r=0,i;for(let n=t-1;n>=0&&(i=e[n],!(i[0]!==\\\"space\\\"&&(r+=1,r===2)));n--);throw this.input.error(\\\"Missed semicolon\\\",i[0]===\\\"word\\\"?i[3]+1:i[2])}colon(e){let t=0,r,i,n;for(let[o,l]of e.entries()){if(r=l,i=r[0],i===\\\"(\\\"&&(t+=1),i===\\\")\\\"&&(t-=1),t===0&&i===\\\":\\\")if(!n)this.doubleColon(r);else{if(n[0]===\\\"word\\\"&&n[1]===\\\"progid\\\")continue;return o}n=r}return!1}comment(e){let t=new Mu;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let r=e[1].slice(2,-2);if(/^\\\\s*$/.test(r))t.text=\\\"\\\",t.raws.left=r,t.raws.right=\\\"\\\";else{let i=r.match(/^(\\\\s*)([^]*\\\\S)(\\\\s*)$/);t.text=i[2],t.raws.left=i[1],t.raws.right=i[3]}}createTokenizer(){this.tokenizer=xu(this.input)}decl(e,t){let r=new Iu;this.init(r,e[0][2]);let i=e[e.length-1];for(i[0]===\\\";\\\"&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||Au(e)),r.source.end.offset++;e[0][0]!==\\\"word\\\";)e.length===1&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop=\\\"\\\";e.length;){let u=e[0][0];if(u===\\\":\\\"||u===\\\"space\\\"||u===\\\"comment\\\")break;r.prop+=e.shift()[1]}r.raws.between=\\\"\\\";let n;for(;e.length;)if(n=e.shift(),n[0]===\\\":\\\"){r.raws.between+=n[1];break}else n[0]===\\\"word\\\"&&/\\\\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1];(r.prop[0]===\\\"_\\\"||r.prop[0]===\\\"*\\\")&&(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));let o=[],l;for(;e.length&&(l=e[0][0],!(l!==\\\"space\\\"&&l!==\\\"comment\\\"));)o.push(e.shift());this.precheckMissedSemicolon(e);for(let u=e.length-1;u>=0;u--){if(n=e[u],n[1].toLowerCase()===\\\"!important\\\"){r.important=!0;let c=this.stringFrom(e,u);c=this.spacesFromEnd(e)+c,c!==\\\" !important\\\"&&(r.raws.important=c);break}else if(n[1].toLowerCase()===\\\"important\\\"){let c=e.slice(0),h=\\\"\\\";for(let p=u;p>0;p--){let g=c[p][0];if(h.trim().indexOf(\\\"!\\\")===0&&g!==\\\"space\\\")break;h=c.pop()[1]+h}h.trim().indexOf(\\\"!\\\")===0&&(r.important=!0,r.raws.important=h,e=c)}if(n[0]!==\\\"space\\\"&&n[0]!==\\\"comment\\\")break}e.some(u=>u[0]!==\\\"space\\\"&&u[0]!==\\\"comment\\\")&&(r.raws.between+=o.map(u=>u[1]).join(\\\"\\\"),o=[]),this.raw(r,\\\"value\\\",o.concat(e),t),r.value.includes(\\\":\\\")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error(\\\"Double colon\\\",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new _i;this.init(t,e[2]),t.selector=\\\"\\\",t.raws.between=\\\"\\\",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||\\\"\\\")+this.spaces,this.spaces=\\\"\\\",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||\\\"\\\")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let t=this.current.nodes[this.current.nodes.length-1];t&&t.type===\\\"rule\\\"&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces=\\\"\\\")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces=\\\"\\\",e.type!==\\\"comment\\\"&&(this.semicolon=!1)}other(e){let t=!1,r=null,i=!1,n=null,o=[],l=e[1].startsWith(\\\"--\\\"),a=[],u=e;for(;u;){if(r=u[0],a.push(u),r===\\\"(\\\"||r===\\\"[\\\")n||(n=u),o.push(r===\\\"(\\\"?\\\")\\\":\\\"]\\\");else if(l&&i&&r===\\\"{\\\")n||(n=u),o.push(\\\"}\\\");else if(o.length===0)if(r===\\\";\\\")if(i){this.decl(a,l);return}else break;else if(r===\\\"{\\\"){this.rule(a);return}else if(r===\\\"}\\\"){this.tokenizer.back(a.pop()),t=!0;break}else r===\\\":\\\"&&(i=!0);else r===o[o.length-1]&&(o.pop(),o.length===0&&(n=null));u=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(n),t&&i){if(!l)for(;a.length&&(u=a[a.length-1][0],!(u!==\\\"space\\\"&&u!==\\\"comment\\\"));)this.tokenizer.back(a.pop());this.decl(a,l)}else this.unknownWord(a)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case\\\"space\\\":this.spaces+=e[1];break;case\\\";\\\":this.freeSemicolon(e);break;case\\\"}\\\":this.end(e);break;case\\\"comment\\\":this.comment(e);break;case\\\"at-word\\\":this.atrule(e);break;case\\\"{\\\":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,t,r,i){let n,o,l=r.length,a=\\\"\\\",u=!0,c,h;for(let p=0;p<l;p+=1)n=r[p],o=n[0],o===\\\"space\\\"&&p===l-1&&!i?u=!1:o===\\\"comment\\\"?(h=r[p-1]?r[p-1][0]:\\\"empty\\\",c=r[p+1]?r[p+1][0]:\\\"empty\\\",!Pi[h]&&!Pi[c]?a.slice(-1)===\\\",\\\"?u=!1:a+=n[1]:u=!1):a+=n[1];if(!u){let p=r.reduce((g,m)=>g+m[1],\\\"\\\");e.raws[t]={raw:p,value:a}}e[t]=a}rule(e){e.pop();let t=new _i;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,\\\"selector\\\",e),this.current=t}spacesAndCommentsFromEnd(e){let t,r=\\\"\\\";for(;e.length&&(t=e[e.length-1][0],!(t!==\\\"space\\\"&&t!==\\\"comment\\\"));)r=e.pop()[1]+r;return r}spacesAndCommentsFromStart(e){let t,r=\\\"\\\";for(;e.length&&(t=e[0][0],!(t!==\\\"space\\\"&&t!==\\\"comment\\\"));)r+=e.shift()[1];return r}spacesFromEnd(e){let t,r=\\\"\\\";for(;e.length&&(t=e[e.length-1][0],t===\\\"space\\\");)r=e.pop()[1]+r;return r}stringFrom(e,t){let r=\\\"\\\";for(let i=t;i<e.length;i++)r+=e[i][1];return e.splice(t,e.length-t),r}unclosedBlock(){let e=this.current.source.start;throw this.input.error(\\\"Unclosed block\\\",e.line,e.column)}unclosedBracket(e){throw this.input.error(\\\"Unclosed bracket\\\",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error(\\\"Unexpected }\\\",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error(\\\"Unknown word\\\",{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,t){throw this.input.error(\\\"At-rule without name\\\",{offset:t[2]},{offset:t[2]+t[1].length})}},Tu=Ou,Du=Ce,_u=Tu,Pu=cr;function qt(s,e){let t=new Pu(s,e),r=new _u(t);try{r.parse()}catch(i){throw i}return r.root}var Bs=qt;qt.default=qt;Du.registerParse(qt);var{isClean:le,my:Lu}=ot,ku=On,$u=ar,Fu=Ce,Uu=ks;var Li=$s,Bu=Bs,Wu=at,zu={atrule:\\\"AtRule\\\",comment:\\\"Comment\\\",decl:\\\"Declaration\\\",document:\\\"Document\\\",root:\\\"Root\\\",rule:\\\"Rule\\\"},Vu={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Gu={Once:!0,postcssPlugin:!0,prepare:!0},De=0;function Ve(s){return typeof s==\\\"object\\\"&&typeof s.then==\\\"function\\\"}function Xn(s){let e=!1,t=zu[s.type];return s.type===\\\"decl\\\"?e=s.prop.toLowerCase():s.type===\\\"atrule\\\"&&(e=s.name.toLowerCase()),e&&s.append?[t,t+\\\"-\\\"+e,De,t+\\\"Exit\\\",t+\\\"Exit-\\\"+e]:e?[t,t+\\\"-\\\"+e,t+\\\"Exit\\\",t+\\\"Exit-\\\"+e]:s.append?[t,De,t+\\\"Exit\\\"]:[t,t+\\\"Exit\\\"]}function ki(s){let e;return s.type===\\\"document\\\"?e=[\\\"Document\\\",De,\\\"DocumentExit\\\"]:s.type===\\\"root\\\"?e=[\\\"Root\\\",De,\\\"RootExit\\\"]:e=Xn(s),{eventIndex:0,events:e,iterator:0,node:s,visitorIndex:0,visitors:[]}}function es(s){return s[le]=!1,s.nodes&&s.nodes.forEach(e=>es(e)),s}var ts={},_e=class Jn{constructor(e,t,r){this.stringified=!1,this.processed=!1;let i;if(typeof t==\\\"object\\\"&&t!==null&&(t.type===\\\"root\\\"||t.type===\\\"document\\\"))i=es(t);else if(t instanceof Jn||t instanceof Li)i=es(t.root),t.map&&(typeof r.map>\\\"u\\\"&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=t.map);else{let n=Bu;r.syntax&&(n=r.syntax.parse),r.parser&&(n=r.parser),n.parse&&(n=n.parse);try{i=n(t,r)}catch(o){this.processed=!0,this.error=o}i&&!i[Lu]&&Fu.rebuild(i)}this.result=new Li(e,i,r),this.helpers={...ts,postcss:ts,result:this.result},this.plugins=this.processor.plugins.map(n=>typeof n==\\\"object\\\"&&n.prepare?{...n,...n.prepare(this.result)}:n)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error(\\\"Use process(css).then(cb) to work with async plugins\\\")}handleError(e,t){let r=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,e.name===\\\"CssSyntaxError\\\"&&!e.plugin?(e.plugin=r.postcssPlugin,e.setMessage()):r.postcssVersion}catch(i){console&&console.error&&console.error(i)}return e}prepareVisitors(){this.listeners={};let e=(t,r,i)=>{this.listeners[r]||(this.listeners[r]=[]),this.listeners[r].push([t,i])};for(let t of this.plugins)if(typeof t==\\\"object\\\")for(let r in t){if(!Vu[r]&&/^[A-Z]/.test(r))throw new Error(`Unknown event ${r} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Gu[r])if(typeof t[r]==\\\"object\\\")for(let i in t[r])i===\\\"*\\\"?e(t,r,t[r][i]):e(t,r+\\\"-\\\"+i.toLowerCase(),t[r][i]);else typeof t[r]==\\\"function\\\"&&e(t,r,t[r])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let t=this.plugins[e],r=this.runOnRoot(t);if(Ve(r))try{await r}catch(i){throw this.handleError(i)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[le];){e[le]=!0;let t=[ki(e)];for(;t.length>0;){let r=this.visitTick(t);if(Ve(r))try{await r}catch(i){let n=t[t.length-1].node;throw this.handleError(i,n)}}}if(this.listeners.OnceExit)for(let[t,r]of this.listeners.OnceExit){this.result.lastPlugin=t;try{if(e.type===\\\"document\\\"){let i=e.nodes.map(n=>r(n,this.helpers));await Promise.all(i)}else await r(e,this.helpers)}catch(i){throw this.handleError(i)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e==\\\"object\\\"&&e.Once){if(this.result.root.type===\\\"document\\\"){let t=this.result.root.nodes.map(r=>e.Once(r,this.helpers));return Ve(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}else if(typeof e==\\\"function\\\")return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=$u;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let i=new ku(t,this.result.root,this.result.opts).generate();return this.result.css=i[0],this.result.map=i[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let t=this.runOnRoot(e);if(Ve(t))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[le];)e[le]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type===\\\"document\\\")for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[r,i]of e){this.result.lastPlugin=r;let n;try{n=i(t,this.helpers)}catch(o){throw this.handleError(o,t.proxyOf)}if(t.type!==\\\"root\\\"&&t.type!==\\\"document\\\"&&!t.parent)return!0;if(Ve(n))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:r,visitors:i}=t;if(r.type!==\\\"root\\\"&&r.type!==\\\"document\\\"&&!r.parent){e.pop();return}if(i.length>0&&t.visitorIndex<i.length){let[o,l]=i[t.visitorIndex];t.visitorIndex+=1,t.visitorIndex===i.length&&(t.visitors=[],t.visitorIndex=0),this.result.lastPlugin=o;try{return l(r.toProxy(),this.helpers)}catch(a){throw this.handleError(a,r)}}if(t.iterator!==0){let o=t.iterator,l;for(;l=r.nodes[r.indexes[o]];)if(r.indexes[o]+=1,!l[le]){l[le]=!0,e.push(ki(l));return}t.iterator=0,delete r.indexes[o]}let n=t.events;for(;t.eventIndex<n.length;){let o=n[t.eventIndex];if(t.eventIndex+=1,o===De){r.nodes&&r.nodes.length&&(r[le]=!0,t.iterator=r.getIterator());return}else if(this.listeners[o]){t.visitors=this.listeners[o];return}}e.pop()}walkSync(e){e[le]=!0;let t=Xn(e);for(let r of t)if(r===De)e.nodes&&e.each(i=>{i[le]||this.walkSync(i)});else{let i=this.listeners[r];if(i&&this.visitSync(i,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return\\\"LazyResult\\\"}};_e.registerPostcss=s=>{ts=s};var Kn=_e;_e.default=_e;Wu.registerLazyResult(_e);Uu.registerLazyResult(_e);var ju=On,Hu=ar;var Yu=Bs,Zu=$s,rs=class{constructor(e,t,r){t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=r,this._map=void 0;let i,n=Hu;this.result=new Zu(this._processor,i,this._opts),this.result.css=t;let o=this;Object.defineProperty(this.result,\\\"root\\\",{get(){return o.root}});let l=new ju(n,i,this._opts,t);if(l.isMap()){let[a,u]=l.generate();a&&(this.result.css=a),u&&(this.result.map=u)}else l.clearAnnotation(),this.result.css=l.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Yu;try{e=t(this._css,this._opts)}catch(r){this.error=r}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return\\\"NoWorkResult\\\"}},Xu=rs;rs.default=rs;var Ju=Xu,Ku=Kn,qu=ks,Qu=at,Qe=class{constructor(e=[]){this.version=\\\"8.4.38\\\",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let r of e)if(r.postcss===!0?r=r():r.postcss&&(r=r.postcss),typeof r==\\\"object\\\"&&Array.isArray(r.plugins))t=t.concat(r.plugins);else if(typeof r==\\\"object\\\"&&r.postcssPlugin)t.push(r);else if(typeof r==\\\"function\\\")t.push(r);else if(!(typeof r==\\\"object\\\"&&(r.parse||r.stringify)))throw new Error(r+\\\" is not a PostCSS plugin\\\");return t}process(e,t={}){return!this.plugins.length&&!t.parser&&!t.stringifier&&!t.syntax?new Ju(this,e,t):new Ku(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}},ec=Qe;Qe.default=Qe;Qu.registerProcessor(Qe);qu.registerProcessor(Qe);var tc=ur,rc=xn,sc=hr,ic=Fs,nc=cr,oc=at,ac=Us;function et(s,e){if(Array.isArray(s))return s.map(i=>et(i));let{inputs:t,...r}=s;if(t){e=[];for(let i of t){let n={...i,__proto__:nc.prototype};n.map&&(n.map={...n.map,__proto__:rc.prototype}),e.push(n)}}if(r.nodes&&(r.nodes=s.nodes.map(i=>et(i,e))),r.source){let{inputId:i,...n}=r.source;r.source=n,i!=null&&(r.source.input=e[i])}if(r.type===\\\"root\\\")return new oc(r);if(r.type===\\\"decl\\\")return new tc(r);if(r.type===\\\"rule\\\")return new ac(r);if(r.type===\\\"comment\\\")return new sc(r);if(r.type===\\\"atrule\\\")return new ic(r);throw new Error(\\\"Unknown node type: \\\"+s.type)}var lc=et;et.default=et;var uc=_s,qn=ur,cc=Kn,hc=Ce,Ws=ec,fc=ar,dc=lc,Qn=ks,pc=zn,eo=hr,to=Fs,mc=$s,gc=cr,yc=Bs,wc=Yn,ro=Us,so=at,bc=lr;function A(...s){return s.length===1&&Array.isArray(s[0])&&(s=s[0]),new Ws(s)}A.plugin=function(e,t){let r=!1;function i(...o){console&&console.warn&&!r&&(r=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith(\\\"cn\\\")&&console.warn(e+`: \\\\u91CC\\\\u9762 postcss.plugin \\\\u88AB\\\\u5F03\\\\u7528. \\\\u8FC1\\\\u79FB\\\\u6307\\\\u5357:\\nhttps://www.w3ctech.com/topic/2226`));let l=t(...o);return l.postcssPlugin=e,l.postcssVersion=new Ws().version,l}let n;return Object.defineProperty(i,\\\"postcss\\\",{get(){return n||(n=i()),n}}),i.process=function(o,l,a){return A([i(a)]).process(o,l)},i};A.stringify=fc;A.parse=yc;A.fromJSON=dc;A.list=wc;A.comment=s=>new eo(s);A.atRule=s=>new to(s);A.decl=s=>new qn(s);A.rule=s=>new ro(s);A.root=s=>new so(s);A.document=s=>new Qn(s);A.CssSyntaxError=uc;A.Declaration=qn;A.Container=hc;A.Processor=Ws;A.Document=Qn;A.Comment=eo;A.Warning=pc;A.AtRule=to;A.Result=mc;A.Input=gc;A.Rule=ro;A.Root=so;A.Node=bc;cc.registerPostcss(A);var Sc=A;A.default=A;var $=Dl(Sc);$.stringify;$.fromJSON;$.plugin;$.parse;$.list;$.document;$.comment;$.atRule;$.rule;$.decl;$.root;$.CssSyntaxError;$.Declaration;$.Container;$.Processor;$.Document;$.Comment;$.Warning;$.AtRule;$.Result;$.Input;$.Rule;$.Root;$.Node;var vc=Object.defineProperty,Cc=(s,e,t)=>e in s?vc(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,ee=(s,e,t)=>Cc(s,typeof e!=\\\"symbol\\\"?e+\\\"\\\":e,t);function Ec(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,\\\"default\\\")?s.default:s}function Ic(s){if(s.__esModule)return s;var e=s.default;if(typeof e==\\\"function\\\"){var t=function r(){return this instanceof r?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,\\\"__esModule\\\",{value:!0}),Object.keys(s).forEach(function(r){var i=Object.getOwnPropertyDescriptor(s,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return s[r]}})}),t}var zs={exports:{}},L=String,io=function(){return{isColorSupported:!1,reset:L,bold:L,dim:L,italic:L,underline:L,inverse:L,hidden:L,strikethrough:L,black:L,red:L,green:L,yellow:L,blue:L,magenta:L,cyan:L,white:L,gray:L,bgBlack:L,bgRed:L,bgGreen:L,bgYellow:L,bgBlue:L,bgMagenta:L,bgCyan:L,bgWhite:L}};zs.exports=io();zs.exports.createColors=io;var xc=zs.exports,Mc={},Nc=Object.freeze(Object.defineProperty({__proto__:null,default:Mc},Symbol.toStringTag,{value:\\\"Module\\\"})),ie=Ic(Nc),$i=xc,Fi=ie,ss=class no extends Error{constructor(e,t,r,i,n,o){super(e),this.name=\\\"CssSyntaxError\\\",this.reason=e,n&&(this.file=n),i&&(this.source=i),o&&(this.plugin=o),typeof t<\\\"u\\\"&&typeof r<\\\"u\\\"&&(typeof t==\\\"number\\\"?(this.line=t,this.column=r):(this.line=t.line,this.column=t.column,this.endLine=r.line,this.endColumn=r.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,no)}setMessage(){this.message=this.plugin?this.plugin+\\\": \\\":\\\"\\\",this.message+=this.file?this.file:\\\"<css input>\\\",typeof this.line<\\\"u\\\"&&(this.message+=\\\":\\\"+this.line+\\\":\\\"+this.column),this.message+=\\\": \\\"+this.reason}showSourceCode(e){if(!this.source)return\\\"\\\";let t=this.source;e==null&&(e=$i.isColorSupported),Fi&&e&&(t=Fi(t));let r=t.split(/\\\\r?\\\\n/),i=Math.max(this.line-3,0),n=Math.min(this.line+2,r.length),o=String(n).length,l,a;if(e){let{bold:u,gray:c,red:h}=$i.createColors(!0);l=p=>u(h(p)),a=p=>c(p)}else l=a=u=>u;return r.slice(i,n).map((u,c)=>{let h=i+1+c,p=\\\" \\\"+(\\\" \\\"+h).slice(-o)+\\\" | \\\";if(h===this.line){let g=a(p.replace(/\\\\d/g,\\\" \\\"))+u.slice(0,this.column-1).replace(/[^\\\\t]/g,\\\" \\\");return l(\\\">\\\")+a(p)+u+`\\n `+g+l(\\\"^\\\")}return\\\" \\\"+a(p)+u}).join(`\\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\\n\\n`+e+`\\n`),this.name+\\\": \\\"+this.message+e}},Vs=ss;ss.default=ss;var lt={};lt.isClean=Symbol(\\\"isClean\\\");lt.my=Symbol(\\\"my\\\");var Ui={after:`\\n`,beforeClose:`\\n`,beforeComment:`\\n`,beforeDecl:`\\n`,beforeOpen:\\\" \\\",beforeRule:`\\n`,colon:\\\": \\\",commentLeft:\\\" \\\",commentRight:\\\" \\\",emptyBody:\\\"\\\",indent:\\\" \\\",semicolon:!1};function Rc(s){return s[0].toUpperCase()+s.slice(1)}var is=class{constructor(e){this.builder=e}atrule(e,t){let r=\\\"@\\\"+e.name,i=e.params?this.rawValue(e,\\\"params\\\"):\\\"\\\";if(typeof e.raws.afterName<\\\"u\\\"?r+=e.raws.afterName:i&&(r+=\\\" \\\"),e.nodes)this.block(e,r+i);else{let n=(e.raws.between||\\\"\\\")+(t?\\\";\\\":\\\"\\\");this.builder(r+i+n,e)}}beforeAfter(e,t){let r;e.type===\\\"decl\\\"?r=this.raw(e,null,\\\"beforeDecl\\\"):e.type===\\\"comment\\\"?r=this.raw(e,null,\\\"beforeComment\\\"):t===\\\"before\\\"?r=this.raw(e,null,\\\"beforeRule\\\"):r=this.raw(e,null,\\\"beforeClose\\\");let i=e.parent,n=0;for(;i&&i.type!==\\\"root\\\";)n+=1,i=i.parent;if(r.includes(`\\n`)){let o=this.raw(e,null,\\\"indent\\\");if(o.length)for(let l=0;l<n;l++)r+=o}return r}block(e,t){let r=this.raw(e,\\\"between\\\",\\\"beforeOpen\\\");this.builder(t+r+\\\"{\\\",e,\\\"start\\\");let i;e.nodes&&e.nodes.length?(this.body(e),i=this.raw(e,\\\"after\\\")):i=this.raw(e,\\\"after\\\",\\\"emptyBody\\\"),i&&this.builder(i),this.builder(\\\"}\\\",e,\\\"end\\\")}body(e){let t=e.nodes.length-1;for(;t>0&&e.nodes[t].type===\\\"comment\\\";)t-=1;let r=this.raw(e,\\\"semicolon\\\");for(let i=0;i<e.nodes.length;i++){let n=e.nodes[i],o=this.raw(n,\\\"before\\\");o&&this.builder(o),this.stringify(n,t!==i||r)}}comment(e){let t=this.raw(e,\\\"left\\\",\\\"commentLeft\\\"),r=this.raw(e,\\\"right\\\",\\\"commentRight\\\");this.builder(\\\"/*\\\"+t+e.text+r+\\\"*/\\\",e)}decl(e,t){let r=this.raw(e,\\\"between\\\",\\\"colon\\\"),i=e.prop+r+this.rawValue(e,\\\"value\\\");e.important&&(i+=e.raws.important||\\\" !important\\\"),t&&(i+=\\\";\\\"),this.builder(i,e)}document(e){this.body(e)}raw(e,t,r){let i;if(r||(r=t),t&&(i=e.raws[t],typeof i<\\\"u\\\"))return i;let n=e.parent;if(r===\\\"before\\\"&&(!n||n.type===\\\"root\\\"&&n.first===e||n&&n.type===\\\"document\\\"))return\\\"\\\";if(!n)return Ui[r];let o=e.root();if(o.rawCache||(o.rawCache={}),typeof o.rawCache[r]<\\\"u\\\")return o.rawCache[r];if(r===\\\"before\\\"||r===\\\"after\\\")return this.beforeAfter(e,r);{let l=\\\"raw\\\"+Rc(r);this[l]?i=this[l](o,e):o.walk(a=>{if(i=a.raws[t],typeof i<\\\"u\\\")return!1})}return typeof i>\\\"u\\\"&&(i=Ui[r]),o.rawCache[r]=i,i}rawBeforeClose(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length>0&&typeof r.raws.after<\\\"u\\\")return t=r.raws.after,t.includes(`\\n`)&&(t=t.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),t&&(t=t.replace(/\\\\S/g,\\\"\\\")),t}rawBeforeComment(e,t){let r;return e.walkComments(i=>{if(typeof i.raws.before<\\\"u\\\")return r=i.raws.before,r.includes(`\\n`)&&(r=r.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),typeof r>\\\"u\\\"?r=this.raw(t,null,\\\"beforeDecl\\\"):r&&(r=r.replace(/\\\\S/g,\\\"\\\")),r}rawBeforeDecl(e,t){let r;return e.walkDecls(i=>{if(typeof i.raws.before<\\\"u\\\")return r=i.raws.before,r.includes(`\\n`)&&(r=r.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),typeof r>\\\"u\\\"?r=this.raw(t,null,\\\"beforeRule\\\"):r&&(r=r.replace(/\\\\S/g,\\\"\\\")),r}rawBeforeOpen(e){let t;return e.walk(r=>{if(r.type!==\\\"decl\\\"&&(t=r.raws.between,typeof t<\\\"u\\\"))return!1}),t}rawBeforeRule(e){let t;return e.walk(r=>{if(r.nodes&&(r.parent!==e||e.first!==r)&&typeof r.raws.before<\\\"u\\\")return t=r.raws.before,t.includes(`\\n`)&&(t=t.replace(/[^\\\\n]+$/,\\\"\\\")),!1}),t&&(t=t.replace(/\\\\S/g,\\\"\\\")),t}rawColon(e){let t;return e.walkDecls(r=>{if(typeof r.raws.between<\\\"u\\\")return t=r.raws.between.replace(/[^\\\\s:]/g,\\\"\\\"),!1}),t}rawEmptyBody(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length===0&&(t=r.raws.after,typeof t<\\\"u\\\"))return!1}),t}rawIndent(e){if(e.raws.indent)return e.raws.indent;let t;return e.walk(r=>{let i=r.parent;if(i&&i!==e&&i.parent&&i.parent===e&&typeof r.raws.before<\\\"u\\\"){let n=r.raws.before.split(`\\n`);return t=n[n.length-1],t=t.replace(/\\\\S/g,\\\"\\\"),!1}}),t}rawSemicolon(e){let t;return e.walk(r=>{if(r.nodes&&r.nodes.length&&r.last.type===\\\"decl\\\"&&(t=r.raws.semicolon,typeof t<\\\"u\\\"))return!1}),t}rawValue(e,t){let r=e[t],i=e.raws[t];return i&&i.value===r?i.raw:r}root(e){this.body(e),e.raws.after&&this.builder(e.raws.after)}rule(e){this.block(e,this.rawValue(e,\\\"selector\\\")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,\\\"end\\\")}stringify(e,t){if(!this[e.type])throw new Error(\\\"Unknown AST node type \\\"+e.type+\\\". Maybe you need to change PostCSS stringifier.\\\");this[e.type](e,t)}},oo=is;is.default=is;var Ac=oo;function ns(s,e){new Ac(e).stringify(s)}var fr=ns;ns.default=ns;var{isClean:Mt,my:Oc}=lt,Tc=Vs,Dc=oo,_c=fr;function os(s,e){let t=new s.constructor;for(let r in s){if(!Object.prototype.hasOwnProperty.call(s,r)||r===\\\"proxyCache\\\")continue;let i=s[r],n=typeof i;r===\\\"parent\\\"&&n===\\\"object\\\"?e&&(t[r]=e):r===\\\"source\\\"?t[r]=i:Array.isArray(i)?t[r]=i.map(o=>os(o,t)):(n===\\\"object\\\"&&i!==null&&(i=os(i)),t[r]=i)}return t}var as=class{constructor(e={}){this.raws={},this[Mt]=!1,this[Oc]=!0;for(let t in e)if(t===\\\"nodes\\\"){this.nodes=[];for(let r of e[t])typeof r.clone==\\\"function\\\"?this.append(r.clone()):this.append(r)}else this[t]=e[t]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\\\n\\\\s{4}at /.test(e.stack)){let t=this.source;e.stack=e.stack.replace(/\\\\n\\\\s{4}at /,`$&${t.input.from}:${t.start.line}:${t.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let t in e)this[t]=e[t];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let t=os(this);for(let r in e)t[r]=e[r];return t}cloneAfter(e={}){let t=this.clone(e);return this.parent.insertAfter(this,t),t}cloneBefore(e={}){let t=this.clone(e);return this.parent.insertBefore(this,t),t}error(e,t={}){if(this.source){let{end:r,start:i}=this.rangeBy(t);return this.source.input.error(e,{column:i.column,line:i.line},{column:r.column,line:r.line},t)}return new Tc(e)}getProxyProcessor(){return{get(e,t){return t===\\\"proxyOf\\\"?e:t===\\\"root\\\"?()=>e.root().toProxy():e[t]},set(e,t,r){return e[t]===r||(e[t]=r,(t===\\\"prop\\\"||t===\\\"value\\\"||t===\\\"name\\\"||t===\\\"params\\\"||t===\\\"important\\\"||t===\\\"text\\\")&&e.markDirty()),!0}}}markDirty(){if(this[Mt]){this[Mt]=!1;let e=this;for(;e=e.parent;)e[Mt]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e,t){let r=this.source.start;if(e.index)r=this.positionInside(e.index,t);else if(e.word){t=this.toString();let i=t.indexOf(e.word);i!==-1&&(r=this.positionInside(i,t))}return r}positionInside(e,t){let r=t||this.toString(),i=this.source.start.column,n=this.source.start.line;for(let o=0;o<e;o++)r[o]===`\\n`?(i=1,n+=1):i+=1;return{column:i,line:n}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e){let t={column:this.source.start.column,line:this.source.start.line},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line}:{column:t.column+1,line:t.line};if(e.word){let i=this.toString(),n=i.indexOf(e.word);n!==-1&&(t=this.positionInside(n,i),r=this.positionInside(n+e.word.length,i))}else e.start?t={column:e.start.column,line:e.start.line}:e.index&&(t=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line}:typeof e.endIndex==\\\"number\\\"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return(r.line<t.line||r.line===t.line&&r.column<=t.column)&&(r={column:t.column+1,line:t.line}),{end:r,start:t}}raw(e,t){return new Dc().raw(this,e,t)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let t=this,r=!1;for(let i of e)i===this?r=!0:r?(this.parent.insertAfter(t,i),t=i):this.parent.insertBefore(t,i);r||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!==\\\"document\\\";)e=e.parent;return e}toJSON(e,t){let r={},i=t==null;t=t||new Map;let n=0;for(let o in this){if(!Object.prototype.hasOwnProperty.call(this,o)||o===\\\"parent\\\"||o===\\\"proxyCache\\\")continue;let l=this[o];if(Array.isArray(l))r[o]=l.map(a=>typeof a==\\\"object\\\"&&a.toJSON?a.toJSON(null,t):a);else if(typeof l==\\\"object\\\"&&l.toJSON)r[o]=l.toJSON(null,t);else if(o===\\\"source\\\"){let a=t.get(l.input);a==null&&(a=n,t.set(l.input,n),n++),r[o]={end:l.end,inputId:a,start:l.start}}else r[o]=l}return i&&(r.inputs=[...t.keys()].map(o=>o.toJSON())),r}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=_c){e.stringify&&(e=e.stringify);let t=\\\"\\\";return e(this,r=>{t+=r}),t}warn(e,t,r){let i={node:this};for(let n in r)i[n]=r[n];return e.warn(t,i)}get proxyOf(){return this}},dr=as;as.default=as;var Pc=dr,ls=class extends Pc{constructor(e){e&&typeof e.value<\\\"u\\\"&&typeof e.value!=\\\"string\\\"&&(e={...e,value:String(e.value)}),super(e),this.type=\\\"decl\\\"}get variable(){return this.prop.startsWith(\\\"--\\\")||this.prop[0]===\\\"$\\\"}},pr=ls;ls.default=ls;var Lc=\\\"useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict\\\",kc=(s,e=21)=>(t=e)=>{let r=\\\"\\\",i=t;for(;i--;)r+=s[Math.random()*s.length|0];return r},$c=(s=21)=>{let e=\\\"\\\",t=s;for(;t--;)e+=Lc[Math.random()*64|0];return e},Fc={nanoid:$c,customAlphabet:kc},{SourceMapConsumer:Bi,SourceMapGenerator:Wi}=ie,{existsSync:Uc,readFileSync:Bc}=ie,{dirname:_r,join:Wc}=ie;function zc(s){return Buffer?Buffer.from(s,\\\"base64\\\").toString():window.atob(s)}var us=class{constructor(e,t){if(t.map===!1)return;this.loadAnnotation(e),this.inline=this.startWith(this.annotation,\\\"data:\\\");let r=t.map?t.map.prev:void 0,i=this.loadMap(t.from,r);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=_r(this.mapFile)),i&&(this.text=i)}consumer(){return this.consumerCache||(this.consumerCache=new Bi(this.text)),this.consumerCache}decodeInline(e){let t=/^data:application\\\\/json;charset=utf-?8;base64,/,r=/^data:application\\\\/json;base64,/,i=/^data:application\\\\/json;charset=utf-?8,/,n=/^data:application\\\\/json,/;if(i.test(e)||n.test(e))return decodeURIComponent(e.substr(RegExp.lastMatch.length));if(t.test(e)||r.test(e))return zc(e.substr(RegExp.lastMatch.length));let o=e.match(/data:application\\\\/json;([^,]+),/)[1];throw new Error(\\\"Unsupported source map encoding \\\"+o)}getAnnotationURL(e){return e.replace(/^\\\\/\\\\*\\\\s*# sourceMappingURL=/,\\\"\\\").trim()}isMap(e){return typeof e!=\\\"object\\\"?!1:typeof e.mappings==\\\"string\\\"||typeof e._mappings==\\\"string\\\"||Array.isArray(e.sections)}loadAnnotation(e){let t=e.match(/\\\\/\\\\*\\\\s*# sourceMappingURL=/gm);if(!t)return;let r=e.lastIndexOf(t.pop()),i=e.indexOf(\\\"*/\\\",r);r>-1&&i>-1&&(this.annotation=this.getAnnotationURL(e.substring(r,i)))}loadFile(e){if(this.root=_r(e),Uc(e))return this.mapFile=e,Bc(e,\\\"utf-8\\\").toString().trim()}loadMap(e,t){if(t===!1)return!1;if(t){if(typeof t==\\\"string\\\")return t;if(typeof t==\\\"function\\\"){let r=t(e);if(r){let i=this.loadFile(r);if(!i)throw new Error(\\\"Unable to load previous source map: \\\"+r.toString());return i}}else{if(t instanceof Bi)return Wi.fromSourceMap(t).toString();if(t instanceof Wi)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error(\\\"Unsupported previous source map format: \\\"+t.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let r=this.annotation;return e&&(r=Wc(_r(e),r)),this.loadFile(r)}}}startWith(e,t){return e?e.substr(0,t.length)===t:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}},ao=us;us.default=us;var{SourceMapConsumer:Vc,SourceMapGenerator:Gc}=ie,{fileURLToPath:zi,pathToFileURL:Nt}=ie,{isAbsolute:cs,resolve:hs}=ie,{nanoid:jc}=Fc,Pr=ie,Vi=Vs,Hc=ao,Lr=Symbol(\\\"fromOffsetCache\\\"),Yc=!!(Vc&&Gc),Gi=!!(hs&&cs),Qt=class{constructor(e,t={}){if(e===null||typeof e>\\\"u\\\"||typeof e==\\\"object\\\"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]===\\\"\\\\uFEFF\\\"||this.css[0]===\\\"\\\\uFFFE\\\"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Gi||/^\\\\w+:\\\\/\\\\//.test(t.from)||cs(t.from)?this.file=t.from:this.file=hs(t.from)),Gi&&Yc){let r=new Hc(this.css,t);if(r.text){this.map=r;let i=r.consumer().file;!this.file&&i&&(this.file=this.mapResolve(i))}}this.file||(this.id=\\\"<input css \\\"+jc(6)+\\\">\\\"),this.map&&(this.map.file=this.from)}error(e,t,r,i={}){let n,o,l;if(t&&typeof t==\\\"object\\\"){let u=t,c=r;if(typeof u.offset==\\\"number\\\"){let h=this.fromOffset(u.offset);t=h.line,r=h.col}else t=u.line,r=u.column;if(typeof c.offset==\\\"number\\\"){let h=this.fromOffset(c.offset);o=h.line,l=h.col}else o=c.line,l=c.column}else if(!r){let u=this.fromOffset(t);t=u.line,r=u.col}let a=this.origin(t,r,o,l);return a?n=new Vi(e,a.endLine===void 0?a.line:{column:a.column,line:a.line},a.endLine===void 0?a.column:{column:a.endColumn,line:a.endLine},a.source,a.file,i.plugin):n=new Vi(e,o===void 0?t:{column:r,line:t},o===void 0?r:{column:l,line:o},this.css,this.file,i.plugin),n.input={column:r,endColumn:l,endLine:o,line:t,source:this.css},this.file&&(Nt&&(n.input.url=Nt(this.file).toString()),n.input.file=this.file),n}fromOffset(e){let t,r;if(this[Lr])r=this[Lr];else{let n=this.css.split(`\\n`);r=new Array(n.length);let o=0;for(let l=0,a=n.length;l<a;l++)r[l]=o,o+=n[l].length+1;this[Lr]=r}t=r[r.length-1];let i=0;if(e>=t)i=r.length-1;else{let n=r.length-2,o;for(;i<n;)if(o=i+(n-i>>1),e<r[o])n=o-1;else if(e>=r[o+1])i=o+1;else{i=o;break}}return{col:e-r[i]+1,line:i+1}}mapResolve(e){return/^\\\\w+:\\\\/\\\\//.test(e)?e:hs(this.map.consumer().sourceRoot||this.map.root||\\\".\\\",e)}origin(e,t,r,i){if(!this.map)return!1;let n=this.map.consumer(),o=n.originalPositionFor({column:t,line:e});if(!o.source)return!1;let l;typeof r==\\\"number\\\"&&(l=n.originalPositionFor({column:i,line:r}));let a;cs(o.source)?a=Nt(o.source):a=new URL(o.source,this.map.consumer().sourceRoot||Nt(this.map.mapFile));let u={column:o.column,endColumn:l&&l.column,endLine:l&&l.line,line:o.line,url:a.toString()};if(a.protocol===\\\"file:\\\")if(zi)u.file=zi(a);else throw new Error(\\\"file: protocol is not available in this PostCSS build\\\");let c=n.sourceContentFor(o.source);return c&&(u.source=c),u}toJSON(){let e={};for(let t of[\\\"hasBOM\\\",\\\"css\\\",\\\"file\\\",\\\"id\\\"])this[t]!=null&&(e[t]=this[t]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}get from(){return this.file||this.id}},mr=Qt;Qt.default=Qt;Pr&&Pr.registerInput&&Pr.registerInput(Qt);var{SourceMapConsumer:lo,SourceMapGenerator:Bt}=ie,{dirname:Wt,relative:uo,resolve:co,sep:ho}=ie,{pathToFileURL:ji}=ie,Zc=mr,Xc=!!(lo&&Bt),Jc=!!(Wt&&co&&uo&&ho),Kc=class{constructor(e,t,r,i){this.stringify=e,this.mapOpts=r.map||{},this.root=t,this.opts=r,this.css=i,this.originalCSS=i,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;this.isInline()?e=\\\"data:application/json;base64,\\\"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation==\\\"string\\\"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation==\\\"function\\\"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+\\\".map\\\";let t=`\\n`;this.css.includes(`\\\\r\\n`)&&(t=`\\\\r\\n`),this.css+=t+\\\"/*# sourceMappingURL=\\\"+e+\\\" */\\\"}applyPrevMaps(){for(let e of this.previous()){let t=this.toUrl(this.path(e.file)),r=e.root||Wt(e.file),i;this.mapOpts.sourcesContent===!1?(i=new lo(e.text),i.sourcesContent&&(i.sourcesContent=null)):i=e.consumer(),this.map.applySourceMap(i,t,this.toUrl(this.path(r)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1)if(this.root){let e;for(let t=this.root.nodes.length-1;t>=0;t--)e=this.root.nodes[t],e.type===\\\"comment\\\"&&e.text.indexOf(\\\"# sourceMappingURL=\\\")===0&&this.root.removeChild(t)}else this.css&&(this.css=this.css.replace(/\\\\n*?\\\\/\\\\*#[\\\\S\\\\s]*?\\\\*\\\\/$/gm,\\\"\\\"))}generate(){if(this.clearAnnotation(),Jc&&Xc&&this.isMap())return this.generateMap();{let e=\\\"\\\";return this.stringify(this.root,t=>{e+=t}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Bt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Bt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):\\\"<no source>\\\"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css=\\\"\\\",this.map=new Bt({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,t=1,r=\\\"<no source>\\\",i={generated:{column:0,line:0},original:{column:0,line:0},source:\\\"\\\"},n,o;this.stringify(this.root,(l,a,u)=>{if(this.css+=l,a&&u!==\\\"end\\\"&&(i.generated.line=e,i.generated.column=t-1,a.source&&a.source.start?(i.source=this.sourcePath(a),i.original.line=a.source.start.line,i.original.column=a.source.start.column-1,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,this.map.addMapping(i))),n=l.match(/\\\\n/g),n?(e+=n.length,o=l.lastIndexOf(`\\n`),t=l.length-o):t+=l.length,a&&u!==\\\"start\\\"){let c=a.parent||{raws:{}};(!(a.type===\\\"decl\\\"||a.type===\\\"atrule\\\"&&!a.nodes)||a!==c.last||c.raws.semicolon)&&(a.source&&a.source.end?(i.source=this.sourcePath(a),i.original.line=a.source.end.line,i.original.column=a.source.end.column-1,i.generated.line=e,i.generated.column=t-2,this.map.addMapping(i)):(i.source=r,i.original.line=1,i.original.column=0,i.generated.line=e,i.generated.column=t-1,this.map.addMapping(i)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<\\\"u\\\"?this.mapOpts.annotation:this.previous().length?this.previous().some(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<\\\"u\\\")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<\\\"u\\\"&&e!==!0?!1:this.previous().length?this.previous().some(t=>t.inline):!0}isMap(){return typeof this.opts.map<\\\"u\\\"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<\\\"u\\\"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):\\\"to.css\\\"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\\\w+:\\\\/\\\\//.test(e))return e;let t=this.memoizedPaths.get(e);if(t)return t;let r=this.opts.to?Wt(this.opts.to):\\\".\\\";typeof this.mapOpts.annotation==\\\"string\\\"&&(r=Wt(co(r,this.mapOpts.annotation)));let i=uo(r,e);return this.memoizedPaths.set(e,i),i}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let t=e.source.input.map;this.previousMaps.includes(t)||this.previousMaps.push(t)}});else{let e=new Zc(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(t=>{if(t.source){let r=t.source.input.from;if(r&&!e[r]){e[r]=!0;let i=this.usesFileUrls?this.toFileUrl(r):this.toUrl(this.path(r));this.map.setSourceContent(i,t.source.input.css)}}});else if(this.css){let t=this.opts.from?this.toUrl(this.path(this.opts.from)):\\\"<no source>\\\";this.map.setSourceContent(t,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString(\\\"base64\\\"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let t=this.memoizedFileURLs.get(e);if(t)return t;if(ji){let r=ji(e).toString();return this.memoizedFileURLs.set(e,r),r}else throw new Error(\\\"`map.absolute` option is not available in this PostCSS build\\\")}toUrl(e){let t=this.memoizedURLs.get(e);if(t)return t;ho===\\\"\\\\\\\\\\\"&&(e=e.replace(/\\\\\\\\/g,\\\"/\\\"));let r=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,r),r}},fo=Kc,qc=dr,fs=class extends qc{constructor(e){super(e),this.type=\\\"comment\\\"}},gr=fs;fs.default=fs;var{isClean:po,my:mo}=lt,go=pr,yo=gr,Qc=dr,wo,Gs,js,bo;function So(s){return s.map(e=>(e.nodes&&(e.nodes=So(e.nodes)),delete e.source,e))}function vo(s){if(s[po]=!1,s.proxyOf.nodes)for(let e of s.proxyOf.nodes)vo(e)}var fe=class Co extends Qc{append(...e){for(let t of e){let r=this.normalize(t,this.last);for(let i of r)this.proxyOf.nodes.push(i)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let t of this.nodes)t.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let t=this.getIterator(),r,i;for(;this.indexes[t]<this.proxyOf.nodes.length&&(r=this.indexes[t],i=e(this.proxyOf.nodes[r],r),i!==!1);)this.indexes[t]+=1;return delete this.indexes[t],i}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,t){return t===\\\"proxyOf\\\"?e:e[t]?t===\\\"each\\\"||typeof t==\\\"string\\\"&&t.startsWith(\\\"walk\\\")?(...r)=>e[t](...r.map(i=>typeof i==\\\"function\\\"?(n,o)=>i(n.toProxy(),o):i)):t===\\\"every\\\"||t===\\\"some\\\"?r=>e[t]((i,...n)=>r(i.toProxy(),...n)):t===\\\"root\\\"?()=>e.root().toProxy():t===\\\"nodes\\\"?e.nodes.map(r=>r.toProxy()):t===\\\"first\\\"||t===\\\"last\\\"?e[t].toProxy():e[t]:e[t]},set(e,t,r){return e[t]===r||(e[t]=r,(t===\\\"name\\\"||t===\\\"params\\\"||t===\\\"selector\\\")&&e.markDirty()),!0}}}index(e){return typeof e==\\\"number\\\"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,t){let r=this.index(e),i=this.normalize(t,this.proxyOf.nodes[r]).reverse();r=this.index(e);for(let o of i)this.proxyOf.nodes.splice(r+1,0,o);let n;for(let o in this.indexes)n=this.indexes[o],r<n&&(this.indexes[o]=n+i.length);return this.markDirty(),this}insertBefore(e,t){let r=this.index(e),i=r===0?\\\"prepend\\\":!1,n=this.normalize(t,this.proxyOf.nodes[r],i).reverse();r=this.index(e);for(let l of n)this.proxyOf.nodes.splice(r,0,l);let o;for(let l in this.indexes)o=this.indexes[l],r<=o&&(this.indexes[l]=o+n.length);return this.markDirty(),this}normalize(e,t){if(typeof e==\\\"string\\\")e=So(wo(e).nodes);else if(typeof e>\\\"u\\\")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let i of e)i.parent&&i.parent.removeChild(i,\\\"ignore\\\")}else if(e.type===\\\"root\\\"&&this.type!==\\\"document\\\"){e=e.nodes.slice(0);for(let i of e)i.parent&&i.parent.removeChild(i,\\\"ignore\\\")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>\\\"u\\\")throw new Error(\\\"Value field is missed in node creation\\\");typeof e.value!=\\\"string\\\"&&(e.value=String(e.value)),e=[new go(e)]}else if(e.selector)e=[new Gs(e)];else if(e.name)e=[new js(e)];else if(e.text)e=[new yo(e)];else throw new Error(\\\"Unknown node type in node creation\\\");return e.map(i=>(i[mo]||Co.rebuild(i),i=i.proxyOf,i.parent&&i.parent.removeChild(i),i[po]&&vo(i),typeof i.raws.before>\\\"u\\\"&&t&&typeof t.raws.before<\\\"u\\\"&&(i.raws.before=t.raws.before.replace(/\\\\S/g,\\\"\\\")),i.parent=this.proxyOf,i))}prepend(...e){e=e.reverse();for(let t of e){let r=this.normalize(t,this.first,\\\"prepend\\\").reverse();for(let i of r)this.proxyOf.nodes.unshift(i);for(let i in this.indexes)this.indexes[i]=this.indexes[i]+r.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let t;for(let r in this.indexes)t=this.indexes[r],t>=e&&(this.indexes[r]=t-1);return this.markDirty(),this}replaceValues(e,t,r){return r||(r=t,t={}),this.walkDecls(i=>{t.props&&!t.props.includes(i.prop)||t.fast&&!i.value.includes(t.fast)||(i.value=i.value.replace(e,r))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((t,r)=>{let i;try{i=e(t,r)}catch(n){throw t.addToError(n)}return i!==!1&&t.walk&&(i=t.walk(e)),i})}walkAtRules(e,t){return t?e instanceof RegExp?this.walk((r,i)=>{if(r.type===\\\"atrule\\\"&&e.test(r.name))return t(r,i)}):this.walk((r,i)=>{if(r.type===\\\"atrule\\\"&&r.name===e)return t(r,i)}):(t=e,this.walk((r,i)=>{if(r.type===\\\"atrule\\\")return t(r,i)}))}walkComments(e){return this.walk((t,r)=>{if(t.type===\\\"comment\\\")return e(t,r)})}walkDecls(e,t){return t?e instanceof RegExp?this.walk((r,i)=>{if(r.type===\\\"decl\\\"&&e.test(r.prop))return t(r,i)}):this.walk((r,i)=>{if(r.type===\\\"decl\\\"&&r.prop===e)return t(r,i)}):(t=e,this.walk((r,i)=>{if(r.type===\\\"decl\\\")return t(r,i)}))}walkRules(e,t){return t?e instanceof RegExp?this.walk((r,i)=>{if(r.type===\\\"rule\\\"&&e.test(r.selector))return t(r,i)}):this.walk((r,i)=>{if(r.type===\\\"rule\\\"&&r.selector===e)return t(r,i)}):(t=e,this.walk((r,i)=>{if(r.type===\\\"rule\\\")return t(r,i)}))}get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}};fe.registerParse=s=>{wo=s};fe.registerRule=s=>{Gs=s};fe.registerAtRule=s=>{js=s};fe.registerRoot=s=>{bo=s};var Ee=fe;fe.default=fe;fe.rebuild=s=>{s.type===\\\"atrule\\\"?Object.setPrototypeOf(s,js.prototype):s.type===\\\"rule\\\"?Object.setPrototypeOf(s,Gs.prototype):s.type===\\\"decl\\\"?Object.setPrototypeOf(s,go.prototype):s.type===\\\"comment\\\"?Object.setPrototypeOf(s,yo.prototype):s.type===\\\"root\\\"&&Object.setPrototypeOf(s,bo.prototype),s[mo]=!0,s.nodes&&s.nodes.forEach(e=>{fe.rebuild(e)})};var eh=Ee,Eo,Io,tt=class extends eh{constructor(e){super({type:\\\"document\\\",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new Eo(new Io,this,e).stringify()}};tt.registerLazyResult=s=>{Eo=s};tt.registerProcessor=s=>{Io=s};var Hs=tt;tt.default=tt;var ds=class{constructor(e,t={}){if(this.type=\\\"warning\\\",this.text=e,t.node&&t.node.source){let r=t.node.rangeBy(t);this.line=r.start.line,this.column=r.start.column,this.endLine=r.end.line,this.endColumn=r.end.column}for(let r in t)this[r]=t[r]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+\\\": \\\"+this.text:this.text}},xo=ds;ds.default=ds;var th=xo,ps=class{constructor(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}toString(){return this.css}warn(e,t={}){t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);let r=new th(e,t);return this.messages.push(r),r}warnings(){return this.messages.filter(e=>e.type===\\\"warning\\\")}get content(){return this.css}},Ys=ps;ps.default=ps;var kr=39,Hi=34,Rt=92,Yi=47,At=10,Ge=32,Ot=12,Tt=9,Dt=13,rh=91,sh=93,ih=40,nh=41,oh=123,ah=125,lh=59,uh=42,ch=58,hh=64,_t=/[\\\\t\\\\n\\\\f\\\\r \\\"#'()/;[\\\\\\\\\\\\]{}]/g,Pt=/[\\\\t\\\\n\\\\f\\\\r !\\\"#'():;@[\\\\\\\\\\\\]{}]|\\\\/(?=\\\\*)/g,fh=/.[\\\\r\\\\n\\\"'(/\\\\\\\\]/,Zi=/[\\\\da-f]/i,dh=function(e,t={}){let r=e.css.valueOf(),i=t.ignoreErrors,n,o,l,a,u,c,h,p,g,m,d=r.length,f=0,b=[],S=[];function y(){return f}function v(k){throw e.error(\\\"Unclosed \\\"+k,f)}function N(){return S.length===0&&f>=d}function D(k){if(S.length)return S.pop();if(f>=d)return;let z=k?k.ignoreUnclosed:!1;switch(n=r.charCodeAt(f),n){case At:case Ge:case Tt:case Dt:case Ot:{o=f;do o+=1,n=r.charCodeAt(o);while(n===Ge||n===At||n===Tt||n===Dt||n===Ot);m=[\\\"space\\\",r.slice(f,o)],f=o-1;break}case rh:case sh:case oh:case ah:case ch:case lh:case nh:{let H=String.fromCharCode(n);m=[H,H,f];break}case ih:{if(p=b.length?b.pop()[1]:\\\"\\\",g=r.charCodeAt(f+1),p===\\\"url\\\"&&g!==kr&&g!==Hi&&g!==Ge&&g!==At&&g!==Tt&&g!==Ot&&g!==Dt){o=f;do{if(c=!1,o=r.indexOf(\\\")\\\",o+1),o===-1)if(i||z){o=f;break}else v(\\\"bracket\\\");for(h=o;r.charCodeAt(h-1)===Rt;)h-=1,c=!c}while(c);m=[\\\"brackets\\\",r.slice(f,o+1),f,o],f=o}else o=r.indexOf(\\\")\\\",f+1),a=r.slice(f,o+1),o===-1||fh.test(a)?m=[\\\"(\\\",\\\"(\\\",f]:(m=[\\\"brackets\\\",a,f,o],f=o);break}case kr:case Hi:{l=n===kr?\\\"'\\\":'\\\"',o=f;do{if(c=!1,o=r.indexOf(l,o+1),o===-1)if(i||z){o=f+1;break}else v(\\\"string\\\");for(h=o;r.charCodeAt(h-1)===Rt;)h-=1,c=!c}while(c);m=[\\\"string\\\",r.slice(f,o+1),f,o],f=o;break}case hh:{_t.lastIndex=f+1,_t.test(r),_t.lastIndex===0?o=r.length-1:o=_t.lastIndex-2,m=[\\\"at-word\\\",r.slice(f,o+1),f,o],f=o;break}case Rt:{for(o=f,u=!0;r.charCodeAt(o+1)===Rt;)o+=1,u=!u;if(n=r.charCodeAt(o+1),u&&n!==Yi&&n!==Ge&&n!==At&&n!==Tt&&n!==Dt&&n!==Ot&&(o+=1,Zi.test(r.charAt(o)))){for(;Zi.test(r.charAt(o+1));)o+=1;r.charCodeAt(o+1)===Ge&&(o+=1)}m=[\\\"word\\\",r.slice(f,o+1),f,o],f=o;break}default:{n===Yi&&r.charCodeAt(f+1)===uh?(o=r.indexOf(\\\"*/\\\",f+2)+1,o===0&&(i||z?o=r.length:v(\\\"comment\\\")),m=[\\\"comment\\\",r.slice(f,o+1),f,o],f=o):(Pt.lastIndex=f+1,Pt.test(r),Pt.lastIndex===0?o=r.length-1:o=Pt.lastIndex-2,m=[\\\"word\\\",r.slice(f,o+1),f,o],b.push(m),f=o);break}}return f++,m}function V(k){S.push(k)}return{back:V,endOfFile:N,nextToken:D,position:y}},Mo=Ee,er=class extends Mo{constructor(e){super(e),this.type=\\\"atrule\\\"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}},Zs=er;er.default=er;Mo.registerAtRule(er);var No=Ee,Ro,Ao,Pe=class extends No{constructor(e){super(e),this.type=\\\"root\\\",this.nodes||(this.nodes=[])}normalize(e,t,r){let i=super.normalize(e);if(t){if(r===\\\"prepend\\\")this.nodes.length>1?t.raws.before=this.nodes[1].raws.before:delete t.raws.before;else if(this.first!==t)for(let n of i)n.raws.before=t.raws.before}return i}removeChild(e,t){let r=this.index(e);return!t&&r===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[r].raws.before),super.removeChild(e)}toResult(e={}){return new Ro(new Ao,this,e).stringify()}};Pe.registerLazyResult=s=>{Ro=s};Pe.registerProcessor=s=>{Ao=s};var ut=Pe;Pe.default=Pe;No.registerRoot(Pe);var rt={comma(s){return rt.split(s,[\\\",\\\"],!0)},space(s){let e=[\\\" \\\",`\\n`,\\\"\\t\\\"];return rt.split(s,e)},split(s,e,t){let r=[],i=\\\"\\\",n=!1,o=0,l=!1,a=\\\"\\\",u=!1;for(let c of s)u?u=!1:c===\\\"\\\\\\\\\\\"?u=!0:l?c===a&&(l=!1):c==='\\\"'||c===\\\"'\\\"?(l=!0,a=c):c===\\\"(\\\"?o+=1:c===\\\")\\\"?o>0&&(o-=1):o===0&&e.includes(c)&&(n=!0),n?(i!==\\\"\\\"&&r.push(i.trim()),i=\\\"\\\",n=!1):i+=c;return(t||i!==\\\"\\\")&&r.push(i.trim()),r}},Oo=rt;rt.default=rt;var To=Ee,ph=Oo,tr=class extends To{constructor(e){super(e),this.type=\\\"rule\\\",this.nodes||(this.nodes=[])}get selectors(){return ph.comma(this.selector)}set selectors(e){let t=this.selector?this.selector.match(/,\\\\s*/):null,r=t?t[0]:\\\",\\\"+this.raw(\\\"between\\\",\\\"beforeOpen\\\");this.selector=e.join(r)}},Xs=tr;tr.default=tr;To.registerRule(tr);var mh=pr,gh=dh,yh=gr,wh=Zs,bh=ut,Xi=Xs,Ji={empty:!0,space:!0};function Sh(s){for(let e=s.length-1;e>=0;e--){let t=s[e],r=t[3]||t[2];if(r)return r}}var vh=class{constructor(e){this.input=e,this.root=new bh,this.current=this.root,this.spaces=\\\"\\\",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let t=new wh;t.name=e[1].slice(1),t.name===\\\"\\\"&&this.unnamedAtrule(t,e),this.init(t,e[2]);let r,i,n,o=!1,l=!1,a=[],u=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),r=e[0],r===\\\"(\\\"||r===\\\"[\\\"?u.push(r===\\\"(\\\"?\\\")\\\":\\\"]\\\"):r===\\\"{\\\"&&u.length>0?u.push(\\\"}\\\"):r===u[u.length-1]&&u.pop(),u.length===0)if(r===\\\";\\\"){t.source.end=this.getPosition(e[2]),t.source.end.offset++,this.semicolon=!0;break}else if(r===\\\"{\\\"){l=!0;break}else if(r===\\\"}\\\"){if(a.length>0){for(n=a.length-1,i=a[n];i&&i[0]===\\\"space\\\";)i=a[--n];i&&(t.source.end=this.getPosition(i[3]||i[2]),t.source.end.offset++)}this.end(e);break}else a.push(e);else a.push(e);if(this.tokenizer.endOfFile()){o=!0;break}}t.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(t.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(t,\\\"params\\\",a),o&&(e=a[a.length-1],t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++,this.spaces=t.raws.between,t.raws.between=\\\"\\\")):(t.raws.afterName=\\\"\\\",t.params=\\\"\\\"),l&&(t.nodes=[],this.current=t)}checkMissedSemicolon(e){let t=this.colon(e);if(t===!1)return;let r=0,i;for(let n=t-1;n>=0&&(i=e[n],!(i[0]!==\\\"space\\\"&&(r+=1,r===2)));n--);throw this.input.error(\\\"Missed semicolon\\\",i[0]===\\\"word\\\"?i[3]+1:i[2])}colon(e){let t=0,r,i,n;for(let[o,l]of e.entries()){if(r=l,i=r[0],i===\\\"(\\\"&&(t+=1),i===\\\")\\\"&&(t-=1),t===0&&i===\\\":\\\")if(!n)this.doubleColon(r);else{if(n[0]===\\\"word\\\"&&n[1]===\\\"progid\\\")continue;return o}n=r}return!1}comment(e){let t=new yh;this.init(t,e[2]),t.source.end=this.getPosition(e[3]||e[2]),t.source.end.offset++;let r=e[1].slice(2,-2);if(/^\\\\s*$/.test(r))t.text=\\\"\\\",t.raws.left=r,t.raws.right=\\\"\\\";else{let i=r.match(/^(\\\\s*)([^]*\\\\S)(\\\\s*)$/);t.text=i[2],t.raws.left=i[1],t.raws.right=i[3]}}createTokenizer(){this.tokenizer=gh(this.input)}decl(e,t){let r=new mh;this.init(r,e[0][2]);let i=e[e.length-1];for(i[0]===\\\";\\\"&&(this.semicolon=!0,e.pop()),r.source.end=this.getPosition(i[3]||i[2]||Sh(e)),r.source.end.offset++;e[0][0]!==\\\"word\\\";)e.length===1&&this.unknownWord(e),r.raws.before+=e.shift()[1];for(r.source.start=this.getPosition(e[0][2]),r.prop=\\\"\\\";e.length;){let u=e[0][0];if(u===\\\":\\\"||u===\\\"space\\\"||u===\\\"comment\\\")break;r.prop+=e.shift()[1]}r.raws.between=\\\"\\\";let n;for(;e.length;)if(n=e.shift(),n[0]===\\\":\\\"){r.raws.between+=n[1];break}else n[0]===\\\"word\\\"&&/\\\\w/.test(n[1])&&this.unknownWord([n]),r.raws.between+=n[1];(r.prop[0]===\\\"_\\\"||r.prop[0]===\\\"*\\\")&&(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));let o=[],l;for(;e.length&&(l=e[0][0],!(l!==\\\"space\\\"&&l!==\\\"comment\\\"));)o.push(e.shift());this.precheckMissedSemicolon(e);for(let u=e.length-1;u>=0;u--){if(n=e[u],n[1].toLowerCase()===\\\"!important\\\"){r.important=!0;let c=this.stringFrom(e,u);c=this.spacesFromEnd(e)+c,c!==\\\" !important\\\"&&(r.raws.important=c);break}else if(n[1].toLowerCase()===\\\"important\\\"){let c=e.slice(0),h=\\\"\\\";for(let p=u;p>0;p--){let g=c[p][0];if(h.trim().indexOf(\\\"!\\\")===0&&g!==\\\"space\\\")break;h=c.pop()[1]+h}h.trim().indexOf(\\\"!\\\")===0&&(r.important=!0,r.raws.important=h,e=c)}if(n[0]!==\\\"space\\\"&&n[0]!==\\\"comment\\\")break}e.some(u=>u[0]!==\\\"space\\\"&&u[0]!==\\\"comment\\\")&&(r.raws.between+=o.map(u=>u[1]).join(\\\"\\\"),o=[]),this.raw(r,\\\"value\\\",o.concat(e),t),r.value.includes(\\\":\\\")&&!t&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error(\\\"Double colon\\\",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let t=new Xi;this.init(t,e[2]),t.selector=\\\"\\\",t.raws.between=\\\"\\\",this.current=t}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||\\\"\\\")+this.spaces,this.spaces=\\\"\\\",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||\\\"\\\")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let t=this.current.nodes[this.current.nodes.length-1];t&&t.type===\\\"rule\\\"&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces=\\\"\\\")}}getPosition(e){let t=this.input.fromOffset(e);return{column:t.col,line:t.line,offset:e}}init(e,t){this.current.push(e),e.source={input:this.input,start:this.getPosition(t)},e.raws.before=this.spaces,this.spaces=\\\"\\\",e.type!==\\\"comment\\\"&&(this.semicolon=!1)}other(e){let t=!1,r=null,i=!1,n=null,o=[],l=e[1].startsWith(\\\"--\\\"),a=[],u=e;for(;u;){if(r=u[0],a.push(u),r===\\\"(\\\"||r===\\\"[\\\")n||(n=u),o.push(r===\\\"(\\\"?\\\")\\\":\\\"]\\\");else if(l&&i&&r===\\\"{\\\")n||(n=u),o.push(\\\"}\\\");else if(o.length===0)if(r===\\\";\\\")if(i){this.decl(a,l);return}else break;else if(r===\\\"{\\\"){this.rule(a);return}else if(r===\\\"}\\\"){this.tokenizer.back(a.pop()),t=!0;break}else r===\\\":\\\"&&(i=!0);else r===o[o.length-1]&&(o.pop(),o.length===0&&(n=null));u=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),o.length>0&&this.unclosedBracket(n),t&&i){if(!l)for(;a.length&&(u=a[a.length-1][0],!(u!==\\\"space\\\"&&u!==\\\"comment\\\"));)this.tokenizer.back(a.pop());this.decl(a,l)}else this.unknownWord(a)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case\\\"space\\\":this.spaces+=e[1];break;case\\\";\\\":this.freeSemicolon(e);break;case\\\"}\\\":this.end(e);break;case\\\"comment\\\":this.comment(e);break;case\\\"at-word\\\":this.atrule(e);break;case\\\"{\\\":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,t,r,i){let n,o,l=r.length,a=\\\"\\\",u=!0,c,h;for(let p=0;p<l;p+=1)n=r[p],o=n[0],o===\\\"space\\\"&&p===l-1&&!i?u=!1:o===\\\"comment\\\"?(h=r[p-1]?r[p-1][0]:\\\"empty\\\",c=r[p+1]?r[p+1][0]:\\\"empty\\\",!Ji[h]&&!Ji[c]?a.slice(-1)===\\\",\\\"?u=!1:a+=n[1]:u=!1):a+=n[1];if(!u){let p=r.reduce((g,m)=>g+m[1],\\\"\\\");e.raws[t]={raw:p,value:a}}e[t]=a}rule(e){e.pop();let t=new Xi;this.init(t,e[0][2]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,\\\"selector\\\",e),this.current=t}spacesAndCommentsFromEnd(e){let t,r=\\\"\\\";for(;e.length&&(t=e[e.length-1][0],!(t!==\\\"space\\\"&&t!==\\\"comment\\\"));)r=e.pop()[1]+r;return r}spacesAndCommentsFromStart(e){let t,r=\\\"\\\";for(;e.length&&(t=e[0][0],!(t!==\\\"space\\\"&&t!==\\\"comment\\\"));)r+=e.shift()[1];return r}spacesFromEnd(e){let t,r=\\\"\\\";for(;e.length&&(t=e[e.length-1][0],t===\\\"space\\\");)r=e.pop()[1]+r;return r}stringFrom(e,t){let r=\\\"\\\";for(let i=t;i<e.length;i++)r+=e[i][1];return e.splice(t,e.length-t),r}unclosedBlock(){let e=this.current.source.start;throw this.input.error(\\\"Unclosed block\\\",e.line,e.column)}unclosedBracket(e){throw this.input.error(\\\"Unclosed bracket\\\",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error(\\\"Unexpected }\\\",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error(\\\"Unknown word\\\",{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,t){throw this.input.error(\\\"At-rule without name\\\",{offset:t[2]},{offset:t[2]+t[1].length})}},Ch=vh,Eh=Ee,Ih=Ch,xh=mr;function rr(s,e){let t=new xh(s,e),r=new Ih(t);try{r.parse()}catch(i){throw i}return r.root}var Js=rr;rr.default=rr;Eh.registerParse(rr);var{isClean:ue,my:Mh}=lt,Nh=fo,Rh=fr,Ah=Ee,Oh=Hs;var Ki=Ys,Th=Js,Dh=ut,_h={atrule:\\\"AtRule\\\",comment:\\\"Comment\\\",decl:\\\"Declaration\\\",document:\\\"Document\\\",root:\\\"Root\\\",rule:\\\"Rule\\\"},Ph={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Lh={Once:!0,postcssPlugin:!0,prepare:!0},Le=0;function je(s){return typeof s==\\\"object\\\"&&typeof s.then==\\\"function\\\"}function Do(s){let e=!1,t=_h[s.type];return s.type===\\\"decl\\\"?e=s.prop.toLowerCase():s.type===\\\"atrule\\\"&&(e=s.name.toLowerCase()),e&&s.append?[t,t+\\\"-\\\"+e,Le,t+\\\"Exit\\\",t+\\\"Exit-\\\"+e]:e?[t,t+\\\"-\\\"+e,t+\\\"Exit\\\",t+\\\"Exit-\\\"+e]:s.append?[t,Le,t+\\\"Exit\\\"]:[t,t+\\\"Exit\\\"]}function qi(s){let e;return s.type===\\\"document\\\"?e=[\\\"Document\\\",Le,\\\"DocumentExit\\\"]:s.type===\\\"root\\\"?e=[\\\"Root\\\",Le,\\\"RootExit\\\"]:e=Do(s),{eventIndex:0,events:e,iterator:0,node:s,visitorIndex:0,visitors:[]}}function ms(s){return s[ue]=!1,s.nodes&&s.nodes.forEach(e=>ms(e)),s}var gs={},ke=class _o{constructor(e,t,r){this.stringified=!1,this.processed=!1;let i;if(typeof t==\\\"object\\\"&&t!==null&&(t.type===\\\"root\\\"||t.type===\\\"document\\\"))i=ms(t);else if(t instanceof _o||t instanceof Ki)i=ms(t.root),t.map&&(typeof r.map>\\\"u\\\"&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=t.map);else{let n=Th;r.syntax&&(n=r.syntax.parse),r.parser&&(n=r.parser),n.parse&&(n=n.parse);try{i=n(t,r)}catch(o){this.processed=!0,this.error=o}i&&!i[Mh]&&Ah.rebuild(i)}this.result=new Ki(e,i,r),this.helpers={...gs,postcss:gs,result:this.result},this.plugins=this.processor.plugins.map(n=>typeof n==\\\"object\\\"&&n.prepare?{...n,...n.prepare(this.result)}:n)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error(\\\"Use process(css).then(cb) to work with async plugins\\\")}handleError(e,t){let r=this.result.lastPlugin;try{t&&t.addToError(e),this.error=e,e.name===\\\"CssSyntaxError\\\"&&!e.plugin?(e.plugin=r.postcssPlugin,e.setMessage()):r.postcssVersion}catch(i){console&&console.error&&console.error(i)}return e}prepareVisitors(){this.listeners={};let e=(t,r,i)=>{this.listeners[r]||(this.listeners[r]=[]),this.listeners[r].push([t,i])};for(let t of this.plugins)if(typeof t==\\\"object\\\")for(let r in t){if(!Ph[r]&&/^[A-Z]/.test(r))throw new Error(`Unknown event ${r} in ${t.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Lh[r])if(typeof t[r]==\\\"object\\\")for(let i in t[r])i===\\\"*\\\"?e(t,r,t[r][i]):e(t,r+\\\"-\\\"+i.toLowerCase(),t[r][i]);else typeof t[r]==\\\"function\\\"&&e(t,r,t[r])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let t=this.plugins[e],r=this.runOnRoot(t);if(je(r))try{await r}catch(i){throw this.handleError(i)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[ue];){e[ue]=!0;let t=[qi(e)];for(;t.length>0;){let r=this.visitTick(t);if(je(r))try{await r}catch(i){let n=t[t.length-1].node;throw this.handleError(i,n)}}}if(this.listeners.OnceExit)for(let[t,r]of this.listeners.OnceExit){this.result.lastPlugin=t;try{if(e.type===\\\"document\\\"){let i=e.nodes.map(n=>r(n,this.helpers));await Promise.all(i)}else await r(e,this.helpers)}catch(i){throw this.handleError(i)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e==\\\"object\\\"&&e.Once){if(this.result.root.type===\\\"document\\\"){let t=this.result.root.nodes.map(r=>e.Once(r,this.helpers));return je(t[0])?Promise.all(t):t}return e.Once(this.result.root,this.helpers)}else if(typeof e==\\\"function\\\")return e(this.result.root,this.result)}catch(t){throw this.handleError(t)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,t=Rh;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);let i=new Nh(t,this.result.root,this.result.opts).generate();return this.result.css=i[0],this.result.map=i[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let t=this.runOnRoot(e);if(je(t))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[ue];)e[ue]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type===\\\"document\\\")for(let t of e.nodes)this.visitSync(this.listeners.OnceExit,t);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,t){return this.async().then(e,t)}toString(){return this.css}visitSync(e,t){for(let[r,i]of e){this.result.lastPlugin=r;let n;try{n=i(t,this.helpers)}catch(o){throw this.handleError(o,t.proxyOf)}if(t.type!==\\\"root\\\"&&t.type!==\\\"document\\\"&&!t.parent)return!0;if(je(n))throw this.getAsyncError()}}visitTick(e){let t=e[e.length-1],{node:r,visitors:i}=t;if(r.type!==\\\"root\\\"&&r.type!==\\\"document\\\"&&!r.parent){e.pop();return}if(i.length>0&&t.visitorIndex<i.length){let[o,l]=i[t.visitorIndex];t.visitorIndex+=1,t.visitorIndex===i.length&&(t.visitors=[],t.visitorIndex=0),this.result.lastPlugin=o;try{return l(r.toProxy(),this.helpers)}catch(a){throw this.handleError(a,r)}}if(t.iterator!==0){let o=t.iterator,l;for(;l=r.nodes[r.indexes[o]];)if(r.indexes[o]+=1,!l[ue]){l[ue]=!0,e.push(qi(l));return}t.iterator=0,delete r.indexes[o]}let n=t.events;for(;t.eventIndex<n.length;){let o=n[t.eventIndex];if(t.eventIndex+=1,o===Le){r.nodes&&r.nodes.length&&(r[ue]=!0,t.iterator=r.getIterator());return}else if(this.listeners[o]){t.visitors=this.listeners[o];return}}e.pop()}walkSync(e){e[ue]=!0;let t=Do(e);for(let r of t)if(r===Le)e.nodes&&e.each(i=>{i[ue]||this.walkSync(i)});else{let i=this.listeners[r];if(i&&this.visitSync(i,e.toProxy()))return}}warnings(){return this.sync().warnings()}get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return\\\"LazyResult\\\"}};ke.registerPostcss=s=>{gs=s};var Po=ke;ke.default=ke;Dh.registerLazyResult(ke);Oh.registerLazyResult(ke);var kh=fo,$h=fr;var Fh=Js,Uh=Ys,ys=class{constructor(e,t,r){t=t.toString(),this.stringified=!1,this._processor=e,this._css=t,this._opts=r,this._map=void 0;let i,n=$h;this.result=new Uh(this._processor,i,this._opts),this.result.css=t;let o=this;Object.defineProperty(this.result,\\\"root\\\",{get(){return o.root}});let l=new kh(n,i,this._opts,t);if(l.isMap()){let[a,u]=l.generate();a&&(this.result.css=a),u&&(this.result.map=u)}else l.clearAnnotation(),this.result.css=l.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,t){return this.async().then(e,t)}toString(){return this._css}warnings(){return[]}get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,t=Fh;try{e=t(this._css,this._opts)}catch(r){this.error=r}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return\\\"NoWorkResult\\\"}},Bh=ys;ys.default=ys;var Wh=Bh,zh=Po,Vh=Hs,Gh=ut,st=class{constructor(e=[]){this.version=\\\"8.4.38\\\",this.plugins=this.normalize(e)}normalize(e){let t=[];for(let r of e)if(r.postcss===!0?r=r():r.postcss&&(r=r.postcss),typeof r==\\\"object\\\"&&Array.isArray(r.plugins))t=t.concat(r.plugins);else if(typeof r==\\\"object\\\"&&r.postcssPlugin)t.push(r);else if(typeof r==\\\"function\\\")t.push(r);else if(!(typeof r==\\\"object\\\"&&(r.parse||r.stringify)))throw new Error(r+\\\" is not a PostCSS plugin\\\");return t}process(e,t={}){return!this.plugins.length&&!t.parser&&!t.stringifier&&!t.syntax?new Wh(this,e,t):new zh(this,e,t)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}},jh=st;st.default=st;Gh.registerProcessor(st);Vh.registerProcessor(st);var Hh=pr,Yh=ao,Zh=gr,Xh=Zs,Jh=mr,Kh=ut,qh=Xs;function it(s,e){if(Array.isArray(s))return s.map(i=>it(i));let{inputs:t,...r}=s;if(t){e=[];for(let i of t){let n={...i,__proto__:Jh.prototype};n.map&&(n.map={...n.map,__proto__:Yh.prototype}),e.push(n)}}if(r.nodes&&(r.nodes=s.nodes.map(i=>it(i,e))),r.source){let{inputId:i,...n}=r.source;r.source=n,i!=null&&(r.source.input=e[i])}if(r.type===\\\"root\\\")return new Kh(r);if(r.type===\\\"decl\\\")return new Hh(r);if(r.type===\\\"rule\\\")return new qh(r);if(r.type===\\\"comment\\\")return new Zh(r);if(r.type===\\\"atrule\\\")return new Xh(r);throw new Error(\\\"Unknown node type: \\\"+s.type)}var Qh=it;it.default=it;var ef=Vs,Lo=pr,tf=Po,rf=Ee,Ks=jh,sf=fr,nf=Qh,ko=Hs,of=xo,$o=gr,Fo=Zs,af=Ys,lf=mr,uf=Js,cf=Oo,Uo=Xs,Bo=ut,hf=dr;function O(...s){return s.length===1&&Array.isArray(s[0])&&(s=s[0]),new Ks(s)}O.plugin=function(e,t){let r=!1;function i(...o){console&&console.warn&&!r&&(r=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith(\\\"cn\\\")&&console.warn(e+`: \\\\u91CC\\\\u9762 postcss.plugin \\\\u88AB\\\\u5F03\\\\u7528. \\\\u8FC1\\\\u79FB\\\\u6307\\\\u5357:\\nhttps://www.w3ctech.com/topic/2226`));let l=t(...o);return l.postcssPlugin=e,l.postcssVersion=new Ks().version,l}let n;return Object.defineProperty(i,\\\"postcss\\\",{get(){return n||(n=i()),n}}),i.process=function(o,l,a){return O([i(a)]).process(o,l)},i};O.stringify=sf;O.parse=uf;O.fromJSON=nf;O.list=cf;O.comment=s=>new $o(s);O.atRule=s=>new Fo(s);O.decl=s=>new Lo(s);O.rule=s=>new Uo(s);O.root=s=>new Bo(s);O.document=s=>new ko(s);O.CssSyntaxError=ef;O.Declaration=Lo;O.Container=rf;O.Processor=Ks;O.Document=ko;O.Comment=$o;O.Warning=of;O.AtRule=Fo;O.Result=af;O.Input=lf;O.Rule=Uo;O.Root=Bo;O.Node=hf;tf.registerPostcss(O);var ff=O;O.default=O;var F=Ec(ff);F.stringify;F.fromJSON;F.plugin;F.parse;F.list;F.document;F.comment;F.atRule;F.rule;F.decl;F.root;F.CssSyntaxError;F.Declaration;F.Container;F.Processor;F.Document;F.Comment;F.Warning;F.AtRule;F.Result;F.Input;F.Rule;F.Root;F.Node;var ws=class s{constructor(...e){ee(this,\\\"parentElement\\\",null),ee(this,\\\"parentNode\\\",null),ee(this,\\\"ownerDocument\\\"),ee(this,\\\"firstChild\\\",null),ee(this,\\\"lastChild\\\",null),ee(this,\\\"previousSibling\\\",null),ee(this,\\\"nextSibling\\\",null),ee(this,\\\"ELEMENT_NODE\\\",1),ee(this,\\\"TEXT_NODE\\\",3),ee(this,\\\"nodeType\\\"),ee(this,\\\"nodeName\\\"),ee(this,\\\"RRNodeType\\\")}get childNodes(){let e=[],t=this.firstChild;for(;t;)e.push(t),t=t.nextSibling;return e}contains(e){if(e instanceof s){if(e.ownerDocument!==this.ownerDocument)return!1;if(e===this)return!0}else return!1;for(;e.parentNode;){if(e.parentNode===this)return!0;e=e.parentNode}return!1}appendChild(e){throw new Error(\\\"RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.\\\")}insertBefore(e,t){throw new Error(\\\"RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.\\\")}removeChild(e){throw new Error(\\\"RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.\\\")}toString(){return\\\"RRNode\\\"}};var Qi={Node:[\\\"childNodes\\\",\\\"parentNode\\\",\\\"parentElement\\\",\\\"textContent\\\",\\\"ownerDocument\\\"],ShadowRoot:[\\\"host\\\",\\\"styleSheets\\\"],Element:[\\\"shadowRoot\\\",\\\"querySelector\\\",\\\"querySelectorAll\\\"],MutationObserver:[]},en={Node:[\\\"contains\\\",\\\"getRootNode\\\"],ShadowRoot:[\\\"getSelection\\\"],Element:[],MutationObserver:[\\\"constructor\\\"]},Lt={},df=()=>!!globalThis.Zone;function qs(s){if(Lt[s])return Lt[s];let e=globalThis[s],t=e.prototype,r=s in Qi?Qi[s]:void 0,i=!!(r&&r.every(l=>{var a,u;return!!((u=(a=Object.getOwnPropertyDescriptor(t,l))==null?void 0:a.get)!=null&&u.toString().includes(\\\"[native code]\\\"))})),n=s in en?en[s]:void 0,o=!!(n&&n.every(l=>{var a;return typeof t[l]==\\\"function\\\"&&((a=t[l])==null?void 0:a.toString().includes(\\\"[native code]\\\"))}));if(i&&o&&!df())return Lt[s]=e.prototype,e.prototype;try{let l=document.createElement(\\\"iframe\\\");document.body.appendChild(l);let a=l.contentWindow;if(!a)return e.prototype;let u=a[s].prototype;return document.body.removeChild(l),u?Lt[s]=u:t}catch{return t}}var $r={};function pe(s,e,t){var r;let i=`${s}.${String(t)}`;if($r[i])return $r[i].call(e);let n=qs(s),o=(r=Object.getOwnPropertyDescriptor(n,t))==null?void 0:r.get;return o?($r[i]=o,o.call(e)):e[t]}var Fr={};function Wo(s,e,t){let r=`${s}.${String(t)}`;if(Fr[r])return Fr[r].bind(e);let n=qs(s)[t];return typeof n!=\\\"function\\\"?e[t]:(Fr[r]=n,n.bind(e))}function pf(s){return pe(\\\"Node\\\",s,\\\"ownerDocument\\\")}function mf(s){return pe(\\\"Node\\\",s,\\\"childNodes\\\")}function gf(s){return pe(\\\"Node\\\",s,\\\"parentNode\\\")}function yf(s){return pe(\\\"Node\\\",s,\\\"parentElement\\\")}function wf(s){return pe(\\\"Node\\\",s,\\\"textContent\\\")}function bf(s,e){return Wo(\\\"Node\\\",s,\\\"contains\\\")(e)}function Sf(s){return Wo(\\\"Node\\\",s,\\\"getRootNode\\\")()}function vf(s){return!s||!(\\\"host\\\"in s)?null:pe(\\\"ShadowRoot\\\",s,\\\"host\\\")}function Cf(s){return s.styleSheets}function Ef(s){return!s||!(\\\"shadowRoot\\\"in s)?null:pe(\\\"Element\\\",s,\\\"shadowRoot\\\")}function If(s,e){return pe(\\\"Element\\\",s,\\\"querySelector\\\")(e)}function xf(s,e){return pe(\\\"Element\\\",s,\\\"querySelectorAll\\\")(e)}function zo(){return qs(\\\"MutationObserver\\\").constructor}function Ie(s,e,t){try{if(!(e in s))return()=>{};let r=s[e],i=t(r);return typeof i==\\\"function\\\"&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:r}})),s[e]=i,()=>{s[e]=r}}catch{return()=>{}}}var C={ownerDocument:pf,childNodes:mf,parentNode:gf,parentElement:yf,textContent:wf,contains:bf,getRootNode:Sf,host:vf,styleSheets:Cf,shadowRoot:Ef,querySelector:If,querySelectorAll:xf,mutationObserver:zo,patch:Ie};function Z(s,e,t=document){let r={capture:!0,passive:!0};return t.addEventListener(s,e,r),()=>t.removeEventListener(s,e,r)}var Me=`Please stop import mirror directly. Instead of that,\\\\r\\nnow you can use replayer.getMirror() to access the mirror instance of a replayer,\\\\r\\nor you can use record.mirror to access the mirror instance during recording.`,tn={map:{},getId(){return console.error(Me),-1},getNode(){return console.error(Me),null},removeNodeFromMap(){console.error(Me)},has(){return console.error(Me),!1},reset(){console.error(Me)}};typeof window<\\\"u\\\"&&window.Proxy&&window.Reflect&&(tn=new Proxy(tn,{get(s,e,t){return e===\\\"map\\\"&&console.error(Me),Reflect.get(s,e,t)}}));function nt(s,e,t={}){let r=null,i=0;return function(...n){let o=Date.now();!i&&t.leading===!1&&(i=o);let l=e-(o-i),a=this;l<=0||l>e?(r&&(clearTimeout(r),r=null),i=o,s.apply(a,n)):!r&&t.trailing!==!1&&(r=setTimeout(()=>{i=t.leading===!1?0:Date.now(),r=null,s.apply(a,n)},l))}}function yr(s,e,t,r,i=window){let n=i.Object.getOwnPropertyDescriptor(s,e);return i.Object.defineProperty(s,e,r?t:{set(o){setTimeout(()=>{t.set.call(this,o)},0),n&&n.set&&n.set.call(this,o)}}),()=>yr(s,e,n||{},!0)}var sr=Date.now;/[1-9][0-9]{12}/.test(Date.now().toString())||(sr=()=>new Date().getTime());function Vo(s){var e,t,r,i;let n=s.document;return{left:n.scrollingElement?n.scrollingElement.scrollLeft:s.pageXOffset!==void 0?s.pageXOffset:n.documentElement.scrollLeft||n?.body&&((e=C.parentElement(n.body))==null?void 0:e.scrollLeft)||((t=n?.body)==null?void 0:t.scrollLeft)||0,top:n.scrollingElement?n.scrollingElement.scrollTop:s.pageYOffset!==void 0?s.pageYOffset:n?.documentElement.scrollTop||n?.body&&((r=C.parentElement(n.body))==null?void 0:r.scrollTop)||((i=n?.body)==null?void 0:i.scrollTop)||0}}function Go(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function jo(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function Ho(s){return s?s.nodeType===s.ELEMENT_NODE?s:C.parentElement(s):null}function X(s,e,t,r){if(!s)return!1;let i=Ho(s);if(!i)return!1;try{if(typeof e==\\\"string\\\"){if(i.classList.contains(e)||r&&i.closest(\\\".\\\"+e)!==null)return!0}else if(Zt(i,e,r))return!0}catch{}return!!(t&&(i.matches(t)||r&&i.closest(t)!==null))}function Mf(s,e){return e.getId(s)!==-1}function Ur(s,e,t){return s.tagName===\\\"TITLE\\\"&&t.headTitleMutations?!0:e.getId(s)===Je}function Yo(s,e){if(Ye(s))return!1;let t=e.getId(s);if(!e.has(t))return!0;let r=C.parentNode(s);return r&&r.nodeType===s.DOCUMENT_NODE?!1:r?Yo(r,e):!0}function bs(s){return!!s.changedTouches}function Nf(s=window){\\\"NodeList\\\"in s&&!s.NodeList.prototype.forEach&&(s.NodeList.prototype.forEach=Array.prototype.forEach),\\\"DOMTokenList\\\"in s&&!s.DOMTokenList.prototype.forEach&&(s.DOMTokenList.prototype.forEach=Array.prototype.forEach)}function Zo(s,e){return!!(s.nodeName===\\\"IFRAME\\\"&&e.getMeta(s))}function Xo(s,e){return!!(s.nodeName===\\\"LINK\\\"&&s.nodeType===s.ELEMENT_NODE&&s.getAttribute&&s.getAttribute(\\\"rel\\\")===\\\"stylesheet\\\"&&e.getMeta(s))}function Ss(s){return s?s instanceof ws&&\\\"shadowRoot\\\"in s?!!s.shadowRoot:!!C.shadowRoot(s):!1}var vs=class{constructor(){w(this,\\\"id\\\",1),w(this,\\\"styleIDMap\\\",new WeakMap),w(this,\\\"idStyleMap\\\",new Map)}getId(e){return this.styleIDMap.get(e)??-1}has(e){return this.styleIDMap.has(e)}add(e,t){if(this.has(e))return this.getId(e);let r;return t===void 0?r=this.id++:r=t,this.styleIDMap.set(e,r),this.idStyleMap.set(r,e),r}getStyle(e){return this.idStyleMap.get(e)||null}reset(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1}generateId(){return this.id++}};function Jo(s){var e;let t=null;return\\\"getRootNode\\\"in s&&((e=C.getRootNode(s))==null?void 0:e.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&C.host(C.getRootNode(s))&&(t=C.host(C.getRootNode(s))),t}function Rf(s){let e=s,t;for(;t=Jo(e);)e=t;return e}function Af(s){let e=C.ownerDocument(s);if(!e)return!1;let t=Rf(s);return C.contains(e,t)}function Ko(s){let e=C.ownerDocument(s);return e?C.contains(e,s)||Af(s):!1}var x=(s=>(s[s.DomContentLoaded=0]=\\\"DomContentLoaded\\\",s[s.Load=1]=\\\"Load\\\",s[s.FullSnapshot=2]=\\\"FullSnapshot\\\",s[s.IncrementalSnapshot=3]=\\\"IncrementalSnapshot\\\",s[s.Meta=4]=\\\"Meta\\\",s[s.Custom=5]=\\\"Custom\\\",s[s.Plugin=6]=\\\"Plugin\\\",s))(x||{}),E=(s=>(s[s.Mutation=0]=\\\"Mutation\\\",s[s.MouseMove=1]=\\\"MouseMove\\\",s[s.MouseInteraction=2]=\\\"MouseInteraction\\\",s[s.Scroll=3]=\\\"Scroll\\\",s[s.ViewportResize=4]=\\\"ViewportResize\\\",s[s.Input=5]=\\\"Input\\\",s[s.TouchMove=6]=\\\"TouchMove\\\",s[s.MediaInteraction=7]=\\\"MediaInteraction\\\",s[s.StyleSheetRule=8]=\\\"StyleSheetRule\\\",s[s.CanvasMutation=9]=\\\"CanvasMutation\\\",s[s.Font=10]=\\\"Font\\\",s[s.Log=11]=\\\"Log\\\",s[s.Drag=12]=\\\"Drag\\\",s[s.StyleDeclaration=13]=\\\"StyleDeclaration\\\",s[s.Selection=14]=\\\"Selection\\\",s[s.AdoptedStyleSheet=15]=\\\"AdoptedStyleSheet\\\",s[s.CustomElement=16]=\\\"CustomElement\\\",s))(E||{}),J=(s=>(s[s.MouseUp=0]=\\\"MouseUp\\\",s[s.MouseDown=1]=\\\"MouseDown\\\",s[s.Click=2]=\\\"Click\\\",s[s.ContextMenu=3]=\\\"ContextMenu\\\",s[s.DblClick=4]=\\\"DblClick\\\",s[s.Focus=5]=\\\"Focus\\\",s[s.Blur=6]=\\\"Blur\\\",s[s.TouchStart=7]=\\\"TouchStart\\\",s[s.TouchMove_Departed=8]=\\\"TouchMove_Departed\\\",s[s.TouchEnd=9]=\\\"TouchEnd\\\",s[s.TouchCancel=10]=\\\"TouchCancel\\\",s))(J||{}),ce=(s=>(s[s.Mouse=0]=\\\"Mouse\\\",s[s.Pen=1]=\\\"Pen\\\",s[s.Touch=2]=\\\"Touch\\\",s))(ce||{}),$e=(s=>(s[s[\\\"2D\\\"]=0]=\\\"2D\\\",s[s.WebGL=1]=\\\"WebGL\\\",s[s.WebGL2=2]=\\\"WebGL2\\\",s))($e||{}),Ne=(s=>(s[s.Play=0]=\\\"Play\\\",s[s.Pause=1]=\\\"Pause\\\",s[s.Seeked=2]=\\\"Seeked\\\",s[s.VolumeChange=3]=\\\"VolumeChange\\\",s[s.RateChange=4]=\\\"RateChange\\\",s))(Ne||{});var qo=(s=>(s[s.Document=0]=\\\"Document\\\",s[s.DocumentType=1]=\\\"DocumentType\\\",s[s.Element=2]=\\\"Element\\\",s[s.Text=3]=\\\"Text\\\",s[s.CDATA=4]=\\\"CDATA\\\",s[s.Comment=5]=\\\"Comment\\\",s))(qo||{});function rn(s){return\\\"__ln\\\"in s}var Cs=class{constructor(){w(this,\\\"length\\\",0),w(this,\\\"head\\\",null),w(this,\\\"tail\\\",null)}get(e){if(e>=this.length)throw new Error(\\\"Position outside of list range\\\");let t=this.head;for(let r=0;r<e;r++)t=t?.next||null;return t}addNode(e){let t={value:e,previous:null,next:null};if(e.__ln=t,e.previousSibling&&rn(e.previousSibling)){let r=e.previousSibling.__ln.next;t.next=r,t.previous=e.previousSibling.__ln,e.previousSibling.__ln.next=t,r&&(r.previous=t)}else if(e.nextSibling&&rn(e.nextSibling)&&e.nextSibling.__ln.previous){let r=e.nextSibling.__ln.previous;t.previous=r,t.next=e.nextSibling.__ln,e.nextSibling.__ln.previous=t,r&&(r.next=t)}else this.head&&(this.head.previous=t),t.next=this.head,this.head=t;t.next===null&&(this.tail=t),this.length++}removeNode(e){let t=e.__ln;this.head&&(t.previous?(t.previous.next=t.next,t.next?t.next.previous=t.previous:this.tail=t.previous):(this.head=t.next,this.head?this.head.previous=null:this.tail=null),e.__ln&&delete e.__ln,this.length--)}},sn=(s,e)=>`${s}@${e}`,Es=class{constructor(){w(this,\\\"frozen\\\",!1),w(this,\\\"locked\\\",!1),w(this,\\\"texts\\\",[]),w(this,\\\"attributes\\\",[]),w(this,\\\"attributeMap\\\",new WeakMap),w(this,\\\"removes\\\",[]),w(this,\\\"mapRemoves\\\",[]),w(this,\\\"movedMap\\\",{}),w(this,\\\"addedSet\\\",new Set),w(this,\\\"movedSet\\\",new Set),w(this,\\\"droppedSet\\\",new Set),w(this,\\\"removesSubTreeCache\\\",new Set),w(this,\\\"mutationCb\\\"),w(this,\\\"blockClass\\\"),w(this,\\\"blockSelector\\\"),w(this,\\\"maskTextClass\\\"),w(this,\\\"maskTextSelector\\\"),w(this,\\\"inlineStylesheet\\\"),w(this,\\\"maskInputOptions\\\"),w(this,\\\"maskTextFn\\\"),w(this,\\\"maskInputFn\\\"),w(this,\\\"keepIframeSrcFn\\\"),w(this,\\\"recordCanvas\\\"),w(this,\\\"inlineImages\\\"),w(this,\\\"slimDOMOptions\\\"),w(this,\\\"dataURLOptions\\\"),w(this,\\\"doc\\\"),w(this,\\\"mirror\\\"),w(this,\\\"iframeManager\\\"),w(this,\\\"stylesheetManager\\\"),w(this,\\\"shadowDomManager\\\"),w(this,\\\"canvasManager\\\"),w(this,\\\"processedNodeManager\\\"),w(this,\\\"unattachedDoc\\\"),w(this,\\\"processMutations\\\",e=>{e.forEach(this.processMutation),this.emit()}),w(this,\\\"emit\\\",()=>{if(this.frozen||this.locked)return;let e=[],t=new Set,r=new Cs,i=a=>{let u=a,c=Je;for(;c===Je;)u=u&&u.nextSibling,c=u&&this.mirror.getId(u);return c},n=a=>{let u=C.parentNode(a);if(!u||!Ko(a))return;let c=!1;if(a.nodeType===Node.TEXT_NODE){let m=u.tagName;if(m===\\\"TEXTAREA\\\")return;m===\\\"STYLE\\\"&&this.addedSet.has(u)&&(c=!0)}let h=Ye(u)?this.mirror.getId(Jo(a)):this.mirror.getId(u),p=i(a);if(h===-1||p===-1)return r.addNode(a);let g=Ae(a,{doc:this.doc,mirror:this.mirror,blockClass:this.blockClass,blockSelector:this.blockSelector,maskTextClass:this.maskTextClass,maskTextSelector:this.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:this.inlineStylesheet,maskInputOptions:this.maskInputOptions,maskTextFn:this.maskTextFn,maskInputFn:this.maskInputFn,slimDOMOptions:this.slimDOMOptions,dataURLOptions:this.dataURLOptions,recordCanvas:this.recordCanvas,inlineImages:this.inlineImages,onSerialize:m=>{Zo(m,this.mirror)&&this.iframeManager.addIframe(m),Xo(m,this.mirror)&&this.stylesheetManager.trackLinkElement(m),Ss(a)&&this.shadowDomManager.addShadowRoot(C.shadowRoot(a),this.doc)},onIframeLoad:(m,d)=>{this.iframeManager.attachIframe(m,d),this.shadowDomManager.observeAttachShadow(m)},onStylesheetLoad:(m,d)=>{this.stylesheetManager.attachLinkElement(m,d)},cssCaptured:c});g&&(e.push({parentId:h,nextId:p,node:g}),t.add(g.id))};for(;this.mapRemoves.length;)this.mirror.removeNodeFromMap(this.mapRemoves.shift());for(let a of this.movedSet)nn(this.removesSubTreeCache,a,this.mirror)&&!this.movedSet.has(C.parentNode(a))||n(a);for(let a of this.addedSet)!on(this.droppedSet,a)&&!nn(this.removesSubTreeCache,a,this.mirror)||on(this.movedSet,a)?n(a):this.droppedSet.add(a);let o=null;for(;r.length;){let a=null;if(o){let u=this.mirror.getId(C.parentNode(o.value)),c=i(o.value);u!==-1&&c!==-1&&(a=o)}if(!a){let u=r.tail;for(;u;){let c=u;if(u=u.previous,c){let h=this.mirror.getId(C.parentNode(c.value));if(i(c.value)===-1)continue;if(h!==-1){a=c;break}else{let g=c.value,m=C.parentNode(g);if(m&&m.nodeType===Node.DOCUMENT_FRAGMENT_NODE){let d=C.host(m);if(this.mirror.getId(d)!==-1){a=c;break}}}}}}if(!a){for(;r.head;)r.removeNode(r.head.value);break}o=a.previous,r.removeNode(a.value),n(a.value)}let l={texts:this.texts.map(a=>{let u=a.node,c=C.parentNode(u);return c&&c.tagName===\\\"TEXTAREA\\\"&&this.genTextAreaValueMutation(c),{id:this.mirror.getId(u),value:a.value}}).filter(a=>!t.has(a.id)).filter(a=>this.mirror.has(a.id)),attributes:this.attributes.map(a=>{let{attributes:u}=a;if(typeof u.style==\\\"string\\\"){let c=JSON.stringify(a.styleDiff),h=JSON.stringify(a._unchangedStyles);c.length<u.style.length&&(c+h).split(\\\"var(\\\").length===u.style.split(\\\"var(\\\").length&&(u.style=a.styleDiff)}return{id:this.mirror.getId(a.node),attributes:u}}).filter(a=>!t.has(a.id)).filter(a=>this.mirror.has(a.id)),removes:this.removes,adds:e};!l.texts.length&&!l.attributes.length&&!l.removes.length&&!l.adds.length||(this.texts=[],this.attributes=[],this.attributeMap=new WeakMap,this.removes=[],this.addedSet=new Set,this.movedSet=new Set,this.droppedSet=new Set,this.removesSubTreeCache=new Set,this.movedMap={},this.mutationCb(l))}),w(this,\\\"genTextAreaValueMutation\\\",e=>{let t=this.attributeMap.get(e);t||(t={node:e,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(t),this.attributeMap.set(e,t));let r=Array.from(C.childNodes(e),i=>C.textContent(i)||\\\"\\\").join(\\\"\\\");t.attributes.value=jt({element:e,maskInputOptions:this.maskInputOptions,tagName:e.tagName,type:Ht(e),value:r,maskInputFn:this.maskInputFn})}),w(this,\\\"processMutation\\\",e=>{if(!Ur(e.target,this.mirror,this.slimDOMOptions))switch(e.type){case\\\"characterData\\\":{let t=C.textContent(e.target);!X(e.target,this.blockClass,this.blockSelector,!1)&&t!==e.oldValue&&this.texts.push({value:Sn(e.target,this.maskTextClass,this.maskTextSelector,!0)&&t?this.maskTextFn?this.maskTextFn(t,Ho(e.target)):t.replace(/[\\\\S]/g,\\\"*\\\"):t,node:e.target});break}case\\\"attributes\\\":{let t=e.target,r=e.attributeName,i=e.target.getAttribute(r);if(r===\\\"value\\\"){let o=Ht(t);i=jt({element:t,maskInputOptions:this.maskInputOptions,tagName:t.tagName,type:o,value:i,maskInputFn:this.maskInputFn})}if(X(e.target,this.blockClass,this.blockSelector,!1)||i===e.oldValue)return;let n=this.attributeMap.get(e.target);if(t.tagName===\\\"IFRAME\\\"&&r===\\\"src\\\"&&!this.keepIframeSrcFn(i))if(!t.contentDocument)r=\\\"rr_src\\\";else return;if(n||(n={node:e.target,attributes:{},styleDiff:{},_unchangedStyles:{}},this.attributes.push(n),this.attributeMap.set(e.target,n)),r===\\\"type\\\"&&t.tagName===\\\"INPUT\\\"&&(e.oldValue||\\\"\\\").toLowerCase()===\\\"password\\\"&&t.setAttribute(\\\"data-rr-is-password\\\",\\\"true\\\"),!bn(t.tagName,r))if(n.attributes[r]=wn(this.doc,ve(t.tagName),ve(r),i),r===\\\"style\\\"){if(!this.unattachedDoc)try{this.unattachedDoc=document.implementation.createHTMLDocument()}catch{this.unattachedDoc=this.doc}let o=this.unattachedDoc.createElement(\\\"span\\\");e.oldValue&&o.setAttribute(\\\"style\\\",e.oldValue);for(let l of Array.from(t.style)){let a=t.style.getPropertyValue(l),u=t.style.getPropertyPriority(l);a!==o.style.getPropertyValue(l)||u!==o.style.getPropertyPriority(l)?u===\\\"\\\"?n.styleDiff[l]=a:n.styleDiff[l]=[a,u]:n._unchangedStyles[l]=[a,u]}for(let l of Array.from(o.style))t.style.getPropertyValue(l)===\\\"\\\"&&(n.styleDiff[l]=!1)}else r===\\\"open\\\"&&t.tagName===\\\"DIALOG\\\"&&(t.matches(\\\"dialog:modal\\\")?n.attributes.rr_open_mode=\\\"modal\\\":n.attributes.rr_open_mode=\\\"non-modal\\\");break}case\\\"childList\\\":{if(X(e.target,this.blockClass,this.blockSelector,!0))return;if(e.target.tagName===\\\"TEXTAREA\\\"){this.genTextAreaValueMutation(e.target);return}e.addedNodes.forEach(t=>this.genAdds(t,e.target)),e.removedNodes.forEach(t=>{let r=this.mirror.getId(t),i=Ye(e.target)?this.mirror.getId(C.host(e.target)):this.mirror.getId(e.target);X(e.target,this.blockClass,this.blockSelector,!1)||Ur(t,this.mirror,this.slimDOMOptions)||!Mf(t,this.mirror)||(this.addedSet.has(t)?(Is(this.addedSet,t),this.droppedSet.add(t)):this.addedSet.has(e.target)&&r===-1||Yo(e.target,this.mirror)||(this.movedSet.has(t)&&this.movedMap[sn(r,i)]?Is(this.movedSet,t):(this.removes.push({parentId:i,id:r,isShadow:Ye(e.target)&&Ze(e.target)?!0:void 0}),Of(t,this.removesSubTreeCache))),this.mapRemoves.push(t))});break}}}),w(this,\\\"genAdds\\\",(e,t)=>{if(!this.processedNodeManager.inOtherBuffer(e,this)&&!(this.addedSet.has(e)||this.movedSet.has(e))){if(this.mirror.hasNode(e)){if(Ur(e,this.mirror,this.slimDOMOptions))return;this.movedSet.add(e);let r=null;t&&this.mirror.hasNode(t)&&(r=this.mirror.getId(t)),r&&r!==-1&&(this.movedMap[sn(this.mirror.getId(e),r)]=!0)}else this.addedSet.add(e),this.droppedSet.delete(e);X(e,this.blockClass,this.blockSelector,!1)||(C.childNodes(e).forEach(r=>this.genAdds(r)),Ss(e)&&C.childNodes(C.shadowRoot(e)).forEach(r=>{this.processedNodeManager.add(r,this),this.genAdds(r,e)}))}})}init(e){[\\\"mutationCb\\\",\\\"blockClass\\\",\\\"blockSelector\\\",\\\"maskTextClass\\\",\\\"maskTextSelector\\\",\\\"inlineStylesheet\\\",\\\"maskInputOptions\\\",\\\"maskTextFn\\\",\\\"maskInputFn\\\",\\\"keepIframeSrcFn\\\",\\\"recordCanvas\\\",\\\"inlineImages\\\",\\\"slimDOMOptions\\\",\\\"dataURLOptions\\\",\\\"doc\\\",\\\"mirror\\\",\\\"iframeManager\\\",\\\"stylesheetManager\\\",\\\"shadowDomManager\\\",\\\"canvasManager\\\",\\\"processedNodeManager\\\"].forEach(t=>{this[t]=e[t]})}freeze(){this.frozen=!0,this.canvasManager.freeze()}unfreeze(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()}isFrozen(){return this.frozen}lock(){this.locked=!0,this.canvasManager.lock()}unlock(){this.locked=!1,this.canvasManager.unlock(),this.emit()}reset(){this.shadowDomManager.reset(),this.canvasManager.reset()}};function Is(s,e){s.delete(e),C.childNodes(e).forEach(t=>Is(s,t))}function Of(s,e){let t=[s];for(;t.length;){let r=t.pop();e.has(r)||(e.add(r),C.childNodes(r).forEach(i=>t.push(i)))}}function nn(s,e,t){return s.size===0?!1:Tf(s,e)}function Tf(s,e,t){let r=C.parentNode(e);return r?s.has(r):!1}function on(s,e){return s.size===0?!1:Qo(s,e)}function Qo(s,e){let t=C.parentNode(e);return t?s.has(t)?!0:Qo(s,t):!1}var Xe;function Df(s){Xe=s}function _f(){Xe=void 0}var I=s=>Xe?(...t)=>{try{return s(...t)}catch(r){if(Xe&&Xe(r)===!0)return;throw r}}:s,Se=[];function ct(s){try{if(\\\"composedPath\\\"in s){let e=s.composedPath();if(e.length)return e[0]}else if(\\\"path\\\"in s&&s.path.length)return s.path[0]}catch{}return s&&s.target}function ea(s,e){let t=new Es;Se.push(t),t.init(s);let r=new(zo())(I(t.processMutations.bind(t)));return r.observe(e,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),r}function Pf({mousemoveCb:s,sampling:e,doc:t,mirror:r}){if(e.mousemove===!1)return()=>{};let i=typeof e.mousemove==\\\"number\\\"?e.mousemove:50,n=typeof e.mousemoveCallback==\\\"number\\\"?e.mousemoveCallback:500,o=[],l,a=nt(I(h=>{let p=Date.now()-l;s(o.map(g=>(g.timeOffset-=p,g)),h),o=[],l=null}),n),u=I(nt(I(h=>{let p=ct(h),{clientX:g,clientY:m}=bs(h)?h.changedTouches[0]:h;l||(l=sr()),o.push({x:g,y:m,id:r.getId(p),timeOffset:sr()-l}),a(typeof DragEvent<\\\"u\\\"&&h instanceof DragEvent?E.Drag:h instanceof MouseEvent?E.MouseMove:E.TouchMove)}),i,{trailing:!1})),c=[Z(\\\"mousemove\\\",u,t),Z(\\\"touchmove\\\",u,t),Z(\\\"drag\\\",u,t)];return I(()=>{c.forEach(h=>h())})}function Lf({mouseInteractionCb:s,doc:e,mirror:t,blockClass:r,blockSelector:i,sampling:n}){if(n.mouseInteraction===!1)return()=>{};let o=n.mouseInteraction===!0||n.mouseInteraction===void 0?{}:n.mouseInteraction,l=[],a=null,u=c=>h=>{let p=ct(h);if(X(p,r,i,!0))return;let g=null,m=c;if(\\\"pointerType\\\"in h){switch(h.pointerType){case\\\"mouse\\\":g=ce.Mouse;break;case\\\"touch\\\":g=ce.Touch;break;case\\\"pen\\\":g=ce.Pen;break}g===ce.Touch?J[c]===J.MouseDown?m=\\\"TouchStart\\\":J[c]===J.MouseUp&&(m=\\\"TouchEnd\\\"):ce.Pen}else bs(h)&&(g=ce.Touch);g!==null?(a=g,(m.startsWith(\\\"Touch\\\")&&g===ce.Touch||m.startsWith(\\\"Mouse\\\")&&g===ce.Mouse)&&(g=null)):J[c]===J.Click&&(g=a,a=null);let d=bs(h)?h.changedTouches[0]:h;if(!d)return;let f=t.getId(p),{clientX:b,clientY:S}=d;I(s)({type:J[m],id:f,x:b,y:S,...g!==null&&{pointerType:g}})};return Object.keys(J).filter(c=>Number.isNaN(Number(c))&&!c.endsWith(\\\"_Departed\\\")&&o[c]!==!1).forEach(c=>{let h=ve(c),p=u(c);if(window.PointerEvent)switch(J[c]){case J.MouseDown:case J.MouseUp:h=h.replace(\\\"mouse\\\",\\\"pointer\\\");break;case J.TouchStart:case J.TouchEnd:return}l.push(Z(h,p,e))}),I(()=>{l.forEach(c=>c())})}function ta({scrollCb:s,doc:e,mirror:t,blockClass:r,blockSelector:i,sampling:n}){let o=I(nt(I(l=>{let a=ct(l);if(!a||X(a,r,i,!0))return;let u=t.getId(a);if(a===e&&e.defaultView){let c=Vo(e.defaultView);s({id:u,x:c.left,y:c.top})}else s({id:u,x:a.scrollLeft,y:a.scrollTop})}),n.scroll||100));return Z(\\\"scroll\\\",o,e)}function kf({viewportResizeCb:s},{win:e}){let t=-1,r=-1,i=I(nt(I(()=>{let n=Go(),o=jo();(t!==n||r!==o)&&(s({width:Number(o),height:Number(n)}),t=n,r=o)}),200));return Z(\\\"resize\\\",i,e)}var $f=[\\\"INPUT\\\",\\\"TEXTAREA\\\",\\\"SELECT\\\"],an=new WeakMap;function Ff({inputCb:s,doc:e,mirror:t,blockClass:r,blockSelector:i,ignoreClass:n,ignoreSelector:o,maskInputOptions:l,maskInputFn:a,sampling:u,userTriggeredOnInput:c}){function h(S){let y=ct(S),v=S.isTrusted,N=y&&y.tagName;if(y&&N===\\\"OPTION\\\"&&(y=C.parentElement(y)),!y||!N||$f.indexOf(N)<0||X(y,r,i,!0)||y.classList.contains(n)||o&&y.matches(o))return;let D=y.value,V=!1,k=Ht(y)||\\\"\\\";k===\\\"radio\\\"||k===\\\"checkbox\\\"?V=y.checked:(l[N.toLowerCase()]||l[k])&&(D=jt({element:y,maskInputOptions:l,tagName:N,type:k,value:D,maskInputFn:a})),p(y,c?{text:D,isChecked:V,userTriggered:v}:{text:D,isChecked:V});let z=y.name;k===\\\"radio\\\"&&z&&V&&e.querySelectorAll(`input[type=\\\"radio\\\"][name=\\\"${z}\\\"]`).forEach(H=>{if(H!==y){let q=H.value;p(H,c?{text:q,isChecked:!V,userTriggered:!1}:{text:q,isChecked:!V})}})}function p(S,y){let v=an.get(S);if(!v||v.text!==y.text||v.isChecked!==y.isChecked){an.set(S,y);let N=t.getId(S);I(s)({...y,id:N})}}let m=(u.input===\\\"last\\\"?[\\\"change\\\"]:[\\\"input\\\",\\\"change\\\"]).map(S=>Z(S,I(h),e)),d=e.defaultView;if(!d)return()=>{m.forEach(S=>S())};let f=d.Object.getOwnPropertyDescriptor(d.HTMLInputElement.prototype,\\\"value\\\"),b=[[d.HTMLInputElement.prototype,\\\"value\\\"],[d.HTMLInputElement.prototype,\\\"checked\\\"],[d.HTMLSelectElement.prototype,\\\"value\\\"],[d.HTMLTextAreaElement.prototype,\\\"value\\\"],[d.HTMLSelectElement.prototype,\\\"selectedIndex\\\"],[d.HTMLOptionElement.prototype,\\\"selected\\\"]];return f&&f.set&&m.push(...b.map(S=>yr(S[0],S[1],{set(){I(h)({target:this,isTrusted:!1})}},!1,d))),I(()=>{m.forEach(S=>S())})}function ir(s){let e=[];function t(r,i){if(kt(\\\"CSSGroupingRule\\\")&&r.parentRule instanceof CSSGroupingRule||kt(\\\"CSSMediaRule\\\")&&r.parentRule instanceof CSSMediaRule||kt(\\\"CSSSupportsRule\\\")&&r.parentRule instanceof CSSSupportsRule||kt(\\\"CSSConditionRule\\\")&&r.parentRule instanceof CSSConditionRule){let o=Array.from(r.parentRule.cssRules).indexOf(r);i.unshift(o)}else if(r.parentStyleSheet){let o=Array.from(r.parentStyleSheet.cssRules).indexOf(r);i.unshift(o)}return i}return t(s,e)}function ge(s,e,t){let r,i;return s?(s.ownerNode?r=e.getId(s.ownerNode):i=t.getId(s),{styleId:i,id:r}):{}}function Uf({styleSheetRuleCb:s,mirror:e,stylesheetManager:t},{win:r}){if(!r.CSSStyleSheet||!r.CSSStyleSheet.prototype)return()=>{};let i=r.CSSStyleSheet.prototype.insertRule;r.CSSStyleSheet.prototype.insertRule=new Proxy(i,{apply:I((c,h,p)=>{let[g,m]=p,{id:d,styleId:f}=ge(h,e,t.styleMirror);return(d&&d!==-1||f&&f!==-1)&&s({id:d,styleId:f,adds:[{rule:g,index:m}]}),c.apply(h,p)})}),r.CSSStyleSheet.prototype.addRule=function(c,h,p=this.cssRules.length){let g=`${c} { ${h} }`;return r.CSSStyleSheet.prototype.insertRule.apply(this,[g,p])};let n=r.CSSStyleSheet.prototype.deleteRule;r.CSSStyleSheet.prototype.deleteRule=new Proxy(n,{apply:I((c,h,p)=>{let[g]=p,{id:m,styleId:d}=ge(h,e,t.styleMirror);return(m&&m!==-1||d&&d!==-1)&&s({id:m,styleId:d,removes:[{index:g}]}),c.apply(h,p)})}),r.CSSStyleSheet.prototype.removeRule=function(c){return r.CSSStyleSheet.prototype.deleteRule.apply(this,[c])};let o;r.CSSStyleSheet.prototype.replace&&(o=r.CSSStyleSheet.prototype.replace,r.CSSStyleSheet.prototype.replace=new Proxy(o,{apply:I((c,h,p)=>{let[g]=p,{id:m,styleId:d}=ge(h,e,t.styleMirror);return(m&&m!==-1||d&&d!==-1)&&s({id:m,styleId:d,replace:g}),c.apply(h,p)})}));let l;r.CSSStyleSheet.prototype.replaceSync&&(l=r.CSSStyleSheet.prototype.replaceSync,r.CSSStyleSheet.prototype.replaceSync=new Proxy(l,{apply:I((c,h,p)=>{let[g]=p,{id:m,styleId:d}=ge(h,e,t.styleMirror);return(m&&m!==-1||d&&d!==-1)&&s({id:m,styleId:d,replaceSync:g}),c.apply(h,p)})}));let a={};$t(\\\"CSSGroupingRule\\\")?a.CSSGroupingRule=r.CSSGroupingRule:($t(\\\"CSSMediaRule\\\")&&(a.CSSMediaRule=r.CSSMediaRule),$t(\\\"CSSConditionRule\\\")&&(a.CSSConditionRule=r.CSSConditionRule),$t(\\\"CSSSupportsRule\\\")&&(a.CSSSupportsRule=r.CSSSupportsRule));let u={};return Object.entries(a).forEach(([c,h])=>{u[c]={insertRule:h.prototype.insertRule,deleteRule:h.prototype.deleteRule},h.prototype.insertRule=new Proxy(u[c].insertRule,{apply:I((p,g,m)=>{let[d,f]=m,{id:b,styleId:S}=ge(g.parentStyleSheet,e,t.styleMirror);return(b&&b!==-1||S&&S!==-1)&&s({id:b,styleId:S,adds:[{rule:d,index:[...ir(g),f||0]}]}),p.apply(g,m)})}),h.prototype.deleteRule=new Proxy(u[c].deleteRule,{apply:I((p,g,m)=>{let[d]=m,{id:f,styleId:b}=ge(g.parentStyleSheet,e,t.styleMirror);return(f&&f!==-1||b&&b!==-1)&&s({id:f,styleId:b,removes:[{index:[...ir(g),d]}]}),p.apply(g,m)})})}),I(()=>{r.CSSStyleSheet.prototype.insertRule=i,r.CSSStyleSheet.prototype.deleteRule=n,o&&(r.CSSStyleSheet.prototype.replace=o),l&&(r.CSSStyleSheet.prototype.replaceSync=l),Object.entries(a).forEach(([c,h])=>{h.prototype.insertRule=u[c].insertRule,h.prototype.deleteRule=u[c].deleteRule})})}function ra({mirror:s,stylesheetManager:e},t){var r,i,n;let o=null;t.nodeName===\\\"#document\\\"?o=s.getId(t):o=s.getId(C.host(t));let l=t.nodeName===\\\"#document\\\"?(r=t.defaultView)==null?void 0:r.Document:(n=(i=t.ownerDocument)==null?void 0:i.defaultView)==null?void 0:n.ShadowRoot,a=l?.prototype?Object.getOwnPropertyDescriptor(l?.prototype,\\\"adoptedStyleSheets\\\"):void 0;return o===null||o===-1||!l||!a?()=>{}:(Object.defineProperty(t,\\\"adoptedStyleSheets\\\",{configurable:a.configurable,enumerable:a.enumerable,get(){var u;return(u=a.get)==null?void 0:u.call(this)},set(u){var c;let h=(c=a.set)==null?void 0:c.call(this,u);if(o!==null&&o!==-1)try{e.adoptStyleSheets(u,o)}catch{}return h}}),I(()=>{Object.defineProperty(t,\\\"adoptedStyleSheets\\\",{configurable:a.configurable,enumerable:a.enumerable,get:a.get,set:a.set})}))}function Bf({styleDeclarationCb:s,mirror:e,ignoreCSSAttributes:t,stylesheetManager:r},{win:i}){let n=i.CSSStyleDeclaration.prototype.setProperty;i.CSSStyleDeclaration.prototype.setProperty=new Proxy(n,{apply:I((l,a,u)=>{var c;let[h,p,g]=u;if(t.has(h))return n.apply(a,[h,p,g]);let{id:m,styleId:d}=ge((c=a.parentRule)==null?void 0:c.parentStyleSheet,e,r.styleMirror);return(m&&m!==-1||d&&d!==-1)&&s({id:m,styleId:d,set:{property:h,value:p,priority:g},index:ir(a.parentRule)}),l.apply(a,u)})});let o=i.CSSStyleDeclaration.prototype.removeProperty;return i.CSSStyleDeclaration.prototype.removeProperty=new Proxy(o,{apply:I((l,a,u)=>{var c;let[h]=u;if(t.has(h))return o.apply(a,[h]);let{id:p,styleId:g}=ge((c=a.parentRule)==null?void 0:c.parentStyleSheet,e,r.styleMirror);return(p&&p!==-1||g&&g!==-1)&&s({id:p,styleId:g,remove:{property:h},index:ir(a.parentRule)}),l.apply(a,u)})}),I(()=>{i.CSSStyleDeclaration.prototype.setProperty=n,i.CSSStyleDeclaration.prototype.removeProperty=o})}function Wf({mediaInteractionCb:s,blockClass:e,blockSelector:t,mirror:r,sampling:i,doc:n}){let o=I(a=>nt(I(u=>{let c=ct(u);if(!c||X(c,e,t,!0))return;let{currentTime:h,volume:p,muted:g,playbackRate:m,loop:d}=c;s({type:a,id:r.getId(c),currentTime:h,volume:p,muted:g,playbackRate:m,loop:d})}),i.media||500)),l=[Z(\\\"play\\\",o(Ne.Play),n),Z(\\\"pause\\\",o(Ne.Pause),n),Z(\\\"seeked\\\",o(Ne.Seeked),n),Z(\\\"volumechange\\\",o(Ne.VolumeChange),n),Z(\\\"ratechange\\\",o(Ne.RateChange),n)];return I(()=>{l.forEach(a=>a())})}function zf({fontCb:s,doc:e}){let t=e.defaultView;if(!t)return()=>{};let r=[],i=new WeakMap,n=t.FontFace;t.FontFace=function(a,u,c){let h=new n(a,u,c);return i.set(h,{family:a,buffer:typeof u!=\\\"string\\\",descriptors:c,fontSource:typeof u==\\\"string\\\"?u:JSON.stringify(Array.from(new Uint8Array(u)))}),h};let o=Ie(e.fonts,\\\"add\\\",function(l){return function(a){return setTimeout(I(()=>{let u=i.get(a);u&&(s(u),i.delete(a))}),0),l.apply(this,[a])}});return r.push(()=>{t.FontFace=n}),r.push(o),I(()=>{r.forEach(l=>l())})}function Vf(s){let{doc:e,mirror:t,blockClass:r,blockSelector:i,selectionCb:n}=s,o=!0,l=I(()=>{let a=e.getSelection();if(!a||o&&a?.isCollapsed)return;o=a.isCollapsed||!1;let u=[],c=a.rangeCount||0;for(let h=0;h<c;h++){let p=a.getRangeAt(h),{startContainer:g,startOffset:m,endContainer:d,endOffset:f}=p;X(g,r,i,!0)||X(d,r,i,!0)||u.push({start:t.getId(g),startOffset:m,end:t.getId(d),endOffset:f})}n({ranges:u})});return l(),Z(\\\"selectionchange\\\",l)}function Gf({doc:s,customElementCb:e}){let t=s.defaultView;return!t||!t.customElements?()=>{}:Ie(t.customElements,\\\"define\\\",function(i){return function(n,o,l){try{e({define:{name:n}})}catch{console.warn(`Custom element callback failed for ${n}`)}return i.apply(this,[n,o,l])}})}function jf(s,e){let{mutationCb:t,mousemoveCb:r,mouseInteractionCb:i,scrollCb:n,viewportResizeCb:o,inputCb:l,mediaInteractionCb:a,styleSheetRuleCb:u,styleDeclarationCb:c,canvasMutationCb:h,fontCb:p,selectionCb:g,customElementCb:m}=s;s.mutationCb=(...d)=>{e.mutation&&e.mutation(...d),t(...d)},s.mousemoveCb=(...d)=>{e.mousemove&&e.mousemove(...d),r(...d)},s.mouseInteractionCb=(...d)=>{e.mouseInteraction&&e.mouseInteraction(...d),i(...d)},s.scrollCb=(...d)=>{e.scroll&&e.scroll(...d),n(...d)},s.viewportResizeCb=(...d)=>{e.viewportResize&&e.viewportResize(...d),o(...d)},s.inputCb=(...d)=>{e.input&&e.input(...d),l(...d)},s.mediaInteractionCb=(...d)=>{e.mediaInteaction&&e.mediaInteaction(...d),a(...d)},s.styleSheetRuleCb=(...d)=>{e.styleSheetRule&&e.styleSheetRule(...d),u(...d)},s.styleDeclarationCb=(...d)=>{e.styleDeclaration&&e.styleDeclaration(...d),c(...d)},s.canvasMutationCb=(...d)=>{e.canvasMutation&&e.canvasMutation(...d),h(...d)},s.fontCb=(...d)=>{e.font&&e.font(...d),p(...d)},s.selectionCb=(...d)=>{e.selection&&e.selection(...d),g(...d)},s.customElementCb=(...d)=>{e.customElement&&e.customElement(...d),m(...d)}}function Hf(s,e={}){let t=s.doc.defaultView;if(!t)return()=>{};jf(s,e);let r;s.recordDOM&&(r=ea(s,s.doc));let i=Pf(s),n=Lf(s),o=ta(s),l=kf(s,{win:t}),a=Ff(s),u=Wf(s),c=()=>{},h=()=>{},p=()=>{},g=()=>{};s.recordDOM&&(c=Uf(s,{win:t}),h=ra(s,s.doc),p=Bf(s,{win:t}),s.collectFonts&&(g=zf(s)));let m=Vf(s),d=Gf(s),f=[];for(let b of s.plugins)f.push(b.observer(b.callback,t,b.options));return I(()=>{Se.forEach(b=>b.reset()),r?.disconnect(),i(),n(),o(),l(),a(),u(),c(),h(),p(),g(),m(),d(),f.forEach(b=>b())})}function kt(s){return typeof window[s]<\\\"u\\\"}function $t(s){return!!(typeof window[s]<\\\"u\\\"&&window[s].prototype&&\\\"insertRule\\\"in window[s].prototype&&\\\"deleteRule\\\"in window[s].prototype)}var nr=class{constructor(e){w(this,\\\"iframeIdToRemoteIdMap\\\",new WeakMap),w(this,\\\"iframeRemoteIdToIdMap\\\",new WeakMap),this.generateIdFn=e}getId(e,t,r,i){let n=r||this.getIdToRemoteIdMap(e),o=i||this.getRemoteIdToIdMap(e),l=n.get(t);return l||(l=this.generateIdFn(),n.set(t,l),o.set(l,t)),l}getIds(e,t){let r=this.getIdToRemoteIdMap(e),i=this.getRemoteIdToIdMap(e);return t.map(n=>this.getId(e,n,r,i))}getRemoteId(e,t,r){let i=r||this.getRemoteIdToIdMap(e);if(typeof t!=\\\"number\\\")return t;let n=i.get(t);return n||-1}getRemoteIds(e,t){let r=this.getRemoteIdToIdMap(e);return t.map(i=>this.getRemoteId(e,i,r))}reset(e){if(!e){this.iframeIdToRemoteIdMap=new WeakMap,this.iframeRemoteIdToIdMap=new WeakMap;return}this.iframeIdToRemoteIdMap.delete(e),this.iframeRemoteIdToIdMap.delete(e)}getIdToRemoteIdMap(e){let t=this.iframeIdToRemoteIdMap.get(e);return t||(t=new Map,this.iframeIdToRemoteIdMap.set(e,t)),t}getRemoteIdToIdMap(e){let t=this.iframeRemoteIdToIdMap.get(e);return t||(t=new Map,this.iframeRemoteIdToIdMap.set(e,t)),t}},xs=class{constructor(e){w(this,\\\"iframes\\\",new WeakMap),w(this,\\\"crossOriginIframeMap\\\",new WeakMap),w(this,\\\"crossOriginIframeMirror\\\",new nr(yn)),w(this,\\\"crossOriginIframeStyleMirror\\\"),w(this,\\\"crossOriginIframeRootIdMap\\\",new WeakMap),w(this,\\\"mirror\\\"),w(this,\\\"mutationCb\\\"),w(this,\\\"wrappedEmit\\\"),w(this,\\\"loadListener\\\"),w(this,\\\"stylesheetManager\\\"),w(this,\\\"recordCrossOriginIframes\\\"),this.mutationCb=e.mutationCb,this.wrappedEmit=e.wrappedEmit,this.stylesheetManager=e.stylesheetManager,this.recordCrossOriginIframes=e.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new nr(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=e.mirror,this.recordCrossOriginIframes&&window.addEventListener(\\\"message\\\",this.handleMessage.bind(this))}addIframe(e){this.iframes.set(e,!0),e.contentWindow&&this.crossOriginIframeMap.set(e.contentWindow,e)}addLoadListener(e){this.loadListener=e}attachIframe(e,t){var r,i;this.mutationCb({adds:[{parentId:this.mirror.getId(e),nextId:null,node:t}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),this.recordCrossOriginIframes&&((r=e.contentWindow)==null||r.addEventListener(\\\"message\\\",this.handleMessage.bind(this))),(i=this.loadListener)==null||i.call(this,e),e.contentDocument&&e.contentDocument.adoptedStyleSheets&&e.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(e.contentDocument.adoptedStyleSheets,this.mirror.getId(e.contentDocument))}handleMessage(e){let t=e;if(t.data.type!==\\\"rrweb\\\"||t.origin!==t.data.origin||!e.source)return;let i=this.crossOriginIframeMap.get(e.source);if(!i)return;let n=this.transformCrossOriginEvent(i,t.data.event);n&&this.wrappedEmit(n,t.data.isCheckout)}transformCrossOriginEvent(e,t){var r;switch(t.type){case x.FullSnapshot:{this.crossOriginIframeMirror.reset(e),this.crossOriginIframeStyleMirror.reset(e),this.replaceIdOnNode(t.data.node,e);let i=t.data.node.id;return this.crossOriginIframeRootIdMap.set(e,i),this.patchRootIdOnNode(t.data.node,i),{timestamp:t.timestamp,type:x.IncrementalSnapshot,data:{source:E.Mutation,adds:[{parentId:this.mirror.getId(e),nextId:null,node:t.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case x.Meta:case x.Load:case x.DomContentLoaded:return!1;case x.Plugin:return t;case x.Custom:return this.replaceIds(t.data.payload,e,[\\\"id\\\",\\\"parentId\\\",\\\"previousId\\\",\\\"nextId\\\"]),t;case x.IncrementalSnapshot:switch(t.data.source){case E.Mutation:return t.data.adds.forEach(i=>{this.replaceIds(i,e,[\\\"parentId\\\",\\\"nextId\\\",\\\"previousId\\\"]),this.replaceIdOnNode(i.node,e);let n=this.crossOriginIframeRootIdMap.get(e);n&&this.patchRootIdOnNode(i.node,n)}),t.data.removes.forEach(i=>{this.replaceIds(i,e,[\\\"parentId\\\",\\\"id\\\"])}),t.data.attributes.forEach(i=>{this.replaceIds(i,e,[\\\"id\\\"])}),t.data.texts.forEach(i=>{this.replaceIds(i,e,[\\\"id\\\"])}),t;case E.Drag:case E.TouchMove:case E.MouseMove:return t.data.positions.forEach(i=>{this.replaceIds(i,e,[\\\"id\\\"])}),t;case E.ViewportResize:return!1;case E.MediaInteraction:case E.MouseInteraction:case E.Scroll:case E.CanvasMutation:case E.Input:return this.replaceIds(t.data,e,[\\\"id\\\"]),t;case E.StyleSheetRule:case E.StyleDeclaration:return this.replaceIds(t.data,e,[\\\"id\\\"]),this.replaceStyleIds(t.data,e,[\\\"styleId\\\"]),t;case E.Font:return t;case E.Selection:return t.data.ranges.forEach(i=>{this.replaceIds(i,e,[\\\"start\\\",\\\"end\\\"])}),t;case E.AdoptedStyleSheet:return this.replaceIds(t.data,e,[\\\"id\\\"]),this.replaceStyleIds(t.data,e,[\\\"styleIds\\\"]),(r=t.data.styles)==null||r.forEach(i=>{this.replaceStyleIds(i,e,[\\\"styleId\\\"])}),t}}return!1}replace(e,t,r,i){for(let n of i)!Array.isArray(t[n])&&typeof t[n]!=\\\"number\\\"||(Array.isArray(t[n])?t[n]=e.getIds(r,t[n]):t[n]=e.getId(r,t[n]));return t}replaceIds(e,t,r){return this.replace(this.crossOriginIframeMirror,e,t,r)}replaceStyleIds(e,t,r){return this.replace(this.crossOriginIframeStyleMirror,e,t,r)}replaceIdOnNode(e,t){this.replaceIds(e,t,[\\\"id\\\",\\\"rootId\\\"]),\\\"childNodes\\\"in e&&e.childNodes.forEach(r=>{this.replaceIdOnNode(r,t)})}patchRootIdOnNode(e,t){e.type!==qo.Document&&!e.rootId&&(e.rootId=t),\\\"childNodes\\\"in e&&e.childNodes.forEach(r=>{this.patchRootIdOnNode(r,t)})}},Ms=class{constructor(e){w(this,\\\"shadowDoms\\\",new WeakSet),w(this,\\\"mutationCb\\\"),w(this,\\\"scrollCb\\\"),w(this,\\\"bypassOptions\\\"),w(this,\\\"mirror\\\"),w(this,\\\"restoreHandlers\\\",[]),this.mutationCb=e.mutationCb,this.scrollCb=e.scrollCb,this.bypassOptions=e.bypassOptions,this.mirror=e.mirror,this.init()}init(){this.reset(),this.patchAttachShadow(Element,document)}addShadowRoot(e,t){if(!Ze(e)||this.shadowDoms.has(e))return;this.shadowDoms.add(e);let r=ea({...this.bypassOptions,doc:t,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this},e);this.restoreHandlers.push(()=>r.disconnect()),this.restoreHandlers.push(ta({...this.bypassOptions,scrollCb:this.scrollCb,doc:e,mirror:this.mirror})),setTimeout(()=>{e.adoptedStyleSheets&&e.adoptedStyleSheets.length>0&&this.bypassOptions.stylesheetManager.adoptStyleSheets(e.adoptedStyleSheets,this.mirror.getId(C.host(e))),this.restoreHandlers.push(ra({mirror:this.mirror,stylesheetManager:this.bypassOptions.stylesheetManager},e))},0)}observeAttachShadow(e){!e.contentWindow||!e.contentDocument||this.patchAttachShadow(e.contentWindow.Element,e.contentDocument)}patchAttachShadow(e,t){let r=this;this.restoreHandlers.push(Ie(e.prototype,\\\"attachShadow\\\",function(i){return function(n){let o=i.call(this,n),l=C.shadowRoot(this);return l&&Ko(this)&&r.addShadowRoot(l,t),o}}))}reset(){this.restoreHandlers.forEach(e=>{try{e()}catch{}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet}},Oe=\\\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\\\",Yf=typeof Uint8Array>\\\"u\\\"?[]:new Uint8Array(256);for(He=0;He<Oe.length;He++)Yf[Oe.charCodeAt(He)]=He;var He,Zf=function(s){var e=new Uint8Array(s),t,r=e.length,i=\\\"\\\";for(t=0;t<r;t+=3)i+=Oe[e[t]>>2],i+=Oe[(e[t]&3)<<4|e[t+1]>>4],i+=Oe[(e[t+1]&15)<<2|e[t+2]>>6],i+=Oe[e[t+2]&63];return r%3===2?i=i.substring(0,i.length-1)+\\\"=\\\":r%3===1&&(i=i.substring(0,i.length-2)+\\\"==\\\"),i};var ln=new Map;function Xf(s,e){let t=ln.get(s);return t||(t=new Map,ln.set(s,t)),t.has(e)||t.set(e,[]),t.get(e)}var sa=(s,e,t)=>{if(!s||!(na(s,e)||typeof s==\\\"object\\\"))return;let r=s.constructor.name,i=Xf(t,r),n=i.indexOf(s);return n===-1&&(n=i.length,i.push(s)),n};function zt(s,e,t){if(s instanceof Array)return s.map(r=>zt(r,e,t));if(s===null)return s;if(s instanceof Float32Array||s instanceof Float64Array||s instanceof Int32Array||s instanceof Uint32Array||s instanceof Uint8Array||s instanceof Uint16Array||s instanceof Int16Array||s instanceof Int8Array||s instanceof Uint8ClampedArray)return{rr_type:s.constructor.name,args:[Object.values(s)]};if(s instanceof ArrayBuffer){let r=s.constructor.name,i=Zf(s);return{rr_type:r,base64:i}}else{if(s instanceof DataView)return{rr_type:s.constructor.name,args:[zt(s.buffer,e,t),s.byteOffset,s.byteLength]};if(s instanceof HTMLImageElement){let r=s.constructor.name,{src:i}=s;return{rr_type:r,src:i}}else if(s instanceof HTMLCanvasElement){let r=\\\"HTMLImageElement\\\",i=s.toDataURL();return{rr_type:r,src:i}}else{if(s instanceof ImageData)return{rr_type:s.constructor.name,args:[zt(s.data,e,t),s.width,s.height]};if(na(s,e)||typeof s==\\\"object\\\"){let r=s.constructor.name,i=sa(s,e,t);return{rr_type:r,index:i}}}}return s}var ia=(s,e,t)=>s.map(r=>zt(r,e,t)),na=(s,e)=>!![\\\"WebGLActiveInfo\\\",\\\"WebGLBuffer\\\",\\\"WebGLFramebuffer\\\",\\\"WebGLProgram\\\",\\\"WebGLRenderbuffer\\\",\\\"WebGLShader\\\",\\\"WebGLShaderPrecisionFormat\\\",\\\"WebGLTexture\\\",\\\"WebGLUniformLocation\\\",\\\"WebGLVertexArrayObject\\\",\\\"WebGLVertexArrayObjectOES\\\"].filter(i=>typeof e[i]==\\\"function\\\").find(i=>s instanceof e[i]);function Jf(s,e,t,r){let i=[],n=Object.getOwnPropertyNames(e.CanvasRenderingContext2D.prototype);for(let o of n)try{if(typeof e.CanvasRenderingContext2D.prototype[o]!=\\\"function\\\")continue;let l=Ie(e.CanvasRenderingContext2D.prototype,o,function(a){return function(...u){return X(this.canvas,t,r,!0)||setTimeout(()=>{let c=ia(u,e,this);s(this.canvas,{type:$e[\\\"2D\\\"],property:o,args:c})},0),a.apply(this,u)}});i.push(l)}catch{let l=yr(e.CanvasRenderingContext2D.prototype,o,{set(a){s(this.canvas,{type:$e[\\\"2D\\\"],property:o,args:[a],setter:!0})}});i.push(l)}return()=>{i.forEach(o=>o())}}function Kf(s){return s===\\\"experimental-webgl\\\"?\\\"webgl\\\":s}function un(s,e,t,r){let i=[];try{let n=Ie(s.HTMLCanvasElement.prototype,\\\"getContext\\\",function(o){return function(l,...a){if(!X(this,e,t,!0)){let u=Kf(l);if(\\\"__context\\\"in this||(this.__context=u),r&&[\\\"webgl\\\",\\\"webgl2\\\"].includes(u))if(a[0]&&typeof a[0]==\\\"object\\\"){let c=a[0];c.preserveDrawingBuffer||(c.preserveDrawingBuffer=!0)}else a.splice(0,1,{preserveDrawingBuffer:!0})}return o.apply(this,[l,...a])}});i.push(n)}catch{console.error(\\\"failed to patch HTMLCanvasElement.prototype.getContext\\\")}return()=>{i.forEach(n=>n())}}function cn(s,e,t,r,i,n){let o=[],l=Object.getOwnPropertyNames(s);for(let a of l)if(![\\\"isContextLost\\\",\\\"canvas\\\",\\\"drawingBufferWidth\\\",\\\"drawingBufferHeight\\\"].includes(a))try{if(typeof s[a]!=\\\"function\\\")continue;let u=Ie(s,a,function(c){return function(...h){let p=c.apply(this,h);if(sa(p,n,this),\\\"tagName\\\"in this.canvas&&!X(this.canvas,r,i,!0)){let g=ia(h,n,this),m={type:e,property:a,args:g};t(this.canvas,m)}return p}});o.push(u)}catch{let u=yr(s,a,{set(c){t(this.canvas,{type:e,property:a,args:[c],setter:!0})}});o.push(u)}return o}function qf(s,e,t,r){let i=[];return i.push(...cn(e.WebGLRenderingContext.prototype,$e.WebGL,s,t,r,e)),typeof e.WebGL2RenderingContext<\\\"u\\\"&&i.push(...cn(e.WebGL2RenderingContext.prototype,$e.WebGL2,s,t,r,e)),()=>{i.forEach(n=>n())}}var oa=\\\"KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=\\\",Qf=s=>Uint8Array.from(atob(s),e=>e.charCodeAt(0)),hn=typeof window<\\\"u\\\"&&window.Blob&&new Blob([Qf(oa)],{type:\\\"text/javascript;charset=utf-8\\\"});function ed(s){let e;try{if(e=hn&&(window.URL||window.webkitURL).createObjectURL(hn),!e)throw\\\"\\\";let t=new Worker(e,{name:s?.name});return t.addEventListener(\\\"error\\\",()=>{(window.URL||window.webkitURL).revokeObjectURL(e)}),t}catch{return new Worker(\\\"data:text/javascript;base64,\\\"+oa,{name:s?.name})}finally{e&&(window.URL||window.webkitURL).revokeObjectURL(e)}}var Ns=class{constructor(e){w(this,\\\"pendingCanvasMutations\\\",new Map),w(this,\\\"rafStamps\\\",{latestId:0,invokeId:null}),w(this,\\\"mirror\\\"),w(this,\\\"mutationCb\\\"),w(this,\\\"resetObservers\\\"),w(this,\\\"frozen\\\",!1),w(this,\\\"locked\\\",!1),w(this,\\\"processMutation\\\",(a,u)=>{(this.rafStamps.invokeId&&this.rafStamps.latestId!==this.rafStamps.invokeId||!this.rafStamps.invokeId)&&(this.rafStamps.invokeId=this.rafStamps.latestId),this.pendingCanvasMutations.has(a)||this.pendingCanvasMutations.set(a,[]),this.pendingCanvasMutations.get(a).push(u)});let{sampling:t=\\\"all\\\",win:r,blockClass:i,blockSelector:n,recordCanvas:o,dataURLOptions:l}=e;this.mutationCb=e.mutationCb,this.mirror=e.mirror,o&&t===\\\"all\\\"&&this.initCanvasMutationObserver(r,i,n),o&&typeof t==\\\"number\\\"&&this.initCanvasFPSObserver(t,r,i,n,{dataURLOptions:l})}reset(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()}freeze(){this.frozen=!0}unfreeze(){this.frozen=!1}lock(){this.locked=!0}unlock(){this.locked=!1}initCanvasFPSObserver(e,t,r,i,n){let o=un(t,r,i,!0),l=new Map,a=new ed;a.onmessage=m=>{let{id:d}=m.data;if(l.set(d,!1),!(\\\"base64\\\"in m.data))return;let{base64:f,type:b,width:S,height:y}=m.data;this.mutationCb({id:d,type:$e[\\\"2D\\\"],commands:[{property:\\\"clearRect\\\",args:[0,0,S,y]},{property:\\\"drawImage\\\",args:[{rr_type:\\\"ImageBitmap\\\",args:[{rr_type:\\\"Blob\\\",data:[{rr_type:\\\"ArrayBuffer\\\",base64:f}],type:b}]},0,0]}]})};let u=1e3/e,c=0,h,p=()=>{let m=[];return t.document.querySelectorAll(\\\"canvas\\\").forEach(d=>{X(d,r,i,!0)||m.push(d)}),m},g=m=>{if(c&&m-c<u){h=requestAnimationFrame(g);return}c=m,p().forEach(async d=>{var f;let b=this.mirror.getId(d);if(l.get(b)||d.width===0||d.height===0)return;if(l.set(b,!0),[\\\"webgl\\\",\\\"webgl2\\\"].includes(d.__context)){let y=d.getContext(d.__context);((f=y?.getContextAttributes())==null?void 0:f.preserveDrawingBuffer)===!1&&y.clear(y.COLOR_BUFFER_BIT)}let S=await createImageBitmap(d);a.postMessage({id:b,bitmap:S,width:d.width,height:d.height,dataURLOptions:n.dataURLOptions},[S])}),h=requestAnimationFrame(g)};h=requestAnimationFrame(g),this.resetObservers=()=>{o(),cancelAnimationFrame(h)}}initCanvasMutationObserver(e,t,r){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();let i=un(e,t,r,!1),n=Jf(this.processMutation.bind(this),e,t,r),o=qf(this.processMutation.bind(this),e,t,r);this.resetObservers=()=>{i(),n(),o()}}startPendingCanvasMutationFlusher(){requestAnimationFrame(()=>this.flushPendingCanvasMutations())}startRAFTimestamping(){let e=t=>{this.rafStamps.latestId=t,requestAnimationFrame(e)};requestAnimationFrame(e)}flushPendingCanvasMutations(){this.pendingCanvasMutations.forEach((e,t)=>{let r=this.mirror.getId(t);this.flushPendingCanvasMutationFor(t,r)}),requestAnimationFrame(()=>this.flushPendingCanvasMutations())}flushPendingCanvasMutationFor(e,t){if(this.frozen||this.locked)return;let r=this.pendingCanvasMutations.get(e);if(!r||t===-1)return;let i=r.map(o=>{let{type:l,...a}=o;return a}),{type:n}=r[0];this.mutationCb({id:t,type:n,commands:i}),this.pendingCanvasMutations.delete(e)}},Rs=class{constructor(e){w(this,\\\"trackedLinkElements\\\",new WeakSet),w(this,\\\"mutationCb\\\"),w(this,\\\"adoptedStyleSheetCb\\\"),w(this,\\\"styleMirror\\\",new vs),this.mutationCb=e.mutationCb,this.adoptedStyleSheetCb=e.adoptedStyleSheetCb}attachLinkElement(e,t){\\\"_cssText\\\"in t.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:t.id,attributes:t.attributes}]}),this.trackLinkElement(e)}trackLinkElement(e){this.trackedLinkElements.has(e)||(this.trackedLinkElements.add(e),this.trackStylesheetInLinkElement(e))}adoptStyleSheets(e,t){if(e.length===0)return;let r={id:t,styleIds:[]},i=[];for(let n of e){let o;this.styleMirror.has(n)?o=this.styleMirror.getId(n):(o=this.styleMirror.add(n),i.push({styleId:o,rules:Array.from(n.rules||CSSRule,(l,a)=>({rule:mn(l,n.href),index:a}))})),r.styleIds.push(o)}i.length>0&&(r.styles=i),this.adoptedStyleSheetCb(r)}reset(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet}trackStylesheetInLinkElement(e){}},As=class{constructor(){w(this,\\\"nodeMap\\\",new WeakMap),w(this,\\\"active\\\",!1)}inOtherBuffer(e,t){let r=this.nodeMap.get(e);return r&&Array.from(r).some(i=>i!==t)}add(e,t){this.active||(this.active=!0,requestAnimationFrame(()=>{this.nodeMap=new WeakMap,this.active=!1})),this.nodeMap.set(e,(this.nodeMap.get(e)||new Set).add(t))}destroy(){}},W,Vt,Br,or=!1;try{if(Array.from([1],s=>s*2)[0]!==2){let s=document.createElement(\\\"iframe\\\");document.body.appendChild(s),Array.from=((pi=s.contentWindow)==null?void 0:pi.Array.from)||Array.from,document.body.removeChild(s)}}catch(s){console.debug(\\\"Unable to override Array.from\\\",s)}var re=ol();function me(s={}){let{emit:e,checkoutEveryNms:t,checkoutEveryNth:r,blockClass:i=\\\"rr-block\\\",blockSelector:n=null,ignoreClass:o=\\\"rr-ignore\\\",ignoreSelector:l=null,maskTextClass:a=\\\"rr-mask\\\",maskTextSelector:u=null,inlineStylesheet:c=!0,maskAllInputs:h,maskInputOptions:p,slimDOMOptions:g,maskInputFn:m,maskTextFn:d,hooks:f,packFn:b,sampling:S={},dataURLOptions:y={},mousemoveWait:v,recordDOM:N=!0,recordCanvas:D=!1,recordCrossOriginIframes:V=!1,recordAfter:k=s.recordAfter===\\\"DOMContentLoaded\\\"?s.recordAfter:\\\"load\\\",userTriggeredOnInput:z=!1,collectFonts:H=!1,inlineImages:q=!1,plugins:ne,keepIframeSrcFn:M=()=>!1,ignoreCSSAttributes:Fe=new Set([]),errorHandler:Ue}=s;Df(Ue);let G=V?window.parent===window:!0,Q=!1;if(!G)try{window.parent.document&&(Q=!1)}catch{Q=!0}if(G&&!e)throw new Error(\\\"emit function is required\\\");if(!G&&!Q)return()=>{};v!==void 0&&S.mousemove===void 0&&(S.mousemove=v),re.reset();let ye=h===!0?{color:!0,date:!0,\\\"datetime-local\\\":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0}:p!==void 0?p:{password:!0},oe=vn(g);Nf();let ti,br=0,ri=R=>{for(let te of ne||[])te.eventProcessor&&(R=te.eventProcessor(R));return b&&!Q&&(R=b(R)),R};W=(R,te)=>{var U;let B=R;if(B.timestamp=sr(),(U=Se[0])!=null&&U.isFrozen()&&B.type!==x.FullSnapshot&&!(B.type===x.IncrementalSnapshot&&B.data.source===E.Mutation)&&Se.forEach(K=>K.unfreeze()),G)e?.(ri(B),te);else if(Q){let K={type:\\\"rrweb\\\",event:ri(B),origin:window.location.origin,isCheckout:te};window.parent.postMessage(K,\\\"*\\\")}if(B.type===x.FullSnapshot)ti=B,br=0;else if(B.type===x.IncrementalSnapshot){if(B.data.source===E.Mutation&&B.data.isAttachIframe)return;br++;let K=r&&br>=r,T=t&&B.timestamp-ti.timestamp>t;(K||T)&&Vt(!0)}};let ft=R=>{W({type:x.IncrementalSnapshot,data:{source:E.Mutation,...R}})},si=R=>W({type:x.IncrementalSnapshot,data:{source:E.Scroll,...R}}),ii=R=>W({type:x.IncrementalSnapshot,data:{source:E.CanvasMutation,...R}}),ya=R=>W({type:x.IncrementalSnapshot,data:{source:E.AdoptedStyleSheet,...R}}),we=new Rs({mutationCb:ft,adoptedStyleSheetCb:ya}),be=new xs({mirror:re,mutationCb:ft,stylesheetManager:we,recordCrossOriginIframes:V,wrappedEmit:W});for(let R of ne||[])R.getMirror&&R.getMirror({nodeMirror:re,crossOriginIframeMirror:be.crossOriginIframeMirror,crossOriginIframeStyleMirror:be.crossOriginIframeStyleMirror});let Sr=new As;Br=new Ns({recordCanvas:D,mutationCb:ii,win:window,blockClass:i,blockSelector:n,mirror:re,sampling:S.canvas,dataURLOptions:y});let dt=new Ms({mutationCb:ft,scrollCb:si,bypassOptions:{blockClass:i,blockSelector:n,maskTextClass:a,maskTextSelector:u,inlineStylesheet:c,maskInputOptions:ye,dataURLOptions:y,maskTextFn:d,maskInputFn:m,recordCanvas:D,inlineImages:q,sampling:S,slimDOMOptions:oe,iframeManager:be,stylesheetManager:we,canvasManager:Br,keepIframeSrcFn:M,processedNodeManager:Sr},mirror:re});Vt=(R=!1)=>{if(!N)return;W({type:x.Meta,data:{href:window.location.href,width:jo(),height:Go()}},R),we.reset(),dt.init(),Se.forEach(U=>U.lock());let te=Ol(document,{mirror:re,blockClass:i,blockSelector:n,maskTextClass:a,maskTextSelector:u,inlineStylesheet:c,maskAllInputs:ye,maskTextFn:d,maskInputFn:m,slimDOM:oe,dataURLOptions:y,recordCanvas:D,inlineImages:q,onSerialize:U=>{Zo(U,re)&&be.addIframe(U),Xo(U,re)&&we.trackLinkElement(U),Ss(U)&&dt.addShadowRoot(C.shadowRoot(U),document)},onIframeLoad:(U,B)=>{be.attachIframe(U,B),dt.observeAttachShadow(U)},onStylesheetLoad:(U,B)=>{we.attachLinkElement(U,B)},keepIframeSrcFn:M});if(!te)return console.warn(\\\"Failed to snapshot the document\\\");W({type:x.FullSnapshot,data:{node:te,initialOffset:Vo(window)}},R),Se.forEach(U=>U.unlock()),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&we.adoptStyleSheets(document.adoptedStyleSheets,re.getId(document))};try{let R=[],te=B=>{var K;return I(Hf)({mutationCb:ft,mousemoveCb:(T,vr)=>W({type:x.IncrementalSnapshot,data:{source:vr,positions:T}}),mouseInteractionCb:T=>W({type:x.IncrementalSnapshot,data:{source:E.MouseInteraction,...T}}),scrollCb:si,viewportResizeCb:T=>W({type:x.IncrementalSnapshot,data:{source:E.ViewportResize,...T}}),inputCb:T=>W({type:x.IncrementalSnapshot,data:{source:E.Input,...T}}),mediaInteractionCb:T=>W({type:x.IncrementalSnapshot,data:{source:E.MediaInteraction,...T}}),styleSheetRuleCb:T=>W({type:x.IncrementalSnapshot,data:{source:E.StyleSheetRule,...T}}),styleDeclarationCb:T=>W({type:x.IncrementalSnapshot,data:{source:E.StyleDeclaration,...T}}),canvasMutationCb:ii,fontCb:T=>W({type:x.IncrementalSnapshot,data:{source:E.Font,...T}}),selectionCb:T=>{W({type:x.IncrementalSnapshot,data:{source:E.Selection,...T}})},customElementCb:T=>{W({type:x.IncrementalSnapshot,data:{source:E.CustomElement,...T}})},blockClass:i,ignoreClass:o,ignoreSelector:l,maskTextClass:a,maskTextSelector:u,maskInputOptions:ye,inlineStylesheet:c,sampling:S,recordDOM:N,recordCanvas:D,inlineImages:q,userTriggeredOnInput:z,collectFonts:H,doc:B,maskInputFn:m,maskTextFn:d,keepIframeSrcFn:M,blockSelector:n,slimDOMOptions:oe,dataURLOptions:y,mirror:re,iframeManager:be,stylesheetManager:we,shadowDomManager:dt,processedNodeManager:Sr,canvasManager:Br,ignoreCSSAttributes:Fe,plugins:((K=ne?.filter(T=>T.observer))==null?void 0:K.map(T=>({observer:T.observer,options:T.options,callback:vr=>W({type:x.Plugin,data:{plugin:T.name,payload:vr}})})))||[]},f)};be.addLoadListener(B=>{try{R.push(te(B.contentDocument))}catch(K){console.warn(K)}});let U=()=>{Vt(),R.push(te(document)),or=!0};return[\\\"interactive\\\",\\\"complete\\\"].includes(document.readyState)?U():(R.push(Z(\\\"DOMContentLoaded\\\",()=>{W({type:x.DomContentLoaded,data:{}}),k===\\\"DOMContentLoaded\\\"&&U()})),R.push(Z(\\\"load\\\",()=>{W({type:x.Load,data:{}}),k===\\\"load\\\"&&U()},window))),()=>{R.forEach(B=>{try{B()}catch(K){String(K).toLowerCase().includes(\\\"cross-origin\\\")||console.warn(K)}}),Sr.destroy(),or=!1,_f()}}catch(R){console.warn(R)}}me.addCustomEvent=(s,e)=>{if(!or)throw new Error(\\\"please add custom event after start recording\\\");W({type:x.Custom,data:{tag:s,payload:e}})};me.freezePage=()=>{Se.forEach(s=>s.freeze())};me.takeFullSnapshot=s=>{if(!or)throw new Error(\\\"please take full snapshot after start recording\\\");Vt(s)};me.mirror=re;var fn;(function(s){s[s.NotStarted=0]=\\\"NotStarted\\\",s[s.Running=1]=\\\"Running\\\",s[s.Stopped=2]=\\\"Stopped\\\"})(fn||(fn={}));var zd=5*1e3;var{addCustomEvent:Vd}=me,{freezePage:Gd}=me,{takeFullSnapshot:jd}=me;var td=1e4,ht=[],wr,aa=()=>{wr||(ht.length=0,wr=me({checkoutEveryNms:td,sampling:{input:\\\"last\\\"},emit(s){ht.push(s)}})??void 0)},la=()=>{wr?.(),wr=void 0},ua=()=>ht.splice(0),ca=()=>[...ht],ha=()=>ht.length;var Qs=\\\"data-expect-scroll-hidden\\\",ei=\\\"data-expect-prev-aria-hidden\\\",pa=\\\"data-expect-scroll-marker\\\",rd=\\\"position:absolute;width:0;height:0;overflow:hidden;\\\",fa=(s,e)=>{let t=s.getAttribute(\\\"aria-hidden\\\");t&&s.setAttribute(ei,t),s.setAttribute(\\\"aria-hidden\\\",\\\"true\\\"),s.setAttribute(Qs,e)},da=(s,e,t)=>{let r=document.createElement(\\\"div\\\");r.setAttribute(\\\"role\\\",\\\"note\\\"),r.setAttribute(\\\"aria-label\\\",e),r.setAttribute(pa,\\\"true\\\"),r.style.cssText=rd,t?s.insertBefore(r,t):s.appendChild(r)},ma=()=>{let s=[];for(let e of document.querySelectorAll(\\\"*\\\")){if(e.scrollHeight<=e.clientHeight+10)continue;let t=getComputedStyle(e);if(t.overflowY===\\\"hidden\\\"||t.overflowY===\\\"visible\\\")continue;let r=Array.from(e.children);if(r.length<5)continue;let i=e.getBoundingClientRect(),n=0,o=0,l,a;for(let u of r){let c=u.getBoundingClientRect();c.bottom<i.top?(fa(u,\\\"above\\\"),n++):c.top>i.bottom?(fa(u,\\\"below\\\"),o++):(l||(l=u),a=u)}n===0&&o===0||(n>0&&l&&da(e,`${n} items hidden above`,l),o>0&&a&&da(e,`${o} items hidden below`,a.nextSibling),s.push({totalChildren:r.length,hiddenAbove:n,hiddenBelow:o}))}return s},ga=()=>{for(let s of document.querySelectorAll(`[${Qs}]`)){let e=s.getAttribute(ei);e?(s.setAttribute(\\\"aria-hidden\\\",e),s.removeAttribute(ei)):s.removeAttribute(\\\"aria-hidden\\\"),s.removeAttribute(Qs)}for(let s of document.querySelectorAll(`[${pa}]`))s.remove()};return Ea(sd);})();\\n/*! Bundled license information:\\n\\nrrweb/dist/rrweb.js:\\n (*! *****************************************************************************\\n Copyright (c) Microsoft Corporation.\\n \\n Permission to use, copy, modify, and/or distribute this software for any\\n purpose with or without fee is hereby granted.\\n \\n THE SOFTWARE IS PROVIDED \\\"AS IS\\\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\\n PERFORMANCE OF THIS SOFTWARE.\\n ***************************************************************************** *)\\n*/\\n\\nglobalThis.__EXPECT_RUNTIME__ = __EXPECT_RUNTIME__;\\n\";\n","import { Browsers, Cookies, layerLive, browserKeyOf, Cookie } from \"@expect/cookies\";\nimport type { Browser as BrowserProfile } from \"@expect/cookies\";\nimport { chromium, webkit, firefox } from \"playwright\";\nimport type { Locator, Page } from \"playwright\";\nimport type { BrowserEngine } from \"./types\";\nimport { Array as Arr, Effect, Layer, Option, ServiceMap } from \"effect\";\n\nconst cookiesLayer = Layer.mergeAll(layerLive, Cookies.layer);\nimport {\n CONTENT_ROLES,\n HEADLESS_CHROMIUM_ARGS,\n INTERACTIVE_ROLES,\n NAVIGATION_DETECT_DELAY_MS,\n OVERLAY_CONTAINER_ID,\n POST_NAVIGATION_SETTLE_MS,\n REPLAY_PLAYER_HEIGHT_PX,\n REPLAY_PLAYER_WIDTH_PX,\n REF_PREFIX,\n SNAPSHOT_TIMEOUT_MS,\n} from \"./constants\";\nimport {\n BrowserLaunchError,\n CdpConnectionError,\n NavigationError,\n SnapshotTimeoutError,\n} from \"./errors\";\nimport { toActionError } from \"./utils/action-error\";\nimport { compactTree } from \"./utils/compact-tree\";\nimport { createLocator } from \"./utils/create-locator\";\nimport { evaluateRuntime } from \"./utils/evaluate-runtime\";\nimport { findCursorInteractive } from \"./utils/find-cursor-interactive\";\nimport { getIndentLevel } from \"./utils/get-indent-level\";\nimport { parseAriaLine } from \"./utils/parse-aria-line\";\nimport { resolveNthDuplicates } from \"./utils/resolve-nth-duplicates\";\nimport { computeSnapshotStats } from \"./utils/snapshot-stats\";\nimport { RUNTIME_SCRIPT } from \"./generated/runtime-script\";\nimport type {\n AnnotatedScreenshotOptions,\n Annotation,\n CreatePageOptions,\n RefMap,\n SnapshotOptions,\n} from \"./types\";\nimport type { ScrollContainerResult } from \"./runtime/scroll-detection\";\n\nconst BROWSER_ENGINES = { chromium, webkit, firefox } as const;\n\nconst resolveBrowserType = (engine: BrowserEngine) => BROWSER_ENGINES[engine];\n\nconst shouldAssignRef = (role: string, name: string, interactive?: boolean): boolean => {\n if (INTERACTIVE_ROLES.has(role)) return true;\n if (interactive) return false;\n return CONTENT_ROLES.has(role) && name.length > 0;\n};\n\nconst toBrowserLaunchError = (cause: unknown) =>\n new BrowserLaunchError({\n cause: cause instanceof Error ? cause.message : String(cause),\n });\n\nconst resolveDefaultBrowserContext = Effect.fn(\"Browser.resolveDefaultBrowserContext\")(\n function* () {\n const browsers = yield* Browsers;\n const maybeDefault = yield* browsers\n .defaultBrowser()\n .pipe(\n Effect.catchTag(\"ListBrowsersError\", () => Effect.succeed(Option.none<BrowserProfile>())),\n );\n\n return { preferredProfile: Option.getOrUndefined(maybeDefault) };\n },\n Effect.provide(layerLive),\n);\n\nconst extractCookiesForProfile = Effect.fn(\"Browser.extractCookiesForProfile\")(\n function* (cookiesService: typeof Cookies.Service, profile: BrowserProfile) {\n return yield* cookiesService.extract(profile);\n },\n Effect.catchTags({\n ExtractionError: () => Effect.succeed([]),\n PlatformError: Effect.die,\n }),\n);\n\nconst dedupCookies = (cookies: Cookie[]) =>\n Arr.dedupeWith(\n cookies,\n (cookieA, cookieB) =>\n cookieA.name === cookieB.name &&\n cookieA.domain === cookieB.domain &&\n cookieA.path === cookieB.path,\n );\n\nconst isSiblingProfile = (profile: BrowserProfile, reference: BrowserProfile) => {\n if (profile._tag !== reference._tag) return false;\n if (profile._tag === \"ChromiumBrowser\" && reference._tag === \"ChromiumBrowser\") {\n return profile.key === reference.key && profile.profilePath !== reference.profilePath;\n }\n if (profile._tag === \"FirefoxBrowser\" && reference._tag === \"FirefoxBrowser\") {\n return profile.profilePath !== reference.profilePath;\n }\n return false;\n};\n\nconst extractDefaultBrowserCookies = Effect.fn(\"Browser.extractDefaultBrowserCookies\")(function* (\n url: string,\n preferredProfile: BrowserProfile | undefined,\n) {\n if (!preferredProfile) return [];\n\n const cookiesService = yield* Cookies;\n const browsers = yield* Browsers;\n\n const allProfiles = yield* browsers.list.pipe(\n Effect.catchTag(\"ListBrowsersError\", () => Effect.succeed<BrowserProfile[]>([])),\n );\n\n const results = yield* Effect.forEach(\n [\n preferredProfile,\n ...allProfiles.filter((profile) => isSiblingProfile(profile, preferredProfile)),\n ],\n (profile) => extractCookiesForProfile(cookiesService, profile),\n { concurrency: \"unbounded\" },\n );\n\n // Preferred profile is first, so its cookies win when multiple profiles share the same cookie identity.\n return dedupCookies(results.flat());\n}, Effect.provide(cookiesLayer));\n\nconst extractCookiesForBrowserKeys = Effect.fn(\"Browser.extractCookiesForBrowserKeys\")(function* (\n browserKeys: readonly string[],\n) {\n const cookiesService = yield* Cookies;\n const browsers = yield* Browsers;\n const allProfiles = yield* browsers.list.pipe(\n Effect.catchTag(\"ListBrowsersError\", () => Effect.succeed<BrowserProfile[]>([])),\n );\n\n const matchingProfiles = allProfiles.filter((profile) =>\n browserKeys.includes(browserKeyOf(profile)),\n );\n\n const results = yield* Effect.forEach(\n matchingProfiles,\n (profile) => extractCookiesForProfile(cookiesService, profile),\n { concurrency: \"unbounded\" },\n );\n\n return dedupCookies(results.flat());\n}, Effect.provide(cookiesLayer));\n\nconst appendCursorInteractiveElements = Effect.fn(\"Browser.appendCursorInteractive\")(function* (\n page: Page,\n filteredLines: string[],\n refs: RefMap,\n refCount: number,\n options: SnapshotOptions,\n) {\n const cursorElements = yield* findCursorInteractive(page, options.selector);\n if (cursorElements.length === 0) return refCount;\n\n const existingNames = new Set(Object.values(refs).map((entry) => entry.name.toLowerCase()));\n const newLines: string[] = [];\n\n for (const element of cursorElements) {\n if (existingNames.has(element.text.toLowerCase())) continue;\n existingNames.add(element.text.toLowerCase());\n\n const ref = `${REF_PREFIX}${++refCount}`;\n refs[ref] = {\n role: \"clickable\",\n name: element.text,\n selector: element.selector,\n };\n newLines.push(`- clickable \"${element.text}\" [ref=${ref}] [${element.reason}]`);\n }\n\n if (newLines.length > 0) {\n filteredLines.push(\"# Cursor-interactive elements:\");\n filteredLines.push(...newLines);\n }\n\n return refCount;\n});\n\nconst injectOverlayLabels = (page: Page, labels: Array<{ label: number; x: number; y: number }>) =>\n evaluateRuntime(page, \"injectOverlayLabels\", OVERLAY_CONTAINER_ID, labels);\n\nexport class Browser extends ServiceMap.Service<Browser>()(\"@browser/Browser\", {\n make: Effect.gen(function* () {\n const createPage = Effect.fn(\"Browser.createPage\")(function* (\n url: string | undefined,\n options: CreatePageOptions = {},\n ) {\n const engine = options.browserType ?? \"chromium\";\n yield* Effect.annotateCurrentSpan({\n url: url ?? \"about:blank\",\n cdp: Boolean(options.cdpUrl),\n browserType: engine,\n });\n\n const cdpEndpoint = engine === \"chromium\" ? options.cdpUrl : undefined;\n const browserType = resolveBrowserType(engine);\n const browser = cdpEndpoint\n ? yield* Effect.tryPromise({\n try: () => chromium.connectOverCDP(cdpEndpoint),\n catch: (cause) =>\n new CdpConnectionError({\n endpointUrl: cdpEndpoint,\n cause: cause instanceof Error ? cause.message : String(cause),\n }),\n })\n : yield* Effect.tryPromise({\n try: () =>\n browserType.launch({\n headless: !options.headed,\n executablePath: options.executablePath,\n args: engine === \"chromium\" && !options.headed ? HEADLESS_CHROMIUM_ARGS : [],\n }),\n catch: toBrowserLaunchError,\n });\n\n const setupPage = Effect.gen(function* () {\n const defaultBrowserContext =\n options.cookies === true\n ? yield* resolveDefaultBrowserContext()\n : { preferredProfile: undefined };\n\n const profileLocale =\n defaultBrowserContext.preferredProfile?._tag === \"ChromiumBrowser\"\n ? defaultBrowserContext.preferredProfile.locale\n : undefined;\n\n const contextOptions: Parameters<typeof browser.newContext>[0] = {};\n if (profileLocale) {\n contextOptions.locale = profileLocale;\n }\n if (options.videoOutputDir) {\n contextOptions.recordVideo = {\n dir: options.videoOutputDir,\n size: { width: REPLAY_PLAYER_WIDTH_PX, height: REPLAY_PLAYER_HEIGHT_PX },\n };\n }\n\n const isCdpConnected = Boolean(cdpEndpoint);\n const existingContexts = isCdpConnected ? browser.contexts() : [];\n const context =\n existingContexts.length > 0\n ? existingContexts[0]!\n : yield* Effect.tryPromise({\n try: () => browser.newContext(contextOptions),\n catch: toBrowserLaunchError,\n });\n\n yield* Effect.tryPromise({\n try: () => context.addInitScript(RUNTIME_SCRIPT),\n catch: toBrowserLaunchError,\n });\n\n if (isCdpConnected && existingContexts.length > 0) {\n const existingPages = context.pages();\n for (const existingPage of existingPages) {\n yield* Effect.tryPromise({\n try: () => existingPage.evaluate(RUNTIME_SCRIPT),\n catch: toBrowserLaunchError,\n }).pipe(Effect.catchTag(\"BrowserLaunchError\", () => Effect.void));\n }\n }\n\n if (options.cookies && !isCdpConnected) {\n const cookies = Array.isArray(options.cookies)\n ? options.cookies\n : yield* extractDefaultBrowserCookies(\n url ?? \"\",\n defaultBrowserContext.preferredProfile,\n );\n yield* Effect.tryPromise({\n try: () => context.addCookies(cookies.map((cookie) => cookie.playwrightFormat)),\n catch: toBrowserLaunchError,\n });\n }\n\n const existingPages = context.pages();\n const page =\n isCdpConnected && existingPages.length > 0\n ? existingPages[0]!\n : yield* Effect.tryPromise({\n try: () => context.newPage(),\n catch: toBrowserLaunchError,\n });\n\n if (url) {\n yield* Effect.tryPromise({\n try: () => page.goto(url, { waitUntil: options.waitUntil ?? \"load\" }),\n catch: (cause) =>\n new NavigationError({\n url,\n cause: cause instanceof Error ? cause.message : String(cause),\n }),\n });\n }\n\n return { browser, context, page };\n });\n\n return yield* setupPage.pipe(\n Effect.tapError(() => {\n if (cdpEndpoint) return Effect.void;\n return Effect.tryPromise(() => browser.close()).pipe(\n Effect.catchTag(\"UnknownError\", () => Effect.void),\n );\n }),\n );\n });\n\n const NO_SCROLL_CONTAINERS: ScrollContainerResult[] = [];\n\n const takeAriaSnapshot = Effect.fn(\"Browser.takeAriaSnapshot\")(function* (\n page: Page,\n options: SnapshotOptions,\n ) {\n const timeout = options.timeout ?? SNAPSHOT_TIMEOUT_MS;\n const selector = options.selector ?? \"body\";\n const useViewportAware = options.viewportAware ?? true;\n\n const scrollContainers: ScrollContainerResult[] = useViewportAware\n ? yield* evaluateRuntime(page, \"prepareViewportSnapshot\").pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Viewport snapshot preparation failed, falling back to full tree\", {\n cause,\n }).pipe(Effect.as(NO_SCROLL_CONTAINERS)),\n ),\n )\n : NO_SCROLL_CONTAINERS;\n\n const restore =\n scrollContainers.length > 0\n ? evaluateRuntime(page, \"restoreViewportSnapshot\").pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Viewport snapshot restoration failed\", { cause }),\n ),\n )\n : Effect.void;\n\n const rawTree = yield* Effect.ensuring(\n Effect.tryPromise({\n try: () => page.locator(selector).ariaSnapshot({ timeout }),\n catch: (cause) =>\n new SnapshotTimeoutError({\n selector,\n timeoutMs: timeout,\n cause: cause instanceof Error ? cause.message : String(cause),\n }),\n }),\n restore,\n );\n\n return { rawTree, scrollContainers };\n });\n\n const snapshot = Effect.fn(\"Browser.snapshot\")(function* (\n page: Page,\n options: SnapshotOptions = {},\n ) {\n yield* Effect.annotateCurrentSpan({ selector: options.selector ?? \"body\" });\n\n const { rawTree, scrollContainers } = yield* takeAriaSnapshot(page, options);\n\n const refs: RefMap = {};\n const filteredLines: string[] = [];\n let refCount = 0;\n\n for (const line of rawTree.split(\"\\n\")) {\n if (options.maxDepth !== undefined && getIndentLevel(line) > options.maxDepth) continue;\n\n const parsed = parseAriaLine(line);\n if (Option.isNone(parsed)) {\n if (!options.interactive) filteredLines.push(line);\n continue;\n }\n\n const { role, name } = parsed.value;\n if (options.interactive && !INTERACTIVE_ROLES.has(role)) continue;\n\n if (shouldAssignRef(role, name, options.interactive)) {\n const ref = `${REF_PREFIX}${++refCount}`;\n refs[ref] = { role, name };\n filteredLines.push(`${line} [ref=${ref}]`);\n } else {\n filteredLines.push(line);\n }\n }\n\n if (options.cursor) {\n refCount = yield* appendCursorInteractiveElements(\n page,\n filteredLines,\n refs,\n refCount,\n options,\n );\n }\n\n resolveNthDuplicates(refs);\n\n let tree = filteredLines.join(\"\\n\");\n if (options.interactive && refCount === 0) tree = \"(no interactive elements)\";\n if (options.compact) tree = compactTree(tree);\n\n const stats = computeSnapshotStats(tree, refs, scrollContainers);\n\n return { tree, refs, stats, locator: createLocator(page, refs) };\n });\n\n const act = Effect.fn(\"Browser.act\")(function* (\n page: Page,\n ref: string,\n action: (locator: Locator) => Promise<void>,\n options?: SnapshotOptions,\n ) {\n yield* Effect.annotateCurrentSpan({ ref });\n const before = yield* snapshot(page, options);\n const locator = yield* before.locator(ref);\n yield* Effect.tryPromise({\n try: () => action(locator),\n catch: (error) => toActionError(error, ref),\n });\n return yield* snapshot(page, options);\n });\n\n const annotatedScreenshot = Effect.fn(\"Browser.annotatedScreenshot\")(function* (\n page: Page,\n options: AnnotatedScreenshotOptions = {},\n ) {\n const snapshotResult = yield* snapshot(page, options);\n const annotations: Annotation[] = [];\n const labelPositions: Array<{ label: number; x: number; y: number }> = [];\n\n let labelCounter = 0;\n\n for (const [ref, entry] of Object.entries(snapshotResult.refs)) {\n const locator = yield* snapshotResult.locator(ref);\n const box = yield* Effect.tryPromise(() => locator.boundingBox()).pipe(\n Effect.catchTag(\"UnknownError\", () => Effect.succeed(undefined)),\n );\n if (!box) continue;\n\n labelCounter++;\n annotations.push({ label: labelCounter, ref, role: entry.role, name: entry.name });\n labelPositions.push({ label: labelCounter, x: box.x, y: box.y });\n }\n\n yield* injectOverlayLabels(page, labelPositions);\n return yield* Effect.ensuring(\n Effect.tryPromise({\n try: () => page.screenshot({ fullPage: options.fullPage, scale: \"css\" }),\n catch: toBrowserLaunchError,\n }).pipe(Effect.map((screenshotBuffer) => ({ screenshot: screenshotBuffer, annotations }))),\n // HACK: overlay removal is best-effort cleanup — evaluateRuntime uses Effect.promise which defects on failure\n evaluateRuntime(page, \"removeOverlay\", OVERLAY_CONTAINER_ID).pipe(\n Effect.catchCause(() => Effect.void),\n ),\n );\n });\n\n const waitForNavigationSettle = Effect.fn(\"Browser.waitForNavigationSettle\")(function* (\n page: Page,\n urlBefore: string,\n ) {\n yield* Effect.tryPromise({\n try: () =>\n page.waitForURL((url) => url.toString() !== urlBefore, {\n timeout: NAVIGATION_DETECT_DELAY_MS,\n waitUntil: \"commit\",\n }),\n catch: toBrowserLaunchError,\n }).pipe(Effect.catchTag(\"BrowserLaunchError\", () => Effect.void));\n if (page.url() !== urlBefore) {\n yield* Effect.tryPromise(() => page.waitForLoadState(\"domcontentloaded\")).pipe(\n Effect.catchTag(\"UnknownError\", () => Effect.void),\n );\n yield* Effect.tryPromise({\n try: () => page.waitForTimeout(POST_NAVIGATION_SETTLE_MS),\n catch: toBrowserLaunchError,\n });\n }\n });\n\n const preExtractCookies = Effect.fn(\"Browser.preExtractCookies\")(function* (\n browserKeys?: readonly string[],\n ) {\n if (browserKeys && browserKeys.length > 0) {\n return yield* extractCookiesForBrowserKeys(browserKeys);\n }\n const { preferredProfile } = yield* resolveDefaultBrowserContext();\n return yield* extractDefaultBrowserCookies(\"\", preferredProfile);\n });\n\n return {\n createPage,\n snapshot,\n act,\n annotatedScreenshot,\n waitForNavigationSettle,\n preExtractCookies,\n } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make);\n}\n\nexport const runBrowser = <A>(\n effect: (browser: typeof Browser.Service) => Effect.Effect<A, unknown>,\n): Promise<A> =>\n Effect.runPromise(\n Effect.gen(function* () {\n const browser = yield* Browser;\n return yield* effect(browser);\n }).pipe(Effect.provide(Browser.layer)),\n );\n","import type { Page } from \"playwright\";\nimport type { eventWithTime } from \"@rrweb/types\";\nimport { Effect, Predicate } from \"effect\";\nimport { FileSystem } from \"effect/FileSystem\";\nimport { evaluateRuntime } from \"./utils/evaluate-runtime\";\nimport { RecorderInjectionError, SessionLoadError } from \"./errors\";\nimport type { CollectResult } from \"./types\";\n\nexport const collectEvents = Effect.fn(\"Recorder.collectEvents\")(function* (page: Page) {\n const events = yield* evaluateRuntime(page, \"getEvents\").pipe(\n Effect.catchCause((cause) => new RecorderInjectionError({ cause: String(cause) }).asEffect()),\n );\n const total = yield* evaluateRuntime(page, \"getEventCount\").pipe(\n Effect.catchCause((cause) => new RecorderInjectionError({ cause: String(cause) }).asEffect()),\n );\n\n return { events, total: total + events.length } satisfies CollectResult;\n});\n\nexport const collectAllEvents = Effect.fn(\"Recorder.collectAllEvents\")(function* (page: Page) {\n return yield* evaluateRuntime(page, \"getAllEvents\").pipe(\n Effect.catchCause((cause) => new RecorderInjectionError({ cause: String(cause) }).asEffect()),\n );\n});\n\nconst isRrwebEvent = (value: unknown): value is eventWithTime =>\n Predicate.isObject(value) && \"type\" in value && \"timestamp\" in value;\n\nexport const loadSession = Effect.fn(\"Recorder.loadSession\")(function* (sessionPath: string) {\n const fileSystem = yield* FileSystem;\n const content = yield* fileSystem\n .readFileString(sessionPath)\n .pipe(\n Effect.catchTag(\"PlatformError\", (error) =>\n new SessionLoadError({ path: sessionPath, cause: String(error) }).asEffect(),\n ),\n );\n\n const lines = content.trim().split(\"\\n\");\n const events = yield* Effect.forEach(lines, (line, index) =>\n Effect.try({\n try: () => {\n const parsed: unknown = JSON.parse(line);\n if (!isRrwebEvent(parsed)) {\n throw new Error(\"Missing required 'type' and 'timestamp' fields\");\n }\n return parsed;\n },\n catch: (cause) =>\n new SessionLoadError({\n path: sessionPath,\n cause: `Invalid rrweb event at line ${index + 1}: ${String(cause)}`,\n }),\n }),\n );\n\n return events;\n});\n","import { REPLAY_PLAYER_HEIGHT_PX, REPLAY_PLAYER_WIDTH_PX } from \"./constants\";\nimport type { ViewerRunState } from \"./mcp/viewer-events\";\n\nconst escapeHtml = (text: string): string =>\n text.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\n\nconst RRWEB_PLAYER_VERSION = \"2.0.0-alpha.18\";\nconst RRWEB_PLAYER_CSS = `https://cdn.jsdelivr.net/npm/rrweb-player@${RRWEB_PLAYER_VERSION}/dist/style.css`;\nconst RRWEB_PLAYER_JS = `https://cdn.jsdelivr.net/npm/rrweb-player@${RRWEB_PLAYER_VERSION}/dist/rrweb-player.js`;\n\ntype EventsSource = \"sse\" | { ndjsonPath: string };\n\ninterface ReplayViewerOptions {\n title: string;\n bodyHtml?: string;\n eventsSource?: EventsSource;\n steps?: ViewerRunState;\n}\n\nconst buildLoadEventsScript = (source: EventsSource): string => {\n if (source === \"sse\") {\n return `\n const res = await fetch('/latest.json');\n if (res.ok) { allEvents = await res.json(); if (allEvents.length >= 2) initPlayer(allEvents); }\n const es = new EventSource('/events');\n es.addEventListener('replay', (msg) => { try { for (const e of JSON.parse(msg.data)) { allEvents.push(e); if (player) player.getReplayer().addEvent(e); } if (!player && allEvents.length >= 2) initPlayer(allEvents); } catch {} });\n es.addEventListener('steps', (msg) => { try { updateSteps(JSON.parse(msg.data)); } catch {} });\n es.onerror = () => { if (statusEl) statusEl.textContent = 'Connection lost. Retrying...'; };`;\n }\n\n const escapedPath = source.ndjsonPath.replaceAll(\"'\", \"\\\\'\");\n return `\n if (window.__EXPECT_REPLAY_NDJSON__) {\n allEvents = window.__EXPECT_REPLAY_NDJSON__.trim().split('\\\\n').map(l => JSON.parse(l));\n if (allEvents.length >= 2) initPlayer(allEvents);\n else if (statusEl) statusEl.textContent = 'No replay events recorded.';\n } else {\n const res = await fetch('${escapedPath}');\n if (res.ok) {\n allEvents = (await res.text()).trim().split('\\\\n').map(l => JSON.parse(l));\n if (allEvents.length >= 2) initPlayer(allEvents);\n else if (statusEl) statusEl.textContent = 'No replay events recorded.';\n } else if (statusEl) statusEl.textContent = 'Failed to load replay.';\n }`;\n};\n\nconst buildStepsScript = (steps?: ViewerRunState): string => {\n const initialData = steps ? JSON.stringify(steps) : \"null\";\n return `\n const stepsPanel = document.getElementById('steps-panel');\n const runTitle = document.getElementById('run-title');\n const runStatus = document.getElementById('run-status');\n const runSummary = document.getElementById('run-summary');\n const stepsList = document.getElementById('steps-list');\n let initialSteps = ${initialData};\n if (initialSteps) updateSteps(initialSteps);\n\n function updateSteps(state) {\n if (!stepsPanel || !state) return;\n stepsPanel.style.display = 'block';\n if (runTitle) runTitle.textContent = state.title || 'Test Run';\n if (runStatus) {\n runStatus.textContent = state.status;\n runStatus.className = 'run-status status-' + state.status;\n }\n if (runSummary) {\n runSummary.textContent = state.summary || '';\n runSummary.style.display = state.summary ? 'block' : 'none';\n }\n if (stepsList && state.steps) {\n stepsList.innerHTML = '';\n for (const step of state.steps) {\n const li = document.createElement('li');\n li.className = 'step-item step-' + step.status;\n const badge = document.createElement('span');\n badge.className = 'step-badge';\n badge.textContent = step.status === 'passed' ? '\\\\u2713'\n : step.status === 'failed' ? '\\\\u2717'\n : step.status === 'active' ? '\\\\u25CF'\n : '\\\\u25CB';\n const title = document.createElement('span');\n title.className = 'step-title';\n title.textContent = step.title;\n li.appendChild(badge);\n li.appendChild(title);\n if (step.summary) {\n const summary = document.createElement('span');\n summary.className = 'step-summary';\n summary.textContent = step.summary;\n li.appendChild(summary);\n }\n stepsList.appendChild(li);\n }\n }\n }`;\n};\n\nconst stepsStyles = `\n #steps-panel { display: none; margin-bottom: 24px; background: #1e293b; border-radius: 8px; padding: 20px; border: 1px solid #334155 }\n #steps-panel h2 { margin: 0 0 4px 0; font-size: 16px; font-weight: 600 }\n .run-status { display: inline-block; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; padding: 2px 8px; border-radius: 4px; margin-bottom: 12px }\n .status-running { background: #1e3a5f; color: #60a5fa }\n .status-passed { background: #14532d; color: #4ade80 }\n .status-failed { background: #7f1d1d; color: #f87171 }\n #run-summary { font-size: 13px; color: #94a3b8; margin-bottom: 16px }\n #steps-list { list-style: none; padding: 0; margin: 0 }\n .step-item { display: flex; align-items: baseline; gap: 8px; padding: 6px 0; font-size: 14px; border-top: 1px solid #1e293b }\n .step-item:first-child { border-top: none }\n .step-badge { flex-shrink: 0; width: 16px; text-align: center; font-size: 13px }\n .step-pending .step-badge { color: #64748b }\n .step-active .step-badge { color: #60a5fa; animation: pulse 1.5s infinite }\n .step-passed .step-badge { color: #4ade80 }\n .step-failed .step-badge { color: #f87171 }\n .step-title { color: #e2e8f0 }\n .step-summary { color: #94a3b8; font-size: 12px; margin-left: auto; max-width: 50%; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }\n @keyframes pulse { 0%, 100% { opacity: 1 } 50% { opacity: 0.4 } }`;\n\nexport const buildReplayViewerHtml = (options: ReplayViewerOptions): string => {\n const source = options.eventsSource;\n const isLive = source === \"sse\";\n\n const ndjsonLoaderScript =\n source !== undefined && source !== \"sse\"\n ? `\n <script>\n (function(){var b=location.pathname.split('/').pop().replace(/\\\\.html$/,'');document.write('<scr'+'ipt src=\"'+b+'.ndjson.js\"></scr'+'ipt>');})();\n </script>`\n : \"\";\n\n const replaySection =\n source !== undefined\n ? `\n <div id=\"replay-container\"><div class=\"status\" id=\"status\">Loading replay…</div></div>\n ${ndjsonLoaderScript}\n <script type=\"module\">\n import rrwebPlayer from '${RRWEB_PLAYER_JS}';\n const container = document.getElementById('replay-container');\n const statusEl = document.getElementById('status');\n let player = null, allEvents = [];\n const initPlayer = (events) => {\n if (player) { player.getReplayer().addEvent(events.at(-1)); return; }\n if (events.length < 2) return;\n statusEl?.remove();\n player = new rrwebPlayer({ target: container, props: {\n events, width: ${REPLAY_PLAYER_WIDTH_PX}, height: ${REPLAY_PLAYER_HEIGHT_PX},\n autoPlay: ${isLive}, showController: ${!isLive}, ${isLive ? \"liveMode: true,\" : \"\"}\n }});\n ${isLive ? \"player.getReplayer().startLive();\" : \"\"}\n };\n ${buildLoadEventsScript(source)}\n </script>`\n : \"\";\n\n const stepsSection = `\n <div id=\"steps-panel\">\n <h2 id=\"run-title\">Test Run</h2>\n <div id=\"run-status\" class=\"run-status status-running\">running</div>\n <div id=\"run-summary\" style=\"display:none\"></div>\n <ul id=\"steps-list\"></ul>\n </div>\n <script>${buildStepsScript(options.steps)}</script>`;\n\n return `<!doctype html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>${escapeHtml(options.title)}</title>\n ${source !== undefined ? `<link rel=\"stylesheet\" href=\"${RRWEB_PLAYER_CSS}\" />` : \"\"}\n <style>\n :root { color-scheme: dark }\n body { margin: 0; font-family: ui-sans-serif, system-ui, sans-serif; background: #0f172a; color: #e2e8f0 }\n h1, h2 { color: #f8fafc } a { color: #93c5fd }\n #replay-container { margin: 16px 0; border-radius: 8px; overflow: hidden }\n .status { text-align: center; padding: 16px; font-size: 14px; color: #9ca3af }\n ${stepsStyles}\n .replayer-mouse {\n background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMzInIGhlaWdodD0nMzUnIHZpZXdCb3g9JzAgMCAzMiAzNScgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48ZGVmcz48ZmlsdGVyIGlkPSdjcycgeD0nLTQnIHk9Jy00JyB3aWR0aD0nNDAnIGhlaWdodD0nNDAnIGZpbHRlclVuaXRzPSd1c2VyU3BhY2VPblVzZScgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSdzUkdCJz48ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PScwJyByZXN1bHQ9J2JnJy8+PGZlQ29sb3JNYXRyaXggaW49J1NvdXJjZUFscGhhJyB0eXBlPSdtYXRyaXgnIHZhbHVlcz0nMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAnIHJlc3VsdD0naGEnLz48ZmVPZmZzZXQvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249JzInLz48ZmVDb21wb3NpdGUgaW4yPSdoYScgb3BlcmF0b3I9J291dCcvPjxmZUNvbG9yTWF0cml4IHR5cGU9J21hdHJpeCcgdmFsdWVzPScwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjI1IDAnLz48ZmVCbGVuZCBtb2RlPSdub3JtYWwnIGluMj0nYmcnIHJlc3VsdD0nZHMnLz48ZmVCbGVuZCBtb2RlPSdub3JtYWwnIGluPSdTb3VyY2VHcmFwaGljJyBpbjI9J2RzJyByZXN1bHQ9J3NoYXBlJy8+PC9maWx0ZXI+PC9kZWZzPjxnIGZpbHRlcj0ndXJsKCUyM2NzKSc+PHBhdGggZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xNi41MDEgMTMuODZMMjQuODg0IDIyLjI2MUMyNS45MzcgMjMuMzE3IDI1LjE5IDI1LjExOSAyMy42OTkgMjUuMTE5TDIyLjQ3NSAyNS4xMTlMMjMuNjkxIDI4LjAwN0MyMy45MDQgMjguNTEzIDIzLjkwNyAyOS4wNzMgMjMuNyAyOS41ODJDMjMuNDkyIDMwLjA5MiAyMy4wOTggMzAuNDkgMjIuNTkgMzAuNzAzQzIyLjMzNCAzMC44MSAyMi4wNjYgMzAuODY0IDIxLjc5MiAzMC44NjRDMjAuOTYxIDMwLjg2NCAyMC4yMTYgMzAuMzY5IDE5Ljg5NCAyOS42MDNMMTguNjE2IDI2LjU2NUwxNy43ODQgMjcuMzAzQzE2LjcwMyAyOC4yNTkgMTUgMjcuNDkyIDE1IDI2LjA0OFYxNC40ODFDMTUgMTMuNjk3IDE1Ljk0NyAxMy4zMDUgMTYuNTAxIDEzLjg2WicgZmlsbD0nJTIzRkZGRkZGJy8+PHBhdGggZmlsbC1ydWxlPSdldmVub2RkJyBjbGlwLXJ1bGU9J2V2ZW5vZGQnIGQ9J00xNS45OTkgMTUuMTI5QzE1Ljk5OSAxNC45OTggMTYuMTU5IDE0LjkzMiAxNi4yNSAxNS4wMjVMMjQuMTU5IDIyLjk1QzI0LjU5IDIzLjM4MiAyNC4yODQgMjQuMTE5IDIzLjY3NCAyNC4xMTlMMjAuOTcgMjQuMTE4TDIyLjc2OSAyOC4zOTRDMjIuOTk2IDI4LjkzNCAyMi43NDIgMjkuNTU1IDIyLjIwMyAyOS43ODFDMjEuNjYyIDMwLjAwOCAyMS4wNDIgMjkuNzU1IDIwLjgxNiAyOS4yMTZMMTguOTk4IDI0Ljg5MkwxNy4xMzkgMjYuNTM5QzE2LjcyMyAyNi45MDcgMTYuMDgxIDI2LjY1MSAxNi4wMDcgMjYuMTI3TDE1Ljk5OSAyNi4wMjZWMTUuMTI5WicgZmlsbD0nJTIzMDAwMDAwJy8+PC9nPjwvc3ZnPg==') !important;\n background-size: contain !important;\n background-position: top left !important;\n width: 54px !important;\n height: 59px !important;\n transition: left 0.15s cubic-bezier(0.25, 1, 0.5, 1), top 0.15s cubic-bezier(0.25, 1, 0.5, 1), width 0.2s ease-out, height 0.2s ease-out !important;\n }\n .replayer-mouse::after { display: none !important }\n .replayer-mouse.active { animation: macos-click 0.2s ease-out 1 !important }\n @keyframes macos-click { 0% { transform: scale(1) } 40% { transform: scale(0.7) } 100% { transform: scale(1) } }\n </style>\n</head>\n<body>\n <main style=\"max-width:${REPLAY_PLAYER_WIDTH_PX}px;margin:0 auto;padding:32px\">\n ${options.bodyHtml ?? \"\"}\n ${stepsSection}\n ${replaySection}\n </main>\n</body>\n</html>`;\n};\n","import { Schema } from \"effect\";\n\nexport class McpSessionNotOpenError extends Schema.ErrorClass<McpSessionNotOpenError>(\n \"McpSessionNotOpenError\",\n)({\n _tag: Schema.tag(\"McpSessionNotOpenError\"),\n}) {\n message = \"No browser open. Call the 'open' tool first.\";\n}\n","import { createServer, type IncomingMessage, type Server, type ServerResponse } from \"node:http\";\nimport type { Page } from \"playwright\";\nimport type { eventWithTime } from \"@rrweb/types\";\nimport { Effect, Fiber, Predicate, PubSub, Schedule, Stream } from \"effect\";\nimport { EVENT_COLLECT_INTERVAL_MS } from \"../constants\";\nimport { buildReplayViewerHtml } from \"../replay-viewer\";\nimport { evaluateRuntime } from \"../utils/evaluate-runtime\";\nimport type { ViewerRunState } from \"./viewer-events\";\n\nconst isViewerRunState = (value: unknown): value is ViewerRunState =>\n Predicate.isObject(value) &&\n \"status\" in value &&\n \"steps\" in value &&\n Array.isArray((value as Record<string, unknown>).steps);\n\nexport interface LiveViewHandle {\n readonly url: string;\n readonly pushRunState: (state: ViewerRunState) => void;\n readonly getLatestRunState: () => ViewerRunState | undefined;\n readonly close: Effect.Effect<void>;\n}\n\nexport interface StartLiveViewServerOptions {\n readonly liveViewUrl: string;\n readonly getPage: () => Page | undefined;\n readonly onEventsCollected: (events: eventWithTime[]) => void;\n}\n\ntype SseClient = ServerResponse<IncomingMessage>;\n\nconst CORS_HEADERS = {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": \"Content-Type\",\n} as const;\n\nconst NO_CACHE_HEADERS = { \"Cache-Control\": \"no-store\" } as const;\n\nconst listenServer = (server: Server, host: string, port: number) =>\n Effect.callback<void, Error>((resume) => {\n const onError = (error: Error) => resume(Effect.fail(error));\n server.once(\"error\", onError);\n server.listen({ host, port }, () => {\n server.off(\"error\", onError);\n resume(Effect.void);\n });\n });\n\nconst closeServer = (server: Server) =>\n Effect.callback<void>((resume) => {\n server.close(() => resume(Effect.void));\n });\n\nexport const startLiveViewServer = Effect.fn(\"LiveViewServer.start\")(function* (\n options: StartLiveViewServerOptions,\n) {\n const parsedUrl = new URL(options.liveViewUrl);\n const sseClients = new Set<SseClient>();\n const accumulatedReplayEvents: eventWithTime[] = [];\n let latestRunState: ViewerRunState | undefined;\n\n const stepsPubSub = yield* PubSub.unbounded<ViewerRunState>();\n\n const viewerHtml = buildReplayViewerHtml({\n title: \"Expect Live View\",\n eventsSource: \"sse\",\n });\n\n const broadcastSse = (eventType: string, data: string): void => {\n const message = `event: ${eventType}\\ndata: ${data}\\n\\n`;\n for (const client of sseClients) {\n if (client.destroyed) {\n sseClients.delete(client);\n continue;\n }\n try {\n client.write(message);\n } catch {\n sseClients.delete(client);\n client.end();\n }\n }\n };\n\n const broadcastReplayEvents = (events: eventWithTime[]): void => {\n if (events.length === 0) return;\n accumulatedReplayEvents.push(...events);\n options.onEventsCollected(events);\n broadcastSse(\"replay\", JSON.stringify(events));\n };\n\n const broadcastRunState = (state: ViewerRunState): void => {\n latestRunState = state;\n broadcastSse(\"steps\", JSON.stringify(state));\n };\n\n const handleSseRequest = (request: IncomingMessage, response: SseClient): void => {\n response.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n Connection: \"keep-alive\",\n ...CORS_HEADERS,\n ...NO_CACHE_HEADERS,\n });\n response.flushHeaders();\n sseClients.add(response);\n request.on(\"close\", () => sseClients.delete(response));\n };\n\n const handleStepsPost = (request: IncomingMessage, response: SseClient): void => {\n const chunks: Buffer[] = [];\n request.on(\"data\", (chunk: Buffer) => chunks.push(chunk));\n request.on(\"end\", () => {\n try {\n const body = Buffer.concat(chunks).toString(\"utf-8\");\n const parsed: unknown = JSON.parse(body);\n if (!isViewerRunState(parsed)) {\n response.writeHead(400, {\n \"Content-Type\": \"text/plain\",\n ...CORS_HEADERS,\n ...NO_CACHE_HEADERS,\n });\n response.end(\"Invalid step state: missing status or steps\");\n return;\n }\n broadcastRunState(parsed);\n response.writeHead(204, { ...CORS_HEADERS, ...NO_CACHE_HEADERS });\n response.end();\n } catch {\n response.writeHead(400, {\n \"Content-Type\": \"text/plain\",\n ...CORS_HEADERS,\n ...NO_CACHE_HEADERS,\n });\n response.end(\"Invalid JSON\");\n }\n });\n };\n\n const routeRequest = (request: IncomingMessage, response: SseClient): void => {\n if (request.method === \"OPTIONS\") {\n response.writeHead(204, CORS_HEADERS);\n response.end();\n return;\n }\n\n const pathname = new URL(request.url ?? \"/\", parsedUrl).pathname;\n\n if (pathname === \"/\") {\n response.writeHead(200, {\n \"Content-Type\": \"text/html; charset=utf-8\",\n ...CORS_HEADERS,\n ...NO_CACHE_HEADERS,\n });\n response.end(viewerHtml);\n return;\n }\n\n if (pathname === \"/events\") {\n handleSseRequest(request, response);\n return;\n }\n\n if (pathname === \"/latest.json\") {\n const body = JSON.stringify(accumulatedReplayEvents);\n response.writeHead(200, {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": Buffer.byteLength(body),\n ...CORS_HEADERS,\n ...NO_CACHE_HEADERS,\n });\n response.end(body);\n return;\n }\n\n if (pathname === \"/steps\") {\n if (request.method === \"POST\") {\n handleStepsPost(request, response);\n return;\n }\n const body = JSON.stringify(latestRunState ?? { title: \"\", status: \"running\", steps: [] });\n response.writeHead(200, {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": Buffer.byteLength(body),\n ...CORS_HEADERS,\n ...NO_CACHE_HEADERS,\n });\n response.end(body);\n return;\n }\n\n response.writeHead(404, {\n \"Content-Type\": \"text/plain; charset=utf-8\",\n ...CORS_HEADERS,\n ...NO_CACHE_HEADERS,\n });\n response.end(\"Not found\");\n };\n\n const server = createServer(routeRequest);\n\n yield* listenServer(server, parsedUrl.hostname, Number(parsedUrl.port));\n\n const pollPage = Effect.sync(() => options.getPage()).pipe(\n Effect.flatMap((page) => {\n if (!page || page.isClosed()) return Effect.void;\n return evaluateRuntime(page, \"startRecording\").pipe(\n Effect.catchCause(() => Effect.void),\n Effect.flatMap(() => evaluateRuntime(page, \"getEvents\")),\n Effect.tap((events) =>\n Effect.sync(() => {\n if (Array.isArray(events) && events.length > 0) {\n broadcastReplayEvents(events);\n }\n }),\n ),\n Effect.catchCause((cause) => Effect.logDebug(\"Replay event collection failed\", { cause })),\n );\n }),\n );\n\n const replayPollFiber = yield* pollPage.pipe(\n Effect.repeat(Schedule.spaced(EVENT_COLLECT_INTERVAL_MS)),\n Effect.forkDetach,\n );\n\n const stepsBroadcastFiber = yield* Stream.fromPubSub(stepsPubSub).pipe(\n Stream.tap((state) => Effect.sync(() => broadcastRunState(state))),\n Stream.runDrain,\n Effect.forkDetach,\n );\n\n return {\n url: parsedUrl.toString(),\n pushRunState: (state: ViewerRunState) => {\n PubSub.publishUnsafe(stepsPubSub, state);\n },\n getLatestRunState: () => latestRunState,\n close: Effect.gen(function* () {\n yield* Fiber.interrupt(replayPollFiber);\n yield* Fiber.interrupt(stepsBroadcastFiber);\n for (const client of sseClients) client.end();\n sseClients.clear();\n yield* closeServer(server);\n }),\n } satisfies LiveViewHandle;\n});\n","import path from \"node:path\";\nimport type { Browser as PlaywrightBrowser, BrowserContext, Page } from \"playwright\";\nimport type { eventWithTime } from \"@rrweb/types\";\nimport { Config, Effect, Fiber, Layer, Option, Ref, Schedule, ServiceMap } from \"effect\";\nimport type { Cookie } from \"@expect/cookies\";\nimport { FileSystem } from \"effect/FileSystem\";\nimport { Browser } from \"../browser\";\nimport { NavigationError } from \"../errors\";\nimport { collectAllEvents } from \"../recorder\";\nimport { evaluateRuntime } from \"../utils/evaluate-runtime\";\nimport { EVENT_COLLECT_INTERVAL_MS } from \"../constants\";\nimport { buildReplayViewerHtml } from \"../replay-viewer\";\nimport type {\n AnnotatedScreenshotOptions,\n BrowserEngine,\n SnapshotOptions,\n SnapshotResult,\n} from \"../types\";\nimport {\n EXPECT_LIVE_VIEW_URL_ENV_NAME,\n EXPECT_COOKIE_BROWSERS_ENV_NAME,\n EXPECT_REPLAY_OUTPUT_ENV_NAME,\n EXPECT_CDP_URL_ENV_NAME,\n EXPECT_BASE_URL_ENV_NAME,\n} from \"./constants\";\nimport { McpSessionNotOpenError } from \"./errors\";\nimport { startLiveViewServer, type LiveViewHandle } from \"./live-view-server\";\nimport type { ViewerRunState } from \"./viewer-events\";\n\ninterface ConsoleEntry {\n readonly type: string;\n readonly text: string;\n readonly timestamp: number;\n}\n\ninterface NetworkEntry {\n readonly url: string;\n readonly method: string;\n status: number | undefined;\n readonly resourceType: string;\n readonly timestamp: number;\n}\n\nexport interface BrowserSessionData {\n readonly browser: PlaywrightBrowser;\n readonly context: BrowserContext;\n readonly page: Page;\n readonly consoleMessages: ConsoleEntry[];\n readonly networkRequests: NetworkEntry[];\n readonly replayOutputPath: string | undefined;\n readonly accumulatedReplayEvents: eventWithTime[];\n readonly trackedPages: Set<Page>;\n lastSnapshot: SnapshotResult | undefined;\n}\n\nexport interface OpenOptions {\n headed?: boolean;\n cookies?: boolean;\n waitUntil?: \"load\" | \"domcontentloaded\" | \"networkidle\" | \"commit\";\n cdpUrl?: string;\n browserType?: BrowserEngine;\n}\n\nexport interface OpenResult {\n readonly injectedCookieCount: number;\n}\n\nexport interface CloseResult {\n readonly replaySessionPath: string | undefined;\n readonly reportPath: string | undefined;\n readonly videoPath: string | undefined;\n readonly tmpReplaySessionPath: string | undefined;\n readonly tmpReportPath: string | undefined;\n readonly tmpVideoPath: string | undefined;\n readonly screenshotPaths: readonly string[];\n}\n\nconst TMP_ARTIFACT_OUTPUT_DIRECTORY = \"/tmp/expect-replays\";\nconst PLAYWRIGHT_VIDEO_SUBDIRECTORY = \"playwright\";\n\nconst setupPageTracking = (page: Page, sessionData: BrowserSessionData) => {\n if (sessionData.trackedPages.has(page)) return;\n sessionData.trackedPages.add(page);\n\n page.on(\"console\", (message) => {\n sessionData.consoleMessages.push({\n type: message.type(),\n text: message.text(),\n timestamp: Date.now(),\n });\n });\n\n page.on(\"request\", (request) => {\n sessionData.networkRequests.push({\n url: request.url(),\n method: request.method(),\n status: undefined,\n resourceType: request.resourceType(),\n timestamp: Date.now(),\n });\n });\n\n page.on(\"response\", (response) => {\n const entry = sessionData.networkRequests.find(\n (networkEntry) => networkEntry.url === response.url() && networkEntry.status === undefined,\n );\n if (entry) entry.status = response.status();\n });\n};\n\nexport class McpSession extends ServiceMap.Service<McpSession>()(\"@browser/McpSession\", {\n make: Effect.gen(function* () {\n const browserService = yield* Browser;\n const fileSystem = yield* FileSystem;\n const replayOutputPath = yield* Config.option(Config.string(EXPECT_REPLAY_OUTPUT_ENV_NAME));\n const liveViewUrl = yield* Config.option(Config.string(EXPECT_LIVE_VIEW_URL_ENV_NAME));\n const cookieBrowsersConfig = yield* Config.option(\n Config.string(EXPECT_COOKIE_BROWSERS_ENV_NAME),\n );\n const cdpUrlConfig = yield* Config.option(Config.string(EXPECT_CDP_URL_ENV_NAME));\n const defaultCdpUrl = Option.getOrUndefined(cdpUrlConfig);\n const baseUrlConfig = yield* Config.option(Config.string(EXPECT_BASE_URL_ENV_NAME));\n const configuredBaseUrl = Option.getOrUndefined(baseUrlConfig);\n const cookieBrowserKeys = Option.match(cookieBrowsersConfig, {\n onNone: () => [] as string[],\n onSome: (value) => value.split(\",\").filter(Boolean),\n });\n const cookiesDisabled = cookieBrowserKeys.length === 0;\n\n const sessionRef = yield* Ref.make<BrowserSessionData | undefined>(undefined);\n const liveViewRef = yield* Ref.make<LiveViewHandle | undefined>(undefined);\n const pollingFiberRef = yield* Ref.make<Fiber.Fiber<unknown> | undefined>(undefined);\n const latestRunStateRef = yield* Ref.make<ViewerRunState | undefined>(undefined);\n const preExtractedCookiesRef = yield* Ref.make<Cookie[] | undefined>(undefined);\n const savedScreenshotPathsRef = yield* Ref.make<string[]>([]);\n\n const saveScreenshot = Effect.fn(\"McpSession.saveScreenshot\")(function* (buffer: Buffer) {\n const currentPaths = yield* Ref.get(savedScreenshotPathsRef);\n const screenshotIndex = currentPaths.length;\n const screenshotPath = path.join(\n TMP_ARTIFACT_OUTPUT_DIRECTORY,\n `screenshot-${screenshotIndex}.png`,\n );\n yield* fileSystem\n .makeDirectory(TMP_ARTIFACT_OUTPUT_DIRECTORY, { recursive: true })\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to create screenshot directory\", { cause }),\n ),\n );\n yield* fileSystem.writeFile(screenshotPath, new Uint8Array(buffer)).pipe(\n Effect.tap(() =>\n Ref.update(savedScreenshotPathsRef, (paths) => [...paths, screenshotPath]),\n ),\n Effect.tap(() =>\n Effect.logDebug(\"Screenshot saved\", { path: screenshotPath, index: screenshotIndex }),\n ),\n Effect.catchCause((cause) => Effect.logWarning(\"Failed to save screenshot\", { cause })),\n );\n });\n\n if (!cookiesDisabled) {\n yield* browserService.preExtractCookies(cookieBrowserKeys).pipe(\n Effect.tap((cookies) => Ref.set(preExtractedCookiesRef, cookies)),\n Effect.tap((cookies) => Effect.logInfo(\"Cookies pre-extracted\", { count: cookies.length })),\n Effect.catchCause((cause) => Effect.logWarning(\"Cookie pre-extraction failed\", { cause })),\n Effect.forkDetach,\n );\n }\n\n const resolveUrl = (url: string): string => {\n if (configuredBaseUrl && !url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n try {\n return new URL(url, configuredBaseUrl).toString();\n } catch {\n return url;\n }\n }\n return url;\n };\n\n const requireSession = Effect.fn(\"McpSession.requireSession\")(function* () {\n const session = yield* Ref.get(sessionRef);\n if (!session) return yield* new McpSessionNotOpenError();\n return session;\n });\n\n const requirePage = Effect.fn(\"McpSession.requirePage\")(function* () {\n return (yield* requireSession()).page;\n });\n\n const navigate = Effect.fn(\"McpSession.navigate\")(function* (\n url: string,\n options: { waitUntil?: \"load\" | \"domcontentloaded\" | \"networkidle\" | \"commit\" } = {},\n ) {\n const resolved = resolveUrl(url);\n const sessionData = yield* requireSession();\n yield* Effect.tryPromise({\n try: () => sessionData.page.goto(resolved, { waitUntil: options.waitUntil ?? \"load\" }),\n catch: (cause) =>\n new NavigationError({\n url: resolved,\n cause: cause instanceof Error ? cause.message : String(cause),\n }),\n });\n });\n\n const pushStepEvent = Effect.fn(\"McpSession.pushStepEvent\")(function* (state: ViewerRunState) {\n yield* Ref.set(latestRunStateRef, state);\n const liveView = yield* Ref.get(liveViewRef);\n if (liveView) {\n liveView.pushRunState(state);\n }\n });\n\n const open = Effect.fn(\"McpSession.open\")(function* (\n rawUrl: string,\n options: OpenOptions = {},\n ) {\n const url = resolveUrl(rawUrl);\n yield* Effect.annotateCurrentSpan({ url });\n yield* Ref.set(savedScreenshotPathsRef, []);\n\n const preExtracted = options.cookies ? yield* Ref.get(preExtractedCookiesRef) : undefined;\n const cookiesOption =\n preExtracted && preExtracted.length > 0 ? preExtracted : options.cookies;\n const videoOutputDir = path.join(\n TMP_ARTIFACT_OUTPUT_DIRECTORY,\n PLAYWRIGHT_VIDEO_SUBDIRECTORY,\n );\n\n yield* fileSystem\n .makeDirectory(videoOutputDir, { recursive: true })\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to create Playwright video directory\", { cause }),\n ),\n );\n\n const pageResult = yield* browserService.createPage(url, {\n headed: options.headed,\n cookies: cookiesOption,\n waitUntil: options.waitUntil,\n videoOutputDir,\n cdpUrl: options.cdpUrl ?? defaultCdpUrl,\n browserType: options.browserType,\n });\n\n const sessionData: BrowserSessionData = {\n browser: pageResult.browser,\n context: pageResult.context,\n page: pageResult.page,\n consoleMessages: [],\n networkRequests: [],\n replayOutputPath: Option.getOrUndefined(replayOutputPath),\n accumulatedReplayEvents: [],\n trackedPages: new Set(),\n lastSnapshot: undefined,\n };\n setupPageTracking(pageResult.page, sessionData);\n yield* Ref.set(sessionRef, sessionData);\n\n yield* evaluateRuntime(pageResult.page, \"startRecording\").pipe(\n Effect.catchCause((cause) => Effect.logDebug(\"rrweb recording failed to start\", { cause })),\n );\n\n const existingLiveView = yield* Ref.get(liveViewRef);\n if (Option.isSome(liveViewUrl) && !existingLiveView) {\n const handle = yield* startLiveViewServer({\n liveViewUrl: liveViewUrl.value,\n getPage: () => Ref.getUnsafe(sessionRef)?.page,\n onEventsCollected: (events) => {\n Ref.getUnsafe(sessionRef)?.accumulatedReplayEvents.push(...events);\n },\n }).pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Live view server failed to start\", { cause }).pipe(\n Effect.as(undefined),\n ),\n ),\n );\n if (handle) {\n yield* Ref.set(liveViewRef, handle);\n }\n }\n\n const hasLiveView = Boolean(yield* Ref.get(liveViewRef));\n if (!hasLiveView) {\n const pollPage = Effect.sync(() => Ref.getUnsafe(sessionRef)?.page).pipe(\n Effect.flatMap((page) => {\n if (!page || page.isClosed()) return Effect.void;\n return evaluateRuntime(page, \"startRecording\").pipe(\n Effect.catchCause(() => Effect.void),\n Effect.flatMap(() => evaluateRuntime(page, \"getEvents\")),\n Effect.tap((events) =>\n Effect.sync(() => {\n if (Array.isArray(events) && events.length > 0) {\n Ref.getUnsafe(sessionRef)?.accumulatedReplayEvents.push(...events);\n }\n }),\n ),\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Replay event collection failed\", { cause }),\n ),\n );\n }),\n );\n\n const fiber = yield* pollPage.pipe(\n Effect.repeat(Schedule.spaced(EVENT_COLLECT_INTERVAL_MS)),\n Effect.forkDetach,\n );\n yield* Ref.set(pollingFiberRef, fiber);\n }\n\n const injectedCookieCount = yield* Effect.tryPromise(() => pageResult.context.cookies()).pipe(\n Effect.map((cookies) => cookies.length),\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to count cookies\", { cause }).pipe(Effect.as(0)),\n ),\n );\n\n return { injectedCookieCount } satisfies OpenResult;\n });\n\n const snapshot = Effect.fn(\"McpSession.snapshot\")(function* (\n page: Page,\n options?: SnapshotOptions,\n ) {\n return yield* browserService.snapshot(page, options);\n });\n\n const annotatedScreenshot = Effect.fn(\"McpSession.annotatedScreenshot\")(function* (\n page: Page,\n options?: AnnotatedScreenshotOptions,\n ) {\n return yield* browserService.annotatedScreenshot(page, options);\n });\n\n const updateLastSnapshot = Effect.fn(\"McpSession.updateLastSnapshot\")(function* (\n snapshotResult: SnapshotResult,\n ) {\n const sessionData = yield* requireSession();\n sessionData.lastSnapshot = snapshotResult;\n });\n\n const close = Effect.fn(\"McpSession.close\")(function* () {\n const activeSession = yield* Ref.get(sessionRef);\n if (!activeSession) return undefined;\n\n yield* Ref.set(sessionRef, undefined);\n\n const pollingFiber = yield* Ref.get(pollingFiberRef);\n if (pollingFiber) {\n yield* Fiber.interrupt(pollingFiber);\n yield* Ref.set(pollingFiberRef, undefined);\n }\n\n const liveView = yield* Ref.get(liveViewRef);\n if (liveView) {\n yield* liveView.close.pipe(\n Effect.catchCause((cause) => Effect.logDebug(\"Failed to close live view\", { cause })),\n );\n yield* Ref.set(liveViewRef, undefined);\n }\n\n let replaySessionPath: string | undefined;\n let reportPath: string | undefined;\n let videoPath: string | undefined;\n let tmpReplaySessionPath: string | undefined;\n let tmpReportPath: string | undefined;\n let tmpVideoPath: string | undefined;\n const pageVideo = activeSession.page.video();\n const artifactBaseName = activeSession.replayOutputPath\n ? path.basename(\n activeSession.replayOutputPath,\n path.extname(activeSession.replayOutputPath),\n )\n : `session-${Date.now()}`;\n\n yield* Effect.gen(function* () {\n if (!activeSession.page.isClosed()) {\n const finalEvents = yield* collectAllEvents(activeSession.page).pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to collect final replay events\", { cause }).pipe(\n Effect.as([] as ReadonlyArray<eventWithTime>),\n ),\n ),\n );\n if (finalEvents.length > 0) {\n activeSession.accumulatedReplayEvents.push(...finalEvents);\n }\n }\n\n const resolvedReplayOutputPath = activeSession.replayOutputPath;\n if (resolvedReplayOutputPath && activeSession.accumulatedReplayEvents.length > 0) {\n const ndjson =\n activeSession.accumulatedReplayEvents.map((event) => JSON.stringify(event)).join(\"\\n\") +\n \"\\n\";\n\n yield* fileSystem\n .makeDirectory(path.dirname(resolvedReplayOutputPath), { recursive: true })\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to create replay output directory\", { cause }),\n ),\n );\n yield* fileSystem\n .writeFileString(resolvedReplayOutputPath, ndjson)\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to write replay file\", { cause }),\n ),\n );\n replaySessionPath = resolvedReplayOutputPath;\n\n const runState = yield* Ref.get(latestRunStateRef);\n const replayFileName = path.basename(resolvedReplayOutputPath);\n const replayBaseName = path.basename(\n resolvedReplayOutputPath,\n path.extname(resolvedReplayOutputPath),\n );\n const htmlReportPath = path.join(\n path.dirname(resolvedReplayOutputPath),\n `${replayBaseName}.html`,\n );\n const reportHtml = buildReplayViewerHtml({\n title: runState ? `Test Report: ${runState.title}` : \"Expect Report\",\n eventsSource: { ndjsonPath: replayFileName },\n steps: runState,\n });\n\n yield* fileSystem\n .writeFileString(htmlReportPath, reportHtml)\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to write HTML report\", { cause }),\n ),\n );\n reportPath = htmlReportPath;\n\n const ndjsonJsPath = `${resolvedReplayOutputPath}.js`;\n const ndjsonJsContent = `window.__EXPECT_REPLAY_NDJSON__ = ${JSON.stringify(ndjson)};\\n`;\n yield* fileSystem\n .writeFileString(ndjsonJsPath, ndjsonJsContent)\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to write ndjson.js wrapper\", { cause }),\n ),\n );\n\n const tmpReplayPath = path.join(\n TMP_ARTIFACT_OUTPUT_DIRECTORY,\n `${replayBaseName}.ndjson`,\n );\n const tmpReportFilePath = path.join(\n TMP_ARTIFACT_OUTPUT_DIRECTORY,\n `${replayBaseName}.html`,\n );\n const tmpNdjsonJsPath = `${tmpReplayPath}.js`;\n\n yield* fileSystem\n .makeDirectory(TMP_ARTIFACT_OUTPUT_DIRECTORY, { recursive: true })\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to create /tmp artifact directory\", { cause }),\n ),\n );\n yield* fileSystem.copyFile(resolvedReplayOutputPath, tmpReplayPath).pipe(\n Effect.tap(() =>\n Effect.sync(() => {\n tmpReplaySessionPath = tmpReplayPath;\n }),\n ),\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to copy replay to /tmp\", { cause }),\n ),\n );\n yield* fileSystem.copyFile(htmlReportPath, tmpReportFilePath).pipe(\n Effect.tap(() =>\n Effect.sync(() => {\n tmpReportPath = tmpReportFilePath;\n }),\n ),\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to copy report to /tmp\", { cause }),\n ),\n );\n yield* fileSystem\n .copyFile(ndjsonJsPath, tmpNdjsonJsPath)\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to copy ndjson.js to /tmp\", { cause }),\n ),\n );\n\n const tmpLatestJsonPath = path.join(\n TMP_ARTIFACT_OUTPUT_DIRECTORY,\n `${replayBaseName}-latest.json`,\n );\n yield* fileSystem\n .writeFileString(\n tmpLatestJsonPath,\n JSON.stringify(activeSession.accumulatedReplayEvents),\n )\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to write latest.json to /tmp\", { cause }),\n ),\n );\n\n if (runState) {\n const tmpStepsJsonPath = path.join(\n TMP_ARTIFACT_OUTPUT_DIRECTORY,\n `${replayBaseName}-steps.json`,\n );\n yield* fileSystem\n .writeFileString(tmpStepsJsonPath, JSON.stringify(runState))\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to write steps.json to /tmp\", { cause }),\n ),\n );\n }\n }\n }).pipe(\n Effect.catchCause((cause) => Effect.logDebug(\"Failed during close cleanup\", { cause })),\n );\n\n yield* Effect.tryPromise(() => activeSession.browser.close()).pipe(\n Effect.catchCause((cause) => Effect.logDebug(\"Failed to close browser\", { cause })),\n );\n\n if (pageVideo) {\n videoPath = yield* Effect.tryPromise(() => pageVideo.path()).pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to resolve Playwright video path\", { cause }).pipe(\n Effect.as(undefined),\n ),\n ),\n );\n\n if (videoPath) {\n const tmpVideoFilePath = path.join(\n TMP_ARTIFACT_OUTPUT_DIRECTORY,\n `${artifactBaseName}.webm`,\n );\n yield* fileSystem\n .makeDirectory(TMP_ARTIFACT_OUTPUT_DIRECTORY, { recursive: true })\n .pipe(\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to create /tmp artifact directory\", { cause }),\n ),\n );\n yield* fileSystem.copyFile(videoPath, tmpVideoFilePath).pipe(\n Effect.tap(() =>\n Effect.sync(() => {\n tmpVideoPath = tmpVideoFilePath;\n }),\n ),\n Effect.catchCause((cause) =>\n Effect.logDebug(\"Failed to copy Playwright video to /tmp\", { cause }),\n ),\n );\n }\n }\n\n return {\n replaySessionPath,\n reportPath,\n videoPath,\n tmpReplaySessionPath,\n tmpReportPath,\n tmpVideoPath,\n screenshotPaths: yield* Ref.get(savedScreenshotPathsRef),\n } satisfies CloseResult;\n });\n\n return {\n open,\n navigate,\n hasSession: () => Boolean(Ref.getUnsafe(sessionRef)),\n getBaseUrl: () => configuredBaseUrl,\n requirePage,\n requireSession,\n snapshot,\n annotatedScreenshot,\n updateLastSnapshot,\n pushStepEvent,\n saveScreenshot,\n close,\n } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(Layer.provide(Browser.layer));\n}\n","import * as NodeFileSystem from \"@effect/platform-node/NodeFileSystem\";\nimport { Effect, FileSystem, Layer, Logger } from \"effect\";\nimport path from \"node:path\";\n\nconst LOG_FILE = path.join(process.cwd(), \".expect\", \"logs.md\");\n\nexport const DebugFileLogger = Logger.formatLogFmt.pipe(Logger.toFile(LOG_FILE));\n\nconst EnsureDebugLogDirectoryLayer = Layer.effectDiscard(\n Effect.gen(function* () {\n const fileSystem = yield* FileSystem.FileSystem;\n yield* fileSystem.makeDirectory(path.dirname(LOG_FILE), { recursive: true });\n // Add a .gitignore inside the directory to prevent the directory from being committed to git.\n yield* fileSystem.writeFileString(path.join(path.dirname(LOG_FILE), \".gitignore\"), \"*\\n\");\n }),\n);\n\nexport const DebugFileLoggerLayer = Logger.layer([DebugFileLogger]).pipe(\n Layer.provide(EnsureDebugLogDirectoryLayer),\n Layer.provide(NodeFileSystem.layer),\n);\n","!function(t,n){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=n(require(\"child_process\"),require(\"crypto\")):\"function\"==typeof define&&define.amd?define([\"child_process\",\"crypto\"],n):\"object\"==typeof exports?exports[\"electron-machine-id\"]=n(require(\"child_process\"),require(\"crypto\")):t[\"electron-machine-id\"]=n(t.child_process,t.crypto)}(this,function(t,n){return function(t){function n(e){if(r[e])return r[e].exports;var o=r[e]={exports:{},id:e,loaded:!1};return t[e].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=t,n.c=r,n.p=\"\",n(0)}([function(t,n,r){t.exports=r(34)},function(t,n,r){var e=r(29)(\"wks\"),o=r(33),i=r(2).Symbol,c=\"function\"==typeof i,u=t.exports=function(t){return e[t]||(e[t]=c&&i[t]||(c?i:o)(\"Symbol.\"+t))};u.store=e},function(t,n){var r=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=r)},function(t,n,r){var e=r(9);t.exports=function(t){if(!e(t))throw TypeError(t+\" is not an object!\");return t}},function(t,n,r){t.exports=!r(24)(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a})},function(t,n,r){var e=r(12),o=r(17);t.exports=r(4)?function(t,n,r){return e.f(t,n,o(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r=t.exports={version:\"2.4.0\"};\"number\"==typeof __e&&(__e=r)},function(t,n,r){var e=r(14);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,o){return t.call(n,r,e,o)}}return function(){return t.apply(n,arguments)}}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,n){t.exports={}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(3),o=r(26),i=r(32),c=Object.defineProperty;n.f=r(4)?Object.defineProperty:function(t,n,r){if(e(t),n=i(n,!0),e(r),o)try{return c(t,n,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported!\");return\"value\"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(42),o=r(15);t.exports=function(t){return e(o(t))}},function(t,n){t.exports=function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,n,r){var e=r(9),o=r(2).document,i=e(o)&&e(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(12).f,o=r(8),i=r(1)(\"toStringTag\");t.exports=function(t,n,r){t&&!o(t=r?t:t.prototype,i)&&e(t,i,{configurable:!0,value:n})}},function(t,n,r){var e=r(29)(\"keys\"),o=r(33);t.exports=function(t){return e[t]||(e[t]=o(t))}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(11),o=r(1)(\"toStringTag\"),i=\"Arguments\"==e(function(){return arguments}()),c=function(t,n){try{return t[n]}catch(t){}};t.exports=function(t){var n,r,u;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(r=c(n=Object(t),o))?r:i?e(n):\"Object\"==(u=e(n))&&\"function\"==typeof n.callee?\"Arguments\":u}},function(t,n){t.exports=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\")},function(t,n,r){var e=r(2),o=r(6),i=r(7),c=r(5),u=\"prototype\",s=function(t,n,r){var f,a,p,l=t&s.F,v=t&s.G,h=t&s.S,d=t&s.P,y=t&s.B,_=t&s.W,x=v?o:o[n]||(o[n]={}),m=x[u],w=v?e:h?e[n]:(e[n]||{})[u];v&&(r=n);for(f in r)a=!l&&w&&void 0!==w[f],a&&f in x||(p=a?w[f]:r[f],x[f]=v&&\"function\"!=typeof w[f]?r[f]:y&&a?i(p,e):_&&w[f]==p?function(t){var n=function(n,r,e){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(n);case 2:return new t(n,r)}return new t(n,r,e)}return t.apply(this,arguments)};return n[u]=t[u],n}(p):d&&\"function\"==typeof p?i(Function.call,p):p,d&&((x.virtual||(x.virtual={}))[f]=p,t&s.R&&m&&!m[f]&&c(m,f,p)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){t.exports=r(2).document&&document.documentElement},function(t,n,r){t.exports=!r(4)&&!r(24)(function(){return 7!=Object.defineProperty(r(16)(\"div\"),\"a\",{get:function(){return 7}}).a})},function(t,n,r){\"use strict\";var e=r(28),o=r(23),i=r(57),c=r(5),u=r(8),s=r(10),f=r(45),a=r(18),p=r(52),l=r(1)(\"iterator\"),v=!([].keys&&\"next\"in[].keys()),h=\"@@iterator\",d=\"keys\",y=\"values\",_=function(){return this};t.exports=function(t,n,r,x,m,w,g){f(r,n,x);var b,O,j,S=function(t){if(!v&&t in T)return T[t];switch(t){case d:return function(){return new r(this,t)};case y:return function(){return new r(this,t)}}return function(){return new r(this,t)}},E=n+\" Iterator\",P=m==y,M=!1,T=t.prototype,A=T[l]||T[h]||m&&T[m],k=A||S(m),C=m?P?S(\"entries\"):k:void 0,I=\"Array\"==n?T.entries||A:A;if(I&&(j=p(I.call(new t)),j!==Object.prototype&&(a(j,E,!0),e||u(j,l)||c(j,l,_))),P&&A&&A.name!==y&&(M=!0,k=function(){return A.call(this)}),e&&!g||!v&&!M&&T[l]||c(T,l,k),s[n]=k,s[E]=_,m)if(b={values:P?k:S(y),keys:w?k:S(d),entries:C},g)for(O in b)O in T||i(T,O,b[O]);else o(o.P+o.F*(v||M),n,b);return b}},function(t,n){t.exports=!0},function(t,n,r){var e=r(2),o=\"__core-js_shared__\",i=e[o]||(e[o]={});t.exports=function(t){return i[t]||(i[t]={})}},function(t,n,r){var e,o,i,c=r(7),u=r(41),s=r(25),f=r(16),a=r(2),p=a.process,l=a.setImmediate,v=a.clearImmediate,h=a.MessageChannel,d=0,y={},_=\"onreadystatechange\",x=function(){var t=+this;if(y.hasOwnProperty(t)){var n=y[t];delete y[t],n()}},m=function(t){x.call(t.data)};l&&v||(l=function(t){for(var n=[],r=1;arguments.length>r;)n.push(arguments[r++]);return y[++d]=function(){u(\"function\"==typeof t?t:Function(t),n)},e(d),d},v=function(t){delete y[t]},\"process\"==r(11)(p)?e=function(t){p.nextTick(c(x,t,1))}:h?(o=new h,i=o.port2,o.port1.onmessage=m,e=c(i.postMessage,i,1)):a.addEventListener&&\"function\"==typeof postMessage&&!a.importScripts?(e=function(t){a.postMessage(t+\"\",\"*\")},a.addEventListener(\"message\",m,!1)):e=_ in f(\"script\")?function(t){s.appendChild(f(\"script\"))[_]=function(){s.removeChild(this),x.call(t)}}:function(t){setTimeout(c(x,t,1),0)}),t.exports={set:l,clear:v}},function(t,n,r){var e=r(20),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){var e=r(9);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if(\"function\"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&\"function\"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError(\"Can't convert object to primitive value\")}},function(t,n){var r=0,e=Math.random();t.exports=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++r+e).toString(36))}},function(t,n,r){\"use strict\";function e(t){return t&&t.__esModule?t:{default:t}}function o(){return\"win32\"!==process.platform?\"\":\"ia32\"===process.arch&&process.env.hasOwnProperty(\"PROCESSOR_ARCHITEW6432\")?\"mixed\":\"native\"}function i(t){return(0,l.createHash)(\"sha256\").update(t).digest(\"hex\")}function c(t){switch(h){case\"darwin\":return t.split(\"IOPlatformUUID\")[1].split(\"\\n\")[0].replace(/\\=|\\s+|\\\"/gi,\"\").toLowerCase();case\"win32\":return t.toString().split(\"REG_SZ\")[1].replace(/\\r+|\\n+|\\s+/gi,\"\").toLowerCase();case\"linux\":return t.toString().replace(/\\r+|\\n+|\\s+/gi,\"\").toLowerCase();case\"freebsd\":return t.toString().replace(/\\r+|\\n+|\\s+/gi,\"\").toLowerCase();default:throw new Error(\"Unsupported platform: \"+process.platform)}}function u(t){var n=c((0,p.execSync)(y[h]).toString());return t?n:i(n)}function s(t){return new a.default(function(n,r){return(0,p.exec)(y[h],{},function(e,o,u){if(e)return r(new Error(\"Error while obtaining machine id: \"+e.stack));var s=c(o.toString());return n(t?s:i(s))})})}Object.defineProperty(n,\"__esModule\",{value:!0});var f=r(35),a=e(f);n.machineIdSync=u,n.machineId=s;var p=r(70),l=r(71),v=process,h=v.platform,d={native:\"%windir%\\\\System32\",mixed:\"%windir%\\\\sysnative\\\\cmd.exe /c %windir%\\\\System32\"},y={darwin:\"ioreg -rd1 -c IOPlatformExpertDevice\",win32:d[o()]+\"\\\\REG.exe QUERY HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Cryptography /v MachineGuid\",linux:\"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :\",freebsd:\"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid\"}},function(t,n,r){t.exports={default:r(36),__esModule:!0}},function(t,n,r){r(66),r(68),r(69),r(67),t.exports=r(6).Promise},function(t,n){t.exports=function(){}},function(t,n){t.exports=function(t,n,r,e){if(!(t instanceof n)||void 0!==e&&e in t)throw TypeError(r+\": incorrect invocation!\");return t}},function(t,n,r){var e=r(13),o=r(31),i=r(62);t.exports=function(t){return function(n,r,c){var u,s=e(n),f=o(s.length),a=i(c,f);if(t&&r!=r){for(;f>a;)if(u=s[a++],u!=u)return!0}else for(;f>a;a++)if((t||a in s)&&s[a]===r)return t||a||0;return!t&&-1}}},function(t,n,r){var e=r(7),o=r(44),i=r(43),c=r(3),u=r(31),s=r(64),f={},a={},n=t.exports=function(t,n,r,p,l){var v,h,d,y,_=l?function(){return t}:s(t),x=e(r,p,n?2:1),m=0;if(\"function\"!=typeof _)throw TypeError(t+\" is not iterable!\");if(i(_)){for(v=u(t.length);v>m;m++)if(y=n?x(c(h=t[m])[0],h[1]):x(t[m]),y===f||y===a)return y}else for(d=_.call(t);!(h=d.next()).done;)if(y=o(d,x,h.value,n),y===f||y===a)return y};n.BREAK=f,n.RETURN=a},function(t,n){t.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},function(t,n,r){var e=r(11);t.exports=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==e(t)?t.split(\"\"):Object(t)}},function(t,n,r){var e=r(10),o=r(1)(\"iterator\"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(e.Array===t||i[o]===t)}},function(t,n,r){var e=r(3);t.exports=function(t,n,r,o){try{return o?n(e(r)[0],r[1]):n(r)}catch(n){var i=t.return;throw void 0!==i&&e(i.call(t)),n}}},function(t,n,r){\"use strict\";var e=r(49),o=r(17),i=r(18),c={};r(5)(c,r(1)(\"iterator\"),function(){return this}),t.exports=function(t,n,r){t.prototype=e(c,{next:o(1,r)}),i(t,n+\" Iterator\")}},function(t,n,r){var e=r(1)(\"iterator\"),o=!1;try{var i=[7][e]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,n){if(!n&&!o)return!1;var r=!1;try{var i=[7],c=i[e]();c.next=function(){return{done:r=!0}},i[e]=function(){return c},t(i)}catch(t){}return r}},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,r){var e=r(2),o=r(30).set,i=e.MutationObserver||e.WebKitMutationObserver,c=e.process,u=e.Promise,s=\"process\"==r(11)(c);t.exports=function(){var t,n,r,f=function(){var e,o;for(s&&(e=c.domain)&&e.exit();t;){o=t.fn,t=t.next;try{o()}catch(e){throw t?r():n=void 0,e}}n=void 0,e&&e.enter()};if(s)r=function(){c.nextTick(f)};else if(i){var a=!0,p=document.createTextNode(\"\");new i(f).observe(p,{characterData:!0}),r=function(){p.data=a=!a}}else if(u&&u.resolve){var l=u.resolve();r=function(){l.then(f)}}else r=function(){o.call(e,f)};return function(e){var o={fn:e,next:void 0};n&&(n.next=o),t||(t=o,r()),n=o}}},function(t,n,r){var e=r(3),o=r(50),i=r(22),c=r(19)(\"IE_PROTO\"),u=function(){},s=\"prototype\",f=function(){var t,n=r(16)(\"iframe\"),e=i.length,o=\">\";for(n.style.display=\"none\",r(25).appendChild(n),n.src=\"javascript:\",t=n.contentWindow.document,t.open(),t.write(\"<script>document.F=Object</script\"+o),t.close(),f=t.F;e--;)delete f[s][i[e]];return f()};t.exports=Object.create||function(t,n){var r;return null!==t?(u[s]=e(t),r=new u,u[s]=null,r[c]=t):r=f(),void 0===n?r:o(r,n)}},function(t,n,r){var e=r(12),o=r(3),i=r(54);t.exports=r(4)?Object.defineProperties:function(t,n){o(t);for(var r,c=i(n),u=c.length,s=0;u>s;)e.f(t,r=c[s++],n[r]);return t}},function(t,n,r){var e=r(55),o=r(17),i=r(13),c=r(32),u=r(8),s=r(26),f=Object.getOwnPropertyDescriptor;n.f=r(4)?f:function(t,n){if(t=i(t),n=c(n,!0),s)try{return f(t,n)}catch(t){}if(u(t,n))return o(!e.f.call(t,n),t[n])}},function(t,n,r){var e=r(8),o=r(63),i=r(19)(\"IE_PROTO\"),c=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),e(t,i)?t[i]:\"function\"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?c:null}},function(t,n,r){var e=r(8),o=r(13),i=r(39)(!1),c=r(19)(\"IE_PROTO\");t.exports=function(t,n){var r,u=o(t),s=0,f=[];for(r in u)r!=c&&e(u,r)&&f.push(r);for(;n.length>s;)e(u,r=n[s++])&&(~i(f,r)||f.push(r));return f}},function(t,n,r){var e=r(53),o=r(22);t.exports=Object.keys||function(t){return e(t,o)}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n,r){var e=r(5);t.exports=function(t,n,r){for(var o in n)r&&t[o]?t[o]=n[o]:e(t,o,n[o]);return t}},function(t,n,r){t.exports=r(5)},function(t,n,r){var e=r(9),o=r(3),i=function(t,n){if(o(t),!e(n)&&null!==n)throw TypeError(n+\": can't set as prototype!\")};t.exports={set:Object.setPrototypeOf||(\"__proto__\"in{}?function(t,n,e){try{e=r(7)(Function.call,r(51).f(Object.prototype,\"__proto__\").set,2),e(t,[]),n=!(t instanceof Array)}catch(t){n=!0}return function(t,r){return i(t,r),n?t.__proto__=r:e(t,r),t}}({},!1):void 0),check:i}},function(t,n,r){\"use strict\";var e=r(2),o=r(6),i=r(12),c=r(4),u=r(1)(\"species\");t.exports=function(t){var n=\"function\"==typeof o[t]?o[t]:e[t];c&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n,r){var e=r(3),o=r(14),i=r(1)(\"species\");t.exports=function(t,n){var r,c=e(t).constructor;return void 0===c||void 0==(r=e(c)[i])?n:o(r)}},function(t,n,r){var e=r(20),o=r(15);t.exports=function(t){return function(n,r){var i,c,u=String(o(n)),s=e(r),f=u.length;return s<0||s>=f?t?\"\":void 0:(i=u.charCodeAt(s),i<55296||i>56319||s+1===f||(c=u.charCodeAt(s+1))<56320||c>57343?t?u.charAt(s):i:t?u.slice(s,s+2):(i-55296<<10)+(c-56320)+65536)}}},function(t,n,r){var e=r(20),o=Math.max,i=Math.min;t.exports=function(t,n){return t=e(t),t<0?o(t+n,0):i(t,n)}},function(t,n,r){var e=r(15);t.exports=function(t){return Object(e(t))}},function(t,n,r){var e=r(21),o=r(1)(\"iterator\"),i=r(10);t.exports=r(6).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t[\"@@iterator\"]||i[e(t)]}},function(t,n,r){\"use strict\";var e=r(37),o=r(47),i=r(10),c=r(13);t.exports=r(27)(Array,\"Array\",function(t,n){this._t=c(t),this._i=0,this._k=n},function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,o(1)):\"keys\"==n?o(0,r):\"values\"==n?o(0,t[r]):o(0,[r,t[r]])},\"values\"),i.Arguments=i.Array,e(\"keys\"),e(\"values\"),e(\"entries\")},function(t,n){},function(t,n,r){\"use strict\";var e,o,i,c=r(28),u=r(2),s=r(7),f=r(21),a=r(23),p=r(9),l=(r(3),r(14)),v=r(38),h=r(40),d=(r(58).set,r(60)),y=r(30).set,_=r(48)(),x=\"Promise\",m=u.TypeError,w=u.process,g=u[x],w=u.process,b=\"process\"==f(w),O=function(){},j=!!function(){try{var t=g.resolve(1),n=(t.constructor={})[r(1)(\"species\")]=function(t){t(O,O)};return(b||\"function\"==typeof PromiseRejectionEvent)&&t.then(O)instanceof n}catch(t){}}(),S=function(t,n){return t===n||t===g&&n===i},E=function(t){var n;return!(!p(t)||\"function\"!=typeof(n=t.then))&&n},P=function(t){return S(g,t)?new M(t):new o(t)},M=o=function(t){var n,r;this.promise=new t(function(t,e){if(void 0!==n||void 0!==r)throw m(\"Bad Promise constructor\");n=t,r=e}),this.resolve=l(n),this.reject=l(r)},T=function(t){try{t()}catch(t){return{error:t}}},A=function(t,n){if(!t._n){t._n=!0;var r=t._c;_(function(){for(var e=t._v,o=1==t._s,i=0,c=function(n){var r,i,c=o?n.ok:n.fail,u=n.resolve,s=n.reject,f=n.domain;try{c?(o||(2==t._h&&I(t),t._h=1),c===!0?r=e:(f&&f.enter(),r=c(e),f&&f.exit()),r===n.promise?s(m(\"Promise-chain cycle\")):(i=E(r))?i.call(r,u,s):u(r)):s(e)}catch(t){s(t)}};r.length>i;)c(r[i++]);t._c=[],t._n=!1,n&&!t._h&&k(t)})}},k=function(t){y.call(u,function(){var n,r,e,o=t._v;if(C(t)&&(n=T(function(){b?w.emit(\"unhandledRejection\",o,t):(r=u.onunhandledrejection)?r({promise:t,reason:o}):(e=u.console)&&e.error&&e.error(\"Unhandled promise rejection\",o)}),t._h=b||C(t)?2:1),t._a=void 0,n)throw n.error})},C=function(t){if(1==t._h)return!1;for(var n,r=t._a||t._c,e=0;r.length>e;)if(n=r[e++],n.fail||!C(n.promise))return!1;return!0},I=function(t){y.call(u,function(){var n;b?w.emit(\"rejectionHandled\",t):(n=u.onrejectionhandled)&&n({promise:t,reason:t._v})})},R=function(t){var n=this;n._d||(n._d=!0,n=n._w||n,n._v=t,n._s=2,n._a||(n._a=n._c.slice()),A(n,!0))},F=function(t){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw m(\"Promise can't be resolved itself\");(n=E(t))?_(function(){var e={_w:r,_d:!1};try{n.call(t,s(F,e,1),s(R,e,1))}catch(t){R.call(e,t)}}):(r._v=t,r._s=1,A(r,!1))}catch(t){R.call({_w:r,_d:!1},t)}}};j||(g=function(t){v(this,g,x,\"_h\"),l(t),e.call(this);try{t(s(F,this,1),s(R,this,1))}catch(t){R.call(this,t)}},e=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},e.prototype=r(56)(g.prototype,{then:function(t,n){var r=P(d(this,g));return r.ok=\"function\"!=typeof t||t,r.fail=\"function\"==typeof n&&n,r.domain=b?w.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&A(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),M=function(){var t=new e;this.promise=t,this.resolve=s(F,t,1),this.reject=s(R,t,1)}),a(a.G+a.W+a.F*!j,{Promise:g}),r(18)(g,x),r(59)(x),i=r(6)[x],a(a.S+a.F*!j,x,{reject:function(t){var n=P(this),r=n.reject;return r(t),n.promise}}),a(a.S+a.F*(c||!j),x,{resolve:function(t){if(t instanceof g&&S(t.constructor,this))return t;var n=P(this),r=n.resolve;return r(t),n.promise}}),a(a.S+a.F*!(j&&r(46)(function(t){g.all(t).catch(O)})),x,{all:function(t){var n=this,r=P(n),e=r.resolve,o=r.reject,i=T(function(){var r=[],i=0,c=1;h(t,!1,function(t){var u=i++,s=!1;r.push(void 0),c++,n.resolve(t).then(function(t){s||(s=!0,r[u]=t,--c||e(r))},o)}),--c||e(r)});return i&&o(i.error),r.promise},race:function(t){var n=this,r=P(n),e=r.reject,o=T(function(){h(t,!1,function(t){n.resolve(t).then(r.resolve,e)})});return o&&e(o.error),r.promise}})},function(t,n,r){\"use strict\";var e=r(61)(!0);r(27)(String,\"String\",function(t){this._t=String(t),this._i=0},function(){var t,n=this._t,r=this._i;return r>=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})})},function(t,n,r){r(65);for(var e=r(2),o=r(5),i=r(10),c=r(1)(\"toStringTag\"),u=[\"NodeList\",\"DOMTokenList\",\"MediaList\",\"StyleSheetList\",\"CSSRuleList\"],s=0;s<5;s++){var f=u[s],a=e[f],p=a&&a.prototype;p&&!p[c]&&o(p,c,f),i[f]=i.Array}},function(t,n){t.exports=require(\"child_process\")},function(t,n){t.exports=require(\"crypto\")}])});","function serialize(o){return typeof o==\"string\"?`'${o}'`:new c().serialize(o)}const c=/*@__PURE__*/function(){class o{#t=new Map;compare(t,r){const e=typeof t,n=typeof r;return e===\"string\"&&n===\"string\"?t.localeCompare(r):e===\"number\"&&n===\"number\"?t-r:String.prototype.localeCompare.call(this.serialize(t,true),this.serialize(r,true))}serialize(t,r){if(t===null)return \"null\";switch(typeof t){case \"string\":return r?t:`'${t}'`;case \"bigint\":return `${t}n`;case \"object\":return this.$object(t);case \"function\":return this.$function(t)}return String(t)}serializeObject(t){const r=Object.prototype.toString.call(t);if(r!==\"[object Object]\")return this.serializeBuiltInType(r.length<10?`unknown:${r}`:r.slice(8,-1),t);const e=t.constructor,n=e===Object||e===void 0?\"\":e.name;if(n!==\"\"&&globalThis[n]===e)return this.serializeBuiltInType(n,t);if(typeof t.toJSON==\"function\"){const i=t.toJSON();return n+(i!==null&&typeof i==\"object\"?this.$object(i):`(${this.serialize(i)})`)}return this.serializeObjectEntries(n,Object.entries(t))}serializeBuiltInType(t,r){const e=this[\"$\"+t];if(e)return e.call(this,r);if(typeof r?.entries==\"function\")return this.serializeObjectEntries(t,r.entries());throw new Error(`Cannot serialize ${t}`)}serializeObjectEntries(t,r){const e=Array.from(r).sort((i,a)=>this.compare(i[0],a[0]));let n=`${t}{`;for(let i=0;i<e.length;i++){const[a,l]=e[i];n+=`${this.serialize(a,true)}:${this.serialize(l)}`,i<e.length-1&&(n+=\",\");}return n+\"}\"}$object(t){let r=this.#t.get(t);return r===void 0&&(this.#t.set(t,`#${this.#t.size}`),r=this.serializeObject(t),this.#t.set(t,r)),r}$function(t){const r=Function.prototype.toString.call(t);return r.slice(-15)===\"[native code] }\"?`${t.name||\"\"}()[native]`:`${t.name}(${t.length})${r.replace(/\\s*\\n\\s*/g,\"\")}`}$Array(t){let r=\"[\";for(let e=0;e<t.length;e++)r+=this.serialize(t[e]),e<t.length-1&&(r+=\",\");return r+\"]\"}$Date(t){try{return `Date(${t.toISOString()})`}catch{return \"Date(null)\"}}$ArrayBuffer(t){return `ArrayBuffer[${new Uint8Array(t).join(\",\")}]`}$Set(t){return `Set${this.$Array(Array.from(t).sort((r,e)=>this.compare(r,e)))}`}$Map(t){return this.serializeObjectEntries(\"Map\",t.entries())}}for(const s of [\"Error\",\"RegExp\",\"URL\"])o.prototype[\"$\"+s]=function(t){return `${s}(${t})`};for(const s of [\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\"])o.prototype[\"$\"+s]=function(t){return `${s}[${t.join(\",\")}]`};for(const s of [\"BigInt64Array\",\"BigUint64Array\"])o.prototype[\"$\"+s]=function(t){return `${s}[${t.join(\"n,\")}${t.length>0?\"n\":\"\"}]`};return o}();\n\nfunction isEqual(object1, object2) {\n if (object1 === object2) {\n return true;\n }\n if (serialize(object1) === serialize(object2)) {\n return true;\n }\n return false;\n}\n\nexport { isEqual as i, serialize as s };\n","import { createHash } from 'node:crypto';\n\nconst e=globalThis.process?.getBuiltinModule?.(\"crypto\")?.hash,r=\"sha256\",s=\"base64url\";function digest(t){if(e)return e(r,t,s);const o=createHash(r).update(t);return globalThis.process?.versions?.webcontainer?o.digest().toString(s):o.digest(s)}\n\nexport { digest };\n","import { s as serialize } from './shared/ohash.D__AXeF1.mjs';\nexport { i as isEqual } from './shared/ohash.D__AXeF1.mjs';\nimport { digest } from 'ohash/crypto';\nexport { digest } from 'ohash/crypto';\n\nfunction hash(input) {\n return digest(serialize(input));\n}\n\nexport { hash, serialize };\n","import { dirname, posix, sep } from \"path\";\nfunction createModulerModifier() {\n const getModuleFromFileName = createGetModuleFromFilename();\n return async (frames)=>{\n for (const frame of frames)frame.module = getModuleFromFileName(frame.filename);\n return frames;\n };\n}\nfunction createGetModuleFromFilename(basePath = process.argv[1] ? dirname(process.argv[1]) : process.cwd(), isWindows = '\\\\' === sep) {\n const normalizedBase = isWindows ? normalizeWindowsPath(basePath) : basePath;\n return (filename)=>{\n if (!filename) return;\n const normalizedFilename = isWindows ? normalizeWindowsPath(filename) : filename;\n let { dir, base: file, ext } = posix.parse(normalizedFilename);\n if ('.js' === ext || '.mjs' === ext || '.cjs' === ext) file = file.slice(0, -1 * ext.length);\n const decodedFile = decodeURIComponent(file);\n if (!dir) dir = '.';\n const n = dir.lastIndexOf('/node_modules');\n if (n > -1) return `${dir.slice(n + 14).replace(/\\//g, '.')}:${decodedFile}`;\n if (dir.startsWith(normalizedBase)) {\n const moduleName = dir.slice(normalizedBase.length + 1).replace(/\\//g, '.');\n return moduleName ? `${moduleName}:${decodedFile}` : decodedFile;\n }\n return decodedFile;\n };\n}\nfunction normalizeWindowsPath(path) {\n return path.replace(/^[A-Z]:/, '').replace(/\\\\/g, '/');\n}\nexport { createModulerModifier };\n","const normalizeFlagsResponse = (flagsResponse)=>{\n if ('flags' in flagsResponse) {\n const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);\n const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads\n };\n }\n {\n const featureFlags = flagsResponse.featureFlags ?? {};\n const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map(([k, v])=>[\n k,\n parsePayload(v)\n ]));\n const flags = Object.fromEntries(Object.entries(featureFlags).map(([key, value])=>[\n key,\n getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])\n ]));\n return {\n ...flagsResponse,\n featureFlags,\n featureFlagPayloads,\n flags\n };\n }\n};\nfunction getFlagDetailFromFlagAndPayload(key, value, payload) {\n return {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payload ? JSON.stringify(payload) : void 0,\n description: void 0\n }\n };\n}\nconst getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(flags ?? {}).map(([key, detail])=>[\n key,\n getFeatureFlagValue(detail)\n ]).filter(([, value])=>void 0 !== value));\nconst getPayloadsFromFlags = (flags)=>{\n const safeFlags = flags ?? {};\n return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{\n const details = safeFlags[flag];\n return details.enabled && details.metadata && void 0 !== details.metadata.payload;\n }).map((flag)=>{\n const payload = safeFlags[flag].metadata?.payload;\n return [\n flag,\n payload ? parsePayload(payload) : void 0\n ];\n }));\n};\nconst getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{\n const flags = flagsResponse.featureFlags ?? {};\n const payloads = flagsResponse.featureFlagPayloads ?? {};\n return Object.fromEntries(Object.entries(flags).map(([key, value])=>[\n key,\n {\n key: key,\n enabled: 'string' == typeof value ? true : value,\n variant: 'string' == typeof value ? value : void 0,\n reason: void 0,\n metadata: {\n id: void 0,\n version: void 0,\n payload: payloads?.[key] ? JSON.stringify(payloads[key]) : void 0,\n description: void 0\n }\n }\n ]));\n};\nconst getFeatureFlagValue = (detail)=>void 0 === detail ? void 0 : detail.variant ?? detail.enabled;\nconst parsePayload = (response)=>{\n if ('string' != typeof response) return response;\n try {\n return JSON.parse(response);\n } catch {\n return response;\n }\n};\nconst createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{\n const allKeys = [\n ...new Set([\n ...Object.keys(featureFlags ?? {}),\n ...Object.keys(featureFlagPayloads ?? {})\n ])\n ];\n const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>(res[key] = featureFlags[key] ?? true, res), {});\n const flagDetails = {\n featureFlags: enabledFlags,\n featureFlagPayloads: featureFlagPayloads ?? {}\n };\n return normalizeFlagsResponse(flagDetails);\n};\nconst updateFlagValue = (flag, value)=>({\n ...flag,\n enabled: getEnabledFromValue(value),\n variant: getVariantFromValue(value)\n });\nfunction getEnabledFromValue(value) {\n return 'string' == typeof value ? true : value;\n}\nfunction getVariantFromValue(value) {\n return 'string' == typeof value ? value : void 0;\n}\nexport { createFlagsResponseFromFlagsAndPayloads, getEnabledFromValue, getFeatureFlagValue, getFlagDetailsFromFlagsAndPayloads, getFlagValuesFromFlags, getPayloadsFromFlags, getVariantFromValue, normalizeFlagsResponse, parsePayload, updateFlagValue };\n","/*! For license information please see uuidv7.mjs.LICENSE.txt */\n/**\n * uuidv7: An experimental implementation of the proposed UUID Version 7\n *\n * @license Apache-2.0\n * @copyright 2021-2023 LiosK\n * @packageDocumentation\n */ const DIGITS = \"0123456789abcdef\";\nclass UUID {\n constructor(bytes){\n this.bytes = bytes;\n }\n static ofInner(bytes) {\n if (16 === bytes.length) return new UUID(bytes);\n throw new TypeError(\"not 128-bit length\");\n }\n static fromFieldsV7(unixTsMs, randA, randBHi, randBLo) {\n if (!Number.isInteger(unixTsMs) || !Number.isInteger(randA) || !Number.isInteger(randBHi) || !Number.isInteger(randBLo) || unixTsMs < 0 || randA < 0 || randBHi < 0 || randBLo < 0 || unixTsMs > 0xffffffffffff || randA > 0xfff || randBHi > 0x3fffffff || randBLo > 0xffffffff) throw new RangeError(\"invalid field value\");\n const bytes = new Uint8Array(16);\n bytes[0] = unixTsMs / 2 ** 40;\n bytes[1] = unixTsMs / 2 ** 32;\n bytes[2] = unixTsMs / 2 ** 24;\n bytes[3] = unixTsMs / 2 ** 16;\n bytes[4] = unixTsMs / 256;\n bytes[5] = unixTsMs;\n bytes[6] = 0x70 | randA >>> 8;\n bytes[7] = randA;\n bytes[8] = 0x80 | randBHi >>> 24;\n bytes[9] = randBHi >>> 16;\n bytes[10] = randBHi >>> 8;\n bytes[11] = randBHi;\n bytes[12] = randBLo >>> 24;\n bytes[13] = randBLo >>> 16;\n bytes[14] = randBLo >>> 8;\n bytes[15] = randBLo;\n return new UUID(bytes);\n }\n static parse(uuid) {\n let hex;\n switch(uuid.length){\n case 32:\n hex = /^[0-9a-f]{32}$/i.exec(uuid)?.[0];\n break;\n case 36:\n hex = /^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 38:\n hex = /^\\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\\}$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n case 45:\n hex = /^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(uuid)?.slice(1, 6).join(\"\");\n break;\n default:\n break;\n }\n if (hex) {\n const inner = new Uint8Array(16);\n for(let i = 0; i < 16; i += 4){\n const n = parseInt(hex.substring(2 * i, 2 * i + 8), 16);\n inner[i + 0] = n >>> 24;\n inner[i + 1] = n >>> 16;\n inner[i + 2] = n >>> 8;\n inner[i + 3] = n;\n }\n return new UUID(inner);\n }\n throw new SyntaxError(\"could not parse UUID string\");\n }\n toString() {\n let text = \"\";\n for(let i = 0; i < this.bytes.length; i++){\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(0xf & this.bytes[i]);\n if (3 === i || 5 === i || 7 === i || 9 === i) text += \"-\";\n }\n return text;\n }\n toHex() {\n let text = \"\";\n for(let i = 0; i < this.bytes.length; i++){\n text += DIGITS.charAt(this.bytes[i] >>> 4);\n text += DIGITS.charAt(0xf & this.bytes[i]);\n }\n return text;\n }\n toJSON() {\n return this.toString();\n }\n getVariant() {\n const n = this.bytes[8] >>> 4;\n if (n < 0) throw new Error(\"unreachable\");\n if (n <= 7) return this.bytes.every((e)=>0 === e) ? \"NIL\" : \"VAR_0\";\n if (n <= 11) return \"VAR_10\";\n if (n <= 13) return \"VAR_110\";\n if (n <= 15) return this.bytes.every((e)=>0xff === e) ? \"MAX\" : \"VAR_RESERVED\";\n else throw new Error(\"unreachable\");\n }\n getVersion() {\n return \"VAR_10\" === this.getVariant() ? this.bytes[6] >>> 4 : void 0;\n }\n clone() {\n return new UUID(this.bytes.slice(0));\n }\n equals(other) {\n return 0 === this.compareTo(other);\n }\n compareTo(other) {\n for(let i = 0; i < 16; i++){\n const diff = this.bytes[i] - other.bytes[i];\n if (0 !== diff) return Math.sign(diff);\n }\n return 0;\n }\n}\nclass V7Generator {\n constructor(randomNumberGenerator){\n this.timestamp = 0;\n this.counter = 0;\n this.random = randomNumberGenerator ?? getDefaultRandom();\n }\n generate() {\n return this.generateOrResetCore(Date.now(), 10000);\n }\n generateOrAbort() {\n return this.generateOrAbortCore(Date.now(), 10000);\n }\n generateOrResetCore(unixTsMs, rollbackAllowance) {\n let value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n if (void 0 === value) {\n this.timestamp = 0;\n value = this.generateOrAbortCore(unixTsMs, rollbackAllowance);\n }\n return value;\n }\n generateOrAbortCore(unixTsMs, rollbackAllowance) {\n const MAX_COUNTER = 0x3ffffffffff;\n if (!Number.isInteger(unixTsMs) || unixTsMs < 1 || unixTsMs > 0xffffffffffff) throw new RangeError(\"`unixTsMs` must be a 48-bit positive integer\");\n if (rollbackAllowance < 0 || rollbackAllowance > 0xffffffffffff) throw new RangeError(\"`rollbackAllowance` out of reasonable range\");\n if (unixTsMs > this.timestamp) {\n this.timestamp = unixTsMs;\n this.resetCounter();\n } else {\n if (!(unixTsMs + rollbackAllowance >= this.timestamp)) return;\n this.counter++;\n if (this.counter > MAX_COUNTER) {\n this.timestamp++;\n this.resetCounter();\n }\n }\n return UUID.fromFieldsV7(this.timestamp, Math.trunc(this.counter / 2 ** 30), this.counter & 2 ** 30 - 1, this.random.nextUint32());\n }\n resetCounter() {\n this.counter = 0x400 * this.random.nextUint32() + (0x3ff & this.random.nextUint32());\n }\n generateV4() {\n const bytes = new Uint8Array(Uint32Array.of(this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32(), this.random.nextUint32()).buffer);\n bytes[6] = 0x40 | bytes[6] >>> 4;\n bytes[8] = 0x80 | bytes[8] >>> 2;\n return UUID.ofInner(bytes);\n }\n}\nconst getDefaultRandom = ()=>({\n nextUint32: ()=>0x10000 * Math.trunc(0x10000 * Math.random()) + Math.trunc(0x10000 * Math.random())\n });\nlet defaultGenerator;\nconst uuidv7 = ()=>uuidv7obj().toString();\nconst uuidv7obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generate();\nconst uuidv4 = ()=>uuidv4obj().toString();\nconst uuidv4obj = ()=>(defaultGenerator || (defaultGenerator = new V7Generator())).generateV4();\nexport { UUID, V7Generator, uuidv4, uuidv4obj, uuidv7, uuidv7obj };\n","var types_PostHogPersistedProperty = /*#__PURE__*/ function(PostHogPersistedProperty) {\n PostHogPersistedProperty[\"AnonymousId\"] = \"anonymous_id\";\n PostHogPersistedProperty[\"DistinctId\"] = \"distinct_id\";\n PostHogPersistedProperty[\"Props\"] = \"props\";\n PostHogPersistedProperty[\"EnablePersonProcessing\"] = \"enable_person_processing\";\n PostHogPersistedProperty[\"PersonMode\"] = \"person_mode\";\n PostHogPersistedProperty[\"FeatureFlagDetails\"] = \"feature_flag_details\";\n PostHogPersistedProperty[\"FeatureFlags\"] = \"feature_flags\";\n PostHogPersistedProperty[\"FeatureFlagPayloads\"] = \"feature_flag_payloads\";\n PostHogPersistedProperty[\"BootstrapFeatureFlagDetails\"] = \"bootstrap_feature_flag_details\";\n PostHogPersistedProperty[\"BootstrapFeatureFlags\"] = \"bootstrap_feature_flags\";\n PostHogPersistedProperty[\"BootstrapFeatureFlagPayloads\"] = \"bootstrap_feature_flag_payloads\";\n PostHogPersistedProperty[\"OverrideFeatureFlags\"] = \"override_feature_flags\";\n PostHogPersistedProperty[\"Queue\"] = \"queue\";\n PostHogPersistedProperty[\"OptedOut\"] = \"opted_out\";\n PostHogPersistedProperty[\"SessionId\"] = \"session_id\";\n PostHogPersistedProperty[\"SessionStartTimestamp\"] = \"session_start_timestamp\";\n PostHogPersistedProperty[\"SessionLastTimestamp\"] = \"session_timestamp\";\n PostHogPersistedProperty[\"PersonProperties\"] = \"person_properties\";\n PostHogPersistedProperty[\"GroupProperties\"] = \"group_properties\";\n PostHogPersistedProperty[\"InstalledAppBuild\"] = \"installed_app_build\";\n PostHogPersistedProperty[\"InstalledAppVersion\"] = \"installed_app_version\";\n PostHogPersistedProperty[\"SessionReplay\"] = \"session_replay\";\n PostHogPersistedProperty[\"SurveyLastSeenDate\"] = \"survey_last_seen_date\";\n PostHogPersistedProperty[\"SurveysSeen\"] = \"surveys_seen\";\n PostHogPersistedProperty[\"Surveys\"] = \"surveys\";\n PostHogPersistedProperty[\"RemoteConfig\"] = \"remote_config\";\n PostHogPersistedProperty[\"FlagsEndpointWasHit\"] = \"flags_endpoint_was_hit\";\n return PostHogPersistedProperty;\n}({});\nvar types_Compression = /*#__PURE__*/ function(Compression) {\n Compression[\"GZipJS\"] = \"gzip-js\";\n Compression[\"Base64\"] = \"base64\";\n return Compression;\n}({});\nconst FeatureFlagError = {\n ERRORS_WHILE_COMPUTING: 'errors_while_computing_flags',\n FLAG_MISSING: 'flag_missing',\n QUOTA_LIMITED: 'quota_limited',\n TIMEOUT: 'timeout',\n CONNECTION_ERROR: 'connection_error',\n UNKNOWN_ERROR: 'unknown_error',\n apiError: (status)=>`api_error_${status}`\n};\nvar types_SurveyPosition = /*#__PURE__*/ function(SurveyPosition) {\n SurveyPosition[\"TopLeft\"] = \"top_left\";\n SurveyPosition[\"TopCenter\"] = \"top_center\";\n SurveyPosition[\"TopRight\"] = \"top_right\";\n SurveyPosition[\"MiddleLeft\"] = \"middle_left\";\n SurveyPosition[\"MiddleCenter\"] = \"middle_center\";\n SurveyPosition[\"MiddleRight\"] = \"middle_right\";\n SurveyPosition[\"Left\"] = \"left\";\n SurveyPosition[\"Right\"] = \"right\";\n SurveyPosition[\"Center\"] = \"center\";\n return SurveyPosition;\n}({});\nvar types_SurveyWidgetType = /*#__PURE__*/ function(SurveyWidgetType) {\n SurveyWidgetType[\"Button\"] = \"button\";\n SurveyWidgetType[\"Tab\"] = \"tab\";\n SurveyWidgetType[\"Selector\"] = \"selector\";\n return SurveyWidgetType;\n}({});\nvar types_SurveyType = /*#__PURE__*/ function(SurveyType) {\n SurveyType[\"Popover\"] = \"popover\";\n SurveyType[\"API\"] = \"api\";\n SurveyType[\"Widget\"] = \"widget\";\n SurveyType[\"ExternalSurvey\"] = \"external_survey\";\n return SurveyType;\n}({});\nvar types_SurveyQuestionDescriptionContentType = /*#__PURE__*/ function(SurveyQuestionDescriptionContentType) {\n SurveyQuestionDescriptionContentType[\"Html\"] = \"html\";\n SurveyQuestionDescriptionContentType[\"Text\"] = \"text\";\n return SurveyQuestionDescriptionContentType;\n}({});\nvar types_SurveyValidationType = /*#__PURE__*/ function(SurveyValidationType) {\n SurveyValidationType[\"MinLength\"] = \"min_length\";\n SurveyValidationType[\"MaxLength\"] = \"max_length\";\n return SurveyValidationType;\n}({});\nvar types_SurveyRatingDisplay = /*#__PURE__*/ function(SurveyRatingDisplay) {\n SurveyRatingDisplay[\"Number\"] = \"number\";\n SurveyRatingDisplay[\"Emoji\"] = \"emoji\";\n return SurveyRatingDisplay;\n}({});\nvar types_SurveyQuestionType = /*#__PURE__*/ function(SurveyQuestionType) {\n SurveyQuestionType[\"Open\"] = \"open\";\n SurveyQuestionType[\"MultipleChoice\"] = \"multiple_choice\";\n SurveyQuestionType[\"SingleChoice\"] = \"single_choice\";\n SurveyQuestionType[\"Rating\"] = \"rating\";\n SurveyQuestionType[\"Link\"] = \"link\";\n return SurveyQuestionType;\n}({});\nvar types_SurveyQuestionBranchingType = /*#__PURE__*/ function(SurveyQuestionBranchingType) {\n SurveyQuestionBranchingType[\"NextQuestion\"] = \"next_question\";\n SurveyQuestionBranchingType[\"End\"] = \"end\";\n SurveyQuestionBranchingType[\"ResponseBased\"] = \"response_based\";\n SurveyQuestionBranchingType[\"SpecificQuestion\"] = \"specific_question\";\n return SurveyQuestionBranchingType;\n}({});\nvar types_SurveyMatchType = /*#__PURE__*/ function(SurveyMatchType) {\n SurveyMatchType[\"Regex\"] = \"regex\";\n SurveyMatchType[\"NotRegex\"] = \"not_regex\";\n SurveyMatchType[\"Exact\"] = \"exact\";\n SurveyMatchType[\"IsNot\"] = \"is_not\";\n SurveyMatchType[\"Icontains\"] = \"icontains\";\n SurveyMatchType[\"NotIcontains\"] = \"not_icontains\";\n return SurveyMatchType;\n}({});\nvar types_SurveySchedule = /*#__PURE__*/ function(SurveySchedule) {\n SurveySchedule[\"Once\"] = \"once\";\n SurveySchedule[\"Recurring\"] = \"recurring\";\n SurveySchedule[\"Always\"] = \"always\";\n return SurveySchedule;\n}({});\nvar types_ActionStepStringMatching = /*#__PURE__*/ function(ActionStepStringMatching) {\n ActionStepStringMatching[\"Contains\"] = \"contains\";\n ActionStepStringMatching[\"Exact\"] = \"exact\";\n ActionStepStringMatching[\"Regex\"] = \"regex\";\n return ActionStepStringMatching;\n}({});\nconst knownUnsafeEditableEvent = [\n '$snapshot',\n '$pageview',\n '$pageleave',\n '$set',\n 'survey dismissed',\n 'survey sent',\n 'survey shown',\n '$identify',\n '$groupidentify',\n '$create_alias',\n '$$client_ingestion_warning',\n '$web_experiment_applied',\n '$feature_enrollment_update',\n '$feature_flag_called'\n];\nexport { types_ActionStepStringMatching as ActionStepStringMatching, types_Compression as Compression, FeatureFlagError, types_PostHogPersistedProperty as PostHogPersistedProperty, types_SurveyMatchType as SurveyMatchType, types_SurveyPosition as SurveyPosition, types_SurveyQuestionBranchingType as SurveyQuestionBranchingType, types_SurveyQuestionDescriptionContentType as SurveyQuestionDescriptionContentType, types_SurveyQuestionType as SurveyQuestionType, types_SurveyRatingDisplay as SurveyRatingDisplay, types_SurveySchedule as SurveySchedule, types_SurveyType as SurveyType, types_SurveyValidationType as SurveyValidationType, types_SurveyWidgetType as SurveyWidgetType, knownUnsafeEditableEvent };\n","const DEFAULT_BLOCKED_UA_STRS = [\n 'amazonbot',\n 'amazonproductbot',\n 'app.hypefactors.com',\n 'applebot',\n 'archive.org_bot',\n 'awariobot',\n 'backlinksextendedbot',\n 'baiduspider',\n 'bingbot',\n 'bingpreview',\n 'chrome-lighthouse',\n 'dataforseobot',\n 'deepscan',\n 'duckduckbot',\n 'facebookexternal',\n 'facebookcatalog',\n 'http://yandex.com/bots',\n 'hubspot',\n 'ia_archiver',\n 'leikibot',\n 'linkedinbot',\n 'meta-externalagent',\n 'mj12bot',\n 'msnbot',\n 'nessus',\n 'petalbot',\n 'pinterest',\n 'prerender',\n 'rogerbot',\n 'screaming frog',\n 'sebot-wa',\n 'sitebulb',\n 'slackbot',\n 'slurp',\n 'trendictionbot',\n 'turnitin',\n 'twitterbot',\n 'vercel-screenshot',\n 'vercelbot',\n 'yahoo! slurp',\n 'yandexbot',\n 'zoombot',\n 'bot.htm',\n 'bot.php',\n '(bot;',\n 'bot/',\n 'crawler',\n 'ahrefsbot',\n 'ahrefssiteaudit',\n 'semrushbot',\n 'siteauditbot',\n 'splitsignalbot',\n 'gptbot',\n 'oai-searchbot',\n 'chatgpt-user',\n 'perplexitybot',\n 'better uptime bot',\n 'sentryuptimebot',\n 'uptimerobot',\n 'headlesschrome',\n 'cypress',\n 'google-hoteladsverifier',\n 'adsbot-google',\n 'apis-google',\n 'duplexweb-google',\n 'feedfetcher-google',\n 'google favicon',\n 'google web preview',\n 'google-read-aloud',\n 'googlebot',\n 'googleother',\n 'google-cloudvertexbot',\n 'googleweblight',\n 'mediapartners-google',\n 'storebot-google',\n 'google-inspectiontool',\n 'bytespider'\n];\nconst isBlockedUA = function(ua, customBlockedUserAgents = []) {\n if (!ua) return false;\n const uaLower = ua.toLowerCase();\n return DEFAULT_BLOCKED_UA_STRS.concat(customBlockedUserAgents).some((blockedUA)=>{\n const blockedUaLower = blockedUA.toLowerCase();\n return -1 !== uaLower.indexOf(blockedUaLower);\n });\n};\nexport { DEFAULT_BLOCKED_UA_STRS, isBlockedUA };\n","import { knownUnsafeEditableEvent } from \"../types.mjs\";\nimport { includes } from \"./string-utils.mjs\";\nconst nativeIsArray = Array.isArray;\nconst ObjProto = Object.prototype;\nconst type_utils_hasOwnProperty = ObjProto.hasOwnProperty;\nconst type_utils_toString = ObjProto.toString;\nconst isArray = nativeIsArray || function(obj) {\n return '[object Array]' === type_utils_toString.call(obj);\n};\nconst isFunction = (x)=>'function' == typeof x;\nconst isNativeFunction = (x)=>isFunction(x) && -1 !== x.toString().indexOf('[native code]');\nconst isObject = (x)=>x === Object(x) && !isArray(x);\nconst isEmptyObject = (x)=>{\n if (isObject(x)) {\n for(const key in x)if (type_utils_hasOwnProperty.call(x, key)) return false;\n return true;\n }\n return false;\n};\nconst isUndefined = (x)=>void 0 === x;\nconst isString = (x)=>'[object String]' == type_utils_toString.call(x);\nconst isEmptyString = (x)=>isString(x) && 0 === x.trim().length;\nconst isNull = (x)=>null === x;\nconst isNullish = (x)=>isUndefined(x) || isNull(x);\nconst isNumber = (x)=>'[object Number]' == type_utils_toString.call(x) && x === x;\nconst isPositiveNumber = (value)=>isNumber(value) && value > 0;\nconst isBoolean = (x)=>'[object Boolean]' === type_utils_toString.call(x);\nconst isFormData = (x)=>x instanceof FormData;\nconst isFile = (x)=>x instanceof File;\nconst isPlainError = (x)=>x instanceof Error;\nconst isKnownUnsafeEditableEvent = (x)=>includes(knownUnsafeEditableEvent, x);\nfunction isPrimitive(value) {\n return null === value || 'object' != typeof value;\n}\nfunction isBuiltin(candidate, className) {\n return Object.prototype.toString.call(candidate) === `[object ${className}]`;\n}\nfunction isError(candidate) {\n switch(Object.prototype.toString.call(candidate)){\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n case '[object DOMError]':\n case '[object WebAssembly.Exception]':\n return true;\n default:\n return isInstanceOf(candidate, Error);\n }\n}\nfunction isErrorEvent(event) {\n return isBuiltin(event, 'ErrorEvent');\n}\nfunction isEvent(candidate) {\n return !isUndefined(Event) && isInstanceOf(candidate, Event);\n}\nfunction isPlainObject(candidate) {\n return isBuiltin(candidate, 'Object');\n}\nfunction isInstanceOf(candidate, base) {\n try {\n return candidate instanceof base;\n } catch {\n return false;\n }\n}\nconst yesLikeValues = [\n true,\n 'true',\n 1,\n '1',\n 'yes'\n];\nconst isYesLike = (val)=>includes(yesLikeValues, val);\nconst noLikeValues = [\n false,\n 'false',\n 0,\n '0',\n 'no'\n];\nconst isNoLike = (val)=>includes(noLikeValues, val);\nexport { type_utils_hasOwnProperty as hasOwnProperty, isArray, isBoolean, isBuiltin, isEmptyObject, isEmptyString, isError, isErrorEvent, isEvent, isFile, isFormData, isFunction, isKnownUnsafeEditableEvent, isNativeFunction, isNoLike, isNull, isNullish, isNumber, isObject, isPlainError, isPlainObject, isPositiveNumber, isPrimitive, isString, isUndefined, isYesLike, noLikeValues, yesLikeValues };\n","import { isNumber } from \"./type-utils.mjs\";\nfunction clampToRange(value, min, max, logger, fallbackValue) {\n if (min > max) {\n logger.warn('min cannot be greater than max.');\n min = max;\n }\n if (isNumber(value)) if (value > max) {\n logger.warn(' cannot be greater than max: ' + max + '. Using max value instead.');\n return max;\n } else {\n if (!(value < min)) return value;\n logger.warn(' cannot be less than min: ' + min + '. Using min value instead.');\n return min;\n }\n logger.warn(' must be a number. using max or fallback. max: ' + max + ', fallback: ' + fallbackValue);\n return clampToRange(fallbackValue || max, min, max, logger);\n}\nfunction getRemoteConfigBool(field, key, defaultValue = true) {\n if (null == field) return defaultValue;\n if ('boolean' == typeof field) return field;\n if ('object' == typeof field) {\n const value = field[key];\n return 'boolean' == typeof value ? value : defaultValue;\n }\n return defaultValue;\n}\nfunction getRemoteConfigNumber(field, key) {\n if (null == field || 'object' != typeof field) return;\n const value = field[key];\n if ('number' == typeof value && Number.isFinite(value)) return value;\n if ('string' == typeof value) {\n const trimmed = value.trim();\n if ('' === trimmed) return;\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : void 0;\n }\n}\nfunction isValidSampleRate(value) {\n return 'number' == typeof value && Number.isFinite(value) && value >= 0 && value <= 1;\n}\nexport { clampToRange, getRemoteConfigBool, getRemoteConfigNumber, isValidSampleRate };\n","import { clampToRange } from \"./number-utils.mjs\";\nconst ONE_DAY_IN_MS = 86400000;\nclass BucketedRateLimiter {\n constructor(options){\n this._buckets = {};\n this._onBucketRateLimited = options._onBucketRateLimited;\n this._bucketSize = clampToRange(options.bucketSize, 0, 100, options._logger);\n this._refillRate = clampToRange(options.refillRate, 0, this._bucketSize, options._logger);\n this._refillInterval = clampToRange(options.refillInterval, 0, ONE_DAY_IN_MS, options._logger);\n }\n _applyRefill(bucket, now) {\n const elapsedMs = now - bucket.lastAccess;\n const refillIntervals = Math.floor(elapsedMs / this._refillInterval);\n if (refillIntervals > 0) {\n const tokensToAdd = refillIntervals * this._refillRate;\n bucket.tokens = Math.min(bucket.tokens + tokensToAdd, this._bucketSize);\n bucket.lastAccess = bucket.lastAccess + refillIntervals * this._refillInterval;\n }\n }\n consumeRateLimit(key) {\n const now = Date.now();\n const keyStr = String(key);\n let bucket = this._buckets[keyStr];\n if (bucket) this._applyRefill(bucket, now);\n else {\n bucket = {\n tokens: this._bucketSize,\n lastAccess: now\n };\n this._buckets[keyStr] = bucket;\n }\n if (0 === bucket.tokens) return true;\n bucket.tokens--;\n if (0 === bucket.tokens) this._onBucketRateLimited?.(key);\n return 0 === bucket.tokens;\n }\n stop() {\n this._buckets = {};\n }\n}\nexport { BucketedRateLimiter };\n","import { uuidv7 } from \"../vendor/uuidv7.mjs\";\nclass PromiseQueue {\n add(promise) {\n const promiseUUID = uuidv7();\n this.promiseByIds[promiseUUID] = promise;\n promise.catch(()=>{}).finally(()=>{\n delete this.promiseByIds[promiseUUID];\n });\n return promise;\n }\n async join() {\n let promises = Object.values(this.promiseByIds);\n let length = promises.length;\n while(length > 0){\n await Promise.all(promises);\n promises = Object.values(this.promiseByIds);\n length = promises.length;\n }\n }\n get length() {\n return Object.keys(this.promiseByIds).length;\n }\n constructor(){\n this.promiseByIds = {};\n }\n}\nexport { PromiseQueue };\n","function createConsole(consoleLike = console) {\n const lockedMethods = {\n log: consoleLike.log.bind(consoleLike),\n warn: consoleLike.warn.bind(consoleLike),\n error: consoleLike.error.bind(consoleLike),\n debug: consoleLike.debug.bind(consoleLike)\n };\n return lockedMethods;\n}\nconst _createLogger = (prefix, maybeCall, consoleLike)=>{\n function _log(level, ...args) {\n maybeCall(()=>{\n const consoleMethod = consoleLike[level];\n consoleMethod(prefix, ...args);\n });\n }\n const logger = {\n info: (...args)=>{\n _log('log', ...args);\n },\n warn: (...args)=>{\n _log('warn', ...args);\n },\n error: (...args)=>{\n _log('error', ...args);\n },\n critical: (...args)=>{\n consoleLike['error'](prefix, ...args);\n },\n createLogger: (additionalPrefix)=>_createLogger(`${prefix} ${additionalPrefix}`, maybeCall, consoleLike)\n };\n return logger;\n};\nconst passThrough = (fn)=>fn();\nfunction createLogger(prefix, maybeCall = passThrough) {\n return _createLogger(prefix, maybeCall, createConsole());\n}\nexport { _createLogger, createLogger };\n","import { includes } from \"./string-utils.mjs\";\nimport { isFunction, isUndefined } from \"./type-utils.mjs\";\nconst FACEBOOK = 'Facebook';\nconst MOBILE = 'Mobile';\nconst IOS = 'iOS';\nconst ANDROID = 'Android';\nconst TABLET = 'Tablet';\nconst ANDROID_TABLET = ANDROID + ' ' + TABLET;\nconst IPAD = 'iPad';\nconst APPLE = 'Apple';\nconst APPLE_WATCH = APPLE + ' Watch';\nconst SAFARI = 'Safari';\nconst BLACKBERRY = 'BlackBerry';\nconst SAMSUNG = 'Samsung';\nconst SAMSUNG_BROWSER = SAMSUNG + 'Browser';\nconst SAMSUNG_INTERNET = SAMSUNG + ' Internet';\nconst CHROME = 'Chrome';\nconst CHROME_OS = CHROME + ' OS';\nconst CHROME_IOS = CHROME + ' ' + IOS;\nconst INTERNET_EXPLORER = 'Internet Explorer';\nconst INTERNET_EXPLORER_MOBILE = INTERNET_EXPLORER + ' ' + MOBILE;\nconst OPERA = 'Opera';\nconst OPERA_MINI = OPERA + ' Mini';\nconst EDGE = 'Edge';\nconst MICROSOFT_EDGE = 'Microsoft ' + EDGE;\nconst FIREFOX = 'Firefox';\nconst FIREFOX_IOS = FIREFOX + ' ' + IOS;\nconst NINTENDO = 'Nintendo';\nconst PLAYSTATION = 'PlayStation';\nconst XBOX = 'Xbox';\nconst ANDROID_MOBILE = ANDROID + ' ' + MOBILE;\nconst MOBILE_SAFARI = MOBILE + ' ' + SAFARI;\nconst WINDOWS = 'Windows';\nconst WINDOWS_PHONE = WINDOWS + ' Phone';\nconst NOKIA = 'Nokia';\nconst OUYA = 'Ouya';\nconst GENERIC = 'Generic';\nconst GENERIC_MOBILE = GENERIC + ' ' + MOBILE.toLowerCase();\nconst GENERIC_TABLET = GENERIC + ' ' + TABLET.toLowerCase();\nconst KONQUEROR = 'Konqueror';\nconst BROWSER_VERSION_REGEX_SUFFIX = '(\\\\d+(\\\\.\\\\d+)?)';\nconst DEFAULT_BROWSER_VERSION_REGEX = new RegExp('Version/' + BROWSER_VERSION_REGEX_SUFFIX);\nconst XBOX_REGEX = new RegExp(XBOX, 'i');\nconst PLAYSTATION_REGEX = new RegExp(PLAYSTATION + ' \\\\w+', 'i');\nconst NINTENDO_REGEX = new RegExp(NINTENDO + ' \\\\w+', 'i');\nconst BLACKBERRY_REGEX = new RegExp(BLACKBERRY + '|PlayBook|BB10', 'i');\nconst windowsVersionMap = {\n 'NT3.51': 'NT 3.11',\n 'NT4.0': 'NT 4.0',\n '5.0': '2000',\n '5.1': 'XP',\n '5.2': 'XP',\n '6.0': 'Vista',\n '6.1': '7',\n '6.2': '8',\n '6.3': '8.1',\n '6.4': '10',\n '10.0': '10'\n};\nfunction isSafari(userAgent) {\n return includes(userAgent, SAFARI) && !includes(userAgent, CHROME) && !includes(userAgent, ANDROID);\n}\nconst safariCheck = (ua, vendor)=>vendor && includes(vendor, APPLE) || isSafari(ua);\nconst detectBrowser = function(user_agent, vendor) {\n vendor = vendor || '';\n if (includes(user_agent, ' OPR/') && includes(user_agent, 'Mini')) return OPERA_MINI;\n if (includes(user_agent, ' OPR/')) return OPERA;\n if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n if (includes(user_agent, 'IE' + MOBILE) || includes(user_agent, 'WPDesktop')) return INTERNET_EXPLORER_MOBILE;\n if (includes(user_agent, SAMSUNG_BROWSER)) return SAMSUNG_INTERNET;\n else if (includes(user_agent, EDGE) || includes(user_agent, 'Edg/')) return MICROSOFT_EDGE;\n else if (includes(user_agent, 'FBIOS')) return FACEBOOK + ' ' + MOBILE;\n else if (includes(user_agent, 'UCWEB') || includes(user_agent, 'UCBrowser')) return 'UC Browser';\n else if (includes(user_agent, 'CriOS')) return CHROME_IOS;\n else if (includes(user_agent, 'CrMo')) return CHROME;\n else if (includes(user_agent, CHROME)) return CHROME;\n else if (includes(user_agent, ANDROID) && includes(user_agent, SAFARI)) return ANDROID_MOBILE;\n else if (includes(user_agent, 'FxiOS')) return FIREFOX_IOS;\n else if (includes(user_agent.toLowerCase(), KONQUEROR.toLowerCase())) return KONQUEROR;\n else if (safariCheck(user_agent, vendor)) return includes(user_agent, MOBILE) ? MOBILE_SAFARI : SAFARI;\n else if (includes(user_agent, FIREFOX)) return FIREFOX;\n else if (includes(user_agent, 'MSIE') || includes(user_agent, 'Trident/')) return INTERNET_EXPLORER;\n else if (includes(user_agent, 'Gecko')) return FIREFOX;\n return '';\n};\nconst versionRegexes = {\n [INTERNET_EXPLORER_MOBILE]: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [MICROSOFT_EDGE]: [\n new RegExp(EDGE + '?\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME]: [\n new RegExp('(' + CHROME + '|CrMo)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [CHROME_IOS]: [\n new RegExp('CriOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n 'UC Browser': [\n new RegExp('(UCBrowser|UCWEB)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [MOBILE_SAFARI]: [\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [OPERA]: [\n new RegExp('(' + OPERA + '|OPR)\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX]: [\n new RegExp(FIREFOX + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [FIREFOX_IOS]: [\n new RegExp('FxiOS\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [KONQUEROR]: [\n new RegExp('Konqueror[:/]?' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [BLACKBERRY]: [\n new RegExp(BLACKBERRY + ' ' + BROWSER_VERSION_REGEX_SUFFIX),\n DEFAULT_BROWSER_VERSION_REGEX\n ],\n [ANDROID_MOBILE]: [\n new RegExp('android\\\\s' + BROWSER_VERSION_REGEX_SUFFIX, 'i')\n ],\n [SAMSUNG_INTERNET]: [\n new RegExp(SAMSUNG_BROWSER + '\\\\/' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n [INTERNET_EXPLORER]: [\n new RegExp('(rv:|MSIE )' + BROWSER_VERSION_REGEX_SUFFIX)\n ],\n Mozilla: [\n new RegExp('rv:' + BROWSER_VERSION_REGEX_SUFFIX)\n ]\n};\nconst detectBrowserVersion = function(userAgent, vendor) {\n const browser = detectBrowser(userAgent, vendor);\n const regexes = versionRegexes[browser];\n if (isUndefined(regexes)) return null;\n for(let i = 0; i < regexes.length; i++){\n const regex = regexes[i];\n const matches = userAgent.match(regex);\n if (matches) return parseFloat(matches[matches.length - 2]);\n }\n return null;\n};\nconst osMatchers = [\n [\n new RegExp(XBOX + '; ' + XBOX + ' (.*?)[);]', 'i'),\n (match)=>[\n XBOX,\n match && match[1] || ''\n ]\n ],\n [\n new RegExp(NINTENDO, 'i'),\n [\n NINTENDO,\n ''\n ]\n ],\n [\n new RegExp(PLAYSTATION, 'i'),\n [\n PLAYSTATION,\n ''\n ]\n ],\n [\n BLACKBERRY_REGEX,\n [\n BLACKBERRY,\n ''\n ]\n ],\n [\n new RegExp(WINDOWS, 'i'),\n (_, user_agent)=>{\n if (/Phone/.test(user_agent) || /WPDesktop/.test(user_agent)) return [\n WINDOWS_PHONE,\n ''\n ];\n if (new RegExp(MOBILE).test(user_agent) && !/IEMobile\\b/.test(user_agent)) return [\n WINDOWS + ' ' + MOBILE,\n ''\n ];\n const match = /Windows NT ([0-9.]+)/i.exec(user_agent);\n if (match && match[1]) {\n const version = match[1];\n let osVersion = windowsVersionMap[version] || '';\n if (/arm/i.test(user_agent)) osVersion = 'RT';\n return [\n WINDOWS,\n osVersion\n ];\n }\n return [\n WINDOWS,\n ''\n ];\n }\n ],\n [\n /((iPhone|iPad|iPod).*?OS (\\d+)_(\\d+)_?(\\d+)?|iPhone)/,\n (match)=>{\n if (match && match[3]) {\n const versionParts = [\n match[3],\n match[4],\n match[5] || '0'\n ];\n return [\n IOS,\n versionParts.join('.')\n ];\n }\n return [\n IOS,\n ''\n ];\n }\n ],\n [\n /(watch.*\\/(\\d+\\.\\d+\\.\\d+)|watch os,(\\d+\\.\\d+),)/i,\n (match)=>{\n let version = '';\n if (match && match.length >= 3) version = isUndefined(match[2]) ? match[3] : match[2];\n return [\n 'watchOS',\n version\n ];\n }\n ],\n [\n new RegExp('(' + ANDROID + ' (\\\\d+)\\\\.(\\\\d+)\\\\.?(\\\\d+)?|' + ANDROID + ')', 'i'),\n (match)=>{\n if (match && match[2]) {\n const versionParts = [\n match[2],\n match[3],\n match[4] || '0'\n ];\n return [\n ANDROID,\n versionParts.join('.')\n ];\n }\n return [\n ANDROID,\n ''\n ];\n }\n ],\n [\n /Mac OS X (\\d+)[_.](\\d+)[_.]?(\\d+)?/i,\n (match)=>{\n const result = [\n 'Mac OS X',\n ''\n ];\n if (match && match[1]) {\n const versionParts = [\n match[1],\n match[2],\n match[3] || '0'\n ];\n result[1] = versionParts.join('.');\n }\n return result;\n }\n ],\n [\n /Mac/i,\n [\n 'Mac OS X',\n ''\n ]\n ],\n [\n /CrOS/,\n [\n CHROME_OS,\n ''\n ]\n ],\n [\n /Linux|debian/i,\n [\n 'Linux',\n ''\n ]\n ]\n];\nconst detectOS = function(user_agent) {\n for(let i = 0; i < osMatchers.length; i++){\n const [rgex, resultOrFn] = osMatchers[i];\n const match = rgex.exec(user_agent);\n const result = match && (isFunction(resultOrFn) ? resultOrFn(match, user_agent) : resultOrFn);\n if (result) return result;\n }\n return [\n '',\n ''\n ];\n};\nconst detectDevice = function(user_agent) {\n if (NINTENDO_REGEX.test(user_agent)) return NINTENDO;\n if (PLAYSTATION_REGEX.test(user_agent)) return PLAYSTATION;\n if (XBOX_REGEX.test(user_agent)) return XBOX;\n if (new RegExp(OUYA, 'i').test(user_agent)) return OUYA;\n if (new RegExp('(' + WINDOWS_PHONE + '|WPDesktop)', 'i').test(user_agent)) return WINDOWS_PHONE;\n else if (/iPad/.test(user_agent)) return IPAD;\n else if (/iPod/.test(user_agent)) return 'iPod Touch';\n else if (/iPhone/.test(user_agent)) return 'iPhone';\n else if (/(watch)(?: ?os[,/]|\\d,\\d\\/)[\\d.]+/i.test(user_agent)) return APPLE_WATCH;\n else if (BLACKBERRY_REGEX.test(user_agent)) return BLACKBERRY;\n else if (/(kobo)\\s(ereader|touch)/i.test(user_agent)) return 'Kobo';\n else if (new RegExp(NOKIA, 'i').test(user_agent)) return NOKIA;\n else if (/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i.test(user_agent) || /(kf[a-z]+)( bui|\\)).+silk\\//i.test(user_agent)) return 'Kindle Fire';\n else if (/(Android|ZTE)/i.test(user_agent)) if (!(!new RegExp(MOBILE).test(user_agent) || /(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(user_agent))) return ANDROID;\n else {\n if (/pixel[\\daxl ]{1,6}/i.test(user_agent) && !/pixel c/i.test(user_agent) || /(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(user_agent) || /lmy47v/i.test(user_agent) && !/QTAQZ3/i.test(user_agent)) return ANDROID;\n return ANDROID_TABLET;\n }\n else if (new RegExp('(pda|' + MOBILE + ')', 'i').test(user_agent)) return GENERIC_MOBILE;\n else if (new RegExp(TABLET, 'i').test(user_agent) && !new RegExp(TABLET + ' pc', 'i').test(user_agent)) return GENERIC_TABLET;\n else return '';\n};\nconst detectDeviceType = function(user_agent, options) {\n const device = detectDevice(user_agent);\n if (device === IPAD || device === ANDROID_TABLET || 'Kobo' === device || 'Kindle Fire' === device || device === GENERIC_TABLET) return TABLET;\n if (device === NINTENDO || device === XBOX || device === PLAYSTATION || device === OUYA) return 'Console';\n if (device === APPLE_WATCH) return 'Wearable';\n if (device) return MOBILE;\n if (options?.userAgentDataPlatform === 'Android' && (options?.maxTouchPoints ?? 0) > 0) {\n const shortSide = Math.min(options?.screenWidth ?? 0, options?.screenHeight ?? 0);\n const shortSideDp = shortSide / (options?.devicePixelRatio ?? 1);\n return shortSideDp >= 600 ? TABLET : MOBILE;\n }\n return 'Desktop';\n};\nexport { detectBrowser, detectBrowserVersion, detectDevice, detectDeviceType, detectOS };\n","export * from \"./bot-detection.mjs\";\nexport * from \"./bucketed-rate-limiter.mjs\";\nexport * from \"./number-utils.mjs\";\nexport * from \"./string-utils.mjs\";\nexport * from \"./type-utils.mjs\";\nexport * from \"./promise-queue.mjs\";\nexport * from \"./logger.mjs\";\nexport * from \"./user-agent-utils.mjs\";\nconst STRING_FORMAT = 'utf8';\nfunction assert(truthyValue, message) {\n if (!truthyValue || 'string' != typeof truthyValue || isEmpty(truthyValue)) throw new Error(message);\n}\nfunction isEmpty(truthyValue) {\n if (0 === truthyValue.trim().length) return true;\n return false;\n}\nfunction removeTrailingSlash(url) {\n return url?.replace(/\\/+$/, '');\n}\nasync function retriable(fn, props) {\n let lastError = null;\n for(let i = 0; i < props.retryCount + 1; i++){\n if (i > 0) await new Promise((r)=>setTimeout(r, props.retryDelay));\n try {\n const res = await fn();\n return res;\n } catch (e) {\n lastError = e;\n if (!props.retryCheck(e)) throw e;\n }\n }\n throw lastError;\n}\nfunction currentTimestamp() {\n return new Date().getTime();\n}\nfunction currentISOTime() {\n return new Date().toISOString();\n}\nfunction safeSetTimeout(fn, timeout) {\n const t = setTimeout(fn, timeout);\n t?.unref && t?.unref();\n return t;\n}\nconst isPromise = (obj)=>obj && 'function' == typeof obj.then;\nconst isError = (x)=>x instanceof Error;\nfunction getFetch() {\n return 'undefined' != typeof fetch ? fetch : void 0 !== globalThis.fetch ? globalThis.fetch : void 0;\n}\nfunction allSettled(promises) {\n return Promise.all(promises.map((p)=>(p ?? Promise.resolve()).then((value)=>({\n status: 'fulfilled',\n value\n }), (reason)=>({\n status: 'rejected',\n reason\n }))));\n}\nexport { STRING_FORMAT, allSettled, assert, currentISOTime, currentTimestamp, getFetch, isError, isPromise, removeTrailingSlash, retriable, safeSetTimeout };\n","class SimpleEventEmitter {\n constructor(){\n this.events = {};\n this.events = {};\n }\n on(event, listener) {\n if (!this.events[event]) this.events[event] = [];\n this.events[event].push(listener);\n return ()=>{\n this.events[event] = this.events[event].filter((x)=>x !== listener);\n };\n }\n emit(event, payload) {\n for (const listener of this.events[event] || [])listener(payload);\n for (const listener of this.events['*'] || [])listener(event, payload);\n }\n}\nexport { SimpleEventEmitter };\n","function isGzipSupported() {\n return 'CompressionStream' in globalThis;\n}\nasync function gzipCompress(input, isDebug = true) {\n try {\n const dataStream = new Blob([\n input\n ], {\n type: 'text/plain'\n }).stream();\n const compressedStream = dataStream.pipeThrough(new CompressionStream('gzip'));\n return await new Response(compressedStream).blob();\n } catch (error) {\n if (isDebug) console.error('Failed to gzip compress data', error);\n return null;\n }\n}\nexport { gzipCompress, isGzipSupported };\n","import { SimpleEventEmitter } from \"./eventemitter.mjs\";\nimport { getFeatureFlagValue, normalizeFlagsResponse } from \"./featureFlagUtils.mjs\";\nimport { gzipCompress, isGzipSupported } from \"./gzip.mjs\";\nimport { PostHogPersistedProperty } from \"./types.mjs\";\nimport { PromiseQueue, STRING_FORMAT, allSettled, assert, createLogger, currentISOTime, removeTrailingSlash, retriable, safeSetTimeout } from \"./utils/index.mjs\";\nimport { uuidv7 } from \"./vendor/uuidv7.mjs\";\nclass PostHogFetchHttpError extends Error {\n constructor(response, reqByteLength){\n super('HTTP error while fetching PostHog: status=' + response.status + ', reqByteLength=' + reqByteLength), this.response = response, this.reqByteLength = reqByteLength, this.name = 'PostHogFetchHttpError';\n }\n get status() {\n return this.response.status;\n }\n get text() {\n return this.response.text();\n }\n get json() {\n return this.response.json();\n }\n}\nclass PostHogFetchNetworkError extends Error {\n constructor(error){\n super('Network error while fetching PostHog', error instanceof Error ? {\n cause: error\n } : {}), this.error = error, this.name = 'PostHogFetchNetworkError';\n }\n}\nconst maybeAdd = (key, value)=>void 0 !== value ? {\n [key]: value\n } : {};\nasync function logFlushError(err) {\n if (err instanceof PostHogFetchHttpError) {\n let text = '';\n try {\n text = await err.text;\n } catch {}\n console.error(`Error while flushing PostHog: message=${err.message}, response body=${text}`, err);\n } else console.error('Error while flushing PostHog', err);\n return Promise.resolve();\n}\nfunction isPostHogFetchError(err) {\n return 'object' == typeof err && (err instanceof PostHogFetchHttpError || err instanceof PostHogFetchNetworkError);\n}\nfunction isPostHogFetchContentTooLargeError(err) {\n return 'object' == typeof err && err instanceof PostHogFetchHttpError && 413 === err.status;\n}\nvar posthog_core_stateless_QuotaLimitedFeature = /*#__PURE__*/ function(QuotaLimitedFeature) {\n QuotaLimitedFeature[\"FeatureFlags\"] = \"feature_flags\";\n QuotaLimitedFeature[\"Recordings\"] = \"recordings\";\n return QuotaLimitedFeature;\n}({});\nclass PostHogCoreStateless {\n constructor(apiKey, options = {}){\n this.flushPromise = null;\n this.shutdownPromise = null;\n this.promiseQueue = new PromiseQueue();\n this._events = new SimpleEventEmitter();\n this._isInitialized = false;\n assert(apiKey, \"You must pass your PostHog project's api key.\");\n this.apiKey = apiKey;\n this.host = removeTrailingSlash(options.host || 'https://us.i.posthog.com');\n this.flushAt = options.flushAt ? Math.max(options.flushAt, 1) : 20;\n this.maxBatchSize = Math.max(this.flushAt, options.maxBatchSize ?? 100);\n this.maxQueueSize = Math.max(this.flushAt, options.maxQueueSize ?? 1000);\n this.flushInterval = options.flushInterval ?? 10000;\n this.preloadFeatureFlags = options.preloadFeatureFlags ?? true;\n this.defaultOptIn = options.defaultOptIn ?? true;\n this.disableSurveys = options.disableSurveys ?? false;\n this._retryOptions = {\n retryCount: options.fetchRetryCount ?? 3,\n retryDelay: options.fetchRetryDelay ?? 3000,\n retryCheck: isPostHogFetchError\n };\n this.requestTimeout = options.requestTimeout ?? 10000;\n this.featureFlagsRequestTimeoutMs = options.featureFlagsRequestTimeoutMs ?? 3000;\n this.remoteConfigRequestTimeoutMs = options.remoteConfigRequestTimeoutMs ?? 3000;\n this.disableGeoip = options.disableGeoip ?? true;\n this.disabled = options.disabled ?? false;\n this.historicalMigration = options?.historicalMigration ?? false;\n this._initPromise = Promise.resolve();\n this._isInitialized = true;\n this._logger = createLogger('[PostHog]', this.logMsgIfDebug.bind(this));\n this.evaluationContexts = options?.evaluationContexts ?? options?.evaluationEnvironments;\n if (options?.evaluationEnvironments && !options?.evaluationContexts) this._logger.warn('evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version.');\n this.disableCompression = !isGzipSupported() || (options?.disableCompression ?? false);\n }\n logMsgIfDebug(fn) {\n if (this.isDebug) fn();\n }\n wrap(fn) {\n if (this.disabled) return void this._logger.warn('The client is disabled');\n if (this._isInitialized) return fn();\n this._initPromise.then(()=>fn());\n }\n getCommonEventProperties() {\n return {\n $lib: this.getLibraryId(),\n $lib_version: this.getLibraryVersion()\n };\n }\n get optedOut() {\n return this.getPersistedProperty(PostHogPersistedProperty.OptedOut) ?? !this.defaultOptIn;\n }\n async optIn() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, false);\n });\n }\n async optOut() {\n this.wrap(()=>{\n this.setPersistedProperty(PostHogPersistedProperty.OptedOut, true);\n });\n }\n on(event, cb) {\n return this._events.on(event, cb);\n }\n debug(enabled = true) {\n this.removeDebugCallback?.();\n if (enabled) {\n const removeDebugCallback = this.on('*', (event, payload)=>this._logger.info(event, payload));\n this.removeDebugCallback = ()=>{\n removeDebugCallback();\n this.removeDebugCallback = void 0;\n };\n }\n }\n get isDebug() {\n return !!this.removeDebugCallback;\n }\n get isDisabled() {\n return this.disabled;\n }\n buildPayload(payload) {\n return {\n distinct_id: payload.distinct_id,\n event: payload.event,\n properties: {\n ...payload.properties || {},\n ...this.getCommonEventProperties()\n }\n };\n }\n addPendingPromise(promise) {\n return this.promiseQueue.add(promise);\n }\n identifyStateless(distinctId, properties, options) {\n this.wrap(()=>{\n const payload = {\n ...this.buildPayload({\n distinct_id: distinctId,\n event: '$identify',\n properties\n })\n };\n this.enqueue('identify', payload, options);\n });\n }\n async identifyStatelessImmediate(distinctId, properties, options) {\n const payload = {\n ...this.buildPayload({\n distinct_id: distinctId,\n event: '$identify',\n properties\n })\n };\n await this.sendImmediate('identify', payload, options);\n }\n captureStateless(distinctId, event, properties, options) {\n this.wrap(()=>{\n const payload = this.buildPayload({\n distinct_id: distinctId,\n event,\n properties\n });\n this.enqueue('capture', payload, options);\n });\n }\n async captureStatelessImmediate(distinctId, event, properties, options) {\n const payload = this.buildPayload({\n distinct_id: distinctId,\n event,\n properties\n });\n await this.sendImmediate('capture', payload, options);\n }\n aliasStateless(alias, distinctId, properties, options) {\n this.wrap(()=>{\n const payload = this.buildPayload({\n event: '$create_alias',\n distinct_id: distinctId,\n properties: {\n ...properties || {},\n distinct_id: distinctId,\n alias\n }\n });\n this.enqueue('alias', payload, options);\n });\n }\n async aliasStatelessImmediate(alias, distinctId, properties, options) {\n const payload = this.buildPayload({\n event: '$create_alias',\n distinct_id: distinctId,\n properties: {\n ...properties || {},\n distinct_id: distinctId,\n alias\n }\n });\n await this.sendImmediate('alias', payload, options);\n }\n groupIdentifyStateless(groupType, groupKey, groupProperties, options, distinctId, eventProperties) {\n this.wrap(()=>{\n const payload = this.buildPayload({\n distinct_id: distinctId || `$${groupType}_${groupKey}`,\n event: '$groupidentify',\n properties: {\n $group_type: groupType,\n $group_key: groupKey,\n $group_set: groupProperties || {},\n ...eventProperties || {}\n }\n });\n this.enqueue('capture', payload, options);\n });\n }\n async getRemoteConfig() {\n await this._initPromise;\n let host = this.host;\n if ('https://us.i.posthog.com' === host) host = 'https://us-assets.i.posthog.com';\n else if ('https://eu.i.posthog.com' === host) host = 'https://eu-assets.i.posthog.com';\n const url = `${host}/array/${this.apiKey}/config`;\n const fetchOptions = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n }\n };\n return this.fetchWithRetry(url, fetchOptions, {\n retryCount: 0\n }, this.remoteConfigRequestTimeoutMs).then((response)=>response.json()).catch((error)=>{\n this._logger.error('Remote config could not be loaded', error);\n this._events.emit('error', error);\n });\n }\n async getFlags(distinctId, groups = {}, personProperties = {}, groupProperties = {}, extraPayload = {}, fetchConfig = false) {\n await this._initPromise;\n const configParam = fetchConfig ? '&config=true' : '';\n const url = `${this.host}/flags/?v=2${configParam}`;\n const requestData = {\n token: this.apiKey,\n distinct_id: distinctId,\n groups,\n person_properties: personProperties,\n group_properties: groupProperties,\n ...extraPayload\n };\n if (this.evaluationContexts && this.evaluationContexts.length > 0) requestData.evaluation_contexts = this.evaluationContexts;\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(requestData)\n };\n this._logger.info('Flags URL', url);\n return this.fetchWithRetry(url, fetchOptions, {\n retryCount: 0\n }, this.featureFlagsRequestTimeoutMs).then((response)=>response.json()).then((response)=>({\n success: true,\n response: normalizeFlagsResponse(response)\n })).catch((error)=>{\n this._events.emit('error', error);\n return {\n success: false,\n error: this.categorizeRequestError(error)\n };\n });\n }\n categorizeRequestError(error) {\n if (error instanceof PostHogFetchHttpError) return {\n type: 'api_error',\n statusCode: error.status\n };\n if (error instanceof PostHogFetchNetworkError) {\n const cause = error.error;\n if (cause instanceof Error && ('AbortError' === cause.name || 'TimeoutError' === cause.name)) return {\n type: 'timeout'\n };\n return {\n type: 'connection_error'\n };\n }\n return {\n type: 'unknown_error'\n };\n }\n async getFeatureFlagStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const flagDetailResponse = await this.getFeatureFlagDetailStateless(key, distinctId, groups, personProperties, groupProperties, disableGeoip);\n if (void 0 === flagDetailResponse) return {\n response: void 0,\n requestId: void 0\n };\n let response = getFeatureFlagValue(flagDetailResponse.response);\n if (void 0 === response) response = false;\n return {\n response,\n requestId: flagDetailResponse.requestId\n };\n }\n async getFeatureFlagDetailStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const flagsResponse = await this.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (void 0 === flagsResponse) return;\n const featureFlags = flagsResponse.flags;\n const flagDetail = featureFlags[key];\n return {\n response: flagDetail,\n requestId: flagsResponse.requestId,\n evaluatedAt: flagsResponse.evaluatedAt\n };\n }\n async getFeatureFlagPayloadStateless(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip) {\n await this._initPromise;\n const payloads = await this.getFeatureFlagPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, [\n key\n ]);\n if (!payloads) return;\n const response = payloads[key];\n if (void 0 === response) return null;\n return response;\n }\n async getFeatureFlagPayloadsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const payloads = (await this.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate)).payloads;\n return payloads;\n }\n async getFeatureFlagsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n return await this.getFeatureFlagsAndPayloadsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate);\n }\n async getFeatureFlagsAndPayloadsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const featureFlagDetails = await this.getFeatureFlagDetailsStateless(distinctId, groups, personProperties, groupProperties, disableGeoip, flagKeysToEvaluate);\n if (!featureFlagDetails) return {\n flags: void 0,\n payloads: void 0,\n requestId: void 0\n };\n return {\n flags: featureFlagDetails.featureFlags,\n payloads: featureFlagDetails.featureFlagPayloads,\n requestId: featureFlagDetails.requestId\n };\n }\n async getFeatureFlagDetailsStateless(distinctId, groups = {}, personProperties = {}, groupProperties = {}, disableGeoip, flagKeysToEvaluate) {\n await this._initPromise;\n const extraPayload = {};\n if (disableGeoip ?? this.disableGeoip) extraPayload['geoip_disable'] = true;\n if (flagKeysToEvaluate) extraPayload['flag_keys_to_evaluate'] = flagKeysToEvaluate;\n const result = await this.getFlags(distinctId, groups, personProperties, groupProperties, extraPayload);\n if (!result.success) return;\n const flagsResponse = result.response;\n if (flagsResponse.errorsWhileComputingFlags) console.error('[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices');\n if (flagsResponse.quotaLimited?.includes(\"feature_flags\")) {\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n return {\n flags: {},\n featureFlags: {},\n featureFlagPayloads: {},\n requestId: flagsResponse?.requestId,\n quotaLimited: flagsResponse.quotaLimited\n };\n }\n return flagsResponse;\n }\n async getSurveysStateless() {\n await this._initPromise;\n if (true === this.disableSurveys) {\n this._logger.info('Loading surveys is disabled.');\n return [];\n }\n const url = `${this.host}/api/surveys/?token=${this.apiKey}`;\n const fetchOptions = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json'\n }\n };\n const response = await this.fetchWithRetry(url, fetchOptions).then((response)=>{\n if (200 !== response.status || !response.json) {\n const msg = `Surveys API could not be loaded: ${response.status}`;\n const error = new Error(msg);\n this._logger.error(error);\n this._events.emit('error', new Error(msg));\n return;\n }\n return response.json();\n }).catch((error)=>{\n this._logger.error('Surveys API could not be loaded', error);\n this._events.emit('error', error);\n });\n const newSurveys = response?.surveys;\n if (newSurveys) this._logger.info('Surveys fetched from API: ', JSON.stringify(newSurveys));\n return newSurveys ?? [];\n }\n get props() {\n if (!this._props) this._props = this.getPersistedProperty(PostHogPersistedProperty.Props);\n return this._props || {};\n }\n set props(val) {\n this._props = val;\n }\n async register(properties) {\n this.wrap(()=>{\n this.props = {\n ...this.props,\n ...properties\n };\n this.setPersistedProperty(PostHogPersistedProperty.Props, this.props);\n });\n }\n async unregister(property) {\n this.wrap(()=>{\n delete this.props[property];\n this.setPersistedProperty(PostHogPersistedProperty.Props, this.props);\n });\n }\n processBeforeEnqueue(message) {\n return message;\n }\n async flushStorage() {}\n enqueue(type, _message, options) {\n this.wrap(()=>{\n if (this.optedOut) return void this._events.emit(type, \"Library is disabled. Not sending event. To re-enable, call posthog.optIn()\");\n let message = this.prepareMessage(type, _message, options);\n message = this.processBeforeEnqueue(message);\n if (null === message) return;\n const queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (queue.length >= this.maxQueueSize) {\n queue.shift();\n this._logger.info('Queue is full, the oldest event is dropped.');\n }\n queue.push({\n message\n });\n this.setPersistedProperty(PostHogPersistedProperty.Queue, queue);\n this._events.emit(type, message);\n if (queue.length >= this.flushAt) this.flushBackground();\n if (this.flushInterval && !this._flushTimer) this._flushTimer = safeSetTimeout(()=>this.flushBackground(), this.flushInterval);\n });\n }\n async sendImmediate(type, _message, options) {\n if (this.disabled) return void this._logger.warn('The client is disabled');\n if (!this._isInitialized) await this._initPromise;\n if (this.optedOut) return void this._events.emit(type, \"Library is disabled. Not sending event. To re-enable, call posthog.optIn()\");\n let message = this.prepareMessage(type, _message, options);\n message = this.processBeforeEnqueue(message);\n if (null === message) return;\n const data = {\n api_key: this.apiKey,\n batch: [\n message\n ],\n sent_at: currentISOTime()\n };\n if (this.historicalMigration) data.historical_migration = true;\n const payload = JSON.stringify(data);\n const url = `${this.host}/batch/`;\n const gzippedPayload = this.disableCompression ? null : await gzipCompress(payload, this.isDebug);\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n ...null !== gzippedPayload && {\n 'Content-Encoding': 'gzip'\n }\n },\n body: gzippedPayload || payload\n };\n try {\n await this.fetchWithRetry(url, fetchOptions);\n } catch (err) {\n this._events.emit('error', err);\n }\n }\n prepareMessage(type, _message, options) {\n const message = {\n ..._message,\n type: type,\n library: this.getLibraryId(),\n library_version: this.getLibraryVersion(),\n timestamp: options?.timestamp ? options?.timestamp : currentISOTime(),\n uuid: options?.uuid ? options.uuid : uuidv7()\n };\n const addGeoipDisableProperty = options?.disableGeoip ?? this.disableGeoip;\n if (addGeoipDisableProperty) {\n if (!message.properties) message.properties = {};\n message['properties']['$geoip_disable'] = true;\n }\n if (message.distinctId) {\n message.distinct_id = message.distinctId;\n delete message.distinctId;\n }\n return message;\n }\n clearFlushTimer() {\n if (this._flushTimer) {\n clearTimeout(this._flushTimer);\n this._flushTimer = void 0;\n }\n }\n flushBackground() {\n this.flush().catch(async (err)=>{\n await logFlushError(err);\n });\n }\n async flush() {\n const nextFlushPromise = allSettled([\n this.flushPromise\n ]).then(()=>this._flush());\n this.flushPromise = nextFlushPromise;\n this.addPendingPromise(nextFlushPromise);\n allSettled([\n nextFlushPromise\n ]).then(()=>{\n if (this.flushPromise === nextFlushPromise) this.flushPromise = null;\n });\n return nextFlushPromise;\n }\n getCustomHeaders() {\n const customUserAgent = this.getCustomUserAgent();\n const headers = {};\n if (customUserAgent && '' !== customUserAgent) headers['User-Agent'] = customUserAgent;\n return headers;\n }\n async _flush() {\n this.clearFlushTimer();\n await this._initPromise;\n let queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (!queue.length) return;\n const sentMessages = [];\n const originalQueueLength = queue.length;\n while(queue.length > 0 && sentMessages.length < originalQueueLength){\n const batchItems = queue.slice(0, this.maxBatchSize);\n const batchMessages = batchItems.map((item)=>item.message);\n const persistQueueChange = async ()=>{\n const refreshedQueue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n const newQueue = refreshedQueue.slice(batchItems.length);\n this.setPersistedProperty(PostHogPersistedProperty.Queue, newQueue);\n queue = newQueue;\n await this.flushStorage();\n };\n const data = {\n api_key: this.apiKey,\n batch: batchMessages,\n sent_at: currentISOTime()\n };\n if (this.historicalMigration) data.historical_migration = true;\n const payload = JSON.stringify(data);\n const url = `${this.host}/batch/`;\n const gzippedPayload = this.disableCompression ? null : await gzipCompress(payload, this.isDebug);\n const fetchOptions = {\n method: 'POST',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n ...null !== gzippedPayload && {\n 'Content-Encoding': 'gzip'\n }\n },\n body: gzippedPayload || payload\n };\n const retryOptions = {\n retryCheck: (err)=>{\n if (isPostHogFetchContentTooLargeError(err)) return false;\n return isPostHogFetchError(err);\n }\n };\n try {\n await this.fetchWithRetry(url, fetchOptions, retryOptions);\n } catch (err) {\n if (isPostHogFetchContentTooLargeError(err) && batchMessages.length > 1) {\n this.maxBatchSize = Math.max(1, Math.floor(batchMessages.length / 2));\n this._logger.warn(`Received 413 when sending batch of size ${batchMessages.length}, reducing batch size to ${this.maxBatchSize}`);\n continue;\n }\n if (!(err instanceof PostHogFetchNetworkError)) await persistQueueChange();\n this._events.emit('error', err);\n throw err;\n }\n await persistQueueChange();\n sentMessages.push(...batchMessages);\n }\n this._events.emit('flush', sentMessages);\n }\n async fetchWithRetry(url, options, retryOptions, requestTimeout) {\n const body = options.body ? options.body : '';\n let reqByteLength = -1;\n try {\n reqByteLength = body instanceof Blob ? body.size : Buffer.byteLength(body, STRING_FORMAT);\n } catch {\n if (body instanceof Blob) reqByteLength = body.size;\n else {\n const encoded = new TextEncoder().encode(body);\n reqByteLength = encoded.length;\n }\n }\n return await retriable(async ()=>{\n const ctrl = new AbortController();\n const timeoutMs = requestTimeout ?? this.requestTimeout;\n const timer = safeSetTimeout(()=>ctrl.abort(), timeoutMs);\n let res = null;\n try {\n res = await this.fetch(url, {\n signal: ctrl.signal,\n ...options\n });\n } catch (e) {\n throw new PostHogFetchNetworkError(e);\n } finally{\n clearTimeout(timer);\n }\n const isNoCors = 'no-cors' === options.mode;\n if (!isNoCors && (res.status < 200 || res.status >= 400)) throw new PostHogFetchHttpError(res, reqByteLength);\n return res;\n }, {\n ...this._retryOptions,\n ...retryOptions\n });\n }\n async _shutdown(shutdownTimeoutMs = 30000) {\n await this._initPromise;\n let hasTimedOut = false;\n this.clearFlushTimer();\n const doShutdown = async ()=>{\n try {\n await this.promiseQueue.join();\n while(true){\n const queue = this.getPersistedProperty(PostHogPersistedProperty.Queue) || [];\n if (0 === queue.length) break;\n await this.flush();\n if (hasTimedOut) break;\n }\n } catch (e) {\n if (!isPostHogFetchError(e)) throw e;\n await logFlushError(e);\n }\n };\n let timeoutHandle;\n try {\n return await Promise.race([\n new Promise((_, reject)=>{\n timeoutHandle = safeSetTimeout(()=>{\n this._logger.error('Timed out while shutting down PostHog');\n hasTimedOut = true;\n reject('Timeout while shutting down PostHog. Some events may not have been sent.');\n }, shutdownTimeoutMs);\n }),\n doShutdown()\n ]);\n } finally{\n clearTimeout(timeoutHandle);\n }\n }\n async shutdown(shutdownTimeoutMs = 30000) {\n if (this.shutdownPromise) this._logger.warn('shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup');\n else this.shutdownPromise = this._shutdown(shutdownTimeoutMs).finally(()=>{\n this.shutdownPromise = null;\n });\n return this.shutdownPromise;\n }\n}\nexport { PostHogCoreStateless, posthog_core_stateless_QuotaLimitedFeature as QuotaLimitedFeature, logFlushError, maybeAdd };\n","let parsedStackResults;\nlet lastKeysCount;\nlet cachedFilenameChunkIds;\nfunction getFilenameToChunkIdMap(stackParser) {\n const chunkIdMap = globalThis._posthogChunkIds;\n if (!chunkIdMap) return;\n const chunkIdKeys = Object.keys(chunkIdMap);\n if (cachedFilenameChunkIds && chunkIdKeys.length === lastKeysCount) return cachedFilenameChunkIds;\n lastKeysCount = chunkIdKeys.length;\n cachedFilenameChunkIds = chunkIdKeys.reduce((acc, stackKey)=>{\n if (!parsedStackResults) parsedStackResults = {};\n const result = parsedStackResults[stackKey];\n if (result) acc[result[0]] = result[1];\n else {\n const parsedStack = stackParser(stackKey);\n for(let i = parsedStack.length - 1; i >= 0; i--){\n const stackFrame = parsedStack[i];\n const filename = stackFrame?.filename;\n const chunkId = chunkIdMap[stackKey];\n if (filename && chunkId) {\n acc[filename] = chunkId;\n parsedStackResults[stackKey] = [\n filename,\n chunkId\n ];\n break;\n }\n }\n }\n return acc;\n }, {});\n return cachedFilenameChunkIds;\n}\nexport { getFilenameToChunkIdMap };\n","import { isArray } from \"../utils/index.mjs\";\nimport { getFilenameToChunkIdMap } from \"./chunk-ids.mjs\";\nconst MAX_CAUSE_RECURSION = 4;\nclass ErrorPropertiesBuilder {\n constructor(coercers, stackParser, modifiers = []){\n this.coercers = coercers;\n this.stackParser = stackParser;\n this.modifiers = modifiers;\n }\n buildFromUnknown(input, hint = {}) {\n const providedMechanism = hint && hint.mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic'\n };\n const coercingContext = this.buildCoercingContext(mechanism, hint, 0);\n const exceptionWithCause = coercingContext.apply(input);\n const parsingContext = this.buildParsingContext(hint);\n const exceptionWithStack = this.parseStacktrace(exceptionWithCause, parsingContext);\n const exceptionList = this.convertToExceptionList(exceptionWithStack, mechanism);\n return {\n $exception_list: exceptionList,\n $exception_level: 'error'\n };\n }\n async modifyFrames(exceptionList) {\n for (const exc of exceptionList)if (exc.stacktrace && exc.stacktrace.frames && isArray(exc.stacktrace.frames)) exc.stacktrace.frames = await this.applyModifiers(exc.stacktrace.frames);\n return exceptionList;\n }\n coerceFallback(ctx) {\n return {\n type: 'Error',\n value: 'Unknown error',\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n parseStacktrace(err, ctx) {\n let cause;\n if (null != err.cause) cause = this.parseStacktrace(err.cause, ctx);\n let stack;\n if ('' != err.stack && null != err.stack) stack = this.applyChunkIds(this.stackParser(err.stack, err.synthetic ? ctx.skipFirstLines : 0), ctx.chunkIdMap);\n return {\n ...err,\n cause,\n stack\n };\n }\n applyChunkIds(frames, chunkIdMap) {\n return frames.map((frame)=>{\n if (frame.filename && chunkIdMap) frame.chunk_id = chunkIdMap[frame.filename];\n return frame;\n });\n }\n applyCoercers(input, ctx) {\n for (const adapter of this.coercers)if (adapter.match(input)) return adapter.coerce(input, ctx);\n return this.coerceFallback(ctx);\n }\n async applyModifiers(frames) {\n let newFrames = frames;\n for (const modifier of this.modifiers)newFrames = await modifier(newFrames);\n return newFrames;\n }\n convertToExceptionList(exceptionWithStack, mechanism) {\n const currentException = {\n type: exceptionWithStack.type,\n value: exceptionWithStack.value,\n mechanism: {\n type: mechanism.type ?? 'generic',\n handled: mechanism.handled ?? true,\n synthetic: exceptionWithStack.synthetic ?? false\n }\n };\n if (exceptionWithStack.stack) currentException.stacktrace = {\n type: 'raw',\n frames: exceptionWithStack.stack\n };\n const exceptionList = [\n currentException\n ];\n if (null != exceptionWithStack.cause) exceptionList.push(...this.convertToExceptionList(exceptionWithStack.cause, {\n ...mechanism,\n handled: true\n }));\n return exceptionList;\n }\n buildParsingContext(hint) {\n const context = {\n chunkIdMap: getFilenameToChunkIdMap(this.stackParser),\n skipFirstLines: hint.skipFirstLines ?? 1\n };\n return context;\n }\n buildCoercingContext(mechanism, hint, depth = 0) {\n const coerce = (input, depth)=>{\n if (!(depth <= MAX_CAUSE_RECURSION)) return;\n {\n const ctx = this.buildCoercingContext(mechanism, hint, depth);\n return this.applyCoercers(input, ctx);\n }\n };\n const context = {\n ...hint,\n syntheticException: 0 == depth ? hint.syntheticException : void 0,\n mechanism,\n apply: (input)=>coerce(input, depth),\n next: (input)=>coerce(input, depth + 1)\n };\n return context;\n }\n}\nexport { ErrorPropertiesBuilder };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nconst FILENAME_MATCH = /^\\s*[-]{4,}$/;\nconst FULL_MATCH = /at (?:async )?(?:(.+?)\\s+\\()?(?:(.+):(\\d+):(\\d+)?|([^)]+))\\)?/;\nconst nodeStackLineParser = (line, platform)=>{\n const lineMatch = line.match(FULL_MATCH);\n if (lineMatch) {\n let object;\n let method;\n let functionName;\n let typeName;\n let methodName;\n if (lineMatch[1]) {\n functionName = lineMatch[1];\n let methodStart = functionName.lastIndexOf('.');\n if ('.' === functionName[methodStart - 1]) methodStart--;\n if (methodStart > 0) {\n object = functionName.slice(0, methodStart);\n method = functionName.slice(methodStart + 1);\n const objectEnd = object.indexOf('.Module');\n if (objectEnd > 0) {\n functionName = functionName.slice(objectEnd + 1);\n object = object.slice(0, objectEnd);\n }\n }\n typeName = void 0;\n }\n if (method) {\n typeName = object;\n methodName = method;\n }\n if ('<anonymous>' === method) {\n methodName = void 0;\n functionName = void 0;\n }\n if (void 0 === functionName) {\n methodName = methodName || UNKNOWN_FUNCTION;\n functionName = typeName ? `${typeName}.${methodName}` : methodName;\n }\n let filename = lineMatch[2]?.startsWith('file://') ? lineMatch[2].slice(7) : lineMatch[2];\n const isNative = 'native' === lineMatch[5];\n if (filename?.match(/\\/[A-Z]:/)) filename = filename.slice(1);\n if (!filename && lineMatch[5] && !isNative) filename = lineMatch[5];\n return {\n filename: filename ? decodeURI(filename) : void 0,\n module: void 0,\n function: functionName,\n lineno: _parseIntOrUndefined(lineMatch[3]),\n colno: _parseIntOrUndefined(lineMatch[4]),\n in_app: filenameIsInApp(filename || '', isNative),\n platform: platform\n };\n }\n if (line.match(FILENAME_MATCH)) return {\n filename: line,\n platform: platform\n };\n};\nfunction filenameIsInApp(filename, isNative = false) {\n const isInternal = isNative || filename && !filename.startsWith('/') && !filename.match(/^[A-Z]:/) && !filename.startsWith('.') && !filename.match(/^[a-zA-Z]([a-zA-Z0-9.\\-+])*:\\/\\//);\n return !isInternal && void 0 !== filename && !filename.includes('node_modules/');\n}\nfunction _parseIntOrUndefined(input) {\n return parseInt(input || '', 10) || void 0;\n}\nexport { nodeStackLineParser };\n","import { UNKNOWN_FUNCTION } from \"./base.mjs\";\nimport { chromeStackLineParser } from \"./chrome.mjs\";\nimport { geckoStackLineParser } from \"./gecko.mjs\";\nimport { winjsStackLineParser } from \"./winjs.mjs\";\nimport { opera10StackLineParser, opera11StackLineParser } from \"./opera.mjs\";\nimport { nodeStackLineParser } from \"./node.mjs\";\nconst WEBPACK_ERROR_REGEXP = /\\(error: (.*)\\)/;\nconst STACKTRACE_FRAME_LIMIT = 50;\nfunction reverseAndStripFrames(stack) {\n if (!stack.length) return [];\n const localStack = Array.from(stack);\n localStack.reverse();\n return localStack.slice(0, STACKTRACE_FRAME_LIMIT).map((frame)=>({\n ...frame,\n filename: frame.filename || getLastStackFrame(localStack).filename,\n function: frame.function || UNKNOWN_FUNCTION\n }));\n}\nfunction getLastStackFrame(arr) {\n return arr[arr.length - 1] || {};\n}\nfunction createDefaultStackParser() {\n return createStackParser(\"web:javascript\", chromeStackLineParser, geckoStackLineParser);\n}\nfunction createStackParser(platform, ...parsers) {\n return (stack, skipFirstLines = 0)=>{\n const frames = [];\n const lines = stack.split('\\n');\n for(let i = skipFirstLines; i < lines.length; i++){\n const line = lines[i];\n if (line.length > 1024) continue;\n const cleanedLine = WEBPACK_ERROR_REGEXP.test(line) ? line.replace(WEBPACK_ERROR_REGEXP, '$1') : line;\n if (!cleanedLine.match(/\\S*Error: /)) {\n for (const parser of parsers){\n const frame = parser(cleanedLine, platform);\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n if (frames.length >= STACKTRACE_FRAME_LIMIT) break;\n }\n }\n return reverseAndStripFrames(frames);\n };\n}\nexport { chromeStackLineParser, createDefaultStackParser, createStackParser, geckoStackLineParser, nodeStackLineParser, opera10StackLineParser, opera11StackLineParser, reverseAndStripFrames, winjsStackLineParser };\n","import { isPlainError } from \"../../utils/index.mjs\";\nclass ErrorCoercer {\n match(err) {\n return isPlainError(err);\n }\n coerce(err, ctx) {\n return {\n type: this.getType(err),\n value: this.getMessage(err, ctx),\n stack: this.getStack(err),\n cause: err.cause ? ctx.next(err.cause) : void 0,\n synthetic: false\n };\n }\n getType(err) {\n return err.name || err.constructor.name;\n }\n getMessage(err, _ctx) {\n const message = err.message;\n if (message.error && 'string' == typeof message.error.message) return String(message.error.message);\n return String(message);\n }\n getStack(err) {\n return err.stacktrace || err.stack || void 0;\n }\n}\nexport { ErrorCoercer };\n","const ERROR_TYPES_PATTERN = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\nclass StringCoercer {\n match(input) {\n return 'string' == typeof input;\n }\n coerce(input, ctx) {\n const [type, value] = this.getInfos(input);\n return {\n type: type ?? 'Error',\n value: value ?? input,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n getInfos(candidate) {\n let type = 'Error';\n let value = candidate;\n const groups = candidate.match(ERROR_TYPES_PATTERN);\n if (groups) {\n type = groups[1];\n value = groups[2];\n }\n return [\n type,\n value\n ];\n }\n}\nexport { StringCoercer };\n","const severityLevels = [\n 'fatal',\n 'error',\n 'warning',\n 'log',\n 'info',\n 'debug'\n];\nexport { severityLevels };\n","function truncate(str, max = 0) {\n if ('string' != typeof str || 0 === max) return str;\n return str.length <= max ? str : `${str.slice(0, max)}...`;\n}\nfunction extractExceptionKeysForMessage(err, maxLength = 40) {\n const keys = Object.keys(err);\n keys.sort();\n if (!keys.length) return '[object has no keys]';\n for(let i = keys.length; i > 0; i--){\n const serialized = keys.slice(0, i).join(', ');\n if (!(serialized.length > maxLength)) {\n if (i === keys.length) return serialized;\n return serialized.length <= maxLength ? serialized : `${serialized.slice(0, maxLength)}...`;\n }\n }\n return '';\n}\nexport { extractExceptionKeysForMessage, truncate };\n","import { isEmptyString, isError, isEvent, isString } from \"../../utils/index.mjs\";\nimport { severityLevels } from \"../types.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass ObjectCoercer {\n match(candidate) {\n return 'object' == typeof candidate && null !== candidate;\n }\n coerce(candidate, ctx) {\n const errorProperty = this.getErrorPropertyFromObject(candidate);\n if (errorProperty) return ctx.apply(errorProperty);\n return {\n type: this.getType(candidate),\n value: this.getValue(candidate),\n stack: ctx.syntheticException?.stack,\n level: this.isSeverityLevel(candidate.level) ? candidate.level : 'error',\n synthetic: true\n };\n }\n getType(err) {\n return isEvent(err) ? err.constructor.name : 'Error';\n }\n getValue(err) {\n if ('name' in err && 'string' == typeof err.name) {\n let message = `'${err.name}' captured as exception`;\n if ('message' in err && 'string' == typeof err.message) message += ` with message: '${err.message}'`;\n return message;\n }\n if ('message' in err && 'string' == typeof err.message) return err.message;\n const className = this.getObjectClassName(err);\n const keys = extractExceptionKeysForMessage(err);\n return `${className && 'Object' !== className ? `'${className}'` : 'Object'} captured as exception with keys: ${keys}`;\n }\n isSeverityLevel(x) {\n return isString(x) && !isEmptyString(x) && severityLevels.indexOf(x) >= 0;\n }\n getErrorPropertyFromObject(obj) {\n for(const prop in obj)if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (isError(value)) return value;\n }\n }\n getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : void 0;\n } catch (e) {\n return;\n }\n }\n}\nexport { ObjectCoercer };\n","import { isEvent } from \"../../utils/index.mjs\";\nimport { extractExceptionKeysForMessage } from \"./utils.mjs\";\nclass EventCoercer {\n match(err) {\n return isEvent(err);\n }\n coerce(evt, ctx) {\n const constructorName = evt.constructor.name;\n return {\n type: constructorName,\n value: `${constructorName} captured as exception with keys: ${extractExceptionKeysForMessage(evt)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { EventCoercer };\n","import { isPrimitive } from \"../../utils/index.mjs\";\nclass PrimitiveCoercer {\n match(candidate) {\n return isPrimitive(candidate);\n }\n coerce(value, ctx) {\n return {\n type: 'Error',\n value: `Primitive value captured as exception: ${String(value)}`,\n stack: ctx.syntheticException?.stack,\n synthetic: true\n };\n }\n}\nexport { PrimitiveCoercer };\n","class ReduceableCache {\n constructor(_maxSize){\n this._maxSize = _maxSize;\n this._cache = new Map();\n }\n get(key) {\n const value = this._cache.get(key);\n if (void 0 === value) return;\n this._cache.delete(key);\n this._cache.set(key, value);\n return value;\n }\n set(key, value) {\n this._cache.set(key, value);\n }\n reduce() {\n while(this._cache.size >= this._maxSize){\n const value = this._cache.keys().next().value;\n if (value) this._cache.delete(value);\n }\n }\n}\nexport { ReduceableCache };\n","import { ErrorTracking } from \"@posthog/core\";\nimport { createReadStream } from \"node:fs\";\nimport { createInterface } from \"node:readline\";\nconst LRU_FILE_CONTENTS_CACHE = new ErrorTracking.ReduceableCache(25);\nconst LRU_FILE_CONTENTS_FS_READ_FAILED = new ErrorTracking.ReduceableCache(20);\nconst DEFAULT_LINES_OF_CONTEXT = 7;\nconst MAX_CONTEXTLINES_COLNO = 1000;\nconst MAX_CONTEXTLINES_LINENO = 10000;\nasync function addSourceContext(frames) {\n const filesToLines = {};\n for(let i = frames.length - 1; i >= 0; i--){\n const frame = frames[i];\n const filename = frame?.filename;\n if (!frame || 'string' != typeof filename || 'number' != typeof frame.lineno || shouldSkipContextLinesForFile(filename) || shouldSkipContextLinesForFrame(frame)) continue;\n const filesToLinesOutput = filesToLines[filename];\n if (!filesToLinesOutput) filesToLines[filename] = [];\n filesToLines[filename].push(frame.lineno);\n }\n const files = Object.keys(filesToLines);\n if (0 == files.length) return frames;\n const readlinePromises = [];\n for (const file of files){\n if (LRU_FILE_CONTENTS_FS_READ_FAILED.get(file)) continue;\n const filesToLineRanges = filesToLines[file];\n if (!filesToLineRanges) continue;\n filesToLineRanges.sort((a, b)=>a - b);\n const ranges = makeLineReaderRanges(filesToLineRanges);\n if (ranges.every((r)=>rangeExistsInContentCache(file, r))) continue;\n const cache = emplace(LRU_FILE_CONTENTS_CACHE, file, {});\n readlinePromises.push(getContextLinesFromFile(file, ranges, cache));\n }\n await Promise.all(readlinePromises).catch(()=>{});\n if (frames && frames.length > 0) addSourceContextToFrames(frames, LRU_FILE_CONTENTS_CACHE);\n LRU_FILE_CONTENTS_CACHE.reduce();\n return frames;\n}\nfunction getContextLinesFromFile(path, ranges, output) {\n return new Promise((resolve)=>{\n const stream = createReadStream(path);\n const lineReaded = createInterface({\n input: stream\n });\n function destroyStreamAndResolve() {\n stream.destroy();\n resolve();\n }\n let lineNumber = 0;\n let currentRangeIndex = 0;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) return void destroyStreamAndResolve();\n let rangeStart = range[0];\n let rangeEnd = range[1];\n function onStreamError() {\n LRU_FILE_CONTENTS_FS_READ_FAILED.set(path, 1);\n lineReaded.close();\n lineReaded.removeAllListeners();\n destroyStreamAndResolve();\n }\n stream.on('error', onStreamError);\n lineReaded.on('error', onStreamError);\n lineReaded.on('close', destroyStreamAndResolve);\n lineReaded.on('line', (line)=>{\n lineNumber++;\n if (lineNumber < rangeStart) return;\n output[lineNumber] = snipLine(line, 0);\n if (lineNumber >= rangeEnd) {\n if (currentRangeIndex === ranges.length - 1) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n currentRangeIndex++;\n const range = ranges[currentRangeIndex];\n if (void 0 === range) {\n lineReaded.close();\n lineReaded.removeAllListeners();\n return;\n }\n rangeStart = range[0];\n rangeEnd = range[1];\n }\n });\n });\n}\nfunction addSourceContextToFrames(frames, cache) {\n for (const frame of frames)if (frame.filename && void 0 === frame.context_line && 'number' == typeof frame.lineno) {\n const contents = cache.get(frame.filename);\n if (void 0 === contents) continue;\n addContextToFrame(frame.lineno, frame, contents);\n }\n}\nfunction addContextToFrame(lineno, frame, contents) {\n if (void 0 === frame.lineno || void 0 === contents) return;\n frame.pre_context = [];\n for(let i = makeRangeStart(lineno); i < lineno; i++){\n const line = contents[i];\n if (void 0 === line) return void clearLineContext(frame);\n frame.pre_context.push(line);\n }\n if (void 0 === contents[lineno]) return void clearLineContext(frame);\n frame.context_line = contents[lineno];\n const end = makeRangeEnd(lineno);\n frame.post_context = [];\n for(let i = lineno + 1; i <= end; i++){\n const line = contents[i];\n if (void 0 === line) break;\n frame.post_context.push(line);\n }\n}\nfunction clearLineContext(frame) {\n delete frame.pre_context;\n delete frame.context_line;\n delete frame.post_context;\n}\nfunction shouldSkipContextLinesForFile(path) {\n return path.startsWith('node:') || path.endsWith('.min.js') || path.endsWith('.min.cjs') || path.endsWith('.min.mjs') || path.startsWith('data:');\n}\nfunction shouldSkipContextLinesForFrame(frame) {\n if (void 0 !== frame.lineno && frame.lineno > MAX_CONTEXTLINES_LINENO) return true;\n if (void 0 !== frame.colno && frame.colno > MAX_CONTEXTLINES_COLNO) return true;\n return false;\n}\nfunction rangeExistsInContentCache(file, range) {\n const contents = LRU_FILE_CONTENTS_CACHE.get(file);\n if (void 0 === contents) return false;\n for(let i = range[0]; i <= range[1]; i++)if (void 0 === contents[i]) return false;\n return true;\n}\nfunction makeLineReaderRanges(lines) {\n if (!lines.length) return [];\n let i = 0;\n const line = lines[0];\n if ('number' != typeof line) return [];\n let current = makeContextRange(line);\n const out = [];\n while(true){\n if (i === lines.length - 1) {\n out.push(current);\n break;\n }\n const next = lines[i + 1];\n if ('number' != typeof next) break;\n if (next <= current[1]) current[1] = next + DEFAULT_LINES_OF_CONTEXT;\n else {\n out.push(current);\n current = makeContextRange(next);\n }\n i++;\n }\n return out;\n}\nfunction makeContextRange(line) {\n return [\n makeRangeStart(line),\n makeRangeEnd(line)\n ];\n}\nfunction makeRangeStart(line) {\n return Math.max(1, line - DEFAULT_LINES_OF_CONTEXT);\n}\nfunction makeRangeEnd(line) {\n return line + DEFAULT_LINES_OF_CONTEXT;\n}\nfunction emplace(map, key, contents) {\n const value = map.get(key);\n if (void 0 === value) {\n map.set(key, contents);\n return contents;\n }\n return value;\n}\nfunction snipLine(line, colno) {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) return newLine;\n if (colno > lineLength) colno = lineLength;\n let start = Math.max(colno - 60, 0);\n if (start < 5) start = 0;\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) end = lineLength;\n if (end === lineLength) start = Math.max(end - 140, 0);\n newLine = newLine.slice(start, end);\n if (start > 0) newLine = `...${newLine}`;\n if (end < lineLength) newLine += '...';\n return newLine;\n}\nexport { MAX_CONTEXTLINES_COLNO, MAX_CONTEXTLINES_LINENO, addSourceContext };\n","function makeUncaughtExceptionHandler(captureFn, onFatalFn) {\n let calledFatalError = false;\n return Object.assign((error)=>{\n const userProvidedListenersCount = global.process.listeners('uncaughtException').filter((listener)=>'domainUncaughtExceptionClear' !== listener.name && true !== listener._posthogErrorHandler).length;\n const processWouldExit = 0 === userProvidedListenersCount;\n captureFn(error, {\n mechanism: {\n type: 'onuncaughtexception',\n handled: false\n }\n });\n if (!calledFatalError && processWouldExit) {\n calledFatalError = true;\n onFatalFn(error);\n }\n }, {\n _posthogErrorHandler: true\n });\n}\nfunction addUncaughtExceptionListener(captureFn, onFatalFn) {\n globalThis.process?.on('uncaughtException', makeUncaughtExceptionHandler(captureFn, onFatalFn));\n}\nfunction addUnhandledRejectionListener(captureFn) {\n globalThis.process?.on('unhandledRejection', (reason)=>captureFn(reason, {\n mechanism: {\n type: 'onunhandledrejection',\n handled: false\n }\n }));\n}\nexport { addUncaughtExceptionListener, addUnhandledRejectionListener };\n","import { addUncaughtExceptionListener, addUnhandledRejectionListener } from \"./autocapture.mjs\";\nimport { BucketedRateLimiter, isObject, uuidv7 } from \"@posthog/core\";\nconst SHUTDOWN_TIMEOUT = 2000;\nclass ErrorTracking {\n constructor(client, options, _logger){\n this.client = client;\n this._exceptionAutocaptureEnabled = options.enableExceptionAutocapture || false;\n this._logger = _logger;\n this._rateLimiter = new BucketedRateLimiter({\n refillRate: 1,\n bucketSize: 10,\n refillInterval: 10000,\n _logger: this._logger\n });\n this.startAutocaptureIfEnabled();\n }\n static isPreviouslyCapturedError(x) {\n return isObject(x) && '__posthog_previously_captured_error' in x && true === x.__posthog_previously_captured_error;\n }\n static async buildEventMessage(error, hint, distinctId, additionalProperties) {\n const properties = {\n ...additionalProperties\n };\n if (!distinctId) properties.$process_person_profile = false;\n const exceptionProperties = this.errorPropertiesBuilder.buildFromUnknown(error, hint);\n exceptionProperties.$exception_list = await this.errorPropertiesBuilder.modifyFrames(exceptionProperties.$exception_list);\n return {\n event: '$exception',\n distinctId: distinctId || uuidv7(),\n properties: {\n ...exceptionProperties,\n ...properties\n },\n _originatedFromCaptureException: true\n };\n }\n startAutocaptureIfEnabled() {\n if (this.isEnabled()) {\n addUncaughtExceptionListener(this.onException.bind(this), this.onFatalError.bind(this));\n addUnhandledRejectionListener(this.onException.bind(this));\n }\n }\n onException(exception, hint) {\n this.client.addPendingPromise((async ()=>{\n if (!ErrorTracking.isPreviouslyCapturedError(exception)) {\n const eventMessage = await ErrorTracking.buildEventMessage(exception, hint);\n const exceptionProperties = eventMessage.properties;\n const exceptionType = exceptionProperties?.$exception_list[0]?.type ?? 'Exception';\n const isRateLimited = this._rateLimiter.consumeRateLimit(exceptionType);\n if (isRateLimited) return void this._logger.info('Skipping exception capture because of client rate limiting.', {\n exception: exceptionType\n });\n return this.client.capture(eventMessage);\n }\n })());\n }\n async onFatalError(exception) {\n console.error(exception);\n await this.client.shutdown(SHUTDOWN_TIMEOUT);\n process.exit(1);\n }\n isEnabled() {\n return !this.client.isDisabled && this._exceptionAutocaptureEnabled;\n }\n shutdown() {\n this._rateLimiter.stop();\n }\n}\nexport { ErrorTracking as default };\n","const version = '5.28.5';\nexport { version };\n","const FeatureFlagError = {\n ERRORS_WHILE_COMPUTING: 'errors_while_computing_flags',\n FLAG_MISSING: 'flag_missing',\n QUOTA_LIMITED: 'quota_limited',\n UNKNOWN_ERROR: 'unknown_error'\n};\nexport { FeatureFlagError };\n","async function hashSHA1(text) {\n const subtle = globalThis.crypto?.subtle;\n if (!subtle) throw new Error('SubtleCrypto API not available');\n const hashBuffer = await subtle.digest('SHA-1', new TextEncoder().encode(text));\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((byte)=>byte.toString(16).padStart(2, '0')).join('');\n}\nexport { hashSHA1 };\n","import { safeSetTimeout } from \"@posthog/core\";\nimport { hashSHA1 } from \"./crypto.mjs\";\nconst SIXTY_SECONDS = 60000;\nconst LONG_SCALE = 0xfffffffffffffff;\nconst NULL_VALUES_ALLOWED_OPERATORS = [\n 'is_not'\n];\nclass ClientError extends Error {\n constructor(message){\n super();\n Error.captureStackTrace(this, this.constructor);\n this.name = 'ClientError';\n this.message = message;\n Object.setPrototypeOf(this, ClientError.prototype);\n }\n}\nclass InconclusiveMatchError extends Error {\n constructor(message){\n super(message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n Object.setPrototypeOf(this, InconclusiveMatchError.prototype);\n }\n}\nclass RequiresServerEvaluation extends Error {\n constructor(message){\n super(message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, this.constructor);\n Object.setPrototypeOf(this, RequiresServerEvaluation.prototype);\n }\n}\nclass FeatureFlagsPoller {\n constructor({ pollingInterval, personalApiKey, projectApiKey, timeout, host, customHeaders, ...options }){\n this.debugMode = false;\n this.shouldBeginExponentialBackoff = false;\n this.backOffCount = 0;\n this.pollingInterval = pollingInterval;\n this.personalApiKey = personalApiKey;\n this.featureFlags = [];\n this.featureFlagsByKey = {};\n this.groupTypeMapping = {};\n this.cohorts = {};\n this.loadedSuccessfullyOnce = false;\n this.timeout = timeout;\n this.projectApiKey = projectApiKey;\n this.host = host;\n this.poller = void 0;\n this.fetch = options.fetch || fetch;\n this.onError = options.onError;\n this.customHeaders = customHeaders;\n this.onLoad = options.onLoad;\n this.cacheProvider = options.cacheProvider;\n this.strictLocalEvaluation = options.strictLocalEvaluation ?? false;\n this.loadFeatureFlags();\n }\n debug(enabled = true) {\n this.debugMode = enabled;\n }\n logMsgIfDebug(fn) {\n if (this.debugMode) fn();\n }\n createEvaluationContext(distinctId, groups = {}, personProperties = {}, groupProperties = {}, evaluationCache = {}) {\n return {\n distinctId,\n groups,\n personProperties,\n groupProperties,\n evaluationCache\n };\n }\n async getFeatureFlag(key, distinctId, groups = {}, personProperties = {}, groupProperties = {}) {\n await this.loadFeatureFlags();\n let response;\n let featureFlag;\n if (!this.loadedSuccessfullyOnce) return response;\n featureFlag = this.featureFlagsByKey[key];\n if (void 0 !== featureFlag) {\n const evaluationContext = this.createEvaluationContext(distinctId, groups, personProperties, groupProperties);\n try {\n const result = await this.computeFlagAndPayloadLocally(featureFlag, evaluationContext);\n response = result.value;\n this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${key} -> ${response}`));\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${key}: ${e.message}`));\n else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${key}: ${e}`));\n }\n }\n return response;\n }\n async getAllFlagsAndPayloads(evaluationContext, flagKeysToExplicitlyEvaluate) {\n await this.loadFeatureFlags();\n const response = {};\n const payloads = {};\n let fallbackToFlags = 0 == this.featureFlags.length;\n const flagsToEvaluate = flagKeysToExplicitlyEvaluate ? flagKeysToExplicitlyEvaluate.map((key)=>this.featureFlagsByKey[key]).filter(Boolean) : this.featureFlags;\n const sharedEvaluationContext = {\n ...evaluationContext,\n evaluationCache: evaluationContext.evaluationCache ?? {}\n };\n await Promise.all(flagsToEvaluate.map(async (flag)=>{\n try {\n const { value: matchValue, payload: matchPayload } = await this.computeFlagAndPayloadLocally(flag, sharedEvaluationContext);\n response[flag.key] = matchValue;\n if (matchPayload) payloads[flag.key] = matchPayload;\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this.logMsgIfDebug(()=>console.debug(`${e.name} when computing flag locally: ${flag.key}: ${e.message}`));\n else if (e instanceof Error) this.onError?.(new Error(`Error computing flag locally: ${flag.key}: ${e}`));\n fallbackToFlags = true;\n }\n }));\n return {\n response,\n payloads,\n fallbackToFlags\n };\n }\n async computeFlagAndPayloadLocally(flag, evaluationContext, options = {}) {\n const { matchValue, skipLoadCheck = false } = options;\n if (!skipLoadCheck) await this.loadFeatureFlags();\n if (!this.loadedSuccessfullyOnce) return {\n value: false,\n payload: null\n };\n let flagValue;\n flagValue = void 0 !== matchValue ? matchValue : await this.computeFlagValueLocally(flag, evaluationContext);\n const payload = this.getFeatureFlagPayload(flag.key, flagValue);\n return {\n value: flagValue,\n payload\n };\n }\n async computeFlagValueLocally(flag, evaluationContext) {\n const { distinctId, groups, personProperties, groupProperties } = evaluationContext;\n if (flag.ensure_experience_continuity) throw new InconclusiveMatchError('Flag has experience continuity enabled');\n if (!flag.active) return false;\n const flagFilters = flag.filters || {};\n const aggregation_group_type_index = flagFilters.aggregation_group_type_index;\n if (void 0 != aggregation_group_type_index) {\n const groupName = this.groupTypeMapping[String(aggregation_group_type_index)];\n if (!groupName) {\n this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${aggregation_group_type_index} for feature flag ${flag.key}`));\n throw new InconclusiveMatchError('Flag has unknown group type index');\n }\n if (!(groupName in groups)) {\n this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${flag.key} without group names passed in`));\n return false;\n }\n if ('device_id' === flag.bucketing_identifier && (personProperties?.$device_id === void 0 || personProperties?.$device_id === null || personProperties?.$device_id === '')) this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${flag.key}`));\n const focusedGroupProperties = groupProperties[groupName];\n return await this.matchFeatureFlagProperties(flag, groups[groupName], focusedGroupProperties, evaluationContext);\n }\n {\n const bucketingValue = this.getBucketingValueForFlag(flag, distinctId, personProperties);\n if (void 0 === bucketingValue) {\n this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${flag.key} without $device_id, falling back to server evaluation`));\n throw new InconclusiveMatchError(`Can't compute feature flag: ${flag.key} without $device_id`);\n }\n return await this.matchFeatureFlagProperties(flag, bucketingValue, personProperties, evaluationContext);\n }\n }\n getBucketingValueForFlag(flag, distinctId, properties) {\n if (flag.filters?.aggregation_group_type_index != void 0) return distinctId;\n if ('device_id' === flag.bucketing_identifier) {\n const deviceId = properties?.$device_id;\n if (null == deviceId || '' === deviceId) return;\n return deviceId;\n }\n return distinctId;\n }\n getFeatureFlagPayload(key, flagValue) {\n let payload = null;\n if (false !== flagValue && null != flagValue) {\n if ('boolean' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue.toString()] || null;\n else if ('string' == typeof flagValue) payload = this.featureFlagsByKey?.[key]?.filters?.payloads?.[flagValue] || null;\n if (null != payload) {\n if ('object' == typeof payload) return payload;\n if ('string' == typeof payload) try {\n return JSON.parse(payload);\n } catch {}\n return payload;\n }\n }\n return null;\n }\n async evaluateFlagDependency(property, properties, evaluationContext) {\n const { evaluationCache } = evaluationContext;\n const targetFlagKey = property.key;\n if (!this.featureFlagsByKey) throw new InconclusiveMatchError('Feature flags not available for dependency evaluation');\n if (!('dependency_chain' in property)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' is missing required 'dependency_chain' field`);\n const dependencyChain = property.dependency_chain;\n if (!Array.isArray(dependencyChain)) throw new InconclusiveMatchError(`Flag dependency property for '${targetFlagKey}' has an invalid 'dependency_chain' (expected array, got ${typeof dependencyChain})`);\n if (0 === dependencyChain.length) throw new InconclusiveMatchError(`Circular dependency detected for flag '${targetFlagKey}' (empty dependency chain)`);\n for (const depFlagKey of dependencyChain){\n if (!(depFlagKey in evaluationCache)) {\n const depFlag = this.featureFlagsByKey[depFlagKey];\n if (depFlag) if (depFlag.active) try {\n const depResult = await this.computeFlagValueLocally(depFlag, evaluationContext);\n evaluationCache[depFlagKey] = depResult;\n } catch (error) {\n throw new InconclusiveMatchError(`Error evaluating flag dependency '${depFlagKey}' for flag '${targetFlagKey}': ${error}`);\n }\n else evaluationCache[depFlagKey] = false;\n else throw new InconclusiveMatchError(`Missing flag dependency '${depFlagKey}' for flag '${targetFlagKey}'`);\n }\n const cachedResult = evaluationCache[depFlagKey];\n if (null == cachedResult) throw new InconclusiveMatchError(`Dependency '${depFlagKey}' could not be evaluated`);\n }\n const targetFlagValue = evaluationCache[targetFlagKey];\n return this.flagEvaluatesToExpectedValue(property.value, targetFlagValue);\n }\n flagEvaluatesToExpectedValue(expectedValue, flagValue) {\n if ('boolean' == typeof expectedValue) return expectedValue === flagValue || 'string' == typeof flagValue && '' !== flagValue && true === expectedValue;\n if ('string' == typeof expectedValue) return flagValue === expectedValue;\n return false;\n }\n async matchFeatureFlagProperties(flag, bucketingValue, properties, evaluationContext) {\n const flagFilters = flag.filters || {};\n const flagConditions = flagFilters.groups || [];\n let isInconclusive = false;\n let result;\n for (const condition of flagConditions)try {\n if (await this.isConditionMatch(flag, bucketingValue, condition, properties, evaluationContext)) {\n const variantOverride = condition.variant;\n const flagVariants = flagFilters.multivariate?.variants || [];\n result = variantOverride && flagVariants.some((variant)=>variant.key === variantOverride) ? variantOverride : await this.getMatchingVariant(flag, bucketingValue) || true;\n break;\n }\n } catch (e) {\n if (e instanceof RequiresServerEvaluation) throw e;\n if (e instanceof InconclusiveMatchError) isInconclusive = true;\n else throw e;\n }\n if (void 0 !== result) return result;\n if (isInconclusive) throw new InconclusiveMatchError(\"Can't determine if feature flag is enabled or not with given properties\");\n return false;\n }\n async isConditionMatch(flag, bucketingValue, condition, properties, evaluationContext) {\n const rolloutPercentage = condition.rollout_percentage;\n const warnFunction = (msg)=>{\n this.logMsgIfDebug(()=>console.warn(msg));\n };\n if ((condition.properties || []).length > 0) {\n for (const prop of condition.properties){\n const propertyType = prop.type;\n let matches = false;\n matches = 'cohort' === propertyType ? matchCohort(prop, properties, this.cohorts, this.debugMode) : 'flag' === propertyType ? await this.evaluateFlagDependency(prop, properties, evaluationContext) : matchProperty(prop, properties, warnFunction);\n if (!matches) return false;\n }\n if (void 0 == rolloutPercentage) return true;\n }\n if (void 0 != rolloutPercentage && await _hash(flag.key, bucketingValue) > rolloutPercentage / 100.0) return false;\n return true;\n }\n async getMatchingVariant(flag, bucketingValue) {\n const hashValue = await _hash(flag.key, bucketingValue, 'variant');\n const matchingVariant = this.variantLookupTable(flag).find((variant)=>hashValue >= variant.valueMin && hashValue < variant.valueMax);\n if (matchingVariant) return matchingVariant.key;\n }\n variantLookupTable(flag) {\n const lookupTable = [];\n let valueMin = 0;\n let valueMax = 0;\n const flagFilters = flag.filters || {};\n const multivariates = flagFilters.multivariate?.variants || [];\n multivariates.forEach((variant)=>{\n valueMax = valueMin + variant.rollout_percentage / 100.0;\n lookupTable.push({\n valueMin,\n valueMax,\n key: variant.key\n });\n valueMin = valueMax;\n });\n return lookupTable;\n }\n updateFlagState(flagData) {\n this.featureFlags = flagData.flags;\n this.featureFlagsByKey = flagData.flags.reduce((acc, curr)=>(acc[curr.key] = curr, acc), {});\n this.groupTypeMapping = flagData.groupTypeMapping;\n this.cohorts = flagData.cohorts;\n this.loadedSuccessfullyOnce = true;\n }\n warnAboutExperienceContinuityFlags(flags) {\n if (this.strictLocalEvaluation) return;\n const experienceContinuityFlags = flags.filter((f)=>f.ensure_experience_continuity);\n if (experienceContinuityFlags.length > 0) console.warn(`[PostHog] You are using local evaluation but ${experienceContinuityFlags.length} flag(s) have experience continuity enabled: ${experienceContinuityFlags.map((f)=>f.key).join(', ')}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`);\n }\n async loadFromCache(debugMessage) {\n if (!this.cacheProvider) return false;\n try {\n const cached = await this.cacheProvider.getFlagDefinitions();\n if (cached) {\n this.updateFlagState(cached);\n this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${debugMessage} (${cached.flags.length} flags)`));\n this.onLoad?.(this.featureFlags.length);\n this.warnAboutExperienceContinuityFlags(cached.flags);\n return true;\n }\n return false;\n } catch (err) {\n this.onError?.(new Error(`Failed to load from cache: ${err}`));\n return false;\n }\n }\n async loadFeatureFlags(forceReload = false) {\n if (this.loadedSuccessfullyOnce && !forceReload) return;\n if (!forceReload && this.nextFetchAllowedAt && Date.now() < this.nextFetchAllowedAt) return void this.logMsgIfDebug(()=>console.debug('[FEATURE FLAGS] Skipping fetch, in backoff period'));\n if (!this.loadingPromise) this.loadingPromise = this._loadFeatureFlags().catch((err)=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${err}`))).finally(()=>{\n this.loadingPromise = void 0;\n });\n return this.loadingPromise;\n }\n isLocalEvaluationReady() {\n return (this.loadedSuccessfullyOnce ?? false) && (this.featureFlags?.length ?? 0) > 0;\n }\n getFlagDefinitionsLoadedAt() {\n return this.flagDefinitionsLoadedAt;\n }\n getPollingInterval() {\n if (!this.shouldBeginExponentialBackoff) return this.pollingInterval;\n return Math.min(SIXTY_SECONDS, this.pollingInterval * 2 ** this.backOffCount);\n }\n beginBackoff() {\n this.shouldBeginExponentialBackoff = true;\n this.backOffCount += 1;\n this.nextFetchAllowedAt = Date.now() + this.getPollingInterval();\n }\n clearBackoff() {\n this.shouldBeginExponentialBackoff = false;\n this.backOffCount = 0;\n this.nextFetchAllowedAt = void 0;\n }\n async _loadFeatureFlags() {\n if (this.poller) {\n clearTimeout(this.poller);\n this.poller = void 0;\n }\n this.poller = setTimeout(()=>this.loadFeatureFlags(true), this.getPollingInterval());\n try {\n let shouldFetch = true;\n if (this.cacheProvider) try {\n shouldFetch = await this.cacheProvider.shouldFetchFlagDefinitions();\n } catch (err) {\n this.onError?.(new Error(`Error in shouldFetchFlagDefinitions: ${err}`));\n }\n if (!shouldFetch) {\n const loaded = await this.loadFromCache('Loaded flags from cache (skipped fetch)');\n if (loaded) return;\n if (this.loadedSuccessfullyOnce) return;\n }\n const res = await this._requestFeatureFlagDefinitions();\n if (!res) return;\n switch(res.status){\n case 304:\n this.logMsgIfDebug(()=>console.debug('[FEATURE FLAGS] Flags not modified (304), using cached data'));\n this.flagsEtag = res.headers?.get('ETag') ?? this.flagsEtag;\n this.loadedSuccessfullyOnce = true;\n this.clearBackoff();\n return;\n case 401:\n this.beginBackoff();\n throw new ClientError(`Your project key or personal API key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);\n case 402:\n console.warn('[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts');\n this.featureFlags = [];\n this.featureFlagsByKey = {};\n this.groupTypeMapping = {};\n this.cohorts = {};\n return;\n case 403:\n this.beginBackoff();\n throw new ClientError(`Your personal API key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct personal and Project API key pair? More information: https://posthog.com/docs/api/overview`);\n case 429:\n this.beginBackoff();\n throw new ClientError(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);\n case 200:\n {\n const responseJson = await res.json() ?? {};\n if (!('flags' in responseJson)) return void this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(responseJson)}`));\n this.flagsEtag = res.headers?.get('ETag') ?? void 0;\n const flagData = {\n flags: responseJson.flags ?? [],\n groupTypeMapping: responseJson.group_type_mapping || {},\n cohorts: responseJson.cohorts || {}\n };\n this.updateFlagState(flagData);\n this.flagDefinitionsLoadedAt = Date.now();\n this.clearBackoff();\n if (this.cacheProvider && shouldFetch) try {\n await this.cacheProvider.onFlagDefinitionsReceived(flagData);\n } catch (err) {\n this.onError?.(new Error(`Failed to store in cache: ${err}`));\n }\n this.onLoad?.(this.featureFlags.length);\n this.warnAboutExperienceContinuityFlags(flagData.flags);\n break;\n }\n default:\n return;\n }\n } catch (err) {\n if (err instanceof ClientError) this.onError?.(err);\n }\n }\n getPersonalApiKeyRequestOptions(method = 'GET', etag) {\n const headers = {\n ...this.customHeaders,\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.personalApiKey}`\n };\n if (etag) headers['If-None-Match'] = etag;\n return {\n method,\n headers\n };\n }\n _requestFeatureFlagDefinitions() {\n const url = `${this.host}/api/feature_flag/local_evaluation?token=${this.projectApiKey}&send_cohorts`;\n const options = this.getPersonalApiKeyRequestOptions('GET', this.flagsEtag);\n let abortTimeout = null;\n if (this.timeout && 'number' == typeof this.timeout) {\n const controller = new AbortController();\n abortTimeout = safeSetTimeout(()=>{\n controller.abort();\n }, this.timeout);\n options.signal = controller.signal;\n }\n try {\n const fetch1 = this.fetch;\n return fetch1(url, options);\n } finally{\n clearTimeout(abortTimeout);\n }\n }\n async stopPoller(timeoutMs = 30000) {\n clearTimeout(this.poller);\n if (this.cacheProvider) try {\n const shutdownResult = this.cacheProvider.shutdown();\n if (shutdownResult instanceof Promise) await Promise.race([\n shutdownResult,\n new Promise((_, reject)=>setTimeout(()=>reject(new Error(`Cache shutdown timeout after ${timeoutMs}ms`)), timeoutMs))\n ]);\n } catch (err) {\n this.onError?.(new Error(`Error during cache shutdown: ${err}`));\n }\n }\n}\nasync function _hash(key, bucketingValue, salt = '') {\n const hashString = await hashSHA1(`${key}.${bucketingValue}${salt}`);\n return parseInt(hashString.slice(0, 15), 16) / LONG_SCALE;\n}\nfunction matchProperty(property, propertyValues, warnFunction) {\n const key = property.key;\n const value = property.value;\n const operator = property.operator || 'exact';\n if (key in propertyValues) {\n if ('is_not_set' === operator) throw new InconclusiveMatchError(\"Operator is_not_set is not supported\");\n } else throw new InconclusiveMatchError(`Property ${key} not found in propertyValues`);\n const overrideValue = propertyValues[key];\n if (null == overrideValue && !NULL_VALUES_ALLOWED_OPERATORS.includes(operator)) {\n if (warnFunction) warnFunction(`Property ${key} cannot have a value of null/undefined with the ${operator} operator`);\n return false;\n }\n function computeExactMatch(value, overrideValue) {\n if (Array.isArray(value)) return value.map((val)=>String(val).toLowerCase()).includes(String(overrideValue).toLowerCase());\n return String(value).toLowerCase() === String(overrideValue).toLowerCase();\n }\n function compare(lhs, rhs, operator) {\n if ('gt' === operator) return lhs > rhs;\n if ('gte' === operator) return lhs >= rhs;\n if ('lt' === operator) return lhs < rhs;\n if ('lte' === operator) return lhs <= rhs;\n throw new Error(`Invalid operator: ${operator}`);\n }\n switch(operator){\n case 'exact':\n return computeExactMatch(value, overrideValue);\n case 'is_not':\n return !computeExactMatch(value, overrideValue);\n case 'is_set':\n return key in propertyValues;\n case 'icontains':\n return String(overrideValue).toLowerCase().includes(String(value).toLowerCase());\n case 'not_icontains':\n return !String(overrideValue).toLowerCase().includes(String(value).toLowerCase());\n case 'regex':\n return isValidRegex(String(value)) && null !== String(overrideValue).match(String(value));\n case 'not_regex':\n return isValidRegex(String(value)) && null === String(overrideValue).match(String(value));\n case 'gt':\n case 'gte':\n case 'lt':\n case 'lte':\n {\n let parsedValue = 'number' == typeof value ? value : null;\n if ('string' == typeof value) try {\n parsedValue = parseFloat(value);\n } catch (err) {}\n if (null == parsedValue || null == overrideValue) return compare(String(overrideValue), String(value), operator);\n if ('string' == typeof overrideValue) return compare(overrideValue, String(value), operator);\n return compare(overrideValue, parsedValue, operator);\n }\n case 'is_date_after':\n case 'is_date_before':\n {\n if ('boolean' == typeof value) throw new InconclusiveMatchError(\"Date operations cannot be performed on boolean values\");\n let parsedDate = relativeDateParseForFeatureFlagMatching(String(value));\n if (null == parsedDate) parsedDate = convertToDateTime(value);\n if (null == parsedDate) throw new InconclusiveMatchError(`Invalid date: ${value}`);\n const overrideDate = convertToDateTime(overrideValue);\n if ([\n 'is_date_before'\n ].includes(operator)) return overrideDate < parsedDate;\n return overrideDate > parsedDate;\n }\n case 'semver_eq':\n {\n const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));\n return 0 === cmp;\n }\n case 'semver_neq':\n {\n const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));\n return 0 !== cmp;\n }\n case 'semver_gt':\n {\n const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));\n return cmp > 0;\n }\n case 'semver_gte':\n {\n const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));\n return cmp >= 0;\n }\n case 'semver_lt':\n {\n const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));\n return cmp < 0;\n }\n case 'semver_lte':\n {\n const cmp = compareSemverTuples(parseSemver(String(overrideValue)), parseSemver(String(value)));\n return cmp <= 0;\n }\n case 'semver_tilde':\n {\n const overrideParsed = parseSemver(String(overrideValue));\n const { lower, upper } = computeTildeBounds(String(value));\n return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;\n }\n case 'semver_caret':\n {\n const overrideParsed = parseSemver(String(overrideValue));\n const { lower, upper } = computeCaretBounds(String(value));\n return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;\n }\n case 'semver_wildcard':\n {\n const overrideParsed = parseSemver(String(overrideValue));\n const { lower, upper } = computeWildcardBounds(String(value));\n return compareSemverTuples(overrideParsed, lower) >= 0 && compareSemverTuples(overrideParsed, upper) < 0;\n }\n default:\n throw new InconclusiveMatchError(`Unknown operator: ${operator}`);\n }\n}\nfunction checkCohortExists(cohortId, cohortProperties) {\n if (!(cohortId in cohortProperties)) throw new RequiresServerEvaluation(`cohort ${cohortId} not found in local cohorts - likely a static cohort that requires server evaluation`);\n}\nfunction matchCohort(property, propertyValues, cohortProperties, debugMode = false) {\n const cohortId = String(property.value);\n checkCohortExists(cohortId, cohortProperties);\n const propertyGroup = cohortProperties[cohortId];\n return matchPropertyGroup(propertyGroup, propertyValues, cohortProperties, debugMode);\n}\nfunction matchPropertyGroup(propertyGroup, propertyValues, cohortProperties, debugMode = false) {\n if (!propertyGroup) return true;\n const propertyGroupType = propertyGroup.type;\n const properties = propertyGroup.values;\n if (!properties || 0 === properties.length) return true;\n let errorMatchingLocally = false;\n if ('values' in properties[0]) {\n for (const prop of properties)try {\n const matches = matchPropertyGroup(prop, propertyValues, cohortProperties, debugMode);\n if ('AND' === propertyGroupType) {\n if (!matches) return false;\n } else if (matches) return true;\n } catch (err) {\n if (err instanceof RequiresServerEvaluation) throw err;\n if (err instanceof InconclusiveMatchError) {\n if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`);\n errorMatchingLocally = true;\n } else throw err;\n }\n if (errorMatchingLocally) throw new InconclusiveMatchError(\"Can't match cohort without a given cohort property value\");\n return 'AND' === propertyGroupType;\n }\n for (const prop of properties)try {\n let matches;\n if ('cohort' === prop.type) matches = matchCohort(prop, propertyValues, cohortProperties, debugMode);\n else if ('flag' === prop.type) {\n if (debugMode) console.warn(`[FEATURE FLAGS] Flag dependency filters are not supported in local evaluation. Skipping condition with dependency on flag '${prop.key || 'unknown'}'`);\n continue;\n } else matches = matchProperty(prop, propertyValues);\n const negation = prop.negation || false;\n if ('AND' === propertyGroupType) {\n if (!matches && !negation) return false;\n if (matches && negation) return false;\n } else {\n if (matches && !negation) return true;\n if (!matches && negation) return true;\n }\n } catch (err) {\n if (err instanceof RequiresServerEvaluation) throw err;\n if (err instanceof InconclusiveMatchError) {\n if (debugMode) console.debug(`Failed to compute property ${prop} locally: ${err}`);\n errorMatchingLocally = true;\n } else throw err;\n }\n if (errorMatchingLocally) throw new InconclusiveMatchError(\"can't match cohort without a given cohort property value\");\n return 'AND' === propertyGroupType;\n}\nfunction isValidRegex(regex) {\n try {\n new RegExp(regex);\n return true;\n } catch (err) {\n return false;\n }\n}\nfunction parseSemver(value) {\n const text = String(value).trim().replace(/^[vV]/, '');\n const baseVersion = text.split('-')[0].split('+')[0];\n if (!baseVersion || baseVersion.startsWith('.')) throw new InconclusiveMatchError(`Invalid semver: ${value}`);\n const parts = baseVersion.split('.');\n const parsePart = (part)=>{\n if (void 0 === part || '' === part) return 0;\n if (!/^\\d+$/.test(part)) throw new InconclusiveMatchError(`Invalid semver: ${value}`);\n return parseInt(part, 10);\n };\n const major = parsePart(parts[0]);\n const minor = parsePart(parts[1]);\n const patch = parsePart(parts[2]);\n return [\n major,\n minor,\n patch\n ];\n}\nfunction compareSemverTuples(a, b) {\n for(let i = 0; i < 3; i++){\n if (a[i] < b[i]) return -1;\n if (a[i] > b[i]) return 1;\n }\n return 0;\n}\nfunction computeTildeBounds(value) {\n const parsed = parseSemver(value);\n const lower = [\n parsed[0],\n parsed[1],\n parsed[2]\n ];\n const upper = [\n parsed[0],\n parsed[1] + 1,\n 0\n ];\n return {\n lower,\n upper\n };\n}\nfunction computeCaretBounds(value) {\n const parsed = parseSemver(value);\n const [major, minor, patch] = parsed;\n const lower = [\n major,\n minor,\n patch\n ];\n let upper;\n upper = major > 0 ? [\n major + 1,\n 0,\n 0\n ] : minor > 0 ? [\n 0,\n minor + 1,\n 0\n ] : [\n 0,\n 0,\n patch + 1\n ];\n return {\n lower,\n upper\n };\n}\nfunction computeWildcardBounds(value) {\n const text = String(value).trim().replace(/^[vV]/, '');\n const cleanedText = text.replace(/\\.\\*$/, '').replace(/\\*$/, '');\n if (!cleanedText) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);\n const parts = cleanedText.split('.');\n const major = parseInt(parts[0], 10);\n if (isNaN(major)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);\n let lower;\n let upper;\n if (1 === parts.length) {\n lower = [\n major,\n 0,\n 0\n ];\n upper = [\n major + 1,\n 0,\n 0\n ];\n } else {\n const minor = parseInt(parts[1], 10);\n if (isNaN(minor)) throw new InconclusiveMatchError(`Invalid wildcard semver: ${value}`);\n lower = [\n major,\n minor,\n 0\n ];\n upper = [\n major,\n minor + 1,\n 0\n ];\n }\n return {\n lower,\n upper\n };\n}\nfunction convertToDateTime(value) {\n if (value instanceof Date) return value;\n if ('string' == typeof value || 'number' == typeof value) {\n const date = new Date(value);\n if (!isNaN(date.valueOf())) return date;\n throw new InconclusiveMatchError(`${value} is in an invalid date format`);\n }\n throw new InconclusiveMatchError(`The date provided ${value} must be a string, number, or date object`);\n}\nfunction relativeDateParseForFeatureFlagMatching(value) {\n const regex = /^-?(?<number>[0-9]+)(?<interval>[a-z])$/;\n const match = value.match(regex);\n const parsedDt = new Date(new Date().toISOString());\n if (!match) return null;\n {\n if (!match.groups) return null;\n const number = parseInt(match.groups['number']);\n if (number >= 10000) return null;\n const interval = match.groups['interval'];\n if ('h' == interval) parsedDt.setUTCHours(parsedDt.getUTCHours() - number);\n else if ('d' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - number);\n else if ('w' == interval) parsedDt.setUTCDate(parsedDt.getUTCDate() - 7 * number);\n else if ('m' == interval) parsedDt.setUTCMonth(parsedDt.getUTCMonth() - number);\n else {\n if ('y' != interval) return null;\n parsedDt.setUTCFullYear(parsedDt.getUTCFullYear() - number);\n }\n return parsedDt;\n }\n}\nexport { ClientError, FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation, matchProperty, parseSemver, relativeDateParseForFeatureFlagMatching };\n","class PostHogMemoryStorage {\n getProperty(key) {\n return this._memoryStorage[key];\n }\n setProperty(key, value) {\n this._memoryStorage[key] = null !== value ? value : void 0;\n }\n constructor(){\n this._memoryStorage = {};\n }\n}\nexport { PostHogMemoryStorage };\n","import { version } from \"./version.mjs\";\nimport { PostHogCoreStateless, isBlockedUA, isPlainObject, safeSetTimeout, uuidv7 } from \"@posthog/core\";\nimport { FeatureFlagError } from \"./types.mjs\";\nimport { FeatureFlagsPoller, InconclusiveMatchError, RequiresServerEvaluation } from \"./extensions/feature-flags/feature-flags.mjs\";\nimport error_tracking from \"./extensions/error-tracking/index.mjs\";\nimport { PostHogMemoryStorage } from \"./storage-memory.mjs\";\nconst MINIMUM_POLLING_INTERVAL = 100;\nconst THIRTY_SECONDS = 30000;\nconst MAX_CACHE_SIZE = 50000;\nconst WAITUNTIL_DEBOUNCE_MS = 50;\nconst WAITUNTIL_MAX_WAIT_MS = 500;\nclass PostHogBackendClient extends PostHogCoreStateless {\n constructor(apiKey, options = {}){\n super(apiKey, options), this._memoryStorage = new PostHogMemoryStorage();\n this.options = options;\n this.context = this.initializeContext();\n this.options.featureFlagsPollingInterval = 'number' == typeof options.featureFlagsPollingInterval ? Math.max(options.featureFlagsPollingInterval, MINIMUM_POLLING_INTERVAL) : THIRTY_SECONDS;\n if ('number' == typeof options.waitUntilDebounceMs) this.options.waitUntilDebounceMs = Math.max(options.waitUntilDebounceMs, 0);\n if ('number' == typeof options.waitUntilMaxWaitMs) this.options.waitUntilMaxWaitMs = Math.max(options.waitUntilMaxWaitMs, 0);\n if (options.personalApiKey) {\n if (options.personalApiKey.includes('phc_')) throw new Error('Your Personal API key is invalid. These keys are prefixed with \"phx_\" and can be created in PostHog project settings.');\n const shouldEnableLocalEvaluation = false !== options.enableLocalEvaluation;\n if (shouldEnableLocalEvaluation) this.featureFlagsPoller = new FeatureFlagsPoller({\n pollingInterval: this.options.featureFlagsPollingInterval,\n personalApiKey: options.personalApiKey,\n projectApiKey: apiKey,\n timeout: options.requestTimeout ?? 10000,\n host: this.host,\n fetch: options.fetch,\n onError: (err)=>{\n this._events.emit('error', err);\n },\n onLoad: (count)=>{\n this._events.emit('localEvaluationFlagsLoaded', count);\n },\n customHeaders: this.getCustomHeaders(),\n cacheProvider: options.flagDefinitionCacheProvider,\n strictLocalEvaluation: options.strictLocalEvaluation\n });\n }\n this.errorTracking = new error_tracking(this, options, this._logger);\n this.distinctIdHasSentFlagCalls = {};\n this.maxCacheSize = options.maxCacheSize || MAX_CACHE_SIZE;\n }\n enqueue(type, message, options) {\n super.enqueue(type, message, options);\n this.scheduleDebouncedFlush();\n }\n async flush() {\n const flushPromise = super.flush();\n const waitUntil = this.options.waitUntil;\n if (waitUntil && !this._waitUntilCycle) try {\n waitUntil(flushPromise.catch(()=>{}));\n } catch {}\n return flushPromise;\n }\n scheduleDebouncedFlush() {\n const waitUntil = this.options.waitUntil;\n if (!waitUntil) return;\n if (this.disabled || this.optedOut) return;\n if (!this._waitUntilCycle) {\n let resolve;\n const promise = new Promise((r)=>{\n resolve = r;\n });\n try {\n waitUntil(promise);\n } catch {\n return;\n }\n this._waitUntilCycle = {\n resolve: resolve,\n startedAt: Date.now(),\n timer: void 0\n };\n }\n const elapsed = Date.now() - this._waitUntilCycle.startedAt;\n const maxWaitMs = this.options.waitUntilMaxWaitMs ?? WAITUNTIL_MAX_WAIT_MS;\n const flushNow = elapsed >= maxWaitMs;\n if (void 0 !== this._waitUntilCycle.timer) clearTimeout(this._waitUntilCycle.timer);\n if (flushNow) return void this.resolveWaitUntilFlush();\n const debounceMs = this.options.waitUntilDebounceMs ?? WAITUNTIL_DEBOUNCE_MS;\n this._waitUntilCycle.timer = safeSetTimeout(()=>{\n this.resolveWaitUntilFlush();\n }, debounceMs);\n }\n _consumeWaitUntilCycle() {\n const cycle = this._waitUntilCycle;\n if (cycle) {\n clearTimeout(cycle.timer);\n this._waitUntilCycle = void 0;\n }\n return cycle?.resolve;\n }\n async resolveWaitUntilFlush() {\n const resolve = this._consumeWaitUntilCycle();\n try {\n await super.flush();\n } catch {} finally{\n resolve?.();\n }\n }\n getPersistedProperty(key) {\n return this._memoryStorage.getProperty(key);\n }\n setPersistedProperty(key, value) {\n return this._memoryStorage.setProperty(key, value);\n }\n fetch(url, options) {\n return this.options.fetch ? this.options.fetch(url, options) : fetch(url, options);\n }\n getLibraryVersion() {\n return version;\n }\n getCustomUserAgent() {\n return `${this.getLibraryId()}/${this.getLibraryVersion()}`;\n }\n enable() {\n return super.optIn();\n }\n disable() {\n return super.optOut();\n }\n debug(enabled = true) {\n super.debug(enabled);\n this.featureFlagsPoller?.debug(enabled);\n }\n capture(props) {\n if ('string' == typeof props) this._logger.warn('Called capture() with a string as the first argument when an object was expected.');\n if ('$exception' === props.event && !props._originatedFromCaptureException) this._logger.warn(\"Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically.\");\n this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStateless(distinctId, event, properties, {\n timestamp: options.timestamp,\n disableGeoip: options.disableGeoip,\n uuid: options.uuid\n })).catch((err)=>{\n if (err) console.error(err);\n }));\n }\n async captureImmediate(props) {\n if ('string' == typeof props) this._logger.warn('Called captureImmediate() with a string as the first argument when an object was expected.');\n if ('$exception' === props.event && !props._originatedFromCaptureException) this._logger.warn(\"Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default.\");\n return this.addPendingPromise(this.prepareEventMessage(props).then(({ distinctId, event, properties, options })=>super.captureStatelessImmediate(distinctId, event, properties, {\n timestamp: options.timestamp,\n disableGeoip: options.disableGeoip,\n uuid: options.uuid\n })).catch((err)=>{\n if (err) console.error(err);\n }));\n }\n identify({ distinctId, properties = {}, disableGeoip }) {\n const { $set, $set_once, $anon_distinct_id, ...rest } = properties;\n const setProps = $set || rest;\n const setOnceProps = $set_once || {};\n const eventProperties = {\n $set: setProps,\n $set_once: setOnceProps,\n $anon_distinct_id: $anon_distinct_id ?? void 0\n };\n super.identifyStateless(distinctId, eventProperties, {\n disableGeoip\n });\n }\n async identifyImmediate({ distinctId, properties = {}, disableGeoip }) {\n const { $set, $set_once, $anon_distinct_id, ...rest } = properties;\n const setProps = $set || rest;\n const setOnceProps = $set_once || {};\n const eventProperties = {\n $set: setProps,\n $set_once: setOnceProps,\n $anon_distinct_id: $anon_distinct_id ?? void 0\n };\n super.identifyStatelessImmediate(distinctId, eventProperties, {\n disableGeoip\n });\n }\n alias(data) {\n super.aliasStateless(data.alias, data.distinctId, void 0, {\n disableGeoip: data.disableGeoip\n });\n }\n async aliasImmediate(data) {\n await super.aliasStatelessImmediate(data.alias, data.distinctId, void 0, {\n disableGeoip: data.disableGeoip\n });\n }\n isLocalEvaluationReady() {\n return this.featureFlagsPoller?.isLocalEvaluationReady() ?? false;\n }\n async waitForLocalEvaluationReady(timeoutMs = THIRTY_SECONDS) {\n if (this.isLocalEvaluationReady()) return true;\n if (void 0 === this.featureFlagsPoller) return false;\n return new Promise((resolve)=>{\n const timeout = setTimeout(()=>{\n cleanup();\n resolve(false);\n }, timeoutMs);\n const cleanup = this._events.on('localEvaluationFlagsLoaded', (count)=>{\n clearTimeout(timeout);\n cleanup();\n resolve(count > 0);\n });\n });\n }\n _resolveDistinctId(distinctIdOrOptions, options) {\n if ('string' == typeof distinctIdOrOptions) return {\n distinctId: distinctIdOrOptions,\n options\n };\n return {\n distinctId: this.context?.get()?.distinctId,\n options: distinctIdOrOptions\n };\n }\n async _getFeatureFlagResult(key, distinctId, options = {}, matchValue) {\n const sendFeatureFlagEvents = options.sendFeatureFlagEvents ?? true;\n if (void 0 !== this._flagOverrides && key in this._flagOverrides) {\n const overrideValue = this._flagOverrides[key];\n if (void 0 === overrideValue) return;\n const overridePayload = this._payloadOverrides?.[key];\n return {\n key,\n enabled: false !== overrideValue,\n variant: 'string' == typeof overrideValue ? overrideValue : void 0,\n payload: overridePayload\n };\n }\n const { groups, disableGeoip } = options;\n let { onlyEvaluateLocally, personProperties, groupProperties } = options;\n const adjustedProperties = this.addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n const evaluationContext = this.createFeatureFlagEvaluationContext(distinctId, groups, personProperties, groupProperties);\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = this.options.strictLocalEvaluation ?? false;\n let result;\n let flagWasLocallyEvaluated = false;\n let requestId;\n let evaluatedAt;\n let featureFlagError;\n let flagId;\n let flagVersion;\n let flagReason;\n const localEvaluationEnabled = void 0 !== this.featureFlagsPoller;\n if (localEvaluationEnabled) {\n await this.featureFlagsPoller?.loadFeatureFlags();\n const flag = this.featureFlagsPoller?.featureFlagsByKey[key];\n if (flag) try {\n const localResult = await this.featureFlagsPoller?.computeFlagAndPayloadLocally(flag, evaluationContext, {\n matchValue\n });\n if (localResult) {\n flagWasLocallyEvaluated = true;\n const value = localResult.value;\n flagId = flag.id;\n flagReason = 'Evaluated locally';\n result = {\n key,\n enabled: false !== value,\n variant: 'string' == typeof value ? value : void 0,\n payload: localResult.payload ?? void 0\n };\n }\n } catch (e) {\n if (e instanceof RequiresServerEvaluation || e instanceof InconclusiveMatchError) this._logger?.info(`${e.name} when computing flag locally: ${key}: ${e.message}`);\n else throw e;\n }\n }\n if (!flagWasLocallyEvaluated && !onlyEvaluateLocally) {\n const flagsResponse = await super.getFeatureFlagDetailsStateless(evaluationContext.distinctId, evaluationContext.groups, evaluationContext.personProperties, evaluationContext.groupProperties, disableGeoip, [\n key\n ]);\n if (void 0 === flagsResponse) featureFlagError = FeatureFlagError.UNKNOWN_ERROR;\n else {\n requestId = flagsResponse.requestId;\n evaluatedAt = flagsResponse.evaluatedAt;\n const errors = [];\n if (flagsResponse.errorsWhileComputingFlags) errors.push(FeatureFlagError.ERRORS_WHILE_COMPUTING);\n if (flagsResponse.quotaLimited?.includes('feature_flags')) errors.push(FeatureFlagError.QUOTA_LIMITED);\n const flagDetail = flagsResponse.flags[key];\n if (void 0 === flagDetail) errors.push(FeatureFlagError.FLAG_MISSING);\n else {\n flagId = flagDetail.metadata?.id;\n flagVersion = flagDetail.metadata?.version;\n flagReason = flagDetail.reason?.description ?? flagDetail.reason?.code;\n let parsedPayload;\n if (flagDetail.metadata?.payload !== void 0) try {\n parsedPayload = JSON.parse(flagDetail.metadata.payload);\n } catch {\n parsedPayload = flagDetail.metadata.payload;\n }\n result = {\n key,\n enabled: flagDetail.enabled,\n variant: flagDetail.variant,\n payload: parsedPayload\n };\n }\n if (errors.length > 0) featureFlagError = errors.join(',');\n }\n }\n if (sendFeatureFlagEvents) {\n const response = void 0 === result ? void 0 : false === result.enabled ? false : result.variant ?? true;\n const featureFlagReportedKey = `${key}_${response}`;\n if (!(distinctId in this.distinctIdHasSentFlagCalls) || !this.distinctIdHasSentFlagCalls[distinctId].includes(featureFlagReportedKey)) {\n if (Object.keys(this.distinctIdHasSentFlagCalls).length >= this.maxCacheSize) this.distinctIdHasSentFlagCalls = {};\n if (Array.isArray(this.distinctIdHasSentFlagCalls[distinctId])) this.distinctIdHasSentFlagCalls[distinctId].push(featureFlagReportedKey);\n else this.distinctIdHasSentFlagCalls[distinctId] = [\n featureFlagReportedKey\n ];\n const properties = {\n $feature_flag: key,\n $feature_flag_response: response,\n $feature_flag_id: flagId,\n $feature_flag_version: flagVersion,\n $feature_flag_reason: flagReason,\n locally_evaluated: flagWasLocallyEvaluated,\n [`$feature/${key}`]: response,\n $feature_flag_request_id: requestId,\n $feature_flag_evaluated_at: flagWasLocallyEvaluated ? Date.now() : evaluatedAt\n };\n if (flagWasLocallyEvaluated && this.featureFlagsPoller) {\n const flagDefinitionsLoadedAt = this.featureFlagsPoller.getFlagDefinitionsLoadedAt();\n if (void 0 !== flagDefinitionsLoadedAt) properties.$feature_flag_definitions_loaded_at = flagDefinitionsLoadedAt;\n }\n if (featureFlagError) properties.$feature_flag_error = featureFlagError;\n this.capture({\n distinctId,\n event: '$feature_flag_called',\n properties,\n groups,\n disableGeoip\n });\n }\n }\n if (void 0 !== result && void 0 !== this._payloadOverrides && key in this._payloadOverrides) result = {\n ...result,\n payload: this._payloadOverrides[key]\n };\n return result;\n }\n async getFeatureFlag(key, distinctId, options) {\n const result = await this._getFeatureFlagResult(key, distinctId, {\n ...options,\n sendFeatureFlagEvents: options?.sendFeatureFlagEvents ?? this.options.sendFeatureFlagEvent ?? true\n });\n if (void 0 === result) return;\n if (false === result.enabled) return false;\n return result.variant ?? true;\n }\n async getFeatureFlagPayload(key, distinctId, matchValue, options) {\n if (void 0 !== this._payloadOverrides && key in this._payloadOverrides) return this._payloadOverrides[key];\n const result = await this._getFeatureFlagResult(key, distinctId, {\n ...options,\n sendFeatureFlagEvents: false\n }, matchValue);\n if (void 0 === result) return;\n return result.payload ?? null;\n }\n async getFeatureFlagResult(key, distinctIdOrOptions, options) {\n const { distinctId: resolvedDistinctId, options: resolvedOptions } = this._resolveDistinctId(distinctIdOrOptions, options);\n if (!resolvedDistinctId) return void this._logger.warn(\"[PostHog] distinctId is required \\u2014 pass it explicitly or use withContext()\");\n return this._getFeatureFlagResult(key, resolvedDistinctId, {\n ...resolvedOptions,\n sendFeatureFlagEvents: resolvedOptions?.sendFeatureFlagEvents ?? this.options.sendFeatureFlagEvent ?? true\n });\n }\n async getRemoteConfigPayload(flagKey) {\n if (!this.options.personalApiKey) throw new Error('Personal API key is required for remote config payload decryption');\n const response = await this._requestRemoteConfigPayload(flagKey);\n if (!response) return;\n const parsed = await response.json();\n if ('string' == typeof parsed) try {\n return JSON.parse(parsed);\n } catch (e) {}\n return parsed;\n }\n async isFeatureEnabled(key, distinctId, options) {\n const feat = await this.getFeatureFlag(key, distinctId, options);\n if (void 0 === feat) return;\n return !!feat || false;\n }\n async getAllFlags(distinctIdOrOptions, options) {\n const { distinctId: resolvedDistinctId, options: resolvedOptions } = this._resolveDistinctId(distinctIdOrOptions, options);\n if (!resolvedDistinctId) {\n this._logger.warn(\"[PostHog] distinctId is required to get feature flags \\u2014 pass it explicitly or use withContext()\");\n return {};\n }\n const response = await this.getAllFlagsAndPayloads(resolvedDistinctId, resolvedOptions);\n return response.featureFlags || {};\n }\n async getAllFlagsAndPayloads(distinctIdOrOptions, options) {\n const { distinctId: resolvedDistinctId, options: resolvedOptions } = this._resolveDistinctId(distinctIdOrOptions, options);\n if (!resolvedDistinctId) {\n this._logger.warn(\"[PostHog] distinctId is required to get feature flags and payloads \\u2014 pass it explicitly or use withContext()\");\n return {\n featureFlags: {},\n featureFlagPayloads: {}\n };\n }\n const { groups, disableGeoip, flagKeys } = resolvedOptions || {};\n let { onlyEvaluateLocally, personProperties, groupProperties } = resolvedOptions || {};\n const adjustedProperties = this.addLocalPersonAndGroupProperties(resolvedDistinctId, groups, personProperties, groupProperties);\n personProperties = adjustedProperties.allPersonProperties;\n groupProperties = adjustedProperties.allGroupProperties;\n const evaluationContext = this.createFeatureFlagEvaluationContext(resolvedDistinctId, groups, personProperties, groupProperties);\n if (void 0 == onlyEvaluateLocally) onlyEvaluateLocally = this.options.strictLocalEvaluation ?? false;\n const localEvaluationResult = await this.featureFlagsPoller?.getAllFlagsAndPayloads(evaluationContext, flagKeys);\n let featureFlags = {};\n let featureFlagPayloads = {};\n let fallbackToFlags = true;\n if (localEvaluationResult) {\n featureFlags = localEvaluationResult.response;\n featureFlagPayloads = localEvaluationResult.payloads;\n fallbackToFlags = localEvaluationResult.fallbackToFlags;\n }\n if (fallbackToFlags && !onlyEvaluateLocally) {\n const remoteEvaluationResult = await super.getFeatureFlagsAndPayloadsStateless(evaluationContext.distinctId, evaluationContext.groups, evaluationContext.personProperties, evaluationContext.groupProperties, disableGeoip, flagKeys);\n featureFlags = {\n ...featureFlags,\n ...remoteEvaluationResult.flags || {}\n };\n featureFlagPayloads = {\n ...featureFlagPayloads,\n ...remoteEvaluationResult.payloads || {}\n };\n }\n if (void 0 !== this._flagOverrides) featureFlags = {\n ...featureFlags,\n ...this._flagOverrides\n };\n if (void 0 !== this._payloadOverrides) featureFlagPayloads = {\n ...featureFlagPayloads,\n ...this._payloadOverrides\n };\n return {\n featureFlags,\n featureFlagPayloads\n };\n }\n groupIdentify({ groupType, groupKey, properties, distinctId, disableGeoip }) {\n super.groupIdentifyStateless(groupType, groupKey, properties, {\n disableGeoip\n }, distinctId);\n }\n async reloadFeatureFlags() {\n await this.featureFlagsPoller?.loadFeatureFlags(true);\n }\n overrideFeatureFlags(overrides) {\n const flagArrayToRecord = (flags)=>Object.fromEntries(flags.map((f)=>[\n f,\n true\n ]));\n if (false === overrides) {\n this._flagOverrides = void 0;\n this._payloadOverrides = void 0;\n return;\n }\n if (Array.isArray(overrides)) {\n this._flagOverrides = flagArrayToRecord(overrides);\n return;\n }\n if (this._isFeatureFlagOverrideOptions(overrides)) {\n if ('flags' in overrides) {\n if (false === overrides.flags) this._flagOverrides = void 0;\n else if (Array.isArray(overrides.flags)) this._flagOverrides = flagArrayToRecord(overrides.flags);\n else if (void 0 !== overrides.flags) this._flagOverrides = {\n ...overrides.flags\n };\n }\n if ('payloads' in overrides) {\n if (false === overrides.payloads) this._payloadOverrides = void 0;\n else if (void 0 !== overrides.payloads) this._payloadOverrides = {\n ...overrides.payloads\n };\n }\n return;\n }\n this._flagOverrides = {\n ...overrides\n };\n }\n _isFeatureFlagOverrideOptions(overrides) {\n if ('object' != typeof overrides || null === overrides || Array.isArray(overrides)) return false;\n const obj = overrides;\n if ('flags' in obj) {\n const flagsValue = obj['flags'];\n if (false === flagsValue || Array.isArray(flagsValue) || 'object' == typeof flagsValue && null !== flagsValue) return true;\n }\n if ('payloads' in obj) {\n const payloadsValue = obj['payloads'];\n if (false === payloadsValue || 'object' == typeof payloadsValue && null !== payloadsValue) return true;\n }\n return false;\n }\n withContext(data, fn, options) {\n if (!this.context) return fn();\n return this.context.run(data, fn, options);\n }\n getContext() {\n return this.context?.get();\n }\n enterContext(data, options) {\n this.context?.enter(data, options);\n }\n async _shutdown(shutdownTimeoutMs) {\n const resolve = this._consumeWaitUntilCycle();\n await this.featureFlagsPoller?.stopPoller(shutdownTimeoutMs);\n this.errorTracking.shutdown();\n try {\n return await super._shutdown(shutdownTimeoutMs);\n } finally{\n resolve?.();\n }\n }\n async _requestRemoteConfigPayload(flagKey) {\n if (!this.options.personalApiKey) return;\n const url = `${this.host}/api/projects/@current/feature_flags/${flagKey}/remote_config?token=${encodeURIComponent(this.apiKey)}`;\n const options = {\n method: 'GET',\n headers: {\n ...this.getCustomHeaders(),\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${this.options.personalApiKey}`\n }\n };\n let abortTimeout = null;\n if (this.options.requestTimeout && 'number' == typeof this.options.requestTimeout) {\n const controller = new AbortController();\n abortTimeout = safeSetTimeout(()=>{\n controller.abort();\n }, this.options.requestTimeout);\n options.signal = controller.signal;\n }\n try {\n return await this.fetch(url, options);\n } catch (error) {\n this._events.emit('error', error);\n return;\n } finally{\n if (abortTimeout) clearTimeout(abortTimeout);\n }\n }\n extractPropertiesFromEvent(eventProperties, groups) {\n if (!eventProperties) return {\n personProperties: {},\n groupProperties: {}\n };\n const personProperties = {};\n const groupProperties = {};\n for (const [key, value] of Object.entries(eventProperties))if (isPlainObject(value) && groups && key in groups) {\n const groupProps = {};\n for (const [groupKey, groupValue] of Object.entries(value))groupProps[String(groupKey)] = String(groupValue);\n groupProperties[String(key)] = groupProps;\n } else personProperties[String(key)] = String(value);\n return {\n personProperties,\n groupProperties\n };\n }\n async getFeatureFlagsForEvent(distinctId, groups, disableGeoip, sendFeatureFlagsOptions) {\n const finalPersonProperties = sendFeatureFlagsOptions?.personProperties || {};\n const finalGroupProperties = sendFeatureFlagsOptions?.groupProperties || {};\n const flagKeys = sendFeatureFlagsOptions?.flagKeys;\n const onlyEvaluateLocally = sendFeatureFlagsOptions?.onlyEvaluateLocally ?? this.options.strictLocalEvaluation ?? false;\n if (onlyEvaluateLocally) if (!((this.featureFlagsPoller?.featureFlags?.length || 0) > 0)) return {};\n else {\n const groupsWithStringValues = {};\n for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);\n return await this.getAllFlags(distinctId, {\n groups: groupsWithStringValues,\n personProperties: finalPersonProperties,\n groupProperties: finalGroupProperties,\n disableGeoip,\n onlyEvaluateLocally: true,\n flagKeys\n });\n }\n if ((this.featureFlagsPoller?.featureFlags?.length || 0) > 0) {\n const groupsWithStringValues = {};\n for (const [key, value] of Object.entries(groups || {}))groupsWithStringValues[key] = String(value);\n return await this.getAllFlags(distinctId, {\n groups: groupsWithStringValues,\n personProperties: finalPersonProperties,\n groupProperties: finalGroupProperties,\n disableGeoip,\n onlyEvaluateLocally: true,\n flagKeys\n });\n }\n return (await super.getFeatureFlagsStateless(distinctId, groups, finalPersonProperties, finalGroupProperties, disableGeoip)).flags;\n }\n addLocalPersonAndGroupProperties(distinctId, groups, personProperties, groupProperties) {\n const allPersonProperties = {\n distinct_id: distinctId,\n ...personProperties || {}\n };\n const allGroupProperties = {};\n if (groups) for (const groupName of Object.keys(groups))allGroupProperties[groupName] = {\n $group_key: groups[groupName],\n ...groupProperties?.[groupName] || {}\n };\n return {\n allPersonProperties,\n allGroupProperties\n };\n }\n createFeatureFlagEvaluationContext(distinctId, groups, personProperties, groupProperties) {\n return {\n distinctId,\n groups: groups || {},\n personProperties: personProperties || {},\n groupProperties: groupProperties || {},\n evaluationCache: {}\n };\n }\n captureException(error, distinctId, additionalProperties, uuid) {\n if (!error_tracking.isPreviouslyCapturedError(error)) {\n const syntheticException = new Error('PostHog syntheticException');\n this.addPendingPromise(error_tracking.buildEventMessage(error, {\n syntheticException\n }, distinctId, additionalProperties).then((msg)=>this.capture({\n ...msg,\n uuid\n })));\n }\n }\n async captureExceptionImmediate(error, distinctId, additionalProperties) {\n if (!error_tracking.isPreviouslyCapturedError(error)) {\n const syntheticException = new Error('PostHog syntheticException');\n return this.addPendingPromise(error_tracking.buildEventMessage(error, {\n syntheticException\n }, distinctId, additionalProperties).then((msg)=>this.captureImmediate(msg)));\n }\n }\n async prepareEventMessage(props) {\n const { distinctId, event, properties, groups, sendFeatureFlags, timestamp, disableGeoip, uuid } = props;\n const contextData = this.context?.get();\n let mergedDistinctId = distinctId || contextData?.distinctId;\n const mergedProperties = {\n ...this.props,\n ...contextData?.properties || {},\n ...properties || {}\n };\n if (!mergedDistinctId) {\n mergedDistinctId = uuidv7();\n mergedProperties.$process_person_profile = false;\n }\n if (contextData?.sessionId && !mergedProperties.$session_id) mergedProperties.$session_id = contextData.sessionId;\n const eventMessage = this._runBeforeSend({\n distinctId: mergedDistinctId,\n event,\n properties: mergedProperties,\n groups,\n sendFeatureFlags,\n timestamp,\n disableGeoip,\n uuid\n });\n if (!eventMessage) return Promise.reject(null);\n const eventProperties = await Promise.resolve().then(async ()=>{\n if (sendFeatureFlags) {\n const sendFeatureFlagsOptions = 'object' == typeof sendFeatureFlags ? sendFeatureFlags : void 0;\n return await this.getFeatureFlagsForEvent(eventMessage.distinctId, groups, disableGeoip, sendFeatureFlagsOptions);\n }\n eventMessage.event;\n return {};\n }).then((flags)=>{\n const additionalProperties = {};\n if (flags) for (const [feature, variant] of Object.entries(flags))additionalProperties[`$feature/${feature}`] = variant;\n const activeFlags = Object.keys(flags || {}).filter((flag)=>flags?.[flag] !== false).sort();\n if (activeFlags.length > 0) additionalProperties['$active_feature_flags'] = activeFlags;\n return additionalProperties;\n }).catch(()=>({})).then((additionalProperties)=>{\n const props = {\n ...additionalProperties,\n ...eventMessage.properties || {},\n $groups: eventMessage.groups || groups\n };\n return props;\n });\n if ('$pageview' === eventMessage.event && this.options.__preview_capture_bot_pageviews && 'string' == typeof eventProperties.$raw_user_agent) {\n if (isBlockedUA(eventProperties.$raw_user_agent, this.options.custom_blocked_useragents || [])) {\n eventMessage.event = '$bot_pageview';\n eventProperties.$browser_type = 'bot';\n }\n }\n return {\n distinctId: eventMessage.distinctId,\n event: eventMessage.event,\n properties: eventProperties,\n options: {\n timestamp: eventMessage.timestamp,\n disableGeoip: eventMessage.disableGeoip,\n uuid: eventMessage.uuid\n }\n };\n }\n _runBeforeSend(eventMessage) {\n const beforeSend = this.options.before_send;\n if (!beforeSend) return eventMessage;\n const fns = Array.isArray(beforeSend) ? beforeSend : [\n beforeSend\n ];\n let result = eventMessage;\n for (const fn of fns){\n result = fn(result);\n if (!result) {\n this._logger.info(`Event '${eventMessage.event}' was rejected in beforeSend function`);\n return null;\n }\n if (!result.properties || 0 === Object.keys(result.properties).length) {\n const message = `Event '${result.event}' has no properties after beforeSend function, this is likely an error.`;\n this._logger.warn(message);\n }\n }\n return result;\n }\n}\nexport { PostHogBackendClient };\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nclass PostHogContext {\n constructor(){\n this.storage = new AsyncLocalStorage();\n }\n get() {\n return this.storage.getStore();\n }\n run(context, fn, options) {\n return this.storage.run(this.resolve(context, options), fn);\n }\n enter(context, options) {\n this.storage.enterWith(this.resolve(context, options));\n }\n resolve(context, options) {\n if (options?.fresh === true) return context;\n const current = this.get() || {};\n return {\n distinctId: context.distinctId ?? current.distinctId,\n sessionId: context.sessionId ?? current.sessionId,\n properties: {\n ...current.properties || {},\n ...context.properties || {}\n }\n };\n }\n}\nexport { PostHogContext };\n","const NAME = 'posthog-node';\nfunction createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [\n 'error'\n], sendExceptionsToPostHog = true } = {}) {\n return (event)=>{\n const shouldProcessLevel = '*' === severityAllowList || severityAllowList.includes(event.level);\n if (!shouldProcessLevel) return event;\n if (!event.tags) event.tags = {};\n const userId = event.tags[PostHogSentryIntegration.POSTHOG_ID_TAG];\n if (void 0 === userId) return event;\n const uiHost = _posthog.options.host ?? 'https://us.i.posthog.com';\n const personUrl = new URL(`/project/${_posthog.apiKey}/person/${userId}`, uiHost).toString();\n event.tags['PostHog Person URL'] = personUrl;\n const exceptions = event.exception?.values || [];\n const exceptionList = exceptions.map((exception)=>({\n ...exception,\n stacktrace: exception.stacktrace ? {\n ...exception.stacktrace,\n type: 'raw',\n frames: (exception.stacktrace.frames || []).map((frame)=>({\n ...frame,\n platform: \"node:javascript\"\n }))\n } : void 0\n }));\n const properties = {\n $exception_message: exceptions[0]?.value || event.message,\n $exception_type: exceptions[0]?.type,\n $exception_level: event.level,\n $exception_list: exceptionList,\n $sentry_event_id: event.event_id,\n $sentry_exception: event.exception,\n $sentry_exception_message: exceptions[0]?.value || event.message,\n $sentry_exception_type: exceptions[0]?.type,\n $sentry_tags: event.tags\n };\n if (organization && projectId) properties['$sentry_url'] = (prefix || 'https://sentry.io/organizations/') + organization + '/issues/?project=' + projectId + '&query=' + event.event_id;\n if (sendExceptionsToPostHog) _posthog.capture({\n event: '$exception',\n distinctId: userId,\n properties\n });\n return event;\n };\n}\nfunction sentryIntegration(_posthog, options) {\n const processor = createEventProcessor(_posthog, options);\n return {\n name: NAME,\n processEvent (event) {\n return processor(event);\n }\n };\n}\nclass PostHogSentryIntegration {\n static #_ = this.POSTHOG_ID_TAG = 'posthog_distinct_id';\n constructor(_posthog, organization, prefix, severityAllowList, sendExceptionsToPostHog){\n this.name = NAME;\n this.name = NAME;\n this.setupOnce = function(addGlobalEventProcessor, getCurrentHub) {\n const projectId = getCurrentHub()?.getClient()?.getDsn()?.projectId;\n addGlobalEventProcessor(createEventProcessor(_posthog, {\n organization,\n projectId,\n prefix,\n severityAllowList,\n sendExceptionsToPostHog: sendExceptionsToPostHog ?? true\n }));\n };\n }\n}\nexport { PostHogSentryIntegration, createEventProcessor, sentryIntegration };\n","import { createModulerModifier } from \"../extensions/error-tracking/modifiers/module.node.mjs\";\nimport { addSourceContext } from \"../extensions/error-tracking/modifiers/context-lines.node.mjs\";\nimport error_tracking from \"../extensions/error-tracking/index.mjs\";\nimport { PostHogBackendClient } from \"../client.mjs\";\nimport { ErrorTracking } from \"@posthog/core\";\nimport { PostHogContext } from \"../extensions/context/context.mjs\";\nexport * from \"../exports.mjs\";\nerror_tracking.errorPropertiesBuilder = new ErrorTracking.ErrorPropertiesBuilder([\n new ErrorTracking.EventCoercer(),\n new ErrorTracking.ErrorCoercer(),\n new ErrorTracking.ObjectCoercer(),\n new ErrorTracking.StringCoercer(),\n new ErrorTracking.PrimitiveCoercer()\n], ErrorTracking.createStackParser(\"node:javascript\", ErrorTracking.nodeStackLineParser), [\n createModulerModifier(),\n addSourceContext\n]);\nclass PostHog extends PostHogBackendClient {\n getLibraryId() {\n return 'posthog-node';\n }\n initializeContext() {\n return new PostHogContext();\n }\n}\nexport { PostHog };\n","import { Config, Effect, Layer, Option, ServiceMap } from \"effect\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { machineId } from \"node-machine-id\";\nimport { hash } from \"ohash\";\nimport { PostHog } from \"posthog-node\";\n\nimport type { EventMap } from \"./analytics-events\";\n\nconst POSTHOG_API_KEY = \"phc_t5FKk9mlc4pKbbBimiIlrM5Acq9meRp1FSuNjmwxjAX\";\nconst POSTHOG_DEFAULT_HOST = \"https://us.i.posthog.com\";\n\nconst posthogClient = new PostHog(POSTHOG_API_KEY, {\n host: POSTHOG_DEFAULT_HOST,\n});\n\n// ---------------------------------------------------------------------------\n// AnalyticsProvider — abstract provider that Analytics delegates to\n// ---------------------------------------------------------------------------\n\nexport interface AnalyticsProviderShape {\n readonly capture: (event: {\n readonly eventName: string;\n readonly properties: Record<string, unknown>;\n readonly distinctId: string;\n }) => Effect.Effect<void>;\n readonly identify: (params: {\n readonly distinctId: string;\n readonly email: string;\n readonly name?: string;\n }) => Effect.Effect<void>;\n readonly flush: Effect.Effect<void>;\n}\n\nexport class AnalyticsProvider extends ServiceMap.Service<\n AnalyticsProvider,\n AnalyticsProviderShape\n>()(\"@expect/AnalyticsProvider\") {\n static layerPostHog = Layer.succeed(this)({\n capture: (event) =>\n Effect.sync(() => {\n posthogClient.captureImmediate({\n event: event.eventName,\n properties: event.properties,\n distinctId: event.distinctId,\n });\n }),\n identify: (params) =>\n Effect.sync(() => {\n posthogClient.identify({\n distinctId: params.distinctId,\n properties: {\n email: params.email,\n ...(params.name ? { name: params.name } : {}),\n },\n });\n }),\n flush: Effect.tryPromise({\n try: () => posthogClient.flush(),\n catch: (cause) => cause,\n }).pipe(Effect.ignore),\n });\n\n static layerDev = Layer.succeed(this)({\n capture: (event) =>\n Effect.logInfo(\"Tracked event\", {\n eventName: event.eventName,\n distinctId: event.distinctId,\n ...event.properties,\n }).pipe(Effect.annotateLogs({ module: \"Analytics\" })),\n identify: (params) =>\n Effect.logInfo(\"Identified user\", {\n distinctId: params.distinctId,\n email: params.email,\n name: params.name,\n }).pipe(Effect.annotateLogs({ module: \"Analytics\" })),\n flush: Effect.void,\n });\n}\n\n// ---------------------------------------------------------------------------\n// Analytics — public service\n// ---------------------------------------------------------------------------\n\nexport class Analytics extends ServiceMap.Service<Analytics>()(\"@expect/Analytics\", {\n make: Effect.gen(function* () {\n const provider = yield* AnalyticsProvider;\n const noTelemetryValue = yield* Config.option(Config.string(\"NO_TELEMETRY\"));\n const noTelemetryLegacy = yield* Config.option(Config.string(\"NO_TELEMTRY\"));\n const githubActionsValue = yield* Config.string(\"GITHUB_ACTIONS\").pipe(Config.withDefault(\"\"));\n const telemetryDisabled =\n Option.match(noTelemetryValue, {\n onNone: () => false,\n onSome: (value) => value === \"1\",\n }) ||\n Option.match(noTelemetryLegacy, {\n onNone: () => false,\n onSome: (value) => value === \"1\",\n }) ||\n githubActionsValue !== \"\";\n\n const projectId = hash(process.cwd());\n\n const distinctId = yield* Effect.tryPromise(async () => {\n if (telemetryDisabled) return \"\";\n return machineId();\n }).pipe(\n Effect.catchTag(\"UnknownError\", (cause) =>\n Effect.logWarning(\"Failed to get machine ID, using fallback\", { cause }).pipe(\n Effect.as(globalThis.crypto.randomUUID()),\n ),\n ),\n );\n\n const capture = <K extends keyof EventMap>(\n eventName: K,\n ...[properties]: EventMap[K] extends undefined ? [] : [EventMap[K]]\n ) =>\n Effect.gen(function* () {\n if (telemetryDisabled) return;\n const commonProperties = {\n timestamp: new Date().toISOString(),\n projectId,\n };\n\n yield* provider.capture({\n eventName: eventName as string,\n properties: { ...commonProperties, ...(properties ?? {}) },\n distinctId,\n });\n }).pipe(\n Effect.catchCause((cause) =>\n Effect.logWarning(\"Analytics capture failed\", {\n eventName,\n cause,\n }).pipe(Effect.annotateLogs({ module: \"Analytics\" })),\n ),\n );\n\n const track: {\n <K extends keyof EventMap>(\n eventName: K & (EventMap[K] extends undefined ? K : never),\n ): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;\n <K extends keyof EventMap, A>(\n eventName: K & (EventMap[K] extends undefined ? never : K),\n deriveProperties: (result: A) => EventMap[K],\n ): <E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;\n } = (<K extends keyof EventMap, A>(\n eventName: K,\n deriveProperties?: (result: A) => EventMap[K],\n ) =>\n <E, R>(self: Effect.Effect<A, E, R>) =>\n Effect.tap(self, (result) => {\n const props = deriveProperties ? deriveProperties(result) : undefined;\n return (capture as Function).call(\n undefined,\n eventName,\n ...(props !== undefined ? [props] : []),\n );\n })) as never;\n\n return { capture, track, flush: telemetryDisabled ? Effect.void : provider.flush } as const;\n }),\n}) {\n static layerPostHog = Layer.effect(this)(this.make).pipe(\n Layer.provide(AnalyticsProvider.layerPostHog),\n Layer.provide(NodeServices.layer),\n );\n static layerDev = Layer.effect(this)(this.make).pipe(\n Layer.provide(AnalyticsProvider.layerDev),\n Layer.provide(NodeServices.layer),\n );\n}\n","import * as NodeHttpClient from \"@effect/platform-node/NodeHttpClient\";\nimport { Layer } from \"effect\";\nimport * as Otlp from \"effect/unstable/observability/Otlp\";\n\nconst AXIOM_DATASET = \"expect-cli\";\nconst AXIOM_TOKEN = \"xaat-a6ce2fdb-d378-444e-9d72-bb458867187a\";\nconst AXIOM_DEFAULT_SERVICE_NAME = \"expect-cli\";\n\nexport const layerAxiom = (\n serviceName = AXIOM_DEFAULT_SERVICE_NAME /* service name is different from dataset name */,\n) =>\n Otlp.layerJson({\n baseUrl: \"https://api.axiom.co\",\n resource: { serviceName },\n headers: {\n Authorization: `Bearer ${AXIOM_TOKEN}`,\n \"X-Axiom-Dataset\": AXIOM_DATASET,\n },\n }).pipe(Layer.provide(NodeHttpClient.layerUndici));\n","import { Layer, Logger, ManagedRuntime } from \"effect\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { Tracing } from \"@expect/shared/observability\";\nimport { McpSession } from \"./mcp-session\";\n\nconst StderrLoggerLayer = Layer.succeed(Logger.LogToStderr, true);\n\nexport const McpRuntime = ManagedRuntime.make(\n McpSession.layer.pipe(\n Layer.provide(StderrLoggerLayer),\n Layer.provide(Tracing.layerAxiom(\"expect-mcp\")),\n Layer.provide(NodeServices.layer),\n ),\n);\n","import { readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport type { Page } from \"playwright\";\nimport { Effect, Schema } from \"effect\";\n\nexport class AccessibilityAuditError extends Schema.ErrorClass<AccessibilityAuditError>(\n \"AccessibilityAuditError\",\n)({\n _tag: Schema.tag(\"AccessibilityAuditError\"),\n engine: Schema.String,\n cause: Schema.String,\n}) {\n message = `Accessibility audit failed (${this.engine}): ${this.cause}`;\n}\n\ninterface AccessibilityNode {\n readonly selector: string;\n readonly html: string;\n readonly failureSummary: string;\n}\n\ninterface AccessibilityViolation {\n readonly impact: \"critical\" | \"serious\" | \"moderate\" | \"minor\";\n readonly ruleId: string;\n readonly description: string;\n readonly helpUrl: string;\n readonly wcagTags: readonly string[];\n readonly nodes: readonly AccessibilityNode[];\n}\n\ninterface AccessibilityAuditOptions {\n readonly selector?: string;\n readonly tags?: readonly string[];\n}\n\ninterface IbmIssue {\n readonly ruleId: string;\n readonly value: readonly [string, string];\n readonly message: string;\n readonly path: { readonly dom: string } | undefined;\n readonly snippet: string | undefined;\n}\n\ninterface IbmReport {\n readonly results: readonly IbmIssue[];\n}\n\nconst DEFAULT_WCAG_TAGS = [\"wcag2a\", \"wcag2aa\", \"wcag21a\", \"wcag21aa\"];\n\nconst IMPACT_ORDER: Record<string, number> = {\n critical: 0,\n serious: 1,\n moderate: 2,\n minor: 3,\n};\n\nconst IBM_SEVERITY_TO_IMPACT: Record<string, AccessibilityViolation[\"impact\"]> = {\n VIOLATION: \"serious\",\n RECOMMENDATION: \"moderate\",\n INFORMATION: \"minor\",\n};\n\nlet cachedAceScript: string | undefined;\n\nconst loadAceScript = () => {\n if (!cachedAceScript) {\n const require = createRequire(import.meta.url);\n const aceScriptPath = require.resolve(\"accessibility-checker-engine/ace.js\");\n cachedAceScript = readFileSync(aceScriptPath, \"utf8\");\n }\n return cachedAceScript;\n};\n\nexport const runAccessibilityAudit = Effect.fn(\"runAccessibilityAudit\")(function* (\n page: Page,\n options: AccessibilityAuditOptions = {},\n) {\n const { default: AxeBuilder } = yield* Effect.promise(() => import(\"@axe-core/playwright\"));\n\n let builder = new AxeBuilder({ page });\n const tags = options.tags ?? DEFAULT_WCAG_TAGS;\n builder = builder.withTags([...tags]);\n if (options.selector) {\n builder = builder.include(options.selector);\n }\n\n const aceScript = loadAceScript();\n\n const [axeResults, ibmReport] = yield* Effect.all(\n [\n Effect.tryPromise({\n try: () => builder.analyze(),\n catch: (cause) => new AccessibilityAuditError({ engine: \"axe-core\", cause: String(cause) }),\n }).pipe(\n Effect.catchTag(\"AccessibilityAuditError\", (error) =>\n Effect.logWarning(\"axe-core audit failed\", { cause: error.cause }).pipe(\n Effect.as(undefined),\n ),\n ),\n ),\n Effect.tryPromise({\n try: () => page.evaluate(aceScript),\n catch: (cause) =>\n new AccessibilityAuditError({ engine: \"ibm-equal-access\", cause: String(cause) }),\n }).pipe(\n // HACK: page.evaluate erases types across the serialization boundary; IBM engine has no TS types\n Effect.flatMap(() =>\n Effect.tryPromise({\n try: (): Promise<IbmReport> =>\n page.evaluate(async () => {\n const ace = (globalThis as any).ace;\n const checker = new ace.Checker();\n const report = await checker.check(document, [\"WCAG_2_2\"]);\n return {\n results: report.results.map(({ node: _node, ...rest }: any) => rest),\n };\n }),\n catch: (cause) =>\n new AccessibilityAuditError({ engine: \"ibm-equal-access\", cause: String(cause) }),\n }),\n ),\n Effect.catchTag(\"AccessibilityAuditError\", (error) =>\n Effect.logWarning(\"IBM Equal Access audit failed\", { cause: error.cause }).pipe(\n Effect.as(undefined),\n ),\n ),\n ),\n ] as const,\n { concurrency: 2 },\n );\n\n const axeViolations: AccessibilityViolation[] = axeResults\n ? axeResults.violations.map((violation) => ({\n impact: (violation.impact ?? \"moderate\") as AccessibilityViolation[\"impact\"],\n ruleId: violation.id,\n description: violation.description,\n helpUrl: violation.helpUrl,\n wcagTags: violation.tags,\n nodes: violation.nodes.map((node) => ({\n selector: node.target.join(\" \"),\n html: node.html,\n failureSummary: node.failureSummary ?? \"\",\n })),\n }))\n : [];\n\n const axeRuleIds = new Set(axeViolations.map((violation) => violation.ruleId));\n\n const ibmViolations: AccessibilityViolation[] = ibmReport\n ? ibmReport.results\n .filter(\n (result) =>\n result.value[0] === \"VIOLATION\" &&\n (result.value[1] === \"FAIL\" || result.value[1] === \"POTENTIAL\") &&\n !axeRuleIds.has(result.ruleId),\n )\n .map((issue) => ({\n impact: IBM_SEVERITY_TO_IMPACT[issue.value[0]] ?? \"moderate\",\n ruleId: issue.ruleId,\n description: issue.message,\n helpUrl: `https://able.ibm.com/rules/archives/latest/doc/${issue.ruleId}`,\n wcagTags: [],\n nodes: [\n {\n selector: issue.path?.dom ?? \"\",\n html: issue.snippet ?? \"\",\n failureSummary: issue.message,\n },\n ],\n }))\n : [];\n\n const violations = [...axeViolations, ...ibmViolations].sort(\n (left, right) => (IMPACT_ORDER[left.impact] ?? 3) - (IMPACT_ORDER[right.impact] ?? 3),\n );\n\n yield* Effect.logInfo(\"Accessibility audit complete\", {\n axeViolationCount: axeViolations.length,\n ibmViolationCount: ibmViolations.length,\n totalViolationCount: violations.length,\n });\n\n return {\n violations,\n summary: {\n total: violations.length,\n critical: violations.filter((violation) => violation.impact === \"critical\").length,\n serious: violations.filter((violation) => violation.impact === \"serious\").length,\n moderate: violations.filter((violation) => violation.impact === \"moderate\").length,\n minor: violations.filter((violation) => violation.impact === \"minor\").length,\n },\n };\n});\n","import fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport net from \"node:net\";\nimport { Effect, Option } from \"effect\";\nimport { CDP_DISCOVERY_TIMEOUT_MS, CDP_COMMON_PORTS, CDP_PORT_PROBE_TIMEOUT_MS } from \"./constants\";\nimport { CdpDiscoveryError } from \"./errors\";\n\ninterface VersionInfo {\n readonly webSocketDebuggerUrl?: string;\n}\n\nconst fetchJson = <A>(url: string) =>\n Effect.tryPromise({\n try: async () => {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), CDP_DISCOVERY_TIMEOUT_MS);\n try {\n const response = await fetch(url, { signal: controller.signal });\n return (await response.json()) as A;\n } finally {\n clearTimeout(timer);\n }\n },\n catch: (cause) => new CdpDiscoveryError({ cause: `Failed to fetch ${url}: ${cause}` }),\n });\n\nconst rewriteWsHost = (wsUrl: string, host: string, port: number) => {\n try {\n const parsed = new URL(wsUrl);\n parsed.hostname = host;\n parsed.port = String(port);\n return parsed.toString();\n } catch {\n return wsUrl;\n }\n};\n\nconst discoverViaJsonVersion = (host: string, port: number) =>\n fetchJson<VersionInfo>(`http://${host}:${port}/json/version`).pipe(\n Effect.flatMap((info) => {\n if (!info.webSocketDebuggerUrl) {\n return new CdpDiscoveryError({\n cause: `No webSocketDebuggerUrl in /json/version at ${host}:${port}`,\n }).asEffect();\n }\n return Effect.succeed(rewriteWsHost(info.webSocketDebuggerUrl, host, port));\n }),\n );\n\ninterface CdpTarget {\n readonly type?: string;\n readonly webSocketDebuggerUrl?: string;\n}\n\nconst discoverViaJsonList = (host: string, port: number) =>\n fetchJson<CdpTarget[]>(`http://${host}:${port}/json/list`).pipe(\n Effect.flatMap((targets) => {\n const browserTarget = targets.find((target) => target.type === \"browser\");\n const target = browserTarget ?? targets[0];\n const wsUrl = target?.webSocketDebuggerUrl;\n if (!wsUrl) {\n return new CdpDiscoveryError({\n cause: `No webSocketDebuggerUrl found in /json/list at ${host}:${port}`,\n }).asEffect();\n }\n return Effect.succeed(rewriteWsHost(wsUrl, host, port));\n }),\n );\n\nconst isPortReachable = (host: string, port: number) =>\n Effect.promise(\n () =>\n new Promise<boolean>((resolve) => {\n const socket = new net.Socket();\n socket.setTimeout(CDP_PORT_PROBE_TIMEOUT_MS);\n socket.once(\"connect\", () => {\n socket.destroy();\n resolve(true);\n });\n socket.once(\"timeout\", () => {\n socket.destroy();\n resolve(false);\n });\n socket.once(\"error\", () => {\n socket.destroy();\n resolve(false);\n });\n socket.connect(port, host);\n }),\n );\n\nconst tryDiscover = <A>(effect: Effect.Effect<A, CdpDiscoveryError>) =>\n effect.pipe(\n Effect.map((value) => Option.some(value)),\n Effect.catchTag(\"CdpDiscoveryError\", () => Effect.succeed(Option.none<A>())),\n );\n\nexport const discoverCdpUrl = Effect.fn(\"discoverCdpUrl\")(function* (host: string, port: number) {\n yield* Effect.annotateCurrentSpan({ host, port });\n\n const versionResult = yield* tryDiscover(discoverViaJsonVersion(host, port));\n if (Option.isSome(versionResult)) return versionResult.value;\n\n const listResult = yield* tryDiscover(discoverViaJsonList(host, port));\n if (Option.isSome(listResult)) return listResult.value;\n\n const reachable = yield* isPortReachable(host, port);\n if (reachable) return `ws://${host}:${port}/devtools/browser`;\n\n return yield* new CdpDiscoveryError({\n cause: `All CDP discovery methods failed for ${host}:${port}`,\n });\n});\n\nconst getChromeUserDataDirs = () => {\n const home = os.homedir();\n const platform = os.platform();\n\n if (platform === \"darwin\") {\n const base = path.join(home, \"Library\", \"Application Support\");\n return [\n path.join(base, \"Google\", \"Chrome\"),\n path.join(base, \"Google\", \"Chrome Canary\"),\n path.join(base, \"Chromium\"),\n path.join(base, \"BraveSoftware\", \"Brave-Browser\"),\n path.join(base, \"Microsoft Edge\"),\n path.join(base, \"Arc\", \"User Data\"),\n ];\n }\n\n if (platform === \"linux\") {\n const config = path.join(home, \".config\");\n return [\n path.join(config, \"google-chrome\"),\n path.join(config, \"google-chrome-unstable\"),\n path.join(config, \"chromium\"),\n path.join(config, \"BraveSoftware\", \"Brave-Browser\"),\n path.join(config, \"microsoft-edge\"),\n ];\n }\n\n if (platform === \"win32\") {\n const localAppData = process.env[\"LOCALAPPDATA\"];\n if (!localAppData) return [];\n return [\n path.join(localAppData, \"Google\", \"Chrome\", \"User Data\"),\n path.join(localAppData, \"Google\", \"Chrome SxS\", \"User Data\"),\n path.join(localAppData, \"Chromium\", \"User Data\"),\n path.join(localAppData, \"BraveSoftware\", \"Brave-Browser\", \"User Data\"),\n path.join(localAppData, \"Microsoft\", \"Edge\", \"User Data\"),\n ];\n }\n\n return [];\n};\n\nconst readDevToolsActivePort = (userDataDir: string) =>\n Effect.tryPromise({\n try: () => fs.readFile(path.join(userDataDir, \"DevToolsActivePort\"), \"utf-8\"),\n catch: () =>\n new CdpDiscoveryError({\n cause: `No DevToolsActivePort file in ${userDataDir}`,\n }),\n }).pipe(\n Effect.flatMap((content) => {\n const lines = content.trim().split(\"\\n\");\n const portStr = lines[0]?.trim();\n if (!portStr) {\n return new CdpDiscoveryError({\n cause: `Empty DevToolsActivePort in ${userDataDir}`,\n }).asEffect();\n }\n const port = Number.parseInt(portStr, 10);\n if (Number.isNaN(port)) {\n return new CdpDiscoveryError({\n cause: `Invalid port in DevToolsActivePort: ${portStr}`,\n }).asEffect();\n }\n const wsPath = lines[1]?.trim() ?? \"/devtools/browser\";\n return Effect.succeed({ port, wsPath });\n }),\n );\n\nconst removeStaleFile = (filePath: string) =>\n Effect.tryPromise({\n try: () => fs.unlink(filePath),\n catch: () => undefined,\n });\n\nexport const autoDiscoverCdp = Effect.fn(\"autoDiscoverCdp\")(function* () {\n const userDataDirs = getChromeUserDataDirs();\n\n for (const dir of userDataDirs) {\n const portResult = yield* tryDiscover(readDevToolsActivePort(dir));\n if (Option.isNone(portResult)) continue;\n\n const { port, wsPath } = portResult.value;\n yield* Effect.logDebug(\"Found DevToolsActivePort\", { dir, port });\n const reachable = yield* isPortReachable(\"127.0.0.1\", port);\n if (!reachable) {\n yield* Effect.logInfo(\"Removing stale DevToolsActivePort\", { dir, port });\n yield* removeStaleFile(path.join(dir, \"DevToolsActivePort\"));\n continue;\n }\n\n const discovered = yield* tryDiscover(discoverCdpUrl(\"127.0.0.1\", port));\n if (Option.isSome(discovered)) return discovered.value;\n\n return `ws://127.0.0.1:${port}${wsPath}`;\n }\n\n for (const port of CDP_COMMON_PORTS) {\n const reachable = yield* isPortReachable(\"127.0.0.1\", port);\n if (!reachable) continue;\n\n yield* Effect.logDebug(\"Probing common CDP port\", { port });\n const discovered = yield* tryDiscover(discoverCdpUrl(\"127.0.0.1\", port));\n if (Option.isSome(discovered)) return discovered.value;\n }\n\n return yield* new CdpDiscoveryError({\n cause:\n \"No running Chrome instance found. Launch Chrome with --remote-debugging-port or pass a CDP URL directly.\",\n });\n});\n","import { mkdirSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod/v4\";\nimport { Effect, type ManagedRuntime } from \"effect\";\nimport { evaluateRuntime } from \"../utils/evaluate-runtime\";\nimport { runAccessibilityAudit } from \"../accessibility\";\nimport { formatPerformanceTrace } from \"../performance-trace\";\nimport { McpSession } from \"./mcp-session\";\nimport { autoDiscoverCdp } from \"../cdp-discovery\";\nimport { DUPLICATE_REQUEST_WINDOW_MS } from \"./constants\";\nimport { registerRulesResources } from \"./rules-resources\";\n\nconst textResult = (text: string) => ({\n content: [{ type: \"text\" as const, text }],\n});\n\nconst safeJsonStringify = (data: unknown): string => {\n const seen = new WeakSet();\n return JSON.stringify(\n data,\n (_key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) return \"[Circular]\";\n seen.add(value);\n }\n return value;\n },\n 2,\n );\n};\n\nconst jsonResult = (data: unknown) => textResult(safeJsonStringify(data));\n\nconst imageResult = (base64: string) => ({\n content: [{ type: \"image\" as const, data: base64, mimeType: \"image/png\" }],\n});\n\nconst AsyncFunction = Object.getPrototypeOf(async () => {}).constructor;\n\n// Tool annotations (readOnlyHint, destructiveHint) enable parallel execution in the Claude Agent SDK.\n// See: https://platform.claude.com/docs/en/agent-sdk/agent-loop#parallel-tool-execution\nexport const createBrowserMcpServer = <E>(\n runtime: ManagedRuntime.ManagedRuntime<McpSession, E>,\n) => {\n const runMcp = <A>(effect: Effect.Effect<A, unknown, McpSession>) => runtime.runPromise(effect);\n\n const server = new McpServer({\n name: \"expect\",\n version: \"0.0.1\",\n });\n\n server.registerTool(\n \"open\",\n {\n title: \"Open URL\",\n description:\n \"Navigate to a URL, launching a browser if needed. Set 'cdp' to a WebSocket URL (e.g. 'ws://localhost:9222/devtools/browser/...') to connect to an already-running Chrome via CDP instead of launching a new browser.\",\n inputSchema: {\n url: z.string().describe(\"URL to navigate to\"),\n headed: z.boolean().optional().describe(\"Show browser window\"),\n cookies: z\n .boolean()\n .optional()\n .describe(\"Reuse local browser cookies for the target URL when available\"),\n waitUntil: z\n .enum([\"load\", \"domcontentloaded\", \"networkidle\", \"commit\"])\n .optional()\n .describe(\"Wait strategy\"),\n cdp: z\n .string()\n .optional()\n .describe(\n \"CDP WebSocket endpoint URL to connect to an existing Chrome instance (e.g. 'ws://localhost:9222/devtools/browser/...'). Use 'auto' to auto-discover a running Chrome.\",\n ),\n browser: z\n .enum([\"chromium\", \"webkit\", \"firefox\"])\n .optional()\n .describe(\n \"Browser engine to launch (default: chromium). Use 'webkit' for Safari-like testing or 'firefox' for Firefox testing. CDP connections are only supported with chromium.\",\n ),\n },\n },\n ({ url, headed, cookies, waitUntil, cdp, browser: browserType }) =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n\n if (session.hasSession()) {\n yield* session.navigate(url, { waitUntil });\n return textResult(`Navigated to ${url}`);\n }\n\n let cdpUrl: string | undefined;\n if (cdp === \"auto\") {\n cdpUrl = yield* autoDiscoverCdp();\n yield* Effect.logInfo(\"Auto-discovered CDP endpoint\", { cdpUrl });\n } else if (cdp) {\n cdpUrl = cdp;\n }\n\n const result = yield* session.open(url, {\n headed,\n cookies,\n waitUntil,\n cdpUrl,\n browserType,\n });\n const engineSuffix = browserType && browserType !== \"chromium\" ? ` [${browserType}]` : \"\";\n const cdpSuffix = cdpUrl ? ` (connected via CDP: ${cdpUrl})` : \"\";\n return textResult(\n `Opened ${url}${engineSuffix}${cdpSuffix}` +\n (result.injectedCookieCount > 0\n ? ` (${result.injectedCookieCount} cookies synced from local browser)`\n : \"\"),\n );\n }).pipe(Effect.withSpan(`mcp.tool.open`)),\n ),\n );\n\n server.registerTool(\n \"playwright\",\n {\n title: \"Execute Playwright\",\n description:\n \"Execute Playwright code in the Node.js context. Available globals: page (Page), context (BrowserContext), browser (Browser), ref (function: ref ID from snapshot → Playwright Locator). Use `return` to send a value back as JSON. Supports await. Set snapshotAfter=true to automatically take a fresh ARIA snapshot after execution and get updated refs — useful after actions that change the DOM (opening dropdowns, dialogs, navigating).\",\n inputSchema: {\n code: z.string().describe(\"Playwright code to execute\"),\n snapshotAfter: z\n .boolean()\n .optional()\n .describe(\n \"Take a fresh ARIA snapshot after execution and return it alongside the result. Use after actions that change the DOM (dropdowns, dialogs, navigation).\",\n ),\n },\n },\n ({ code, snapshotAfter }) =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n const sessionData = yield* session.requireSession();\n\n const ref = (refId: string) => {\n if (!sessionData.lastSnapshot)\n throw new Error(\"No snapshot taken yet. Call screenshot with mode 'snapshot' first.\");\n return Effect.runSync(sessionData.lastSnapshot.locator(refId));\n };\n\n const codeResult = yield* Effect.promise(async () => {\n try {\n const userFunction = new AsyncFunction(\"page\", \"context\", \"browser\", \"ref\", code);\n const result = await userFunction(\n sessionData.page,\n sessionData.context,\n sessionData.browser,\n ref,\n );\n return { success: true as const, value: result };\n } catch (error) {\n return {\n success: false as const,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n });\n\n if (!codeResult.success) {\n return textResult(`Error: ${codeResult.error}`);\n }\n\n if (snapshotAfter) {\n const snapshotResult = yield* session.snapshot(sessionData.page);\n yield* session.updateLastSnapshot(snapshotResult);\n const resultPayload =\n codeResult.value === undefined\n ? {\n snapshot: {\n tree: snapshotResult.tree,\n refs: snapshotResult.refs,\n stats: snapshotResult.stats,\n },\n }\n : {\n result: codeResult.value,\n snapshot: {\n tree: snapshotResult.tree,\n refs: snapshotResult.refs,\n stats: snapshotResult.stats,\n },\n };\n return jsonResult(resultPayload);\n }\n\n if (codeResult.value === undefined) return textResult(\"OK\");\n return jsonResult(codeResult.value);\n }).pipe(Effect.withSpan(`mcp.tool.playwright`)),\n ),\n );\n\n server.registerTool(\n \"screenshot\",\n {\n title: \"Screenshot\",\n description:\n \"Capture the current page state. Modes: 'screenshot' (default, PNG image), 'snapshot' (ARIA accessibility tree with element refs), 'annotated' (screenshot with numbered labels on interactive elements).\",\n annotations: { readOnlyHint: true },\n inputSchema: {\n mode: z\n .enum([\"screenshot\", \"snapshot\", \"annotated\"])\n .optional()\n .describe(\"Capture mode (default: screenshot)\"),\n fullPage: z\n .boolean()\n .optional()\n .describe(\n \"Capture the full page. For screenshot/annotated: captures full scrollable page. For snapshot: includes all elements in scroll containers instead of only visible ones.\",\n ),\n },\n },\n ({ mode, fullPage }) =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n const page = yield* session.requirePage();\n const resolvedMode = mode ?? \"screenshot\";\n\n if (resolvedMode === \"snapshot\") {\n const result = yield* session.snapshot(page, {\n viewportAware: !fullPage,\n });\n yield* session.updateLastSnapshot(result);\n return jsonResult({ tree: result.tree, refs: result.refs, stats: result.stats });\n }\n\n if (resolvedMode === \"annotated\") {\n const result = yield* session.annotatedScreenshot(page, { fullPage });\n yield* session.saveScreenshot(result.screenshot);\n return {\n content: [\n {\n type: \"image\" as const,\n data: result.screenshot.toString(\"base64\"),\n mimeType: \"image/png\",\n },\n {\n type: \"text\" as const,\n text: result.annotations\n .map(\n (annotation) =>\n `[${annotation.label}] @${annotation.ref} ${annotation.role} \"${annotation.name}\"`,\n )\n .join(\"\\n\"),\n },\n ],\n };\n }\n\n const buffer = yield* Effect.tryPromise(() =>\n page.screenshot({ fullPage, scale: \"css\" }),\n );\n yield* session.saveScreenshot(buffer);\n return imageResult(buffer.toString(\"base64\"));\n }).pipe(Effect.withSpan(`mcp.tool.screenshot`)),\n ),\n );\n\n server.registerTool(\n \"console_logs\",\n {\n title: \"Console Logs\",\n description:\n \"Get browser console log messages. Optionally filter by log type (log, warning, error, info, debug).\",\n annotations: { readOnlyHint: true },\n inputSchema: {\n type: z\n .string()\n .optional()\n .describe(\"Filter by console message type (e.g. 'error', 'warning', 'log')\"),\n clear: z.boolean().optional().describe(\"Clear the collected messages after reading\"),\n },\n },\n ({ type, clear }) =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n const sessionData = yield* session.requireSession();\n const entries = type\n ? sessionData.consoleMessages.filter((entry) => entry.type === type)\n : sessionData.consoleMessages;\n if (clear) sessionData.consoleMessages.length = 0;\n if (entries.length === 0) return textResult(\"No console messages captured.\");\n\n const errorCount = entries.filter((entry) => entry.type === \"error\").length;\n const warningCount = entries.filter((entry) => entry.type === \"warning\").length;\n const summary =\n errorCount > 0 || warningCount > 0\n ? `${errorCount} error(s), ${warningCount} warning(s) out of ${entries.length} total messages\\n\\n`\n : \"\";\n\n return jsonResult({ summary: summary || undefined, messages: entries });\n }).pipe(Effect.withSpan(`mcp.tool.console_logs`)),\n ),\n );\n\n server.registerTool(\n \"network_requests\",\n {\n title: \"Network Requests\",\n description:\n \"Get captured network requests with automatic issue detection. Flags failed requests (4xx/5xx), duplicate requests (same URL+method within 500ms), and mixed content (HTTP on HTTPS pages). Optionally filter by HTTP method, URL substring, or resource type.\",\n annotations: { readOnlyHint: true },\n inputSchema: {\n method: z.string().optional().describe(\"Filter by HTTP method (e.g. 'GET', 'POST')\"),\n url: z.string().optional().describe(\"Filter by URL substring match\"),\n resourceType: z\n .string()\n .optional()\n .describe(\"Filter by resource type (e.g. 'xhr', 'fetch', 'document', 'script')\"),\n clear: z.boolean().optional().describe(\"Clear the collected requests after reading\"),\n },\n },\n ({ method, url, resourceType, clear }) =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n const sessionData = yield* session.requireSession();\n const normalizedMethod = method?.toUpperCase();\n const normalizedResourceType = resourceType?.toLowerCase();\n const entries = sessionData.networkRequests.filter(\n (entry) =>\n (!normalizedMethod || entry.method === normalizedMethod) &&\n (!url || entry.url.includes(url)) &&\n (!normalizedResourceType || entry.resourceType === normalizedResourceType),\n );\n if (clear) sessionData.networkRequests.length = 0;\n if (entries.length === 0) return textResult(\"No network requests captured.\");\n\n const failed = entries.filter(\n (entry) => entry.status !== undefined && entry.status >= 400,\n );\n\n const duplicateMap = new Map<string, { url: string; method: string; count: number }>();\n const lastTimestamp = new Map<string, number>();\n for (const entry of entries) {\n const key = `${entry.method}:${entry.url}`;\n const previous = lastTimestamp.get(key);\n if (\n previous !== undefined &&\n Math.abs(entry.timestamp - previous) < DUPLICATE_REQUEST_WINDOW_MS\n ) {\n const existing = duplicateMap.get(key);\n if (existing) {\n existing.count++;\n } else {\n duplicateMap.set(key, { url: entry.url, method: entry.method, count: 2 });\n }\n }\n lastTimestamp.set(key, entry.timestamp);\n }\n const duplicates = Array.from(duplicateMap.values());\n\n const isHttps = entries.some(\n (entry) => entry.resourceType === \"document\" && entry.url.startsWith(\"https://\"),\n );\n const mixedContent = isHttps\n ? entries.filter(\n (entry) => entry.resourceType !== \"document\" && entry.url.startsWith(\"http://\"),\n )\n : [];\n\n const issues = {\n failedRequests: failed.map((entry) => ({\n url: entry.url,\n method: entry.method,\n status: entry.status,\n })),\n duplicateRequests: duplicates,\n mixedContent: mixedContent.map((entry) => entry.url),\n };\n\n const hasIssues = failed.length > 0 || duplicates.length > 0 || mixedContent.length > 0;\n\n return jsonResult({\n issues: hasIssues ? issues : undefined,\n requests: entries,\n });\n }).pipe(Effect.withSpan(`mcp.tool.network_requests`)),\n ),\n );\n\n server.registerTool(\n \"performance_metrics\",\n {\n title: \"Performance Metrics\",\n description:\n \"Collect a full performance trace: Core Web Vitals (FCP, LCP, CLS, INP), navigation timing (TTFB, server timing), Long Animation Frames (LoAF) with script attribution, and resource breakdown (slowest/largest). Writes the full trace to a file and returns the path plus a summary. Read the file for detailed LoAF script attribution and resource analysis.\",\n annotations: { readOnlyHint: true },\n inputSchema: {},\n },\n () =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n const page = yield* session.requirePage();\n const trace = yield* evaluateRuntime(page, \"getPerformanceTrace\");\n\n const hasMetrics = trace.webVitals.fcp || trace.webVitals.lcp || trace.webVitals.inp;\n if (!hasMetrics && trace.longAnimationFrames.length === 0) {\n return textResult(\"No performance metrics available yet.\");\n }\n\n const traceDocument = formatPerformanceTrace(trace);\n const traceDir = \"/tmp/expect-replays\";\n const tracePath = path.join(traceDir, `performance-trace-${Date.now()}.md`);\n yield* Effect.sync(() => {\n mkdirSync(traceDir, { recursive: true });\n writeFileSync(tracePath, traceDocument);\n });\n\n const summary = [`Performance trace written to: ${tracePath}`, \"\", \"Web Vitals:\"];\n const { webVitals } = trace;\n if (webVitals.fcp)\n summary.push(` FCP: ${webVitals.fcp.value}ms (${webVitals.fcp.rating})`);\n if (webVitals.lcp)\n summary.push(` LCP: ${webVitals.lcp.value}ms (${webVitals.lcp.rating})`);\n if (webVitals.cls)\n summary.push(` CLS: ${webVitals.cls.value} (${webVitals.cls.rating})`);\n if (webVitals.inp)\n summary.push(` INP: ${webVitals.inp.value}ms (${webVitals.inp.rating})`);\n if (trace.navigation) {\n summary.push(` TTFB: ${trace.navigation.ttfb}ms`);\n }\n if (trace.longAnimationFrames.length > 0) {\n summary.push(`\\nLong Animation Frames: ${trace.longAnimationFrames.length} detected`);\n const worstBlocking = Math.max(\n ...trace.longAnimationFrames.map((frame) => frame.blockingDuration),\n );\n summary.push(` Worst blocking duration: ${Math.round(worstBlocking)}ms`);\n }\n summary.push(\n `\\nResources: ${trace.resources.totalCount} loaded (${Math.round(trace.resources.totalTransferSizeBytes / 1024)}KB total)`,\n );\n\n summary.push(`\\nFull trace: ${tracePath}`);\n\n return textResult(summary.join(\"\\n\"));\n }).pipe(Effect.withSpan(`mcp.tool.performance_metrics`)),\n ),\n );\n\n server.registerTool(\n \"accessibility_audit\",\n {\n title: \"Accessibility Audit\",\n description:\n \"Run a WCAG accessibility audit on the current page using two engines (axe-core + IBM Equal Access). Returns violations sorted by severity with CSS selectors, HTML context, WCAG tags, and fix guidance.\",\n annotations: { readOnlyHint: true },\n inputSchema: {\n selector: z\n .string()\n .optional()\n .describe(\"CSS selector to scope the audit to a specific region of the page\"),\n tags: z\n .array(z.string())\n .optional()\n .describe(\n \"WCAG tags to filter by (default: wcag2a, wcag2aa, wcag21a, wcag21aa). Only applies to the axe-core engine.\",\n ),\n },\n },\n ({ selector, tags }) =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n const page = yield* session.requirePage();\n const result = yield* runAccessibilityAudit(page, { selector, tags });\n if (result.violations.length === 0) {\n return textResult(\"No accessibility violations found.\");\n }\n return jsonResult(result);\n }).pipe(Effect.withSpan(`mcp.tool.accessibility_audit`)),\n ),\n );\n\n server.registerTool(\n \"close\",\n {\n title: \"Close Browser\",\n description: \"Close the browser and end the session.\",\n annotations: { destructiveHint: true },\n inputSchema: {},\n },\n () =>\n runMcp(\n Effect.gen(function* () {\n const session = yield* McpSession;\n const result = yield* session.close();\n if (!result) return textResult(\"No browser open.\");\n const lines = [\"Browser closed.\"];\n if (result.tmpReplaySessionPath) {\n lines.push(`rrweb replay: ${result.tmpReplaySessionPath}`);\n }\n if (result.tmpReportPath) {\n lines.push(`rrweb report: ${result.tmpReportPath}`);\n }\n if (result.tmpVideoPath) {\n lines.push(`Playwright video: ${result.tmpVideoPath}`);\n } else if (result.videoPath) {\n lines.push(`Playwright video: ${result.videoPath}`);\n }\n for (const screenshotPath of result.screenshotPaths) {\n lines.push(`Screenshot: ${screenshotPath}`);\n }\n return textResult(lines.join(\"\\n\"));\n }).pipe(Effect.withSpan(`mcp.tool.close`)),\n ),\n );\n\n registerRulesResources(server);\n\n return server;\n};\n\nexport const startBrowserMcpServer = async <E>(\n runtime: ManagedRuntime.ManagedRuntime<McpSession, E>,\n) => {\n const server = createBrowserMcpServer(runtime);\n const transport = new StdioServerTransport();\n await server.connect(transport);\n};\n","import * as path from \"node:path\";\nimport {\n AcpProviderUnauthenticatedError,\n AcpProviderUsageLimitError,\n AcpSessionCreateError,\n AcpStreamError,\n Agent,\n AgentStreamOptions,\n} from \"@expect/agent\";\nimport { Effect, Layer, Option, Schema, ServiceMap, Stream } from \"effect\";\nimport {\n type AcpConfigOption,\n type ChangesFor,\n type ChangedFile,\n type CommitSummary,\n ExecutedTestPlan,\n PlanId,\n RunStarted,\n type SavedFlow,\n type TestCoverageReport,\n TestPlan,\n} from \"@expect/shared/models\";\nimport {\n buildExecutionPrompt,\n buildExecutionSystemPrompt,\n type DevServerHint,\n} from \"@expect/shared/prompts\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { Git } from \"./git/git\";\nimport {\n EXPECT_LIVE_VIEW_URL_ENV_NAME,\n EXPECT_COOKIE_BROWSERS_ENV_NAME,\n EXPECT_BASE_URL_ENV_NAME,\n} from \"@expect/browser/mcp\";\nimport {\n ALL_STEPS_TERMINAL_GRACE_MS,\n EXECUTION_CONTEXT_FILE_LIMIT,\n EXECUTION_RECENT_COMMIT_LIMIT,\n EXPECT_REPLAY_OUTPUT_ENV_NAME,\n EXPECT_STATE_DIR,\n} from \"./constants\";\n\nexport class ExecutionError extends Schema.ErrorClass<ExecutionError>(\"@supervisor/ExecutionError\")(\n {\n _tag: Schema.tag(\"ExecutionError\"),\n reason: Schema.Union([\n AcpStreamError,\n AcpSessionCreateError,\n AcpProviderUnauthenticatedError,\n AcpProviderUsageLimitError,\n ]),\n },\n) {\n displayName = this.reason.displayName ?? `Browser testing failed`;\n message = this.reason.message;\n}\n\nexport interface ExecuteOptions {\n readonly changesFor: ChangesFor;\n readonly instruction: string;\n readonly isHeadless: boolean;\n readonly cookieBrowserKeys: readonly string[];\n readonly baseUrl?: string;\n readonly savedFlow?: SavedFlow;\n readonly learnings?: string;\n readonly liveViewUrl?: string;\n readonly testCoverage?: TestCoverageReport;\n readonly onConfigOptions?: (configOptions: readonly AcpConfigOption[]) => void;\n readonly modelPreference?: { configId: string; value: string };\n readonly devServerHints?: readonly DevServerHint[];\n}\n\ninterface ExecutorAccumState {\n readonly plan: ExecutedTestPlan;\n readonly allTerminalSince: number | undefined;\n}\n\nconst resolveTerminalTimestamp = (executed: ExecutedTestPlan, previous: number | undefined) => {\n if (!executed.allStepsTerminal) return undefined;\n return previous ?? Date.now();\n};\n\nexport class Executor extends ServiceMap.Service<Executor>()(\"@supervisor/Executor\", {\n make: Effect.gen(function* () {\n const agent = yield* Agent;\n const git = yield* Git;\n\n const gatherContext = Effect.fn(\"Executor.gatherContext\")(function* (changesFor: ChangesFor) {\n yield* Effect.annotateCurrentSpan({ changesFor: changesFor._tag });\n\n const currentBranch = yield* git.getCurrentBranch;\n const mainBranch = yield* git.getMainBranch;\n const changedFiles = yield* git.getChangedFiles(changesFor);\n const diffPreview = yield* git.getDiffPreview(changesFor);\n\n const commitRange =\n changesFor._tag === \"Branch\" || changesFor._tag === \"Changes\"\n ? `${changesFor.mainBranch}..HEAD`\n : changesFor._tag === \"Commit\"\n ? `-1 ${changesFor.hash}`\n : `HEAD~${EXECUTION_RECENT_COMMIT_LIMIT}..HEAD`;\n\n const recentCommits = yield* git.getRecentCommits(commitRange);\n\n yield* Effect.logDebug(\"Execution context gathered\", {\n currentBranch,\n mainBranch,\n changedFileCount: changedFiles.length,\n commitCount: recentCommits.length,\n diffPreviewLength: diffPreview.length,\n });\n\n return {\n currentBranch,\n mainBranch,\n changedFiles: changedFiles.slice(0, EXECUTION_CONTEXT_FILE_LIMIT) as ChangedFile[],\n recentCommits: recentCommits.slice(0, EXECUTION_RECENT_COMMIT_LIMIT) as CommitSummary[],\n diffPreview,\n };\n });\n\n const execute = Effect.fn(\"Executor.execute\")(function* (options: ExecuteOptions) {\n yield* Effect.annotateCurrentSpan({\n changesFor: options.changesFor._tag,\n isHeadless: options.isHeadless,\n });\n yield* Effect.logInfo(\"Execution started\", {\n instructionLength: options.instruction.length,\n changesFor: options.changesFor._tag,\n isHeadless: options.isHeadless,\n cookieBrowserCount: options.cookieBrowserKeys.length,\n });\n\n const context = yield* gatherContext(options.changesFor);\n\n const systemPrompt = buildExecutionSystemPrompt();\n\n const prompt = buildExecutionPrompt({\n userInstruction: options.instruction,\n scope: options.changesFor._tag,\n currentBranch: context.currentBranch,\n mainBranch: context.mainBranch,\n changedFiles: context.changedFiles,\n recentCommits: context.recentCommits,\n diffPreview: context.diffPreview,\n baseUrl: options.baseUrl,\n isHeadless: options.isHeadless,\n cookieBrowserKeys: options.cookieBrowserKeys,\n savedFlow: options.savedFlow,\n learnings: options.learnings,\n testCoverage: options.testCoverage,\n devServerHints: options.devServerHints,\n });\n\n const planId = PlanId.makeUnsafe(crypto.randomUUID());\n const replayOutputPath = path.join(\n process.cwd(),\n EXPECT_STATE_DIR,\n \"replays\",\n `${planId}.ndjson`,\n );\n\n const syntheticPlan = new TestPlan({\n id: planId,\n changesFor: options.changesFor,\n currentBranch: context.currentBranch,\n diffPreview: context.diffPreview,\n fileStats: [],\n instruction: options.instruction,\n baseUrl: options.baseUrl ? Option.some(options.baseUrl) : Option.none(),\n isHeadless: options.isHeadless,\n cookieBrowserKeys: options.cookieBrowserKeys,\n testCoverage: options.testCoverage ? Option.some(options.testCoverage) : Option.none(),\n title: options.instruction,\n rationale: \"Direct execution\",\n steps: [],\n });\n\n const initial = new ExecutedTestPlan({\n ...syntheticPlan,\n events: [new RunStarted({ plan: syntheticPlan })],\n });\n\n const mcpEnv = [{ name: EXPECT_REPLAY_OUTPUT_ENV_NAME, value: replayOutputPath }];\n if (options.baseUrl) {\n mcpEnv.push({ name: EXPECT_BASE_URL_ENV_NAME, value: options.baseUrl });\n }\n if (options.liveViewUrl) {\n mcpEnv.push({\n name: EXPECT_LIVE_VIEW_URL_ENV_NAME,\n value: options.liveViewUrl,\n });\n }\n if (options.cookieBrowserKeys.length > 0) {\n mcpEnv.push({\n name: EXPECT_COOKIE_BROWSERS_ENV_NAME,\n value: options.cookieBrowserKeys.join(\",\"),\n });\n }\n\n yield* Effect.logInfo(\"Agent stream starting\", {\n planId,\n promptLength: prompt.length,\n mcpEnvCount: mcpEnv.length,\n });\n\n const streamOptions = new AgentStreamOptions({\n cwd: process.cwd(),\n sessionId: Option.none(),\n prompt,\n systemPrompt: Option.some(systemPrompt),\n mcpEnv,\n modelPreference: options.modelPreference,\n });\n\n return agent.stream(streamOptions).pipe(\n Stream.tap((update) => {\n const callback = options.onConfigOptions;\n if (update.sessionUpdate === \"config_option_update\" && callback) {\n return Effect.sync(() => callback(update.configOptions));\n }\n return Effect.void;\n }),\n Stream.mapAccum(\n (): ExecutorAccumState => ({\n plan: initial,\n allTerminalSince: undefined,\n }),\n (state, part) => {\n const updated = state.plan.addEvent(part);\n const terminalTimestamp = resolveTerminalTimestamp(updated, state.allTerminalSince);\n const finalized =\n terminalTimestamp !== undefined &&\n !updated.hasRunFinished &&\n Date.now() - terminalTimestamp >= ALL_STEPS_TERMINAL_GRACE_MS\n ? updated.synthesizeRunFinished()\n : updated;\n\n return [{ plan: finalized, allTerminalSince: terminalTimestamp }, [finalized]] as const;\n },\n ),\n Stream.takeUntil((executed) => executed.hasRunFinished),\n Stream.mapError((reason) => new ExecutionError({ reason })),\n );\n }, Stream.unwrap);\n\n return { execute } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(Layer.provide(NodeServices.layer));\n}\n","import { Effect, Layer, Option, ServiceMap } from \"effect\";\nimport { type ExecutedTestPlan, TestReport } from \"@expect/shared/models\";\n\nexport class Reporter extends ServiceMap.Service<Reporter>()(\"@supervisor/Reporter\", {\n make: Effect.gen(function* () {\n const report = Effect.fn(\"Reporter.report\")(function* (executed: ExecutedTestPlan) {\n const failedSteps = executed.events.filter((event) => event._tag === \"StepFailed\");\n const completedSteps = executed.events.filter((event) => event._tag === \"StepCompleted\");\n const runFinished = executed.events.find((event) => event._tag === \"RunFinished\");\n\n const summary = runFinished\n ? runFinished.summary\n : failedSteps.length > 0\n ? `${failedSteps.length} step${failedSteps.length === 1 ? \"\" : \"s\"} failed, ${completedSteps.length} passed`\n : `${completedSteps.length} step${completedSteps.length === 1 ? \"\" : \"s\"} completed`;\n\n const screenshotPaths = executed.events\n .filter(\n (event) =>\n event._tag === \"ToolResult\" &&\n event.toolName.endsWith(\"__screenshot\") &&\n !event.isError,\n )\n .map((event) => (event._tag === \"ToolResult\" ? event.result : \"\"))\n .filter(Boolean);\n\n const report = new TestReport({\n ...executed,\n summary,\n screenshotPaths,\n pullRequest: Option.none(),\n testCoverageReport: executed.testCoverage,\n });\n\n yield* Effect.logInfo(\"Report generated\", {\n status: report.status,\n stepCount: executed.steps.length,\n passedCount: completedSteps.length,\n failedCount: failedSteps.length,\n screenshotCount: screenshotPaths.length,\n });\n\n return report;\n });\n\n return { report } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make);\n}\n","import { Predicate } from \"effect\";\nimport type { SavedFlowFileData } from \"./types\";\n\nexport const formatSavedFlowFrontmatter = (data: SavedFlowFileData): string => {\n const lines: string[] = [\n `format_version: ${data.formatVersion}`,\n `title: ${JSON.stringify(data.title)}`,\n `description: ${JSON.stringify(data.description)}`,\n `slug: ${JSON.stringify(data.slug)}`,\n `saved_target_scope: ${JSON.stringify(data.savedTargetScope)}`,\n `saved_target_display_name: ${JSON.stringify(data.savedTargetDisplayName)}`,\n ];\n\n if (data.selectedCommit !== undefined) {\n lines.push(`selected_commit: ${JSON.stringify(data.selectedCommit)}`);\n }\n\n lines.push(`flow: ${JSON.stringify(data.flow)}`);\n lines.push(`environment: ${JSON.stringify(data.environment)}`);\n\n return lines.join(\"\\n\");\n};\n\nexport const formatSavedFlowFile = (data: SavedFlowFileData): string =>\n `---\\n${formatSavedFlowFrontmatter(data)}\\n---\\n`;\n\nconst parseStringValue = (value: string): string => {\n if (value.startsWith('\"') && value.endsWith('\"')) {\n return JSON.parse(value) as string;\n }\n return value;\n};\n\nconst isSavedFlowStep = (value: unknown): value is SavedFlowFileData[\"flow\"][\"steps\"][number] =>\n Predicate.isObject(value) &&\n typeof value.id === \"string\" &&\n typeof value.title === \"string\" &&\n typeof value.instruction === \"string\" &&\n typeof value.expectedOutcome === \"string\";\n\nconst normalizeSavedFlow = (value: unknown): SavedFlowFileData[\"flow\"] => {\n if (!Predicate.isObject(value)) {\n return {\n title: \"\",\n userInstruction: \"\",\n steps: [],\n };\n }\n\n return {\n title: typeof value.title === \"string\" ? value.title : \"\",\n userInstruction: typeof value.userInstruction === \"string\" ? value.userInstruction : \"\",\n steps: Array.isArray(value.steps) ? value.steps.filter(isSavedFlowStep) : [],\n };\n};\n\nconst normalizeSavedFlowEnvironment = (value: unknown): SavedFlowFileData[\"environment\"] => {\n if (!Predicate.isObject(value)) {\n return {\n baseUrl: \"\",\n cookies: false,\n };\n }\n\n return {\n baseUrl: typeof value.baseUrl === \"string\" ? value.baseUrl : \"\",\n cookies: typeof value.cookies === \"boolean\" ? value.cookies : false,\n };\n};\n\nexport const parseSavedFlowFile = (content: string): SavedFlowFileData => {\n const frontmatterMatch = content.match(/^---\\n([\\s\\S]*?)\\n---/);\n if (!frontmatterMatch) throw new Error(\"Invalid saved flow file: no frontmatter found\");\n\n const frontmatter = frontmatterMatch[1];\n const fields = new Map<string, string>();\n\n for (const line of frontmatter.split(\"\\n\")) {\n if (line === \"selected_commit: undefined\") continue;\n\n const colonIndex = line.indexOf(\": \");\n if (colonIndex === -1) continue;\n\n const key = line.slice(0, colonIndex);\n const value = line.slice(colonIndex + 2);\n fields.set(key, value);\n }\n\n const result: SavedFlowFileData = {\n formatVersion: Number(fields.get(\"format_version\")),\n title: parseStringValue(fields.get(\"title\") ?? \"\"),\n description: parseStringValue(fields.get(\"description\") ?? \"\"),\n slug: parseStringValue(fields.get(\"slug\") ?? \"\"),\n savedTargetScope: parseStringValue(fields.get(\"saved_target_scope\") ?? \"\"),\n savedTargetDisplayName: parseStringValue(fields.get(\"saved_target_display_name\") ?? \"\"),\n flow: normalizeSavedFlow(JSON.parse(fields.get(\"flow\") ?? \"{}\")),\n environment: normalizeSavedFlowEnvironment(JSON.parse(fields.get(\"environment\") ?? \"{}\")),\n };\n\n const selectedCommit = fields.get(\"selected_commit\");\n if (selectedCommit !== undefined) {\n result.selectedCommit = parseStringValue(selectedCommit);\n }\n\n return result;\n};\n","import { Effect, FileSystem } from \"effect\";\nimport * as path from \"node:path\";\nimport { EXPECT_STATE_DIR } from \"../constants\";\n\nexport const ensureStateDir = Effect.fn(\"ensureStateDir\")(function* (\n fileSystem: FileSystem.FileSystem,\n baseDir: string,\n) {\n const stateDir = path.join(baseDir, EXPECT_STATE_DIR);\n\n yield* fileSystem\n .makeDirectory(stateDir, { recursive: true })\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.void));\n\n const gitignorePath = path.join(stateDir, \".gitignore\");\n const gitignoreExists = yield* fileSystem\n .exists(gitignorePath)\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.succeed(false)));\n\n if (!gitignoreExists) {\n yield* fileSystem\n .writeFileString(gitignorePath, \"*\\n\")\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.void));\n }\n\n return stateDir;\n});\n","import { Effect, FileSystem, Layer, Option, ServiceMap } from \"effect\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport * as path from \"node:path\";\nimport { type TestPlan, changesForDisplayName } from \"@expect/shared/models\";\nimport { formatSavedFlowFile, parseSavedFlowFile } from \"./saved-flow-file\";\nimport type { SavedFlowFileData } from \"./types\";\nimport {\n FLOW_DIRECTORY_NAME,\n FLOW_DESCRIPTION_CHAR_LIMIT,\n SAVED_FLOW_FORMAT_VERSION,\n} from \"./constants\";\nimport { ensureStateDir } from \"./utils/ensure-state-dir\";\nimport { GitRepoRoot } from \"./git/git\";\n\nconst slugify = (text: string): string =>\n text\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\")\n .slice(0, 60)\n .replace(/-$/, \"\");\n\nconst testPlanToSavedFlowFileData = (plan: TestPlan): SavedFlowFileData => ({\n formatVersion: SAVED_FLOW_FORMAT_VERSION,\n title: plan.title,\n description: plan.instruction.slice(0, FLOW_DESCRIPTION_CHAR_LIMIT),\n slug: slugify(plan.title),\n savedTargetScope: plan.changesFor._tag,\n savedTargetDisplayName: changesForDisplayName(plan.changesFor),\n flow: {\n title: plan.title,\n userInstruction: plan.instruction,\n steps: plan.steps.map((step) => {\n const summaryText = Option.getOrElse(step.summary, () => \"\");\n return {\n id: step.id,\n title: step.title,\n instruction: step.instruction !== step.title ? step.instruction : summaryText || step.title,\n expectedOutcome: step.expectedOutcome || summaryText,\n };\n }),\n },\n environment: {\n baseUrl: Option.getOrElse(plan.baseUrl, () => \"\"),\n cookies: plan.requiresCookies,\n },\n});\n\nexport class FlowStorage extends ServiceMap.Service<FlowStorage>()(\"@supervisor/FlowStorage\", {\n make: Effect.gen(function* () {\n const fileSystem = yield* FileSystem.FileSystem;\n\n const getFlowsDirectory = Effect.gen(function* () {\n const repoRoot = yield* GitRepoRoot;\n const stateDir = yield* ensureStateDir(fileSystem, repoRoot);\n return path.join(stateDir, FLOW_DIRECTORY_NAME);\n });\n\n const save = Effect.fn(\"FlowStorage.save\")(function* (plan: TestPlan) {\n const flowData = testPlanToSavedFlowFileData(plan);\n const flowsDir = yield* getFlowsDirectory;\n const filePath = path.join(flowsDir, `${flowData.slug}.md`);\n\n yield* fileSystem\n .makeDirectory(flowsDir, { recursive: true })\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.void));\n\n yield* fileSystem.writeFileString(filePath, formatSavedFlowFile(flowData));\n\n yield* Effect.logInfo(\"Flow saved\", {\n slug: flowData.slug,\n stepCount: flowData.flow.steps.length,\n filePath,\n });\n\n return flowData;\n });\n\n const list = Effect.fn(\"FlowStorage.list\")(function* () {\n const flowsDir = yield* getFlowsDirectory;\n\n const exists = yield* fileSystem\n .exists(flowsDir)\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.succeed(false)));\n if (!exists) return [] as SavedFlowFileData[];\n\n const entries = yield* fileSystem\n .readDirectory(flowsDir)\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.succeed([] as string[])));\n\n const flowFiles = entries.filter((entry) => entry.endsWith(\".md\"));\n const flows: SavedFlowFileData[] = [];\n\n for (const fileName of flowFiles) {\n const content = yield* fileSystem\n .readFileString(path.join(flowsDir, fileName))\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.succeed(\"\")));\n if (!content) continue;\n\n const parsed = yield* Effect.try({\n try: () => parseSavedFlowFile(content),\n catch: () => ({ _tag: \"FlowParseError\" as const }),\n }).pipe(Effect.catchTag(\"FlowParseError\", () => Effect.succeed(undefined)));\n if (parsed) flows.push(parsed);\n }\n\n yield* Effect.logDebug(\"Flows listed\", { count: flows.length });\n\n return flows;\n });\n\n return { save, list } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(Layer.provide(NodeServices.layer));\n}\n","import { Array as Arr, Effect, Layer, Match, Option, Schema, ServiceMap } from \"effect\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport { ChildProcess } from \"effect/unstable/process\";\nimport { ChildProcessSpawner } from \"effect/unstable/process/ChildProcessSpawner\";\nimport { join } from \"node:path\";\nimport { COMMENT_DIRECTORY_PREFIX, GITHUB_TIMEOUT_MS, PR_LIMIT } from \"./constants\";\nimport { FileSystem } from \"effect/FileSystem\";\nimport {\n FindPullRequestPayload,\n GhPrListItem,\n PullRequest,\n RemoteBranch,\n} from \"@expect/shared/models\";\n\nexport class GitHubCommandError extends Schema.ErrorClass<GitHubCommandError>(\"GitHubCommandError\")(\n {\n _tag: Schema.tag(\"GitHubCommandError\"),\n cause: Schema.String,\n },\n) {\n message = `GitHub CLI command failed: ${this.cause}`;\n}\n\nexport class Github extends ServiceMap.Service<Github>()(\"@supervisor/GitHub\", {\n make: Effect.gen(function* () {\n const spawner = yield* ChildProcessSpawner;\n const fileSystem = yield* FileSystem;\n\n const runGhCommand = Effect.fn(\"GitHub.runGhCommand\")(function* (cwd: string, args: string[]) {\n return yield* spawner.string(ChildProcess.make(\"gh\", args, { cwd })).pipe(\n Effect.timeout(GITHUB_TIMEOUT_MS),\n Effect.catchTags({\n PlatformError: (e) => Effect.fail(new GitHubCommandError({ cause: e.message })),\n TimeoutError: () => Effect.fail(new GitHubCommandError({ cause: \"command timed out\" })),\n }),\n Effect.map((stdout) => stdout.trim()),\n );\n });\n\n const findPullRequest = Effect.fn(\"GitHub.findPullRequest\")(function* (\n cwd: string,\n payload: FindPullRequestPayload,\n ) {\n const branchName = Match.value(payload).pipe(\n Match.when({ _tag: \"Branch\" }, (p) => p.branchName),\n Match.exhaustive,\n );\n const output = yield* runGhCommand(cwd, [\n \"pr\",\n \"list\",\n \"--head\",\n branchName,\n \"--state\",\n \"open\",\n \"--limit\",\n \"1\",\n \"--json\",\n \"number,url,title,headRefName\",\n ]);\n return yield* Schema.decodeEffect(Schema.fromJsonString(Schema.Array(PullRequest)))(\n output,\n ).pipe(\n Effect.map(Arr.head),\n Effect.catchTag(\"SchemaError\", () => Effect.succeed(Option.none<PullRequest>())),\n );\n });\n\n const GhPrList = Schema.fromJsonString(Schema.Array(GhPrListItem));\n\n const listPullRequests = Effect.fn(\"GitHub.listPullRequests\")(function* (cwd: string) {\n const output = yield* runGhCommand(cwd, [\n \"pr\",\n \"list\",\n \"--state\",\n \"all\",\n \"--json\",\n \"number,headRefName,author,state,updatedAt\",\n \"--limit\",\n String(PR_LIMIT),\n ]).pipe(Effect.catchTag(\"GitHubCommandError\", () => Effect.succeed(\"[]\")));\n\n const items = yield* Schema.decodeEffect(GhPrList)(output).pipe(\n Effect.catchTag(\"SchemaError\", Effect.die),\n );\n\n return items.map(\n (item) =>\n new RemoteBranch({\n name: item.headRefName,\n author: item.author.login,\n prNumber: item.number,\n prStatus:\n item.state === \"OPEN\"\n ? \"open\"\n : item.state === \"MERGED\"\n ? \"merged\"\n : item.state === \"CLOSED\"\n ? \"merged\"\n : null,\n updatedAt: item.updatedAt,\n }),\n );\n });\n\n const addComment = Effect.fn(\"GitHub.addComment\")(function* (\n cwd: string,\n pullRequest: PullRequest,\n body: string,\n ) {\n yield* Effect.scoped(\n Effect.gen(function* () {\n const dir = yield* fileSystem.makeTempDirectoryScoped({\n prefix: COMMENT_DIRECTORY_PREFIX,\n });\n const bodyPath = join(dir, \"pull-request-comment.md\");\n yield* fileSystem.writeFileString(bodyPath, body);\n yield* runGhCommand(cwd, [\n \"pr\",\n \"comment\",\n String(pullRequest.number),\n \"--body-file\",\n bodyPath,\n ]);\n }),\n );\n });\n\n const findComment = Effect.fn(\"GitHub.findComment\")(function* (\n cwd: string,\n prNumber: number,\n marker: string,\n ) {\n yield* Effect.annotateCurrentSpan({ prNumber, marker });\n const escapedMarker = marker.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"');\n const output = yield* runGhCommand(cwd, [\n \"api\",\n `repos/{owner}/{repo}/issues/${prNumber}/comments`,\n \"--paginate\",\n \"--jq\",\n `.[] | select(.body | contains(\"${escapedMarker}\")) | .id`,\n ]);\n const firstLine = output.trim().split(\"\\n\")[0] ?? \"\";\n const parsed = Number(firstLine);\n return firstLine.length > 0 && !Number.isNaN(parsed) ? Option.some(parsed) : Option.none();\n });\n\n const updateComment = Effect.fn(\"GitHub.updateComment\")(function* (\n cwd: string,\n commentId: number,\n body: string,\n ) {\n yield* Effect.annotateCurrentSpan({ commentId });\n yield* Effect.scoped(\n Effect.gen(function* () {\n const dir = yield* fileSystem.makeTempDirectoryScoped({\n prefix: COMMENT_DIRECTORY_PREFIX,\n });\n const bodyPath = join(dir, \"pull-request-comment.json\");\n yield* fileSystem.writeFileString(bodyPath, JSON.stringify({ body }));\n yield* runGhCommand(cwd, [\n \"api\",\n `repos/{owner}/{repo}/issues/comments/${commentId}`,\n \"-X\",\n \"PATCH\",\n \"--input\",\n bodyPath,\n ]);\n }),\n );\n });\n\n const upsertComment = Effect.fn(\"GitHub.upsertComment\")(function* (\n cwd: string,\n pullRequest: PullRequest,\n marker: string,\n body: string,\n ) {\n yield* Effect.annotateCurrentSpan({ prNumber: pullRequest.number, marker });\n const existingId = yield* findComment(cwd, pullRequest.number, marker);\n yield* Option.match(existingId, {\n onNone: () => addComment(cwd, pullRequest, body),\n onSome: (commentId) => updateComment(cwd, commentId, body),\n });\n yield* Effect.logInfo(\"PR comment upserted\", { prNumber: pullRequest.number });\n });\n\n const createPullRequest = Effect.fn(\"GitHub.createPullRequest\")(function* (\n cwd: string,\n options: {\n readonly title: string;\n readonly body: string;\n readonly base?: string;\n readonly draft?: boolean;\n },\n ) {\n yield* Effect.annotateCurrentSpan({ title: options.title, draft: options.draft });\n const args = [\"pr\", \"create\", \"--title\", options.title, \"--body\", options.body];\n if (options.base) {\n args.push(\"--base\", options.base);\n }\n if (options.draft) {\n args.push(\"--draft\");\n }\n const output = yield* runGhCommand(cwd, args);\n yield* Effect.logInfo(\"Pull request created\", { url: output });\n return output;\n });\n\n return {\n findPullRequest,\n listPullRequests,\n addComment,\n findComment,\n updateComment,\n upsertComment,\n createPullRequest,\n } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(Layer.provide(NodeServices.layer));\n}\n","import * as path from \"node:path\";\nimport { execFile } from \"node:child_process\";\nimport { Effect, FileSystem, Layer, ServiceMap } from \"effect\";\nimport * as NodeServices from \"@effect/platform-node/NodeServices\";\nimport type { ChangedFile, TestCoverageReport } from \"@expect/shared/models\";\nimport { GitRepoRoot } from \"./git/git\";\nimport { SKIP_DIRECTORIES, SOURCE_EXTENSIONS, TEST_FILE_SCAN_LIMIT } from \"./constants\";\n\nconst IMPORT_PATTERNS = [\n /from\\s+[\"']([^\"']+)[\"']/g,\n /import\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g,\n /require\\s*\\(\\s*[\"']([^\"']+)[\"']\\s*\\)/g,\n];\n\nconst TEST_FILE_PATTERN = /\\.(?:test|spec|e2e)\\.(?:ts|tsx|js|jsx|mts|mjs|cts|cjs)$/;\nconst TEST_DIRECTORY_PATTERN = /(?:^|[/\\\\])(?:__tests?__|tests?)[/\\\\]/;\nconst SOURCE_EXTENSION_PATTERN = /\\.(?:ts|tsx|js|jsx|mts|mjs|cts|cjs)$/;\n\nconst isSourceFile = (filePath: string): boolean => {\n const extension = path.extname(filePath).toLowerCase();\n return SOURCE_EXTENSIONS.includes(extension);\n};\n\nconst isInSkippedDirectory = (filePath: string): boolean => {\n const segments = filePath.split(/[/\\\\]/);\n return segments.some((segment) => SKIP_DIRECTORIES.has(segment));\n};\n\nexport const isTestFile = (filePath: string): boolean => {\n if (TEST_FILE_PATTERN.test(filePath)) return true;\n if (TEST_DIRECTORY_PATTERN.test(filePath) && SOURCE_EXTENSION_PATTERN.test(filePath)) return true;\n return false;\n};\n\nconst extractImportSpecifiers = (content: string): string[] => {\n const specifiers: string[] = [];\n for (const pattern of IMPORT_PATTERNS) {\n const regex = new RegExp(pattern.source, pattern.flags);\n let match: RegExpExecArray | null;\n while ((match = regex.exec(content)) !== null) {\n const specifier = match[1];\n if (specifier) specifiers.push(specifier);\n }\n }\n return specifiers;\n};\n\nconst getTransitiveDependencies = (\n edges: ReadonlyMap<string, ReadonlySet<string>>,\n startFile: string,\n): Set<string> => {\n const visited = new Set<string>();\n const queue = [startFile];\n\n while (queue.length > 0) {\n const current = queue.pop()!;\n if (visited.has(current)) continue;\n visited.add(current);\n\n const deps = edges.get(current);\n if (deps) {\n for (const dep of deps) {\n if (!visited.has(dep)) queue.push(dep);\n }\n }\n }\n\n visited.delete(startFile);\n return visited;\n};\n\nconst listTrackedFiles = (repoRoot: string) =>\n Effect.tryPromise({\n try: () =>\n new Promise<string[]>((resolve) => {\n execFile(\n \"git\",\n [\"ls-files\", \"--cached\", \"--others\", \"--exclude-standard\"],\n { cwd: repoRoot, maxBuffer: 10 * 1024 * 1024 },\n (error, stdout) => {\n if (error) {\n resolve([]);\n return;\n }\n resolve(\n stdout\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter((line) => line.length > 0),\n );\n },\n );\n }),\n catch: () => [] as string[],\n });\n\ninterface ModuleResolver {\n sync(directory: string, specifier: string): { path?: string | null };\n}\n\nconst createResolver = async (rootDir: string): Promise<ModuleResolver | undefined> => {\n try {\n const { ResolverFactory } = await import(\"oxc-resolver\");\n return new ResolverFactory({\n tsconfig: {\n configFile: path.join(rootDir, \"tsconfig.json\"),\n references: \"auto\",\n },\n extensions: [...SOURCE_EXTENSIONS],\n mainFields: [\"module\", \"main\"],\n conditionNames: [\"import\", \"require\", \"default\"],\n });\n } catch {\n return undefined;\n }\n};\n\nconst resolveSpecifier = (\n resolver: ModuleResolver,\n directory: string,\n specifier: string,\n): string | undefined => {\n try {\n const resolved = resolver.sync(directory, specifier);\n return resolved.path ?? undefined;\n } catch {\n return undefined;\n }\n};\n\nconst buildImportGraph = (\n rootDir: string,\n allFiles: readonly string[],\n fileSystem: FileSystem.FileSystem,\n) =>\n Effect.gen(function* () {\n const sourceFiles = allFiles.filter(\n (filePath) => isSourceFile(filePath) && !isInSkippedDirectory(filePath),\n );\n\n const resolver = yield* Effect.promise(() => createResolver(rootDir));\n if (!resolver) return new Map() as ReadonlyMap<string, ReadonlySet<string>>;\n\n const edges = new Map<string, Set<string>>();\n\n yield* Effect.forEach(\n sourceFiles,\n (relativePath) =>\n Effect.gen(function* () {\n const fullPath = path.join(rootDir, relativePath);\n const content = yield* fileSystem\n .readFileString(fullPath)\n .pipe(Effect.catchTag(\"PlatformError\", () => Effect.succeed(\"\")));\n\n if (!content) return;\n\n const specifiers = extractImportSpecifiers(content);\n const deps = new Set<string>();\n\n for (const specifier of specifiers) {\n if (\n specifier.startsWith(\".\") ||\n specifier.startsWith(\"@\") ||\n specifier.startsWith(\"~\")\n ) {\n const directory = path.dirname(fullPath);\n const resolvedPath = resolveSpecifier(resolver, directory, specifier);\n if (resolvedPath) {\n const resolvedRelative = path.relative(rootDir, resolvedPath);\n if (!isInSkippedDirectory(resolvedRelative)) {\n deps.add(resolvedRelative);\n }\n }\n }\n }\n\n if (deps.size > 0) {\n edges.set(relativePath, deps);\n }\n }),\n { concurrency: 50 },\n );\n\n return edges as ReadonlyMap<string, ReadonlySet<string>>;\n });\n\nconst findTestFiles = (allFiles: readonly string[]): readonly string[] =>\n allFiles\n .filter((filePath) => !isInSkippedDirectory(filePath) && isTestFile(filePath))\n .slice(0, TEST_FILE_SCAN_LIMIT);\n\nexport class TestCoverage extends ServiceMap.Service<TestCoverage>()(\"@supervisor/TestCoverage\", {\n make: Effect.gen(function* () {\n const fileSystem = yield* FileSystem.FileSystem;\n\n const analyze = Effect.fn(\"TestCoverage.analyze\")(function* (\n changedFiles: readonly ChangedFile[],\n ) {\n yield* Effect.annotateCurrentSpan({ changedFileCount: changedFiles.length });\n\n const repoRoot = yield* GitRepoRoot;\n const allFiles = yield* listTrackedFiles(repoRoot);\n\n const testFilePaths = findTestFiles(allFiles);\n const edges = yield* buildImportGraph(repoRoot, allFiles, fileSystem);\n\n const coveredBy = new Map<string, string[]>();\n for (const testFilePath of testFilePaths) {\n const closure = getTransitiveDependencies(edges, testFilePath);\n closure.add(testFilePath);\n for (const dep of closure) {\n const existing = coveredBy.get(dep) ?? [];\n existing.push(testFilePath);\n coveredBy.set(dep, existing);\n }\n }\n\n const sourceFiles = changedFiles.filter(\n (file) =>\n SOURCE_EXTENSION_PATTERN.test(file.path) && !isTestFile(file.path) && file.status !== \"D\",\n );\n\n const entries = sourceFiles.map((file) => {\n const matchedTests = coveredBy.get(file.path) ?? [];\n return {\n path: file.path,\n testFiles: matchedTests,\n covered: matchedTests.length > 0,\n };\n });\n\n const coveredCount = entries.filter((entry) => entry.covered).length;\n const totalCount = sourceFiles.length;\n const percent = totalCount > 0 ? Math.round((coveredCount / totalCount) * 100) : 100;\n\n yield* Effect.logInfo(\"Test coverage analyzed\", {\n coveredCount,\n totalCount,\n percent,\n testFileCount: testFilePaths.length,\n graphEdgeCount: edges.size,\n });\n\n return { entries, coveredCount, totalCount, percent } satisfies TestCoverageReport;\n });\n\n return { analyze } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make).pipe(Layer.provide(NodeServices.layer));\n}\n","import { Data, Effect, Layer, Option, Ref, Schedule, Schema, ServiceMap, Stream } from \"effect\";\nimport { Agent, AgentStreamOptions } from \"@expect/agent\";\nimport {\n AcpAgentMessageChunk,\n type ChangedFile,\n type ChangesFor,\n type ExecutedTestPlan,\n} from \"@expect/shared/models\";\nimport { buildWatchAssessmentPrompt } from \"@expect/shared/prompts\";\nimport { Git, GitRepoRoot } from \"./git/git\";\nimport type { ExecuteOptions } from \"./executor\";\nimport { Executor } from \"./executor\";\n\nconst WATCH_POLL_INTERVAL_MS = 2000;\nconst WATCH_SETTLE_DELAY_MS = 3000;\nconst ASSESSMENT_BACKOFF_LIMIT = 2;\n\nconst ALWAYS_SKIP_EXTENSIONS = new Set([\n \".md\",\n \".txt\",\n \".mdx\",\n \".gitignore\",\n \".prettierrc\",\n \".prettierignore\",\n \".eslintignore\",\n \".editorconfig\",\n]);\n\nconst ALWAYS_SKIP_PATTERNS = [\n /\\.lock$/,\n /lock\\.json$/,\n /lock\\.yaml$/,\n /\\.github\\/(?!copilot)/,\n /\\.husky\\//,\n /\\.vscode\\//,\n /\\.cursor\\//,\n /\\.idea\\//,\n /LICENSE/,\n /CHANGELOG/,\n /\\.env\\.example$/,\n];\n\nconst classifyDeterministically = (\n changedFiles: readonly ChangedFile[],\n): WatchDecision | undefined => {\n if (changedFiles.length === 0) return \"skip\";\n\n const allSkippable = changedFiles.every((file) => {\n const extension = file.path.slice(file.path.lastIndexOf(\".\"));\n if (ALWAYS_SKIP_EXTENSIONS.has(extension)) return true;\n return ALWAYS_SKIP_PATTERNS.some((pattern) => pattern.test(file.path));\n });\n\n if (allSkippable) return \"skip\";\n return undefined;\n};\n\nexport type WatchDecision = \"run\" | \"skip\";\n\nexport type WatchEvent = Data.TaggedEnum<{\n Polling: {};\n ChangeDetected: { readonly fingerprint: string };\n Settling: {};\n Assessing: {};\n RunStarting: { readonly fingerprint: string };\n RunUpdate: { readonly executedPlan: ExecutedTestPlan };\n RunCompleted: { readonly executedPlan: ExecutedTestPlan; readonly fingerprint: string };\n Skipped: { readonly fingerprint: string };\n Error: { readonly error: unknown };\n Stopped: {};\n}>;\nexport const WatchEvent = Data.taggedEnum<WatchEvent>();\n\ninterface WatchState {\n readonly lastTestedFingerprint: string | undefined;\n readonly assessmentFailures: number;\n readonly lastAssessedFingerprint: string | undefined;\n}\n\nexport class WatchAssessmentError extends Schema.ErrorClass<WatchAssessmentError>(\n \"WatchAssessmentError\",\n)({\n _tag: Schema.tag(\"WatchAssessmentError\"),\n response: Schema.String,\n}) {\n message = `Unparseable watch assessment response: ${this.response}`;\n}\n\nexport interface WatchOptions {\n readonly changesFor: ChangesFor;\n readonly instruction: string;\n readonly isHeadless: boolean;\n readonly cookieBrowserKeys: readonly string[];\n readonly baseUrl?: string;\n readonly onEvent: (event: WatchEvent) => void;\n}\n\nexport const parseAssessmentResponse = (raw: string): WatchDecision | undefined => {\n const trimmed = raw.trim().toLowerCase();\n if (trimmed === \"run\") return \"run\";\n if (trimmed === \"skip\") return \"skip\";\n if (trimmed.startsWith(\"run\")) return \"run\";\n if (trimmed.startsWith(\"skip\")) return \"skip\";\n return undefined;\n};\n\nconst handleAgentAssessmentError = (error: Error) =>\n Effect.gen(function* () {\n yield* Effect.logWarning(\"Agent error during watch assessment, defaulting to run\", {\n error: error.message,\n });\n return \"run\" as WatchDecision;\n });\n\nexport class Watch extends ServiceMap.Service<Watch>()(\"@supervisor/Watch\", {\n make: Effect.gen(function* () {\n const agent = yield* Agent;\n const git = yield* Git;\n const executor = yield* Executor;\n\n const assess = Effect.fn(\"Watch.assess\")(function* (\n changedFiles: readonly ChangedFile[],\n diffPreview: string,\n instruction: string,\n ) {\n const repoRoot = yield* GitRepoRoot;\n const prompt = buildWatchAssessmentPrompt({ diffPreview, changedFiles, instruction });\n\n const streamOptions = new AgentStreamOptions({\n cwd: repoRoot,\n sessionId: Option.none(),\n prompt,\n systemPrompt: Option.none(),\n mcpEnv: [],\n });\n\n const responseText: string = yield* agent.stream(streamOptions).pipe(\n Stream.filter(\n (update): update is AcpAgentMessageChunk =>\n update.sessionUpdate === \"agent_message_chunk\",\n ),\n Stream.map((update) => (update.content.type === \"text\" ? update.content.text : \"\")),\n Stream.runFold(\n () => \"\",\n (accumulated: string, chunk: string) => accumulated + chunk,\n ),\n );\n\n const decision = parseAssessmentResponse(responseText);\n if (!decision) {\n return yield* new WatchAssessmentError({ response: responseText });\n }\n\n yield* Effect.logInfo(\"Watch assessment completed\", {\n decision,\n responseLength: responseText.length,\n });\n return decision;\n });\n\n const run = Effect.fn(\"Watch.run\")(function* (options: WatchOptions) {\n const stateRef = yield* Ref.make<WatchState>({\n lastTestedFingerprint: undefined,\n assessmentFailures: 0,\n lastAssessedFingerprint: undefined,\n });\n\n const completionRef = yield* Ref.make<Option.Option<ExecutedTestPlan>>(Option.none());\n\n const pollOnce = Effect.gen(function* () {\n const fingerprint = yield* git.computeFingerprint();\n if (!fingerprint) return;\n\n const state = yield* Ref.get(stateRef);\n\n if (fingerprint === state.lastTestedFingerprint) {\n options.onEvent(WatchEvent.Polling());\n return;\n }\n\n options.onEvent(WatchEvent.ChangeDetected({ fingerprint }));\n\n options.onEvent(WatchEvent.Settling());\n yield* Effect.sleep(`${WATCH_SETTLE_DELAY_MS} millis`);\n\n const settledFingerprint = yield* git.computeFingerprint();\n if (settledFingerprint !== fingerprint) return;\n\n const changedFiles = yield* git.getChangedFiles(options.changesFor);\n const diffPreview = yield* git.getDiffPreview(options.changesFor);\n\n const deterministicDecision = classifyDeterministically(changedFiles);\n if (deterministicDecision === \"skip\") {\n yield* Effect.logInfo(\"Watch assessment skipped deterministically\", {\n fileCount: changedFiles.length,\n });\n options.onEvent(WatchEvent.Skipped({ fingerprint }));\n yield* Ref.update(stateRef, (current) => ({\n ...current,\n lastTestedFingerprint: fingerprint,\n }));\n return;\n }\n\n const shouldResetBackoff = state.lastAssessedFingerprint !== fingerprint;\n\n if (shouldResetBackoff) {\n yield* Ref.update(stateRef, (current) => ({\n ...current,\n assessmentFailures: 0,\n lastAssessedFingerprint: fingerprint,\n }));\n }\n\n const currentState = yield* Ref.get(stateRef);\n\n let decision: WatchDecision;\n if (currentState.assessmentFailures >= ASSESSMENT_BACKOFF_LIMIT) {\n yield* Effect.logWarning(\"Assessment backoff reached, defaulting to run\");\n decision = \"run\";\n } else {\n options.onEvent(WatchEvent.Assessing());\n const assessResult = yield* assess(changedFiles, diffPreview, options.instruction).pipe(\n Effect.catchTag(\"WatchAssessmentError\", (assessmentError) =>\n Effect.gen(function* () {\n yield* Ref.update(stateRef, (current) => ({\n ...current,\n assessmentFailures: current.assessmentFailures + 1,\n }));\n yield* Effect.logWarning(\"Assessment failed, will retry or backoff\", {\n response: assessmentError.response,\n });\n return \"run\" as WatchDecision;\n }),\n ),\n Effect.catchTags({\n AcpStreamError: handleAgentAssessmentError,\n AcpSessionCreateError: handleAgentAssessmentError,\n AcpProviderUnauthenticatedError: handleAgentAssessmentError,\n AcpProviderUsageLimitError: handleAgentAssessmentError,\n }),\n );\n decision = assessResult;\n }\n\n if (decision === \"skip\") {\n options.onEvent(WatchEvent.Skipped({ fingerprint }));\n yield* Ref.update(stateRef, (current) => ({\n ...current,\n lastTestedFingerprint: fingerprint,\n }));\n return;\n }\n\n options.onEvent(WatchEvent.RunStarting({ fingerprint }));\n\n const executeOptions: ExecuteOptions = {\n changesFor: options.changesFor,\n instruction: options.instruction,\n isHeadless: options.isHeadless,\n cookieBrowserKeys: options.cookieBrowserKeys,\n baseUrl: options.baseUrl,\n };\n\n const finalExecuted = yield* executor.execute(executeOptions).pipe(\n Stream.tap((executed) =>\n Effect.sync(() => options.onEvent(WatchEvent.RunUpdate({ executedPlan: executed }))),\n ),\n Stream.runLast,\n Effect.map((option) => (option._tag === \"Some\" ? option.value : undefined)),\n Effect.catchTag(\"ExecutionError\", (executionError) =>\n Effect.gen(function* () {\n options.onEvent(WatchEvent.Error({ error: executionError }));\n yield* Effect.logWarning(\"Watch run execution error\", {\n error: executionError.message,\n });\n return undefined;\n }),\n ),\n );\n\n if (finalExecuted) {\n const completed = finalExecuted.finalizeTextBlock().synthesizeRunFinished();\n yield* Ref.set(completionRef, Option.some(completed));\n options.onEvent(WatchEvent.RunCompleted({ executedPlan: completed, fingerprint }));\n yield* git.saveTestedFingerprint().pipe(\n Effect.catchTag(\"PlatformError\", (error) =>\n Effect.logWarning(\"Failed to save tested fingerprint\", {\n error: error.message,\n }),\n ),\n );\n }\n\n yield* Ref.update(stateRef, (current) => ({\n ...current,\n lastTestedFingerprint: fingerprint,\n }));\n });\n\n const loop = pollOnce.pipe(\n Effect.repeat(Schedule.spaced(`${WATCH_POLL_INTERVAL_MS} millis`)),\n );\n\n return { loop, completionRef };\n });\n\n return { assess, run } as const;\n }),\n}) {\n static layer = Layer.effect(this)(this.make);\n}\n","import { Schema } from \"effect\";\n\nexport class ExpectTimeoutError extends Schema.ErrorClass<ExpectTimeoutError>(\"ExpectTimeoutError\")(\n {\n _tag: Schema.tag(\"ExpectTimeoutError\"),\n timeoutMs: Schema.Number,\n },\n) {\n message = `expect execution timed out after ${this.timeoutMs}ms`;\n}\n\nexport class ExpectConfigError extends Error {\n constructor(message: string, fix: string) {\n super(`${message}\\n\\nFix: ${fix}`);\n this.name = \"ExpectConfigError\";\n }\n}\n","import { ExpectConfigError } from \"./errors\";\n\nexport const resolveUrl = (url: unknown, baseUrl: string | undefined): string => {\n if (typeof url !== \"string\") {\n throw new ExpectConfigError(\n `Expected a URL string, got ${typeof url}.`,\n `Expect.test({ url: \"http://localhost:3000/login\", tests: [...] })`,\n );\n }\n\n try {\n return new URL(url).href;\n } catch {\n /* relative URL — falls through to baseUrl resolution */\n }\n\n if (!baseUrl) {\n throw new ExpectConfigError(\n `No baseUrl configured and URL \"${url}\" is relative.`,\n `configure({ baseUrl: \"http://localhost:3000\" })\\nOr use a full URL: Expect.test({ url: \"http://localhost:3000${url}\", tests: [...] })`,\n );\n }\n\n return new URL(url, baseUrl).href;\n};\n\nexport const buildInstruction = (url: string, tests: readonly string[]): string => {\n const lines = [`Navigate to ${url} and verify the following requirements:`, \"\"];\n\n for (const [index, title] of tests.entries()) {\n lines.push(`${index + 1}. ${title}`);\n }\n\n return lines.join(\"\\n\");\n};\n","import { Layer, References } from \"effect\";\nimport { Executor, Git } from \"@expect/supervisor\";\nimport { Agent, type AgentBackend } from \"@expect/agent\";\n\nexport const layerSdk = (agentBackend: AgentBackend, rootDir: string) => {\n const gitLayer = Git.withRepoRoot(rootDir);\n const agentLayer = Agent.layerFor(agentBackend);\n const executorLayer = Executor.layer.pipe(Layer.provide(gitLayer));\n\n return Layer.mergeAll(executorLayer, gitLayer).pipe(\n Layer.provideMerge(agentLayer),\n Layer.provideMerge(Layer.succeed(References.MinimumLogLevel, \"Error\")),\n );\n};\n","import { DateTime, Option } from \"effect\";\nimport type { ExecutedTestPlan, TestPlanStep, ExecutionEvent } from \"@expect/shared/models\";\nimport type { Status, StepResult, TestResult, TestEvent } from \"./types\";\n\nconst REPLAY_SESSION_PREFIX = \"rrweb replay:\";\nconst SCREENSHOT_PREFIX = \"Screenshot:\";\n\nconst stepDurationMs = (step: TestPlanStep): number => {\n if (Option.isNone(step.startedAt)) return 0;\n if (Option.isNone(step.endedAt))\n return Date.now() - Number(DateTime.toEpochMillis(step.startedAt.value));\n return (\n Number(DateTime.toEpochMillis(step.endedAt.value)) -\n Number(DateTime.toEpochMillis(step.startedAt.value))\n );\n};\n\nconst stepStatusToResultStatus = (status: string): Status => {\n if (status === \"passed\") return \"passed\";\n if (status === \"failed\" || status === \"skipped\") return \"failed\";\n return \"pending\";\n};\n\nexport interface ExecutionArtifacts {\n readonly recordingPath: string | undefined;\n readonly screenshotPaths: readonly string[];\n}\n\nexport const extractArtifacts = (events: readonly ExecutionEvent[]): ExecutionArtifacts => {\n const closeResult = events\n .slice()\n .reverse()\n .find(\n (event) =>\n event._tag === \"ToolResult\" &&\n event.toolName === \"close\" &&\n !event.isError &&\n event.result.length > 0,\n );\n\n if (!closeResult || closeResult._tag !== \"ToolResult\") {\n return { recordingPath: undefined, screenshotPaths: [] };\n }\n\n const lines = closeResult.result\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n\n const replayLine = lines.find((line) => line.startsWith(REPLAY_SESSION_PREFIX));\n const recordingPath = replayLine?.replace(REPLAY_SESSION_PREFIX, \"\").trim() || undefined;\n\n const screenshotPaths = lines\n .filter((line) => line.startsWith(SCREENSHOT_PREFIX))\n .map((line) => line.replace(SCREENSHOT_PREFIX, \"\").trim())\n .filter((value) => value.length > 0);\n\n return { recordingPath, screenshotPaths };\n};\n\nexport const buildStepResult = (\n step: TestPlanStep,\n screenshotPaths: readonly string[],\n stepIndex: number,\n): StepResult => ({\n title: step.title,\n status: stepStatusToResultStatus(step.status),\n summary: Option.getOrElse(step.summary, () => \"\"),\n screenshotPath: screenshotPaths[stepIndex],\n duration: stepDurationMs(step),\n});\n\nexport const buildTestResult = (\n executed: ExecutedTestPlan,\n url: string,\n startedAt: number,\n artifacts: ExecutionArtifacts,\n): TestResult => {\n const steps = executed.steps.map((step, index) =>\n buildStepResult(step, artifacts.screenshotPaths, index),\n );\n const errors = steps.filter((step) => step.status === \"failed\");\n const hasFailure = errors.length > 0;\n const hasPending = steps.some((step) => step.status === \"pending\");\n\n let status: Status = \"passed\";\n if (hasFailure) status = \"failed\";\n else if (hasPending || steps.length === 0) status = \"pending\";\n\n return {\n status,\n url,\n duration: Date.now() - startedAt,\n recordingPath: artifacts.recordingPath,\n steps,\n errors,\n };\n};\n\ninterface DiffContext {\n readonly stepMap: ReadonlyMap<string, TestPlanStep>;\n readonly stepIndexMap: ReadonlyMap<string, number>;\n readonly artifacts: ExecutionArtifacts;\n readonly executed: ExecutedTestPlan;\n readonly url: string;\n readonly startedAt: number;\n}\n\nconst mapExecutionEvent = (event: ExecutionEvent, context: DiffContext): TestEvent | undefined => {\n switch (event._tag) {\n case \"RunStarted\":\n return {\n type: \"run:started\",\n title: event.plan.title,\n baseUrl: Option.getOrUndefined(event.plan.baseUrl),\n };\n case \"StepStarted\":\n return { type: \"step:started\", title: event.title };\n case \"StepCompleted\": {\n const step = context.stepMap.get(event.stepId);\n const index = context.stepIndexMap.get(event.stepId) ?? -1;\n return step\n ? {\n type: \"step:passed\",\n step: buildStepResult(step, context.artifacts.screenshotPaths, index),\n }\n : undefined;\n }\n case \"StepFailed\": {\n const step = context.stepMap.get(event.stepId);\n const index = context.stepIndexMap.get(event.stepId) ?? -1;\n return step\n ? {\n type: \"step:failed\",\n step: buildStepResult(step, context.artifacts.screenshotPaths, index),\n }\n : undefined;\n }\n case \"StepSkipped\":\n return {\n type: \"step:skipped\",\n title: context.stepMap.get(event.stepId)?.title ?? event.stepId,\n reason: event.reason,\n };\n case \"ToolResult\":\n return event.toolName.endsWith(\"__screenshot\") && !event.isError\n ? { type: \"screenshot\", title: event.toolName, path: event.result }\n : undefined;\n case \"RunFinished\":\n return {\n type: \"completed\",\n result: buildTestResult(\n context.executed,\n context.url,\n context.startedAt,\n context.artifacts,\n ),\n };\n default:\n return undefined;\n }\n};\n\nexport const diffEvents = (\n previous: readonly ExecutionEvent[],\n current: readonly ExecutionEvent[],\n executed: ExecutedTestPlan,\n url: string,\n startedAt: number,\n): TestEvent[] => {\n const context: DiffContext = {\n stepMap: new Map(executed.steps.map((step) => [step.id, step])),\n stepIndexMap: new Map(executed.steps.map((step, index) => [step.id, index])),\n artifacts: extractArtifacts(executed.events),\n executed,\n url,\n startedAt,\n };\n\n return current\n .slice(previous.length)\n .map((event) => mapExecutionEvent(event, context))\n .filter((event): event is TestEvent => event !== undefined);\n};\n","export const DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;\nexport const DEFAULT_AGENT_BACKEND = \"claude\" as const;\n"],"x_google_ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,29,30,33,34,35,36,37,38,39,40,41,42,43,48,59,60,61,62,63,66,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132],"mappings":"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EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,kBA5Ec,wBAAwB,gCA4EZ;EAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,KAAK,KAAK;;AAGd,MAAa,wBAAwB,YAA4C;CAC/E,MAAM,eAAe,QAAQ,aAAa,MAAM,GAAG,6BAA6B;CAChF,MAAM,gBAAgB,QAAQ,cAAc,MAAM,GAAG,8BAA8B;CACnF,MAAM,UAAU,QAAQ,eAAe;CACvC,MAAM,cACJ,QAAQ,SAAS,0BACb,QAAQ,MAAM,GAAG,wBAAwB,GAAG,sBAC5C;CAEN,MAAM,iBACJ,QAAQ,kBAAkB,QAAQ,eAAe,SAAS,IACtD,CACE,qDACA,GAAG,QAAQ,eAAe,KACvB,SAAS,QAAQ,KAAK,YAAY,MAAM,KAAK,WAAW,OAAO,KAAK,MACtE,CACF,GACD,EAAE;AAER,QAAO;EACL;EACA,GAAI,QAAQ,UAAU,CAAC,aAAa,QAAQ,UAAU,GAAG,EAAE;EAC3D,GAAG;EACH,wBAAwB,QAAQ,aAAa,QAAQ;EACrD,kCAAkC,QAAQ,kBAAkB,SAAS,IAAI,QAAQ,QAAQ,kBAAkB,OA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"}
|