@liy/mote-pi-runtime 0.3.0
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/CHANGELOG.md +18 -0
- package/README.md +63 -0
- package/dist/assets/skills/agent-browser/SKILL.md +15 -0
- package/dist/assets/skills/gen-app/SKILL.md +76 -0
- package/dist/assets/skills/inline-widget/SKILL.md +38 -0
- package/dist/assets/skills/orchestrator/SKILL.md +160 -0
- package/dist/cli.js +14892 -0
- package/dist/cli.js.map +7 -0
- package/dist/extensions/mote-mcp.js +32 -0
- package/dist/extensions/mote-prompt-composer.js +44 -0
- package/dist/extensions/mote-provider.js +291 -0
- package/dist/extensions/node_modules/pi-mcp-adapter/index.js +19261 -0
- package/dist/extensions/node_modules/pi-mcp-adapter/package.json +5 -0
- package/dist/extensions/package.json +4 -0
- package/dist/extensions/web-access.js +24568 -0
- package/dist/pi-rpc.js +348 -0
- package/dist/pi-rpc.js.map +7 -0
- package/package.json +56 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../sandbox-orchestrator/src/server/http-server.ts", "../../sandbox-orchestrator/src/sprite-task-lease.ts", "../../sandbox-orchestrator/src/shared/config.ts", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/external.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/index.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/core.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/util.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/errors.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/parse.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/regexes.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/checks.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/doc.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/versions.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/index.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ar.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/az.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/be.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/bg.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ca.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/cs.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/da.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/de.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/en.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/eo.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/es.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fa.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fi.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/fr-CA.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/he.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hu.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/hy.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/id.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/is.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/it.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ja.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ka.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/km.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/kh.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ko.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/lt.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/mk.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ms.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/nl.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/no.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ota.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ps.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pl.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/pt.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ru.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sl.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/sv.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ta.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/th.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/tr.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uk.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ua.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/ur.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/uz.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/vi.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-CN.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/zh-TW.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/locales/yo.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/core/json-schema-generator.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/json-schema.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/schemas.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/checks.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/iso.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/errors.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/parse.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/compat.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/from-json-schema.js", "../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/classic/coerce.js", "../../mote-core/src/contracts/locale.ts", "../../mote-core/src/contracts/agent-persona.ts", "../../mote-core/src/contracts/agent-thinking.ts", "../../mote-core/src/contracts/apps.ts", "../../mote-core/src/contracts/primitives.ts", "../../mote-core/src/contracts/analytics.ts", "../../mote-core/src/contracts/gen-app-bundles.ts", "../../mote-core/src/contracts/channel.ts", "../../mote-core/src/contracts/tickets.ts", "../../mote-core/src/contracts/message-timeline.ts", "../../mote-core/src/contracts/ticket-worklog.ts", "../../mote-core/src/contracts/org-onboarding.ts", "../../mote-core/src/edge-hmac.ts", "../../mote-core/src/http-origin.ts", "../../mote-core/src/contracts/sandbox-invocation.ts", "../../mote-core/src/contracts/timeline-wire.ts", "../../sandbox-orchestrator/src/agent-cgroup.ts", "../../sandbox-orchestrator/src/agent-ensure.ts", "../../sandbox-orchestrator/src/shared/json.ts", "../../sandbox-orchestrator/src/commands/agent-profiles.ts", "../../sandbox-orchestrator/src/users-tree.ts", "../../sandbox-orchestrator/src/sandbox-api-client.ts", "../../sandbox-orchestrator/src/agent-launch-client.ts", "../../sandbox-orchestrator/src/server/edge-egress-http.ts", "../../sandbox-orchestrator/src/scheduler/ticket-workspace.ts", "../../sandbox-orchestrator/src/gen-app-build.ts", "../../sandbox-orchestrator/src/workspace-process-runtime.ts", "../../sandbox-orchestrator/src/commands/app-command.ts", "../../sandbox-orchestrator/src/commands/agent-directory-command.ts", "../../sandbox-orchestrator/src/commands/ticket-command.ts", "../../sandbox-orchestrator/src/gen-app-bundle-client.ts", "../../sandbox-orchestrator/src/commands/workspace-command.ts", "../../sandbox-orchestrator/src/commands/command-executor.ts", "../../sandbox-orchestrator/src/agent-launch.ts", "../../sandbox-orchestrator/src/agent-work-lifecycle.ts", "../../sandbox-orchestrator/src/assignment-handoff.ts", "../../sandbox-orchestrator/src/agent-process-runtime.ts", "../../sandbox-orchestrator/src/scheduler/process-identity.ts", "../../sandbox-orchestrator/src/shared/stream.ts", "../../sandbox-orchestrator/src/launch-registry.ts", "../../sandbox-orchestrator/src/agent/delivery-ledger.ts", "../../sandbox-orchestrator/src/agent/pi-timeline.ts", "../../sandbox-orchestrator/src/agent/channel-actions.ts", "../../sandbox-orchestrator/src/agent/channel-handler.ts", "../../sandbox-orchestrator/src/scheduler/work-scheduler.ts", "../../sandbox-orchestrator/src/run-invocation.ts", "../../sandbox-orchestrator/src/sandbox-gateway-forwarder.ts", "../../sandbox-orchestrator/src/server/edge-timeline-producer.ts", "../../sandbox-orchestrator/src/server/http-helpers.ts", "../../sandbox-orchestrator/src/server/public-routes.ts", "../../sandbox-orchestrator/src/server/agent-command-channel.ts", "../../sandbox-orchestrator/src/commands/command-parser.ts", "../../sandbox-orchestrator/src/cli.ts", "../../sandbox-orchestrator/src/run-isolation-verifier.ts", "../../sandbox-orchestrator/src/agent-roster-materialization.ts", "../../sandbox-orchestrator/src/sandbox-boot.ts", "../src/cli.ts"],
|
|
4
|
+
"sourcesContent": ["import { join } from \"node:path\";\nimport { createServer, type Server, type ServerResponse } from \"node:http\";\nimport type { Writable } from \"node:stream\";\n\nimport { createSpriteTaskLeaseManager } from \"../sprite-task-lease.js\";\nimport { createLinuxAgentCgroupController } from \"../agent-cgroup.js\";\nimport type { AgentProcessRuntime } from \"../agent-process-runtime.js\";\nimport { ensureLocalAgent } from \"../agent-ensure.js\";\nimport {\n createAgentLaunchClient,\n type AgentLaunchClient,\n} from \"../agent-launch-client.js\";\nimport type { AgentLaunchRuntime } from \"../agent-launch.js\";\nimport { executeAgentCommand } from \"../commands/command-executor.js\";\nimport { readAgentProfiles } from \"../commands/agent-profiles.js\";\nimport type { AgentCommand } from \"../commands/types.js\";\nimport { createChannelHandler } from \"../agent/channel-handler.js\";\nimport { createLaunchRegistry } from \"../launch-registry.js\";\nimport { ensureAgentDirectory, prepareUsersRoot } from \"../users-tree.js\";\nimport { createProcessIdentityAllocator } from \"../scheduler/process-identity.js\";\nimport {\n createWorkScheduler,\n type WorkScheduler,\n} from \"../scheduler/work-scheduler.js\";\nimport {\n createSandboxGatewayForwarder,\n type SandboxGatewayForwarder,\n} from \"../sandbox-gateway-forwarder.js\";\nimport {\n readListenerConfig,\n requireCredentialGatewayOrigin,\n resolveAgentRoot,\n} from \"../shared/config.js\";\nimport type { AgentLaunch } from \"../shared/types.js\";\nimport { createEdgeTimelineProducer } from \"./edge-timeline-producer.js\";\nimport {\n isBadRequestError,\n PayloadTooLargeError,\n writeJson,\n} from \"./http-helpers.js\";\nimport { SandboxApiRequestError } from \"../sandbox-api-client.js\";\nimport { handlePublicHttpRequest } from \"./public-routes.js\";\nimport {\n createAgentCommandChannelManager,\n type AgentCommandChannelManager,\n} from \"./agent-command-channel.js\";\n\n/**\n * Runtime options for the long-lived sandbox-local HTTP service.\n *\n * @public\n */\nexport interface StartSandboxOrchestratorServiceInput {\n /** Environment used to locate Pi and configure listeners. */\n env: NodeJS.ProcessEnv;\n /** Diagnostic output for request and child-process failures. */\n stderr: Writable;\n /** Monotonic UID allocator injected only by process-boundary tests. */\n identityAllocator?: ReturnType<typeof createProcessIdentityAllocator>;\n /** Portable process boundary injected only by host integration tests. */\n agentProcessRuntime?: AgentProcessRuntime;\n /** Private IAM launch client injected by tests to avoid external requests. */\n agentLaunchClient?: AgentLaunchClient;\n /** Stable per-agent socket manager injected only by focused tests. */\n agentCommandChannels?: AgentCommandChannelManager;\n /** Unified Gateway forwarder injected only by integration tests. */\n gatewayForwarder?: SandboxGatewayForwarder;\n}\n\n/**\n * Handle returned by the sandbox-local HTTP service.\n *\n * @public\n */\nexport interface SandboxOrchestratorService {\n /** Public listener host used by API-to-orchestrator traffic. */\n publicHost: string;\n /** Public listener TCP port used by API-to-orchestrator traffic. */\n publicPort: number;\n /**\n * Stop accepting requests and close active agent runtimes.\n *\n * @param reason - Close reason reported to channel launches.\n */\n close(reason?: string): Promise<void>;\n}\n\n/**\n * Start the sandbox-local orchestrator HTTP service on its single TCP listener.\n *\n * @param input - Service environment and diagnostics stream.\n * @returns Service handle after the listener is ready.\n *\n * @public\n */\nexport async function startSandboxOrchestratorService(\n input: StartSandboxOrchestratorServiceInput\n): Promise<SandboxOrchestratorService> {\n const listenerConfig = readListenerConfig(input.env);\n const identityAllocator = input.identityAllocator ?? createProcessIdentityAllocator();\n const launchClient = input.agentLaunchClient\n ?? createAgentLaunchClient({ env: input.env });\n const gatewayForwarder = input.gatewayForwarder ?? createSandboxGatewayForwarder({\n gatewayOrigin: requireCredentialGatewayOrigin(input.env),\n sandboxInstanceId: requireEnvironment(\n input.env.MOTE_SANDBOX_INSTANCE_ID,\n \"MOTE_SANDBOX_INSTANCE_ID\",\n ),\n sandboxRequestSecret: requireEnvironment(\n input.env.MOTE_SANDBOX_REQUEST_SECRET,\n \"MOTE_SANDBOX_REQUEST_SECRET\",\n ),\n });\n const timelineProducer = createEdgeTimelineProducer({\n env: input.env,\n stderr: input.stderr,\n sandboxEdgeSecret: listenerConfig.sandboxEdgeSecret,\n });\n const spriteTaskLeases = createSpriteTaskLeaseManager({\n env: input.env,\n stderr: input.stderr,\n });\n const registry = createLaunchRegistry();\n let scheduler: WorkScheduler;\n const executeCommand = async (\n launch: AgentLaunch,\n command: AgentCommand,\n ) => {\n const result = await executeAgentCommand({\n command,\n launch,\n env: input.env,\n hasActiveDrone: (ticketId) => scheduler.hasActiveDrone(ticketId),\n });\n await scheduler.noteCommandResult(command, result);\n return result;\n };\n /**\n * Build the trusted authority envelope for one protected forward.\n *\n * @remarks\n * The stable socket authenticated the agent; the registry entry carries the\n * orchestrator-attested initiator. No permission snapshot travels: IAM\n * recalculates the agent \u2229 owner \u2229 initiator intersection per request.\n */\n const buildAuthority = (launch: AgentLaunch) => ({\n orgId: launch.orgId,\n orgCode: launch.orgCode,\n sandboxInstanceId: requireEnvironment(\n input.env.MOTE_SANDBOX_INSTANCE_ID,\n \"MOTE_SANDBOX_INSTANCE_ID\",\n ),\n sandboxName: requireEnvironment(\n input.env.MOTE_SANDBOX_NAME,\n \"MOTE_SANDBOX_NAME\",\n ),\n agentId: launch.sessionKey.agentId,\n ownerUserId: launch.ownerUserId,\n initiatorUserId: launch.initiatorUserId,\n launchId: launch.launchId,\n });\n let agentCommandChannels = input.agentCommandChannels;\n const ownsAgentCommandChannels = !agentCommandChannels;\n if (ownsAgentCommandChannels) {\n if (process.platform === \"linux\" && process.getuid?.() === 0 && !input.agentProcessRuntime) {\n // Reconcile the previous orchestrator process before exposing any agent\n // socket; an unavailable cgroup v2 hierarchy fails startup closed, and\n // an unexpected users-tree entry fails validation closed (ADR-061).\n await createLinuxAgentCgroupController().prepareRoot();\n await prepareUsersRoot(input.env);\n }\n agentCommandChannels = createAgentCommandChannelManager({\n resolveLaunch: (launchId) => registry.getByLaunchId(launchId),\n execute: executeCommand,\n forwardMcp: async (launch, _serverAlias, payload) =>\n gatewayForwarder.forwardMcp(buildAuthority(launch), payload),\n streamConnector: async (launch, invocation, signal) =>\n gatewayForwarder.streamConnector(\n buildAuthority(launch),\n invocation,\n AbortSignal.any([launch.stopping.signal, signal]),\n ),\n });\n }\n const launchRuntime: AgentLaunchRuntime = {\n env: input.env,\n stderr: input.stderr,\n registry,\n launchClient,\n ...(agentCommandChannels ? { channels: agentCommandChannels } : {}),\n spriteTaskLeases,\n identityAllocator,\n ...(input.agentProcessRuntime\n ? { processRuntime: input.agentProcessRuntime }\n : {}),\n };\n // Idempotent provisioning convergence for every roster agent (ADR-061 \u00A74).\n // Launch remains read-only and refuses an agent whose profile is still absent.\n await ensureRosterAgentDirectories(input.env, input.stderr);\n scheduler = createWorkScheduler({\n env: input.env,\n stderr: input.stderr,\n launchRuntime,\n timelineProducer,\n });\n const channelHandler = createChannelHandler({\n runtime: launchRuntime,\n timelineProducer,\n });\n const publicServer = createServer((request, response) => {\n void handlePublicHttpRequest({\n request,\n response,\n channelHandler,\n env: input.env,\n sandboxEdgeSecret: listenerConfig.sandboxEdgeSecret,\n noteBoardNudge: () => scheduler.ensureReconcile(\"watchdog nudge\"),\n abortTicketDrone: (ticketId) => scheduler.abortTicketDrone(ticketId),\n ensureAgent: async (ensureRequest) => {\n await ensureLocalAgent({ env: input.env, request: ensureRequest });\n },\n }).catch((error) => {\n handleRequestError({ response, stderr: input.stderr, error });\n });\n });\n\n try {\n await listenOnTcp(\n publicServer,\n listenerConfig.publicPort,\n listenerConfig.publicHost\n );\n } catch (error) {\n if (ownsAgentCommandChannels) await agentCommandChannels?.close();\n throw error;\n }\n\n // Cold start is not a special case (ADR-042 4.1): it is the first reconcile\n // pass, converging whatever the previous process left behind.\n scheduler.ensureReconcile(\"cold start\");\n\n return {\n publicHost: listenerConfig.publicHost,\n publicPort: listenerConfig.publicPort,\n async close(reason = \"service_closed\") {\n await scheduler.close();\n await channelHandler.releaseAll(reason);\n await spriteTaskLeases.close();\n timelineProducer.close();\n await Promise.all([\n closeServer(publicServer),\n ownsAgentCommandChannels ? agentCommandChannels?.close() : undefined,\n ]);\n },\n };\n}\n\n/**\n * Run the idempotent directory ensure for every owned roster agent.\n *\n * @remarks\n * Per-agent failures are logged, never fatal. Launches refuse missing profiles\n * instead of mutating them; provisioning or an explicit profile write retries\n * materialization.\n *\n * @param env - Orchestrator process environment.\n * @param stderr - Diagnostic sink.\n */\nasync function ensureRosterAgentDirectories(\n env: NodeJS.ProcessEnv,\n stderr: Writable,\n): Promise<void> {\n const agentRoot = resolveAgentRoot(env);\n for (const profile of await readAgentProfiles(agentRoot)) {\n if (!profile.ownerUserId) {\n stderr.write(\n `[sandbox-orchestrator] roster agent ${profile.id} has no owner; skipping directory ensure\\n`,\n );\n continue;\n }\n try {\n await ensureAgentDirectory({\n env,\n userId: profile.ownerUserId,\n agentId: profile.id,\n profileTemplateDir: join(agentRoot, profile.id),\n });\n } catch (error) {\n stderr.write(\n `[sandbox-orchestrator] boot ensure for agent ${profile.id} failed: ${\n error instanceof Error ? error.message : String(error)\n }\\n`,\n );\n }\n }\n}\n\n/**\n * Listen on one TCP address and wait until the server is ready.\n *\n * @param server - HTTP server instance.\n * @param port - TCP port.\n * @param host - TCP host.\n */\nfunction listenOnTcp(\n server: Server,\n port: number,\n host: string\n): Promise<void> {\n return new Promise((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, host, () => {\n server.off(\"error\", reject);\n resolve();\n });\n });\n}\n\n/**\n * Close an HTTP server and wait for shutdown.\n *\n * @param server - HTTP server instance.\n */\nfunction closeServer(server: Server): Promise<void> {\n return new Promise((resolve, reject) => {\n server.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n });\n}\n\n/**\n * Convert an uncaught route error into the service's stable JSON error shape.\n *\n * @param input - Response stream, diagnostics stream, and route error.\n */\nfunction handleRequestError(input: {\n response: ServerResponse;\n stderr: Writable;\n error: unknown;\n}): void {\n input.stderr.write(\n `[sandbox-orchestrator] ${\n input.error instanceof Error ? input.error.message : String(input.error)\n }\\n`\n );\n const payloadTooLargeError = input.error instanceof PayloadTooLargeError\n ? input.error\n : null;\n const launchRequestStatus = readAgentLaunchRequestStatus(input.error);\n // Only IAM's explicit denial is an actor authorization outcome. A rejected\n // sandbox proof or missing private route is service failure and must remain\n // retryable at the Channel delivery boundary.\n const launchAuthorizationError = launchRequestStatus === 403;\n const status = payloadTooLargeError\n ? 413\n : launchAuthorizationError\n ? 403\n : isBadRequestError(input.error)\n ? 400\n : 500;\n writeJson(input.response, status, {\n ok: false,\n error: {\n code: status === 413\n ? \"payload_too_large\"\n : status === 403\n ? \"agent_authorization_required\"\n : status === 400\n ? \"bad_request\"\n : \"internal_error\",\n message: payloadTooLargeError\n ? payloadTooLargeError.message\n : status === 403\n ? \"The initiating user is not authorized to invoke this agent. Ask its owner to grant access, then mention it again.\"\n : status === 400\n ? \"invalid request\"\n : \"internal server error\",\n },\n });\n}\n\n/**\n * Read a launch-authority status across bundled runtime module boundaries.\n *\n * @remarks\n * A packaged sandbox can load the same error class through two ESM module\n * instances, where `instanceof` alone is false. The exact class name and\n * numeric status preserve the narrow boundary without treating arbitrary\n * status-bearing errors as launch decisions.\n *\n * @param error - Uncaught route error.\n * @returns Trusted launch status, or `undefined` for another error class.\n */\nfunction readAgentLaunchRequestStatus(error: unknown): number | undefined {\n if (error instanceof SandboxApiRequestError) {\n return error.status;\n }\n if (\n error instanceof Error\n && error.name === \"SandboxApiRequestError\"\n && \"status\" in error\n && typeof error.status === \"number\"\n ) {\n return error.status;\n }\n return undefined;\n}\n\n/** Require one non-empty trusted service environment value. */\nfunction requireEnvironment(value: string | undefined, name: string): string {\n const normalized = value?.trim();\n if (!normalized) throw new Error(`${name} is required`);\n return normalized;\n}\n", "import { request } from \"node:http\";\nimport type { Writable } from \"node:stream\";\n\nimport { readPositiveInteger } from \"./shared/config.js\";\n\nconst DEFAULT_SPRITE_TASK_SOCKET_PATH = \"/.sprite/api.sock\";\nconst DEFAULT_SPRITE_TASK_EXPIRE = \"5m\";\nconst DEFAULT_SPRITE_TASK_HEARTBEAT_MS = 60_000;\nconst DEFAULT_SPRITE_TASK_REQUEST_TIMEOUT_MS = 5_000;\nconst DEFAULT_SPRITE_TASK_DELETE_ATTEMPTS = 3;\nconst DEFAULT_SPRITE_TASK_DELETE_RETRY_MS = 100;\n\n/**\n * Exclusive ownership of one expiring Sprite task.\n *\n * @remarks\n * Release is idempotent. Once release begins, the name cannot be acquired\n * again until its heartbeat and remote DELETE have finished.\n */\nexport interface SpriteTaskLease {\n /** Stable Sprite task name owned by this handle. */\n readonly name: string;\n\n /** Stop heartbeats and best-effort delete the owned Sprite task. */\n release(): Promise<void>;\n}\n\n/**\n * Orchestrator-local owner registry for Sprite task lifecycle holds.\n *\n * @remarks\n * A Sprite task is not product state. It only keeps the Org Agent Sandbox\n * awake while its single local owner has active runtime work. Acquisition is\n * fail-closed: callers receive a handle only after the Sprite API accepts the\n * initial PUT, and one name may have only one owner.\n */\nexport interface SpriteTaskLeaseManager {\n /**\n * Create one Sprite task and return its exclusive owner handle.\n *\n * @param name - Unique task name for one active work execution.\n * @returns The only handle permitted to release this task.\n * @throws When the name already has an owner, the manager is closed, or the Sprite API rejects the PUT.\n */\n acquire(name: string): Promise<SpriteTaskLease>;\n\n /** Stop heartbeats and best-effort release every owned Sprite task. */\n close(): Promise<void>;\n}\n\n/** Runtime configuration for the Sprite task lease manager. */\nexport interface CreateSpriteTaskLeaseManagerInput {\n /** Environment used to configure the local Sprite Tasks API and retry bounds. */\n env?: NodeJS.ProcessEnv;\n /** Diagnostics stream for heartbeat failures and TTL-backed delete failures. */\n stderr: Writable;\n}\n\ntype LeaseState = \"acquiring\" | \"active\" | \"releasing\" | \"released\";\n\n/** Mutable state kept private to one owner handle. */\ninterface LeaseRecord {\n readonly name: string;\n state: LeaseState;\n initialPut: Promise<void>;\n heartbeat?: Promise<void>;\n release?: Promise<void>;\n}\n\n/**\n * Create a Sprite task owner registry with one shared heartbeat timer.\n *\n * @param input - Local Sprite API configuration and diagnostic stream.\n * @returns A manager that grants one owner handle per active task name.\n */\nexport function createSpriteTaskLeaseManager(input: CreateSpriteTaskLeaseManagerInput): SpriteTaskLeaseManager {\n const socketPath = input.env?.MOTE_SPRITE_TASK_SOCKET_PATH?.trim()\n || DEFAULT_SPRITE_TASK_SOCKET_PATH;\n const expire = input.env?.MOTE_SPRITE_TASK_EXPIRE?.trim()\n || DEFAULT_SPRITE_TASK_EXPIRE;\n const heartbeatIntervalMs = readPositiveInteger(\n input.env?.MOTE_SPRITE_TASK_HEARTBEAT_MS,\n DEFAULT_SPRITE_TASK_HEARTBEAT_MS,\n );\n const requestTimeoutMs = readPositiveInteger(\n input.env?.MOTE_SPRITE_TASK_REQUEST_TIMEOUT_MS,\n DEFAULT_SPRITE_TASK_REQUEST_TIMEOUT_MS,\n );\n const deleteAttempts = readPositiveInteger(\n input.env?.MOTE_SPRITE_TASK_DELETE_ATTEMPTS,\n DEFAULT_SPRITE_TASK_DELETE_ATTEMPTS,\n );\n const deleteRetryMs = readPositiveInteger(\n input.env?.MOTE_SPRITE_TASK_DELETE_RETRY_MS,\n DEFAULT_SPRITE_TASK_DELETE_RETRY_MS,\n );\n const records = new Map<string, LeaseRecord>();\n let heartbeatTimer: ReturnType<typeof setInterval> | undefined;\n let closed = false;\n let closePromise: Promise<void> | undefined;\n\n const putSpriteTask = (name: string): Promise<void> => requestSpriteTaskApi({\n socketPath,\n method: \"PUT\",\n path: `/v1/tasks/${encodeURIComponent(name)}`,\n body: { expire },\n timeoutMs: requestTimeoutMs,\n });\n\n const hasActiveLease = (): boolean => {\n for (const record of records.values()) {\n if (record.state === \"active\") {\n return true;\n }\n }\n return false;\n };\n\n const stopHeartbeatIfIdle = (): void => {\n if (hasActiveLease() || !heartbeatTimer) {\n return;\n }\n clearInterval(heartbeatTimer);\n heartbeatTimer = undefined;\n };\n\n const heartbeat = (record: LeaseRecord): void => {\n if (record.state !== \"active\" || record.heartbeat) {\n return;\n }\n record.heartbeat = putSpriteTask(record.name)\n .catch((error: unknown) => {\n input.stderr.write(`[sandbox-orchestrator] failed to refresh Sprite task ${record.name}: ${formatError(error)}\\n`);\n })\n .finally(() => {\n delete record.heartbeat;\n });\n };\n\n const startHeartbeat = (): void => {\n if (heartbeatTimer || !hasActiveLease()) {\n return;\n }\n heartbeatTimer = setInterval(() => {\n for (const record of records.values()) {\n heartbeat(record);\n }\n }, heartbeatIntervalMs);\n heartbeatTimer.unref();\n };\n\n const deleteSpriteTask = async (name: string): Promise<void> => {\n let lastError: unknown;\n for (let attempt = 1; attempt <= deleteAttempts; attempt += 1) {\n try {\n await requestSpriteTaskApi({\n socketPath,\n method: \"DELETE\",\n path: `/v1/tasks/${encodeURIComponent(name)}`,\n timeoutMs: requestTimeoutMs,\n allowNotFound: true,\n });\n return;\n } catch (error) {\n lastError = error;\n if (attempt < deleteAttempts) {\n await delay(deleteRetryMs);\n }\n }\n }\n input.stderr.write(\n `[sandbox-orchestrator] failed to release Sprite task ${name} after ${deleteAttempts} attempts; `\n + `the task will expire via TTL ${expire}: ${formatError(lastError)}\\n`,\n );\n };\n\n const finishRelease = async (record: LeaseRecord): Promise<void> => {\n try {\n // Both PUT sources must finish before DELETE, otherwise a late PUT can\n // recreate the remote task after this owner has released it.\n await record.initialPut.catch(() => undefined);\n await record.heartbeat;\n // A timed-out PUT may have succeeded remotely. DELETE is therefore\n // required after every valid-name acquisition attempt; 404 is success.\n await deleteSpriteTask(record.name);\n } finally {\n record.state = \"released\";\n if (records.get(record.name) === record) {\n records.delete(record.name);\n }\n stopHeartbeatIfIdle();\n }\n };\n\n const releaseRecord = (record: LeaseRecord): Promise<void> => {\n if (record.release) {\n return record.release;\n }\n record.state = \"releasing\";\n // Remove this owner from heartbeat eligibility before awaiting any remote\n // work. The record stays reserved until DELETE completes, preventing a new\n // owner with the same name from racing the old owner's teardown.\n stopHeartbeatIfIdle();\n record.release = finishRelease(record);\n return record.release;\n };\n\n return {\n async acquire(name) {\n if (closed) {\n throw new Error(\"Sprite task lease manager is closed\");\n }\n if (records.has(name)) {\n throw new Error(`Sprite task ${name} already has an owner`);\n }\n // Validate before reserving the name. The API helpers encode again when\n // building requests, but that must not strand an `acquiring` record.\n encodeURIComponent(name);\n\n const record: LeaseRecord = {\n name,\n state: \"acquiring\",\n initialPut: Promise.resolve(),\n };\n records.set(name, record);\n\n try {\n record.initialPut = putSpriteTask(name);\n await record.initialPut;\n } catch (error) {\n await releaseRecord(record);\n throw error;\n }\n\n if (closed || record.state !== \"acquiring\") {\n await releaseRecord(record);\n throw new Error(\"Sprite task lease manager closed during acquisition\");\n }\n\n record.state = \"active\";\n startHeartbeat();\n return {\n name,\n release: () => releaseRecord(record),\n };\n },\n\n close() {\n if (closePromise) {\n return closePromise;\n }\n closed = true;\n if (heartbeatTimer) {\n clearInterval(heartbeatTimer);\n heartbeatTimer = undefined;\n }\n closePromise = Promise.all([...records.values()].map(releaseRecord)).then(() => undefined);\n return closePromise;\n },\n };\n}\n\n/**\n * Perform one bounded request against the Sprite-local Unix-socket API.\n *\n * @param input - HTTP method, Unix socket, path, timeout, and optional JSON body.\n * @returns Completion after an accepted response status and complete response body.\n */\nfunction requestSpriteTaskApi(input: {\n socketPath: string;\n method: \"PUT\" | \"DELETE\";\n path: string;\n timeoutMs: number;\n body?: Record<string, unknown>;\n allowNotFound?: boolean;\n}): Promise<void> {\n const body = input.body ? JSON.stringify(input.body) : \"\";\n return new Promise((resolve, reject) => {\n let settled = false;\n const finish = (error?: Error): void => {\n if (settled) {\n return;\n }\n settled = true;\n clearTimeout(timeout);\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n };\n const req = request({\n socketPath: input.socketPath,\n method: input.method,\n path: input.path,\n headers: {\n Host: \"sprite\",\n ...(body ? {\n \"Content-Type\": \"application/json\",\n \"Content-Length\": Buffer.byteLength(body),\n } : {}),\n },\n }, (response) => {\n let responseBody = \"\";\n response.setEncoding(\"utf8\");\n response.on(\"data\", (chunk: string) => {\n responseBody += chunk;\n });\n response.once(\"error\", finish);\n response.on(\"end\", () => {\n const statusCode = response.statusCode ?? 0;\n if ((statusCode >= 200 && statusCode < 300) || (input.allowNotFound && statusCode === 404)) {\n finish();\n return;\n }\n finish(new Error(`Sprite task API returned HTTP ${statusCode}${responseBody ? `: ${responseBody}` : \"\"}`));\n });\n });\n req.once(\"error\", finish);\n const timeout = setTimeout(() => {\n req.destroy(new Error(`Sprite task API request timed out after ${input.timeoutMs}ms`));\n }, input.timeoutMs);\n timeout.unref();\n if (body) {\n req.write(body);\n }\n req.end();\n });\n}\n\n/**\n * Wait before a bounded local DELETE retry.\n *\n * @param ms - Delay in milliseconds.\n * @returns Completion after the delay.\n */\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Render an unknown rejection reason for diagnostics.\n *\n * @param error - Unknown thrown value.\n * @returns Human-readable error text.\n */\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n", "import { join } from \"node:path\";\nimport { parseHttpOrigin } from \"@liy/mote-core\";\n\n/** Machine-root user- and agent-bound directory tree root (ADR-061). */\nexport const DEFAULT_USERS_ROOT = \"/users\";\n/**\n * Mutable agent state root.\n *\n * @remarks\n * ADR-084 moves this out of the package directory. Profile trees and the\n * roster are the only mutable state in the sandbox, so they must sit outside\n * the version-stamped install roots that a package update swaps.\n */\nconst DEFAULT_AGENT_ROOT = \"/opt/mote/agents\";\nconst DEFAULT_WORKSPACES_ROOT = \"/workspace\";\nconst DEFAULT_AGENT_WORKTREES_ROOT = \"/worktree\";\nconst DEFAULT_QUARANTINED_WORKTREES_ROOT = \"/worktree/.quarantined\";\n/** Installed per-run runtime, reached through the swappable `current` link. */\nconst DEFAULT_PI_RUNTIME_ROOT = \"/opt/mote/pi-runtime/current\";\n/** Credential-free HOME holding the installed browser binaries. */\nconst DEFAULT_AGENT_BROWSER_HOME = \"/opt/mote/browser-home\";\nexport const DEFAULT_SANDBOX_LOCAL_BIN_DIR = `${DEFAULT_PI_RUNTIME_ROOT}/node_modules/.bin`;\nconst DEFAULT_PUBLIC_HOST = \"0.0.0.0\";\nconst DEFAULT_PUBLIC_PORT = 8081;\n/** Fixed supplementary group for agent sockets and shared workspace trees. */\nexport const DEFAULT_AGENT_SHARED_RESOURCE_GID = 199_999;\n/**\n * First stable GID reserved for user and agent directories (ADR-061).\n *\n * @remarks\n * One reserved range covers both user-directory and agent-directory GIDs.\n * It must stay disjoint from the per-launch UID/GID range, whose in-memory\n * allocator resets on orchestrator restart while stable GIDs persist on disk.\n */\nexport const STABLE_GID_MIN = 300_000;\n/** Last stable GID reserved for user and agent directories. */\nexport const STABLE_GID_MAX = 365_535;\nexport const EDGE_ORIGIN_ENV = \"MOTE_EDGE_ORIGIN\";\nexport const EDGE_PRODUCER_RECONNECT_MS = 250;\nexport const MAX_HTTP_BODY_BYTES = 1024 * 1024;\n\n/**\n * Resolve the root of the user- and agent-bound directory tree (ADR-061).\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute users root directory.\n */\nexport function resolveUsersRoot(env: NodeJS.ProcessEnv): string {\n return env.MOTE_USERS_ROOT || DEFAULT_USERS_ROOT;\n}\n\n/**\n * Resolve the root-owned agent profile TEMPLATE root.\n *\n * @remarks\n * Templates are materialized by the runtime package setup and copied into\n * each agent's stable `/users/<owner>/agents/<agent>/profile` directory by\n * the orchestrator's ensure operation.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute agent profile template root directory.\n */\nexport function resolveAgentRoot(env: NodeJS.ProcessEnv): string {\n return env.MOTE_AGENT_ROOT || DEFAULT_AGENT_ROOT;\n}\n\n/**\n * Resolve the project workspace root used as the Pi process working directory.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute workspace root directory.\n */\nexport function resolveWorkspacesRoot(env: NodeJS.ProcessEnv): string {\n return env.MOTE_AGENT_WORKSPACES_ROOT || DEFAULT_WORKSPACES_ROOT;\n}\n\n/**\n * Resolve the root containing app- and ticket-scoped Git worktrees.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute worktree root directory.\n */\nexport function resolveAgentWorktreesRoot(env: NodeJS.ProcessEnv): string {\n return env.MOTE_AGENT_WORKTREES_ROOT || DEFAULT_AGENT_WORKTREES_ROOT;\n}\n\n/**\n * Resolve the root containing inactive orphan worktrees retained for recovery.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute quarantine root directory.\n */\nexport function resolveQuarantinedWorktreesRoot(env: NodeJS.ProcessEnv): string {\n return env.MOTE_QUARANTINED_WORKTREES_ROOT || DEFAULT_QUARANTINED_WORKTREES_ROOT;\n}\n\n/**\n * Resolve the Org id persisted on the sandbox orchestrator service.\n *\n * @param env - Orchestrator process environment.\n * @returns Active Org id, or undefined when the service was not provisioned with one.\n */\nexport function resolveSandboxOrgId(env: NodeJS.ProcessEnv): string | undefined {\n return env.MOTE_ORG_ID?.trim() || undefined;\n}\n\n/**\n * Resolve the fixed Credential Gateway origin for protected provider calls.\n *\n * @param env - Trusted sandbox service environment.\n * @returns Canonical HTTPS origin selected by deployment configuration.\n * @throws When the Gateway origin is missing, non-HTTPS, or contains a path.\n */\nexport function requireCredentialGatewayOrigin(env: NodeJS.ProcessEnv): string {\n const value = env.MOTE_CREDENTIAL_GATEWAY_ORIGIN?.trim();\n if (!value) {\n throw new Error(\"MOTE_CREDENTIAL_GATEWAY_ORIGIN is required for Connector forwarding\");\n }\n const origin = parseHttpOrigin(value, \"MOTE_CREDENTIAL_GATEWAY_ORIGIN\");\n if (new URL(origin).protocol !== \"https:\") {\n throw new Error(\"MOTE_CREDENTIAL_GATEWAY_ORIGIN must be an HTTPS origin\");\n }\n return origin;\n}\n\n/**\n * Normalized listener configuration for the orchestrator service.\n */\nexport interface ListenerConfig {\n /** Public listener host for API-to-orchestrator requests. */\n publicHost: string;\n /** Public listener port for API-to-orchestrator requests. */\n publicPort: number;\n /** Shared sandbox-edge secret required on public requests. */\n sandboxEdgeSecret: string;\n}\n\n/**\n * Read the public listener configuration from the environment.\n *\n * @param env - Orchestrator process environment.\n * @returns Validated listener configuration.\n */\nexport function readListenerConfig(env: NodeJS.ProcessEnv): ListenerConfig {\n const sandboxEdgeSecret = env.MOTE_SANDBOX_EDGE_SECRET?.trim();\n if (!sandboxEdgeSecret) {\n throw new Error(\"MOTE_SANDBOX_EDGE_SECRET is required\");\n }\n return {\n publicHost: env.MOTE_SANDBOX_ORCHESTRATOR_HOST?.trim() || DEFAULT_PUBLIC_HOST,\n publicPort: readPort(\n env.MOTE_SANDBOX_ORCHESTRATOR_PORT,\n DEFAULT_PUBLIC_PORT\n ),\n sandboxEdgeSecret,\n };\n}\n\n/**\n * Parse a TCP port environment value.\n *\n * @param raw - Raw environment value.\n * @param fallback - Default port.\n * @returns Valid TCP port.\n */\nexport function readPort(raw: string | undefined, fallback: number): number {\n if (!raw?.trim()) {\n return fallback;\n }\n const parsed = Number(raw);\n if (!Number.isInteger(parsed) || parsed < 1 || parsed > 65_535) {\n throw new Error(`invalid TCP port: ${raw}`);\n }\n return parsed;\n}\n\n/**\n * Reads the configured edge Worker origin for producer sockets.\n *\n * @param env - Orchestrator process environment.\n * @returns Normalized Edge origin or an empty string when not configured.\n */\nexport function resolveEdgeOrigin(env: NodeJS.ProcessEnv): string {\n const value = env[EDGE_ORIGIN_ENV]?.trim();\n return value ? parseHttpOrigin(value, EDGE_ORIGIN_ENV) : \"\";\n}\n\n/**\n * Read a positive integer configuration value.\n *\n * @param raw - Candidate value.\n * @param fallback - Value used when the candidate is missing or invalid.\n * @returns Positive integer.\n */\nexport function readPositiveInteger(raw: string | number | undefined, fallback: number): number {\n const parsed = typeof raw === \"number\" ? raw : Number(raw);\n return Number.isInteger(parsed) && parsed > 0 ? parsed : fallback;\n}\n\n/** @param env - Trusted orchestrator environment. @returns Private durable host state outside app workspaces. */\nexport function resolveOrchestratorStateRoot(env: NodeJS.ProcessEnv): string {\n return env.MOTE_ORCHESTRATOR_STATE_ROOT?.trim()\n || (env.MOTE_USERS_ROOT ? join(env.MOTE_USERS_ROOT, \".orchestrator\") : \"/var/lib/mote/orchestrator\");\n}\n\n/**\n * Resolve the installed per-run runtime root (`@liy/mote-pi-runtime`).\n *\n * @remarks\n * The default points at the `current` symlink rather than a version directory,\n * and callers resolve it when they spawn rather than at boot (ADR-084). That is\n * what lets a per-run runtime update take effect without restarting this\n * service: already-running Pi children keep the version they resolved, and the\n * next spawn picks up the new one.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute per-run runtime root directory.\n */\nexport function resolvePiRuntimeRoot(env: NodeJS.ProcessEnv): string {\n return env.MOTE_PI_RUNTIME_ROOT || DEFAULT_PI_RUNTIME_ROOT;\n}\n\n/**\n * Resolve the precompiled shared Pi extension directory.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute extension directory every agent profile links to.\n */\nexport function resolvePiExtensionsRoot(env: NodeJS.ProcessEnv): string {\n return join(resolvePiRuntimeRoot(env), \"extensions\");\n}\n\n/**\n * Resolve the universal Agent Skills directory shipped with the runtime.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute skills directory installed into every agent profile.\n */\nexport function resolvePiSkillsRoot(env: NodeJS.ProcessEnv): string {\n return join(resolvePiRuntimeRoot(env), \"skills\");\n}\n\n/**\n * Resolve the credential-free HOME holding the installed browser binaries.\n *\n * @param env - Orchestrator process environment.\n * @returns Absolute browser HOME directory.\n */\nexport function resolveAgentBrowserHome(env: NodeJS.ProcessEnv): string {\n return env.MOTE_AGENT_BROWSER_HOME || DEFAULT_AGENT_BROWSER_HOME;\n}\n", "export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n", "export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\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 * \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n * \u2716 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(`\u2716 ${issue.message}`);\n if (issue.path?.length)\n lines.push(` \u2192 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", "export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u062D\u0631\u0641\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n file: { unit: \"\u0628\u0627\u064A\u062A\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n array: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n set: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0645\u062F\u062E\u0644\",\n email: \"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\",\n url: \"\u0631\u0627\u0628\u0637\",\n emoji: \"\u0625\u064A\u0645\u0648\u062C\u064A\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n date: \"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n time: \"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n duration: \"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n ipv4: \"\u0639\u0646\u0648\u0627\u0646 IPv4\",\n ipv6: \"\u0639\u0646\u0648\u0627\u0646 IPv6\",\n cidrv4: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4\",\n cidrv6: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6\",\n base64: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded\",\n base64url: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded\",\n json_string: \"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON\",\n e164: \"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0645\u062F\u062E\u0644\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`;\n }\n return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"}`;\n return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 \"${issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`;\n }\n case \"not_multiple_of\":\n return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u0645\u0639\u0631\u0641${issue.keys.length > 1 ? \"\u0627\u062A\" : \"\"} \u063A\u0631\u064A\u0628${issue.keys.length > 1 ? \"\u0629\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n case \"invalid_key\":\n return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n case \"invalid_element\":\n return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n default:\n return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"simvol\", verb: \"olmal\u0131d\u0131r\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n array: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n set: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n instanceof ${issue.expected}, daxil olan ${received}`;\n }\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${util.stringifyPrimitive(issue.values[0])}`;\n return `Yanl\u0131\u015F se\u00E7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.prefix}\" il\u0259 ba\u015Flamal\u0131d\u0131r`;\n if (_issue.format === \"ends_with\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.suffix}\" il\u0259 bitm\u0259lidir`;\n if (_issue.format === \"includes\")\n return `Yanl\u0131\u015F m\u0259tn: \"${_issue.includes}\" daxil olmal\u0131d\u0131r`;\n if (_issue.format === \"regex\")\n return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;\n return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Yanl\u0131\u015F \u0259d\u0259d: ${issue.divisor} il\u0259 b\u00F6l\u00FCn\u0259 bil\u0259n olmal\u0131d\u0131r`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan a\u00E7ar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} daxilind\u0259 yanl\u0131\u015F a\u00E7ar`;\n case \"invalid_union\":\n return \"Yanl\u0131\u015F d\u0259y\u0259r\";\n case \"invalid_element\":\n return `${issue.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;\n default:\n return `Yanl\u0131\u015F d\u0259y\u0259r`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"\u0441\u0456\u043C\u0432\u0430\u043B\",\n few: \"\u0441\u0456\u043C\u0432\u0430\u043B\u044B\",\n many: \"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n array: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n set: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n file: {\n unit: {\n one: \"\u0431\u0430\u0439\u0442\",\n few: \"\u0431\u0430\u0439\u0442\u044B\",\n many: \"\u0431\u0430\u0439\u0442\u0430\u045E\",\n },\n verb: \"\u043C\u0435\u0446\u044C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0443\u0432\u043E\u0434\",\n email: \"email \u0430\u0434\u0440\u0430\u0441\",\n url: \"URL\",\n emoji: \"\u044D\u043C\u043E\u0434\u0437\u0456\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0447\u0430\u0441\",\n duration: \"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0430\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0430\u0441\",\n cidrv4: \"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n base64: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64\",\n base64url: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url\",\n json_string: \"JSON \u0440\u0430\u0434\u043E\u043A\",\n e164: \"\u043D\u0443\u043C\u0430\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0443\u0432\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u043B\u0456\u043A\",\n array: \"\u043C\u0430\u0441\u0456\u045E\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`;\n }\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue.keys.length > 1 ? \"\u043A\u043B\u044E\u0447\u044B\" : \"\u043A\u043B\u044E\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434\";\n case \"invalid_element\":\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue.origin}`;\n default:\n return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n file: { unit: \"\u0431\u0430\u0439\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0445\u043E\u0434\",\n email: \"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u0434\u0436\u0438\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n duration: \"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n base64: \"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n base64url: \"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n json_string: \"JSON \u043D\u0438\u0437\",\n e164: \"E.164 \u043D\u043E\u043C\u0435\u0440\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0445\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0438\u0432\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`;\n }\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\"}`;\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`;\n let invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D\";\n if (_issue.format === \"emoji\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"datetime\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"date\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n if (_issue.format === \"time\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n if (_issue.format === \"duration\")\n invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue.keys.length > 1 ? \"\u0438\" : \"\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u043E\u0432\u0435\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434\";\n case \"invalid_element\":\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue.origin}`;\n default:\n return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"car\u00E0cters\", verb: \"contenir\" },\n file: { unit: \"bytes\", verb: \"contenir\" },\n array: { unit: \"elements\", verb: \"contenir\" },\n set: { unit: \"elements\", verb: \"contenir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"adre\u00E7a electr\u00F2nica\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"durada ISO\",\n ipv4: \"adre\u00E7a IPv4\",\n ipv6: \"adre\u00E7a IPv6\",\n cidrv4: \"rang IPv4\",\n cidrv6: \"rang IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"cadena codificada en base64url\",\n json_string: \"cadena JSON\",\n e164: \"n\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipus inv\u00E0lid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n }\n return `Tipus inv\u00E0lid: s'esperava ${expected}, s'ha rebut ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Valor inv\u00E0lid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opci\u00F3 inv\u00E0lida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"com a m\u00E0xim\" : \"menys de\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingu\u00E9s ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"com a m\u00EDnim\" : \"m\u00E9s de\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Massa petit: s'esperava que ${issue.origin} contingu\u00E9s ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Format inv\u00E0lid: ha de comen\u00E7ar amb \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Format inv\u00E0lid: ha d'acabar amb \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Format inv\u00E0lid: ha d'incloure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Format inv\u00E0lid: ha de coincidir amb el patr\u00F3 ${_issue.pattern}`;\n return `Format inv\u00E0lid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E0lid: ha de ser m\u00FAltiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Clau inv\u00E0lida a ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E0lida\"; // Could also be \"Tipus d'uni\u00F3 inv\u00E0lid\" but \"Entrada inv\u00E0lida\" is more general\n case \"invalid_element\":\n return `Element inv\u00E0lid a ${issue.origin}`;\n default:\n return `Entrada inv\u00E0lida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znak\u016F\", verb: \"m\u00EDt\" },\n file: { unit: \"bajt\u016F\", verb: \"m\u00EDt\" },\n array: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n set: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regul\u00E1rn\u00ED v\u00FDraz\",\n email: \"e-mailov\u00E1 adresa\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"datum a \u010Das ve form\u00E1tu ISO\",\n date: \"datum ve form\u00E1tu ISO\",\n time: \"\u010Das ve form\u00E1tu ISO\",\n duration: \"doba trv\u00E1n\u00ED ISO\",\n ipv4: \"IPv4 adresa\",\n ipv6: \"IPv6 adresa\",\n cidrv4: \"rozsah IPv4\",\n cidrv6: \"rozsah IPv6\",\n base64: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64\",\n base64url: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64url\",\n json_string: \"\u0159et\u011Bzec ve form\u00E1tu JSON\",\n e164: \"\u010D\u00EDslo E.164\",\n jwt: \"JWT\",\n template_literal: \"vstup\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u010D\u00EDslo\",\n string: \"\u0159et\u011Bzec\",\n function: \"funkce\",\n array: \"pole\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no instanceof ${issue.expected}, obdr\u017Eeno ${received}`;\n }\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${expected}, obdr\u017Eeno ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neplatn\u00E1 mo\u017Enost: o\u010Dek\u00E1v\u00E1na jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n }\n return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n }\n return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED za\u010D\u00EDnat na \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED kon\u010Dit na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED obsahovat \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED odpov\u00EDdat vzoru ${_issue.pattern}`;\n return `Neplatn\u00FD form\u00E1t ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neplatn\u00E9 \u010D\u00EDslo: mus\u00ED b\u00FDt n\u00E1sobkem ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nezn\u00E1m\u00E9 kl\u00ED\u010De: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neplatn\u00FD kl\u00ED\u010D v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neplatn\u00FD vstup\";\n case \"invalid_element\":\n return `Neplatn\u00E1 hodnota v ${issue.origin}`;\n default:\n return `Neplatn\u00FD vstup`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"havde\" },\n file: { unit: \"bytes\", verb: \"havde\" },\n array: { unit: \"elementer\", verb: \"indeholdt\" },\n set: { unit: \"elementer\", verb: \"indeholdt\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-mailadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkesl\u00E6t\",\n date: \"ISO-dato\",\n time: \"ISO-klokkesl\u00E6t\",\n duration: \"ISO-varighed\",\n ipv4: \"IPv4-omr\u00E5de\",\n ipv6: \"IPv6-omr\u00E5de\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodet streng\",\n base64url: \"base64url-kodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"streng\",\n number: \"tal\",\n boolean: \"boolean\",\n array: \"liste\",\n object: \"objekt\",\n set: \"s\u00E6t\",\n file: \"fil\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n }\n return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig v\u00E6rdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldigt valg: forventede en af f\u00F8lgende ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: skal matche m\u00F8nsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldigt tal: skal v\u00E6re deleligt med ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukendte n\u00F8gler\" : \"Ukendt n\u00F8gle\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig n\u00F8gle i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n case \"invalid_element\":\n return `Ugyldig v\u00E6rdi i ${issue.origin}`;\n default:\n return `Ugyldigt input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"Zeichen\", verb: \"zu haben\" },\n file: { unit: \"Bytes\", verb: \"zu haben\" },\n array: { unit: \"Elemente\", verb: \"zu haben\" },\n set: { unit: \"Elemente\", verb: \"zu haben\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"Eingabe\",\n email: \"E-Mail-Adresse\",\n url: \"URL\",\n emoji: \"Emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-Datum und -Uhrzeit\",\n date: \"ISO-Datum\",\n time: \"ISO-Uhrzeit\",\n duration: \"ISO-Dauer\",\n ipv4: \"IPv4-Adresse\",\n ipv6: \"IPv6-Adresse\",\n cidrv4: \"IPv4-Bereich\",\n cidrv6: \"IPv6-Bereich\",\n base64: \"Base64-codierter String\",\n base64url: \"Base64-URL-codierter String\",\n json_string: \"JSON-String\",\n e164: \"E.164-Nummer\",\n jwt: \"JWT\",\n template_literal: \"Eingabe\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"Zahl\",\n array: \"Array\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ung\u00FCltige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n }\n return `Ung\u00FCltige Eingabe: erwartet ${expected}, erhalten ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ung\u00FCltige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ung\u00FCltige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n }\n return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ung\u00FCltiger String: muss mit \"${_issue.prefix}\" beginnen`;\n if (_issue.format === \"ends_with\")\n return `Ung\u00FCltiger String: muss mit \"${_issue.suffix}\" enden`;\n if (_issue.format === \"includes\")\n return `Ung\u00FCltiger String: muss \"${_issue.includes}\" enthalten`;\n if (_issue.format === \"regex\")\n return `Ung\u00FCltiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n return `Ung\u00FCltig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ung\u00FCltige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Unbekannte Schl\u00FCssel\" : \"Unbekannter Schl\u00FCssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ung\u00FCltiger Schl\u00FCssel in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ung\u00FCltige Eingabe\";\n case \"invalid_element\":\n return `Ung\u00FCltiger Wert in ${issue.origin}`;\n default:\n return `Ung\u00FCltige Eingabe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"characters\", verb: \"to have\" },\n file: { unit: \"bytes\", verb: \"to have\" },\n array: { unit: \"items\", verb: \"to have\" },\n set: { unit: \"items\", verb: \"to have\" },\n map: { unit: \"entries\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"email address\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datetime\",\n date: \"ISO date\",\n time: \"ISO time\",\n duration: \"ISO duration\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n mac: \"MAC address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded string\",\n base64url: \"base64url-encoded string\",\n json_string: \"JSON string\",\n e164: \"E.164 number\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n // type names: missing keys = do not translate (use raw value via ?? fallback)\n const TypeDictionary = {\n // Compatibility: \"nan\" -> \"NaN\" for display\n nan: \"NaN\",\n // All other type names omitted - they fall back to raw values via ?? operator\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n return `Invalid input: expected ${expected}, received ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Invalid string: must start with \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Invalid string: must end with \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Invalid string: must include \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Invalid string: must match pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Invalid number: must be a multiple of ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Invalid key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Invalid input\";\n case \"invalid_element\":\n return `Invalid value in ${issue.origin}`;\n default:\n return `Invalid input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karaktrojn\", verb: \"havi\" },\n file: { unit: \"bajtojn\", verb: \"havi\" },\n array: { unit: \"elementojn\", verb: \"havi\" },\n set: { unit: \"elementojn\", verb: \"havi\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"enigo\",\n email: \"retadreso\",\n url: \"URL\",\n emoji: \"emo\u011Dio\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datotempo\",\n date: \"ISO-dato\",\n time: \"ISO-tempo\",\n duration: \"ISO-da\u016Dro\",\n ipv4: \"IPv4-adreso\",\n ipv6: \"IPv6-adreso\",\n cidrv4: \"IPv4-rango\",\n cidrv6: \"IPv6-rango\",\n base64: \"64-ume kodita karaktraro\",\n base64url: \"URL-64-ume kodita karaktraro\",\n json_string: \"JSON-karaktraro\",\n e164: \"E.164-nombro\",\n jwt: \"JWT\",\n template_literal: \"enigo\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombro\",\n array: \"tabelo\",\n null: \"senvalora\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nevalida enigo: atendi\u011Dis instanceof ${issue.expected}, ricevi\u011Dis ${received}`;\n }\n return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nevalida enigo: atendi\u011Dis ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nevalida opcio: atendi\u011Dis unu el ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Tro malgranda: atendi\u011Dis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Tro malgranda: atendi\u011Dis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nevalida karaktraro: devas komenci\u011Di per \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nevalida karaktraro: devas fini\u011Di per \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} \u015Dlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nevalida \u015Dlosilo en ${issue.origin}`;\n case \"invalid_union\":\n return \"Nevalida enigo\";\n case \"invalid_element\":\n return `Nevalida valoro en ${issue.origin}`;\n default:\n return `Nevalida enigo`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"tener\" },\n file: { unit: \"bytes\", verb: \"tener\" },\n array: { unit: \"elementos\", verb: \"tener\" },\n set: { unit: \"elementos\", verb: \"tener\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entrada\",\n email: \"direcci\u00F3n de correo electr\u00F3nico\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"fecha y hora ISO\",\n date: \"fecha ISO\",\n time: \"hora ISO\",\n duration: \"duraci\u00F3n ISO\",\n ipv4: \"direcci\u00F3n IPv4\",\n ipv6: \"direcci\u00F3n IPv6\",\n cidrv4: \"rango IPv4\",\n cidrv6: \"rango IPv6\",\n base64: \"cadena codificada en base64\",\n base64url: \"URL codificada en base64\",\n json_string: \"cadena JSON\",\n e164: \"n\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n string: \"texto\",\n number: \"n\u00FAmero\",\n boolean: \"booleano\",\n array: \"arreglo\",\n object: \"objeto\",\n set: \"conjunto\",\n file: \"archivo\",\n date: \"fecha\",\n bigint: \"n\u00FAmero grande\",\n symbol: \"s\u00EDmbolo\",\n undefined: \"indefinido\",\n null: \"nulo\",\n function: \"funci\u00F3n\",\n map: \"mapa\",\n record: \"registro\",\n tuple: \"tupla\",\n enum: \"enumeraci\u00F3n\",\n union: \"uni\u00F3n\",\n literal: \"literal\",\n promise: \"promesa\",\n void: \"vac\u00EDo\",\n never: \"nunca\",\n unknown: \"desconocido\",\n any: \"cualquiera\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entrada inv\u00E1lida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n }\n return `Entrada inv\u00E1lida: se esperaba ${expected}, recibido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inv\u00E1lida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opci\u00F3n inv\u00E1lida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing)\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n if (sizing) {\n return `Demasiado peque\u00F1o: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Demasiado peque\u00F1o: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cadena inv\u00E1lida: debe comenzar con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cadena inv\u00E1lida: debe terminar en \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cadena inv\u00E1lida: debe incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cadena inv\u00E1lida: debe coincidir con el patr\u00F3n ${_issue.pattern}`;\n return `Inv\u00E1lido ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E1lido: debe ser m\u00FAltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Llave inv\u00E1lida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E1lida\";\n case \"invalid_element\":\n return `Valor inv\u00E1lido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n default:\n return `Entrada inv\u00E1lida`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n file: { unit: \"\u0628\u0627\u06CC\u062A\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n array: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n set: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0648\u0631\u0648\u062F\u06CC\",\n email: \"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644\",\n url: \"URL\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n date: \"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648\",\n time: \"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n duration: \"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n ipv4: \"IPv4 \u0622\u062F\u0631\u0633\",\n ipv6: \"IPv6 \u0622\u062F\u0631\u0633\",\n cidrv4: \"IPv4 \u062F\u0627\u0645\u0646\u0647\",\n cidrv6: \"IPv6 \u062F\u0627\u0645\u0646\u0647\",\n base64: \"base64-encoded \u0631\u0634\u062A\u0647\",\n base64url: \"base64url-encoded \u0631\u0634\u062A\u0647\",\n json_string: \"JSON \u0631\u0634\u062A\u0647\",\n e164: \"E.164 \u0639\u062F\u062F\",\n jwt: \"JWT\",\n template_literal: \"\u0648\u0631\u0648\u062F\u06CC\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0639\u062F\u062F\",\n array: \"\u0622\u0631\u0627\u06CC\u0647\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n }\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${util.stringifyPrimitive(issue.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n }\n return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"} \u0628\u0627\u0634\u062F`;\n }\n return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0628\u0627\u0634\u062F`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`;\n }\n return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0628\u0627\u0634\u062F`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.prefix}\" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;\n }\n if (_issue.format === \"ends_with\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.suffix}\" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;\n }\n if (_issue.format === \"includes\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 \"${_issue.includes}\" \u0628\u0627\u0634\u062F`;\n }\n if (_issue.format === \"regex\") {\n return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n }\n case \"not_multiple_of\":\n return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue.divisor} \u0628\u0627\u0634\u062F`;\n case \"unrecognized_keys\":\n return `\u06A9\u0644\u06CC\u062F${issue.keys.length > 1 ? \"\u0647\u0627\u06CC\" : \"\"} \u0646\u0627\u0634\u0646\u0627\u0633: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue.origin}`;\n case \"invalid_union\":\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n case \"invalid_element\":\n return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue.origin}`;\n default:\n return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"merkki\u00E4\", subject: \"merkkijonon\" },\n file: { unit: \"tavua\", subject: \"tiedoston\" },\n array: { unit: \"alkiota\", subject: \"listan\" },\n set: { unit: \"alkiota\", subject: \"joukon\" },\n number: { unit: \"\", subject: \"luvun\" },\n bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n int: { unit: \"\", subject: \"kokonaisluvun\" },\n date: { unit: \"\", subject: \"p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4n\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"s\u00E4\u00E4nn\u00F6llinen lauseke\",\n email: \"s\u00E4hk\u00F6postiosoite\",\n url: \"URL-osoite\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-aikaleima\",\n date: \"ISO-p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4\",\n time: \"ISO-aika\",\n duration: \"ISO-kesto\",\n ipv4: \"IPv4-osoite\",\n ipv6: \"IPv6-osoite\",\n cidrv4: \"IPv4-alue\",\n cidrv6: \"IPv6-alue\",\n base64: \"base64-koodattu merkkijono\",\n base64url: \"base64url-koodattu merkkijono\",\n json_string: \"JSON-merkkijono\",\n e164: \"E.164-luku\",\n jwt: \"JWT\",\n template_literal: \"templaattimerkkijono\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n }\n return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Virheellinen sy\u00F6te: t\u00E4ytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n return `Virheellinen valinta: t\u00E4ytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian suuri: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian suuri: arvon t\u00E4ytyy olla ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Liian pieni: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n }\n return `Liian pieni: arvon t\u00E4ytyy olla ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy alkaa \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy loppua \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Virheellinen sy\u00F6te: t\u00E4ytyy sis\u00E4lt\u00E4\u00E4 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\") {\n return `Virheellinen sy\u00F6te: t\u00E4ytyy vastata s\u00E4\u00E4nn\u00F6llist\u00E4 lauseketta ${_issue.pattern}`;\n }\n return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Virheellinen luku: t\u00E4ytyy olla luvun ${issue.divisor} monikerta`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Virheellinen avain tietueessa\";\n case \"invalid_union\":\n return \"Virheellinen unioni\";\n case \"invalid_element\":\n return \"Virheellinen arvo joukossa\";\n default:\n return `Virheellinen sy\u00F6te`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entr\u00E9e\",\n email: \"adresse e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date et heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"dur\u00E9e ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"cha\u00EEne encod\u00E9e en base64\",\n base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n json_string: \"cha\u00EEne JSON\",\n e164: \"num\u00E9ro E.164\",\n jwt: \"JWT\",\n template_literal: \"entr\u00E9e\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombre\",\n array: \"tableau\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entr\u00E9e invalide : instanceof ${issue.expected} attendu, ${received} re\u00E7u`;\n }\n return `Entr\u00E9e invalide : ${expected} attendu, ${received} re\u00E7u`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entr\u00E9e invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00E9l\u00E9ment(s)\"}`;\n return `Trop grand : ${issue.origin ?? \"valeur\"} doit \u00EAtre ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : ${issue.origin} doit \u00EAtre ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cha\u00EEne invalide : doit correspondre au mod\u00E8le ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cl\u00E9 invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entr\u00E9e invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entr\u00E9e invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n file: { unit: \"octets\", verb: \"avoir\" },\n array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"entr\u00E9e\",\n email: \"adresse courriel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"date-heure ISO\",\n date: \"date ISO\",\n time: \"heure ISO\",\n duration: \"dur\u00E9e ISO\",\n ipv4: \"adresse IPv4\",\n ipv6: \"adresse IPv6\",\n cidrv4: \"plage IPv4\",\n cidrv6: \"plage IPv6\",\n base64: \"cha\u00EEne encod\u00E9e en base64\",\n base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n json_string: \"cha\u00EEne JSON\",\n e164: \"num\u00E9ro E.164\",\n jwt: \"JWT\",\n template_literal: \"entr\u00E9e\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Entr\u00E9e invalide : attendu instanceof ${issue.expected}, re\u00E7u ${received}`;\n }\n return `Entr\u00E9e invalide : attendu ${expected}, re\u00E7u ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entr\u00E9e invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u2264\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u2265\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Cha\u00EEne invalide : doit correspondre au motif ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n }\n case \"not_multiple_of\":\n return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Cl\u00E9 invalide dans ${issue.origin}`;\n case \"invalid_union\":\n return \"Entr\u00E9e invalide\";\n case \"invalid_element\":\n return `Valeur invalide dans ${issue.origin}`;\n default:\n return `Entr\u00E9e invalide`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n // Hebrew labels + grammatical gender\n const TypeNames = {\n string: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA\", gender: \"f\" },\n number: { label: \"\u05DE\u05E1\u05E4\u05E8\", gender: \"m\" },\n boolean: { label: \"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9\", gender: \"m\" },\n bigint: { label: \"BigInt\", gender: \"m\" },\n date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA\", gender: \"m\" },\n array: { label: \"\u05DE\u05E2\u05E8\u05DA\", gender: \"m\" },\n object: { label: \"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8\", gender: \"m\" },\n null: { label: \"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)\", gender: \"m\" },\n undefined: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)\", gender: \"m\" },\n symbol: { label: \"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)\", gender: \"m\" },\n function: { label: \"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4\", gender: \"f\" },\n map: { label: \"\u05DE\u05E4\u05D4 (Map)\", gender: \"f\" },\n set: { label: \"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)\", gender: \"f\" },\n file: { label: \"\u05E7\u05D5\u05D1\u05E5\", gender: \"m\" },\n promise: { label: \"Promise\", gender: \"m\" },\n NaN: { label: \"NaN\", gender: \"m\" },\n unknown: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2\", gender: \"m\" },\n value: { label: \"\u05E2\u05E8\u05DA\", gender: \"m\" },\n };\n // Sizing units for size-related messages + localized origin labels\n const Sizable = {\n string: { unit: \"\u05EA\u05D5\u05D5\u05D9\u05DD\", shortLabel: \"\u05E7\u05E6\u05E8\", longLabel: \"\u05D0\u05E8\u05D5\u05DA\" },\n file: { unit: \"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n array: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n set: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n number: { unit: \"\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" }, // no unit\n };\n // Helpers \u2014 labels, articles, and verbs\n const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n const typeLabel = (t) => {\n const e = typeEntry(t);\n if (e)\n return e.label;\n // fallback: show raw string if unknown\n return t ?? TypeNames.unknown.label;\n };\n const withDefinite = (t) => `\u05D4${typeLabel(t)}`;\n const verbFor = (t) => {\n const e = typeEntry(t);\n const gender = e?.gender ?? \"m\";\n return gender === \"f\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA\" : \"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA\";\n };\n const getSizing = (origin) => {\n if (!origin)\n return null;\n return Sizable[origin] ?? null;\n };\n const FormatDictionary = {\n regex: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n email: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC\", gender: \"f\" },\n url: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA\", gender: \"f\" },\n emoji: { label: \"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9\", gender: \"m\" },\n uuid: { label: \"UUID\", gender: \"m\" },\n nanoid: { label: \"nanoid\", gender: \"m\" },\n guid: { label: \"GUID\", gender: \"m\" },\n cuid: { label: \"cuid\", gender: \"m\" },\n cuid2: { label: \"cuid2\", gender: \"m\" },\n ulid: { label: \"ULID\", gender: \"m\" },\n xid: { label: \"XID\", gender: \"m\" },\n ksuid: { label: \"KSUID\", gender: \"m\" },\n datetime: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA ISO\", gender: \"m\" },\n time: { label: \"\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n duration: { label: \"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n ipv4: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4\", gender: \"f\" },\n ipv6: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6\", gender: \"f\" },\n cidrv4: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv4\", gender: \"m\" },\n cidrv6: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv6\", gender: \"m\" },\n base64: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64\", gender: \"f\" },\n base64url: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA\", gender: \"f\" },\n json_string: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON\", gender: \"f\" },\n e164: { label: \"\u05DE\u05E1\u05E4\u05E8 E.164\", gender: \"m\" },\n jwt: { label: \"JWT\", gender: \"m\" },\n ends_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n includes: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n lowercase: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n starts_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n uppercase: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n // Expected type: show without definite article for clearer Hebrew\n const expectedKey = issue.expected;\n const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n // Received: show localized label if known, otherwise constructor/raw\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`;\n }\n return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`;\n }\n case \"invalid_value\": {\n if (issue.values.length === 1) {\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${util.stringifyPrimitive(issue.values[0])}`;\n }\n // Join values with proper Hebrew formatting\n const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n if (issue.values.length === 2) {\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`;\n }\n // For 3+ values: \"a\", \"b\" \u05D0\u05D5 \"c\"\n const lastValue = stringified[stringified.length - 1];\n const restValues = stringified.slice(0, -1).join(\", \");\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`;\n }\n case \"too_big\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.longLabel ?? \"\u05D0\u05E8\u05D5\u05DA\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA\" : \"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue.maximum}`;\n return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n const comparison = issue.inclusive\n ? `${issue.maximum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`\n : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.longLabel ?? \"\u05D2\u05D3\u05D5\u05DC\"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const sizing = getSizing(issue.origin);\n const subject = withDefinite(issue.origin ?? \"value\");\n if (issue.origin === \"string\") {\n // Special handling for strings - more natural Hebrew\n return `${sizing?.shortLabel ?? \"\u05E7\u05E6\u05E8\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8\" : \"\u05DC\u05E4\u05D7\u05D5\u05EA\"}`.trim();\n }\n if (issue.origin === \"number\") {\n // Natural Hebrew for numbers\n const comparison = issue.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue.minimum}`;\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n }\n if (issue.origin === \"array\" || issue.origin === \"set\") {\n // Natural Hebrew for arrays and sets\n const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n // Special case for singular (minimum === 1)\n if (issue.minimum === 1 && issue.inclusive) {\n const singularPhrase = issue.origin === \"set\" ? \"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3\" : \"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3\";\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`;\n }\n const comparison = issue.inclusive\n ? `${issue.minimum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`\n : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n }\n const adj = issue.inclusive ? \">=\" : \">\";\n const be = verbFor(issue.origin ?? \"value\");\n if (sizing?.unit) {\n return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `${sizing?.shortLabel ?? \"\u05E7\u05D8\u05DF\"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n // These apply to strings \u2014 use feminine grammar + \u05D4\u05F3 \u05D4\u05D9\u05D3\u05D9\u05E2\u05D4\n if (_issue.format === \"starts_with\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`;\n // Handle gender agreement for formats\n const nounEntry = FormatDictionary[_issue.format];\n const noun = nounEntry?.label ?? _issue.format;\n const gender = nounEntry?.gender ?? \"m\";\n const adjective = gender === \"f\" ? \"\u05EA\u05E7\u05D9\u05E0\u05D4\" : \"\u05EA\u05E7\u05D9\u05DF\";\n return `${noun} \u05DC\u05D0 ${adjective}`;\n }\n case \"not_multiple_of\":\n return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u05DE\u05E4\u05EA\u05D7${issue.keys.length > 1 ? \"\u05D5\u05EA\" : \"\"} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue.keys.length > 1 ? \"\u05D9\u05DD\" : \"\u05D4\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\": {\n return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`;\n }\n case \"invalid_union\":\n return \"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF\";\n case \"invalid_element\": {\n const place = withDefinite(issue.origin ?? \"array\");\n return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`;\n }\n default:\n return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"legyen\" },\n file: { unit: \"byte\", verb: \"legyen\" },\n array: { unit: \"elem\", verb: \"legyen\" },\n set: { unit: \"elem\", verb: \"legyen\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"bemenet\",\n email: \"email c\u00EDm\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO id\u0151b\u00E9lyeg\",\n date: \"ISO d\u00E1tum\",\n time: \"ISO id\u0151\",\n duration: \"ISO id\u0151intervallum\",\n ipv4: \"IPv4 c\u00EDm\",\n ipv6: \"IPv6 c\u00EDm\",\n cidrv4: \"IPv4 tartom\u00E1ny\",\n cidrv6: \"IPv6 tartom\u00E1ny\",\n base64: \"base64-k\u00F3dolt string\",\n base64url: \"base64url-k\u00F3dolt string\",\n json_string: \"JSON string\",\n e164: \"E.164 sz\u00E1m\",\n jwt: \"JWT\",\n template_literal: \"bemenet\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"sz\u00E1m\",\n array: \"t\u00F6mb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k instanceof ${issue.expected}, a kapott \u00E9rt\u00E9k ${received}`;\n }\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${expected}, a kapott \u00E9rt\u00E9k ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00C9rv\u00E9nytelen opci\u00F3: valamelyik \u00E9rt\u00E9k v\u00E1rt ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `T\u00FAl nagy: ${issue.origin ?? \"\u00E9rt\u00E9k\"} m\u00E9rete t\u00FAl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n return `T\u00FAl nagy: a bemeneti \u00E9rt\u00E9k ${issue.origin ?? \"\u00E9rt\u00E9k\"} t\u00FAl nagy: ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} m\u00E9rete t\u00FAl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} t\u00FAl kicsi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.prefix}\" \u00E9rt\u00E9kkel kell kezd\u0151dnie`;\n if (_issue.format === \"ends_with\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.suffix}\" \u00E9rt\u00E9kkel kell v\u00E9gz\u0151dnie`;\n if (_issue.format === \"includes\")\n return `\u00C9rv\u00E9nytelen string: \"${_issue.includes}\" \u00E9rt\u00E9ket kell tartalmaznia`;\n if (_issue.format === \"regex\")\n return `\u00C9rv\u00E9nytelen string: ${_issue.pattern} mint\u00E1nak kell megfelelnie`;\n return `\u00C9rv\u00E9nytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u00C9rv\u00E9nytelen sz\u00E1m: ${issue.divisor} t\u00F6bbsz\u00F6r\u00F6s\u00E9nek kell lennie`;\n case \"unrecognized_keys\":\n return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u00C9rv\u00E9nytelen kulcs ${issue.origin}`;\n case \"invalid_union\":\n return \"\u00C9rv\u00E9nytelen bemenet\";\n case \"invalid_element\":\n return `\u00C9rv\u00E9nytelen \u00E9rt\u00E9k: ${issue.origin}`;\n default:\n return `\u00C9rv\u00E9nytelen bemenet`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n if (!word)\n return \"\";\n const vowels = [\"\u0561\", \"\u0565\", \"\u0568\", \"\u056B\", \"\u0578\", \"\u0578\u0582\", \"\u0585\"];\n const lastChar = word[word.length - 1];\n return word + (vowels.includes(lastChar) ? \"\u0576\" : \"\u0568\");\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"\u0576\u0577\u0561\u0576\",\n many: \"\u0576\u0577\u0561\u0576\u0576\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n file: {\n unit: {\n one: \"\u0562\u0561\u0575\u0569\",\n many: \"\u0562\u0561\u0575\u0569\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n array: {\n unit: {\n one: \"\u057F\u0561\u0580\u0580\",\n many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n set: {\n unit: {\n one: \"\u057F\u0561\u0580\u0580\",\n many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n },\n verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0574\u0578\u0582\u057F\u0584\",\n email: \"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565\",\n url: \"URL\",\n emoji: \"\u0567\u0574\u0578\u057B\u056B\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574\",\n date: \"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E\",\n time: \"ISO \u056A\u0561\u0574\",\n duration: \"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576\",\n ipv4: \"IPv4 \u0570\u0561\u057D\u0581\u0565\",\n ipv6: \"IPv6 \u0570\u0561\u057D\u0581\u0565\",\n cidrv4: \"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n cidrv6: \"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n base64: \"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n base64url: \"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n json_string: \"JSON \u057F\u0578\u0572\",\n e164: \"E.164 \u0570\u0561\u0574\u0561\u0580\",\n jwt: \"JWT\",\n template_literal: \"\u0574\u0578\u0582\u057F\u0584\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0569\u056B\u057E\",\n array: \"\u0566\u0561\u0576\u0563\u057E\u0561\u056E\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`;\n }\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${util.stringifyPrimitive(issue.values[1])}`;\n return `\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056C\u056B\u0576\u056B ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin)} \u056C\u056B\u0576\u056B ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B \"${_issue.prefix}\"-\u0578\u057E`;\n if (_issue.format === \"ends_with\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B \"${_issue.suffix}\"-\u0578\u057E`;\n if (_issue.format === \"includes\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;\n return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue.divisor}-\u056B`;\n case \"unrecognized_keys\":\n return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue.keys.length > 1 ? \"\u0576\u0565\u0580\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n case \"invalid_union\":\n return \"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\";\n case \"invalid_element\":\n return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n default:\n return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"memiliki\" },\n file: { unit: \"byte\", verb: \"memiliki\" },\n array: { unit: \"item\", verb: \"memiliki\" },\n set: { unit: \"item\", verb: \"memiliki\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tanggal dan waktu format ISO\",\n date: \"tanggal format ISO\",\n time: \"jam format ISO\",\n duration: \"durasi format ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"rentang alamat IPv4\",\n cidrv6: \"rentang alamat IPv6\",\n base64: \"string dengan enkode base64\",\n base64url: \"string dengan enkode base64url\",\n json_string: \"string JSON\",\n e164: \"angka E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n }\n case \"not_multiple_of\":\n return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak valid di ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak valid\";\n case \"invalid_element\":\n return `Nilai tidak valid di ${issue.origin}`;\n default:\n return `Input tidak valid`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"stafi\", verb: \"a\u00F0 hafa\" },\n file: { unit: \"b\u00E6ti\", verb: \"a\u00F0 hafa\" },\n array: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n set: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"gildi\",\n email: \"netfang\",\n url: \"vefsl\u00F3\u00F0\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dagsetning og t\u00EDmi\",\n date: \"ISO dagsetning\",\n time: \"ISO t\u00EDmi\",\n duration: \"ISO t\u00EDmalengd\",\n ipv4: \"IPv4 address\",\n ipv6: \"IPv6 address\",\n cidrv4: \"IPv4 range\",\n cidrv6: \"IPv6 range\",\n base64: \"base64-encoded strengur\",\n base64url: \"base64url-encoded strengur\",\n json_string: \"JSON strengur\",\n e164: \"E.164 t\u00F6lugildi\",\n jwt: \"JWT\",\n template_literal: \"gildi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u00FAmer\",\n array: \"fylki\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Rangt gildi: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera instanceof ${issue.expected}`;\n }\n return `Rangt gildi: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Rangt gildi: gert r\u00E1\u00F0 fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00D3gilt val: m\u00E1 vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Of st\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n return `Of st\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} s\u00E9 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Of l\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Of l\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} s\u00E9 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 byrja \u00E1 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 enda \u00E1 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 innihalda \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 fylgja mynstri ${_issue.pattern}`;\n return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `R\u00F6ng tala: ver\u00F0ur a\u00F0 vera margfeldi af ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u00D3\u00FEekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Rangur lykill \u00ED ${issue.origin}`;\n case \"invalid_union\":\n return \"Rangt gildi\";\n case \"invalid_element\":\n return `Rangt gildi \u00ED ${issue.origin}`;\n default:\n return `Rangt gildi`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caratteri\", verb: \"avere\" },\n file: { unit: \"byte\", verb: \"avere\" },\n array: { unit: \"elementi\", verb: \"avere\" },\n set: { unit: \"elementi\", verb: \"avere\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"indirizzo email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e ora ISO\",\n date: \"data ISO\",\n time: \"ora ISO\",\n duration: \"durata ISO\",\n ipv4: \"indirizzo IPv4\",\n ipv6: \"indirizzo IPv6\",\n cidrv4: \"intervallo IPv4\",\n cidrv6: \"intervallo IPv6\",\n base64: \"stringa codificata in base64\",\n base64url: \"URL codificata in base64\",\n json_string: \"stringa JSON\",\n e164: \"numero E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numero\",\n array: \"vettore\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n }\n return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chiave non valida in ${issue.origin}`;\n case \"invalid_union\":\n return \"Input non valido\";\n case \"invalid_element\":\n return `Valore non valido in ${issue.origin}`;\n default:\n return `Input non valido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u6587\u5B57\", verb: \"\u3067\u3042\u308B\" },\n file: { unit: \"\u30D0\u30A4\u30C8\", verb: \"\u3067\u3042\u308B\" },\n array: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n set: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u5165\u529B\u5024\",\n email: \"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\",\n url: \"URL\",\n emoji: \"\u7D75\u6587\u5B57\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO\u65E5\u6642\",\n date: \"ISO\u65E5\u4ED8\",\n time: \"ISO\u6642\u523B\",\n duration: \"ISO\u671F\u9593\",\n ipv4: \"IPv4\u30A2\u30C9\u30EC\u30B9\",\n ipv6: \"IPv6\u30A2\u30C9\u30EC\u30B9\",\n cidrv4: \"IPv4\u7BC4\u56F2\",\n cidrv6: \"IPv6\u7BC4\u56F2\",\n base64: \"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n base64url: \"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n json_string: \"JSON\u6587\u5B57\u5217\",\n e164: \"E.164\u756A\u53F7\",\n jwt: \"JWT\",\n template_literal: \"\u5165\u529B\u5024\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u6570\u5024\",\n array: \"\u914D\u5217\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n }\n return `\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u7121\u52B9\u306A\u5165\u529B: ${util.stringifyPrimitive(issue.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;\n return `\u7121\u52B9\u306A\u9078\u629E: ${util.joinValues(issue.values, \"\u3001\")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u4EE5\u4E0B\u3067\u3042\u308B\" : \"\u3088\u308A\u5C0F\u3055\u3044\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${sizing.unit ?? \"\u8981\u7D20\"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u4EE5\u4E0A\u3067\u3042\u308B\" : \"\u3088\u308A\u5927\u304D\u3044\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.prefix}\"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"ends_with\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.suffix}\"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"includes\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.includes}\"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n if (_issue.format === \"regex\")\n return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u7121\u52B9\u306A\u6570\u5024: ${issue.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n case \"unrecognized_keys\":\n return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue.keys.length > 1 ? \"\u7FA4\" : \"\"}: ${util.joinValues(issue.keys, \"\u3001\")}`;\n case \"invalid_key\":\n return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;\n case \"invalid_union\":\n return \"\u7121\u52B9\u306A\u5165\u529B\";\n case \"invalid_element\":\n return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;\n default:\n return `\u7121\u52B9\u306A\u5165\u529B`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n file: { unit: \"\u10D1\u10D0\u10D8\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n array: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n set: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n email: \"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n url: \"URL\",\n emoji: \"\u10D4\u10DB\u10DD\u10EF\u10D8\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD\",\n date: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8\",\n time: \"\u10D3\u10E0\u10DD\",\n duration: \"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0\",\n ipv4: \"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n ipv6: \"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n cidrv4: \"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n cidrv6: \"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n base64: \"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n base64url: \"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n json_string: \"JSON \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n e164: \"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8\",\n jwt: \"JWT\",\n template_literal: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8\",\n string: \"\u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n boolean: \"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8\",\n function: \"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0\",\n array: \"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`;\n }\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${util.joinValues(issue.values, \"|\")}-\u10D3\u10D0\u10DC`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \"${_issue.prefix}\"-\u10D8\u10D7`;\n }\n if (_issue.format === \"ends_with\")\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \"${_issue.suffix}\"-\u10D8\u10D7`;\n if (_issue.format === \"includes\")\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 \"${_issue.includes}\"-\u10E1`;\n if (_issue.format === \"regex\")\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`;\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;\n case \"unrecognized_keys\":\n return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue.keys.length > 1 ? \"\u10D4\u10D1\u10D8\" : \"\u10D8\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue.origin}-\u10E8\u10D8`;\n case \"invalid_union\":\n return \"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\";\n case \"invalid_element\":\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue.origin}-\u10E8\u10D8`;\n default:\n return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n file: { unit: \"\u1794\u17C3\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n array: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n set: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n email: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B\",\n url: \"URL\",\n emoji: \"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO\",\n date: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO\",\n time: \"\u1798\u17C9\u17C4\u1784 ISO\",\n duration: \"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO\",\n ipv4: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n ipv6: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n cidrv4: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n cidrv6: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n base64: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64\",\n base64url: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url\",\n json_string: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON\",\n e164: \"\u179B\u17C1\u1781 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u179B\u17C1\u1781\",\n array: \"\u17A2\u17B6\u179A\u17C1 (Array)\",\n null: \"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`;\n }\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u1792\u17B6\u178F\u17BB\"}`;\n return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`;\n return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n case \"invalid_union\":\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n case \"invalid_element\":\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n default:\n return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n return km();\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\uBB38\uC790\", verb: \"to have\" },\n file: { unit: \"\uBC14\uC774\uD2B8\", verb: \"to have\" },\n array: { unit: \"\uAC1C\", verb: \"to have\" },\n set: { unit: \"\uAC1C\", verb: \"to have\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\uC785\uB825\",\n email: \"\uC774\uBA54\uC77C \uC8FC\uC18C\",\n url: \"URL\",\n emoji: \"\uC774\uBAA8\uC9C0\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \uB0A0\uC9DC\uC2DC\uAC04\",\n date: \"ISO \uB0A0\uC9DC\",\n time: \"ISO \uC2DC\uAC04\",\n duration: \"ISO \uAE30\uAC04\",\n ipv4: \"IPv4 \uC8FC\uC18C\",\n ipv6: \"IPv6 \uC8FC\uC18C\",\n cidrv4: \"IPv4 \uBC94\uC704\",\n cidrv6: \"IPv6 \uBC94\uC704\",\n base64: \"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n base64url: \"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n json_string: \"JSON \uBB38\uC790\uC5F4\",\n e164: \"E.164 \uBC88\uD638\",\n jwt: \"JWT\",\n template_literal: \"\uC785\uB825\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n }\n return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${util.stringifyPrimitive(issue.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;\n return `\uC798\uBABB\uB41C \uC635\uC158: ${util.joinValues(issue.values, \"\uB610\uB294 \")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\uC774\uD558\" : \"\uBBF8\uB9CC\";\n const suffix = adj === \"\uBBF8\uB9CC\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"\uC694\uC18C\";\n if (sizing)\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()} ${adj}${suffix}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\uC774\uC0C1\" : \"\uCD08\uACFC\";\n const suffix = adj === \"\uC774\uC0C1\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n const sizing = getSizing(issue.origin);\n const unit = sizing?.unit ?? \"\uC694\uC18C\";\n if (sizing) {\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n }\n return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()} ${adj}${suffix}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.prefix}\"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;\n }\n if (_issue.format === \"ends_with\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.suffix}\"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;\n if (_issue.format === \"includes\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.includes}\"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;\n if (_issue.format === \"regex\")\n return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;\n return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n case \"unrecognized_keys\":\n return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\uC798\uBABB\uB41C \uD0A4: ${issue.origin}`;\n case \"invalid_union\":\n return `\uC798\uBABB\uB41C \uC785\uB825`;\n case \"invalid_element\":\n return `\uC798\uBABB\uB41C \uAC12: ${issue.origin}`;\n default:\n return `\uC798\uBABB\uB41C \uC785\uB825`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n const abs = Math.abs(number);\n const last = abs % 10;\n const last2 = abs % 100;\n if ((last2 >= 11 && last2 <= 19) || last === 0)\n return \"many\";\n if (last === 1)\n return \"one\";\n return \"few\";\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"simbolis\",\n few: \"simboliai\",\n many: \"simboli\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi b\u016Bti ne ilgesn\u0117 kaip\",\n notInclusive: \"turi b\u016Bti trumpesn\u0117 kaip\",\n },\n bigger: {\n inclusive: \"turi b\u016Bti ne trumpesn\u0117 kaip\",\n notInclusive: \"turi b\u016Bti ilgesn\u0117 kaip\",\n },\n },\n },\n file: {\n unit: {\n one: \"baitas\",\n few: \"baitai\",\n many: \"bait\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi b\u016Bti ne didesnis kaip\",\n notInclusive: \"turi b\u016Bti ma\u017Eesnis kaip\",\n },\n bigger: {\n inclusive: \"turi b\u016Bti ne ma\u017Eesnis kaip\",\n notInclusive: \"turi b\u016Bti didesnis kaip\",\n },\n },\n },\n array: {\n unit: {\n one: \"element\u0105\",\n few: \"elementus\",\n many: \"element\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n },\n bigger: {\n inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n notInclusive: \"turi tur\u0117ti daugiau kaip\",\n },\n },\n },\n set: {\n unit: {\n one: \"element\u0105\",\n few: \"elementus\",\n many: \"element\u0173\",\n },\n verb: {\n smaller: {\n inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n },\n bigger: {\n inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n notInclusive: \"turi tur\u0117ti daugiau kaip\",\n },\n },\n },\n };\n function getSizing(origin, unitType, inclusive, targetShouldBe) {\n const result = Sizable[origin] ?? null;\n if (result === null)\n return result;\n return {\n unit: result.unit[unitType],\n verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n };\n }\n const FormatDictionary = {\n regex: \"\u012Fvestis\",\n email: \"el. pa\u0161to adresas\",\n url: \"URL\",\n emoji: \"jaustukas\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO data ir laikas\",\n date: \"ISO data\",\n time: \"ISO laikas\",\n duration: \"ISO trukm\u0117\",\n ipv4: \"IPv4 adresas\",\n ipv6: \"IPv6 adresas\",\n cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n base64: \"base64 u\u017Ekoduota eilut\u0117\",\n base64url: \"base64url u\u017Ekoduota eilut\u0117\",\n json_string: \"JSON eilut\u0117\",\n e164: \"E.164 numeris\",\n jwt: \"JWT\",\n template_literal: \"\u012Fvestis\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"skai\u010Dius\",\n bigint: \"sveikasis skai\u010Dius\",\n string: \"eilut\u0117\",\n boolean: \"login\u0117 reik\u0161m\u0117\",\n undefined: \"neapibr\u0117\u017Eta reik\u0161m\u0117\",\n function: \"funkcija\",\n symbol: \"simbolis\",\n array: \"masyvas\",\n object: \"objektas\",\n null: \"nulin\u0117 reik\u0161m\u0117\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue.expected}`;\n }\n return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Privalo b\u016Bti ${util.stringifyPrimitive(issue.values[0])}`;\n return `Privalo b\u016Bti vienas i\u0161 ${util.joinValues(issue.values, \"|\")} pasirinkim\u0173`;\n case \"too_big\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n const adj = issue.inclusive ? \"ne didesnis kaip\" : \"ma\u017Eesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n }\n case \"too_small\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n if (sizing?.verb)\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n const adj = issue.inclusive ? \"ne ma\u017Eesnis kaip\" : \"didesnis kaip\";\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Eilut\u0117 privalo prasid\u0117ti \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Eilut\u0117 privalo pasibaigti \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Eilut\u0117 privalo \u012Ftraukti \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Eilut\u0117 privalo atitikti ${_issue.pattern}`;\n return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Skai\u010Dius privalo b\u016Bti ${issue.divisor} kartotinis.`;\n case \"unrecognized_keys\":\n return `Neatpa\u017Eint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return \"Rastas klaidingas raktas\";\n case \"invalid_union\":\n return \"Klaidinga \u012Fvestis\";\n case \"invalid_element\": {\n const origin = TypeDictionary[issue.origin] ?? issue.origin;\n return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi klaiding\u0105 \u012Fvest\u012F`;\n }\n default:\n return \"Klaidinga \u012Fvestis\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0437\u043D\u0430\u0446\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n file: { unit: \"\u0431\u0430\u0458\u0442\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n array: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n set: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u043D\u0435\u0441\",\n email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u045F\u0438\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435\",\n date: \"ISO \u0434\u0430\u0442\u0443\u043C\",\n time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n duration: \"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430\",\n cidrv4: \"IPv4 \u043E\u043F\u0441\u0435\u0433\",\n cidrv6: \"IPv6 \u043E\u043F\u0441\u0435\u0433\",\n base64: \"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n base64url: \"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n json_string: \"JSON \u043D\u0438\u0437\u0430\",\n e164: \"E.164 \u0431\u0440\u043E\u0458\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u043D\u0435\u0441\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0431\u0440\u043E\u0458\",\n array: \"\u043D\u0438\u0437\u0430\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`;\n }\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438\"}`;\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`;\n return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438\" : \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441\";\n case \"invalid_element\":\n return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue.origin}`;\n default:\n return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"aksara\", verb: \"mempunyai\" },\n file: { unit: \"bait\", verb: \"mempunyai\" },\n array: { unit: \"elemen\", verb: \"mempunyai\" },\n set: { unit: \"elemen\", verb: \"mempunyai\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"alamat e-mel\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"tarikh masa ISO\",\n date: \"tarikh ISO\",\n time: \"masa ISO\",\n duration: \"tempoh ISO\",\n ipv4: \"alamat IPv4\",\n ipv6: \"alamat IPv6\",\n cidrv4: \"julat IPv4\",\n cidrv6: \"julat IPv6\",\n base64: \"string dikodkan base64\",\n base64url: \"string dikodkan base64url\",\n json_string: \"string JSON\",\n e164: \"nombor E.164\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"nombor\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n }\n return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n }\n case \"not_multiple_of\":\n return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kunci tidak sah dalam ${issue.origin}`;\n case \"invalid_union\":\n return \"Input tidak sah\";\n case \"invalid_element\":\n return `Nilai tidak sah dalam ${issue.origin}`;\n default:\n return `Input tidak sah`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tekens\", verb: \"heeft\" },\n file: { unit: \"bytes\", verb: \"heeft\" },\n array: { unit: \"elementen\", verb: \"heeft\" },\n set: { unit: \"elementen\", verb: \"heeft\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"invoer\",\n email: \"emailadres\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum en tijd\",\n date: \"ISO datum\",\n time: \"ISO tijd\",\n duration: \"ISO duur\",\n ipv4: \"IPv4-adres\",\n ipv6: \"IPv6-adres\",\n cidrv4: \"IPv4-bereik\",\n cidrv6: \"IPv6-bereik\",\n base64: \"base64-gecodeerde tekst\",\n base64url: \"base64 URL-gecodeerde tekst\",\n json_string: \"JSON string\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"invoer\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"getal\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n }\n return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ongeldige optie: verwacht \u00E9\u00E9n van ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n if (sizing)\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n if (sizing) {\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n }\n if (_issue.format === \"ends_with\")\n return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n if (_issue.format === \"includes\")\n return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n if (_issue.format === \"regex\")\n return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n case \"unrecognized_keys\":\n return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ongeldige key in ${issue.origin}`;\n case \"invalid_union\":\n return \"Ongeldige invoer\";\n case \"invalid_element\":\n return `Ongeldige waarde in ${issue.origin}`;\n default:\n return `Ongeldige invoer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tegn\", verb: \"\u00E5 ha\" },\n file: { unit: \"bytes\", verb: \"\u00E5 ha\" },\n array: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n set: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"input\",\n email: \"e-postadresse\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO dato- og klokkeslett\",\n date: \"ISO-dato\",\n time: \"ISO-klokkeslett\",\n duration: \"ISO-varighet\",\n ipv4: \"IPv4-omr\u00E5de\",\n ipv6: \"IPv6-omr\u00E5de\",\n cidrv4: \"IPv4-spekter\",\n cidrv6: \"IPv6-spekter\",\n base64: \"base64-enkodet streng\",\n base64url: \"base64url-enkodet streng\",\n json_string: \"JSON-streng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"tall\",\n array: \"liste\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n }\n return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ugyldig streng: m\u00E5 starte med \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Ugyldig streng: m\u00E5 ende med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ugyldig streng: m\u00E5 inneholde \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ugyldig streng: m\u00E5 matche m\u00F8nsteret ${_issue.pattern}`;\n return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ugyldig tall: m\u00E5 v\u00E6re et multiplum av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ukjente n\u00F8kler\" : \"Ukjent n\u00F8kkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ugyldig n\u00F8kkel i ${issue.origin}`;\n case \"invalid_union\":\n return \"Ugyldig input\";\n case \"invalid_element\":\n return `Ugyldig verdi i ${issue.origin}`;\n default:\n return `Ugyldig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"harf\", verb: \"olmal\u0131d\u0131r\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n array: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n set: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"giren\",\n email: \"epostag\u00E2h\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO heng\u00E2m\u0131\",\n date: \"ISO tarihi\",\n time: \"ISO zaman\u0131\",\n duration: \"ISO m\u00FCddeti\",\n ipv4: \"IPv4 ni\u015F\u00E2n\u0131\",\n ipv6: \"IPv6 ni\u015F\u00E2n\u0131\",\n cidrv4: \"IPv4 menzili\",\n cidrv6: \"IPv6 menzili\",\n base64: \"base64-\u015Fifreli metin\",\n base64url: \"base64url-\u015Fifreli metin\",\n json_string: \"JSON metin\",\n e164: \"E.164 say\u0131s\u0131\",\n jwt: \"JWT\",\n template_literal: \"giren\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"numara\",\n array: \"saf\",\n null: \"gayb\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `F\u00E2sit giren: umulan instanceof ${issue.expected}, al\u0131nan ${received}`;\n }\n return `F\u00E2sit giren: umulan ${expected}, al\u0131nan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `F\u00E2sit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n return `F\u00E2sit tercih: m\u00FBteberler ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmal\u0131yd\u0131.`;\n return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmal\u0131yd\u0131.`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`;\n }\n return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} olmal\u0131yd\u0131.`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `F\u00E2sit metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131.`;\n if (_issue.format === \"ends_with\")\n return `F\u00E2sit metin: \"${_issue.suffix}\" ile bitmeli.`;\n if (_issue.format === \"includes\")\n return `F\u00E2sit metin: \"${_issue.includes}\" ihtiv\u00E2 etmeli.`;\n if (_issue.format === \"regex\")\n return `F\u00E2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`;\n return `F\u00E2sit ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `F\u00E2sit say\u0131: ${issue.divisor} kat\u0131 olmal\u0131yd\u0131.`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} i\u00E7in tan\u0131nmayan anahtar var.`;\n case \"invalid_union\":\n return \"Giren tan\u0131namad\u0131.\";\n case \"invalid_element\":\n return `${issue.origin} i\u00E7in tan\u0131nmayan k\u0131ymet var.`;\n default:\n return `K\u0131ymet tan\u0131namad\u0131.`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n file: { unit: \"\u0628\u0627\u06CC\u067C\u0633\", verb: \"\u0648\u0644\u0631\u064A\" },\n array: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n set: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0648\u0631\u0648\u062F\u064A\",\n email: \"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9\",\n url: \"\u06CC\u0648 \u0622\u0631 \u0627\u0644\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u064A\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A\",\n date: \"\u0646\u06D0\u067C\u0647\",\n time: \"\u0648\u062E\u062A\",\n duration: \"\u0645\u0648\u062F\u0647\",\n ipv4: \"\u062F IPv4 \u067E\u062A\u0647\",\n ipv6: \"\u062F IPv6 \u067E\u062A\u0647\",\n cidrv4: \"\u062F IPv4 \u0633\u0627\u062D\u0647\",\n cidrv6: \"\u062F IPv6 \u0633\u0627\u062D\u0647\",\n base64: \"base64-encoded \u0645\u062A\u0646\",\n base64url: \"base64url-encoded \u0645\u062A\u0646\",\n json_string: \"JSON \u0645\u062A\u0646\",\n e164: \"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647\",\n jwt: \"JWT\",\n template_literal: \"\u0648\u0631\u0648\u062F\u064A\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0639\u062F\u062F\",\n array: \"\u0627\u0631\u06D0\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n }\n return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1) {\n return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${util.stringifyPrimitive(issue.values[0])} \u0648\u0627\u06CC`;\n }\n return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${util.joinValues(issue.values, \"|\")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\u0648\u0646\u0647\"} \u0648\u0644\u0631\u064A`;\n }\n return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0648\u064A`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`;\n }\n return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0648\u064A`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.prefix}\" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;\n }\n if (_issue.format === \"ends_with\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.suffix}\" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;\n }\n if (_issue.format === \"includes\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \"${_issue.includes}\" \u0648\u0644\u0631\u064A`;\n }\n if (_issue.format === \"regex\") {\n return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;\n }\n return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`;\n }\n case \"not_multiple_of\":\n return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;\n case \"unrecognized_keys\":\n return `\u0646\u0627\u0633\u0645 ${issue.keys.length > 1 ? \"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647\" : \"\u06A9\u0644\u06CC\u0689\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n case \"invalid_union\":\n return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n case \"invalid_element\":\n return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n default:\n return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znak\u00F3w\", verb: \"mie\u0107\" },\n file: { unit: \"bajt\u00F3w\", verb: \"mie\u0107\" },\n array: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n set: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"wyra\u017Cenie\",\n email: \"adres email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data i godzina w formacie ISO\",\n date: \"data w formacie ISO\",\n time: \"godzina w formacie ISO\",\n duration: \"czas trwania ISO\",\n ipv4: \"adres IPv4\",\n ipv6: \"adres IPv6\",\n cidrv4: \"zakres IPv4\",\n cidrv6: \"zakres IPv6\",\n base64: \"ci\u0105g znak\u00F3w zakodowany w formacie base64\",\n base64url: \"ci\u0105g znak\u00F3w zakodowany w formacie base64url\",\n json_string: \"ci\u0105g znak\u00F3w w formacie JSON\",\n e164: \"liczba E.164\",\n jwt: \"JWT\",\n template_literal: \"wej\u015Bcie\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"liczba\",\n array: \"tablica\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n }\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n }\n return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n }\n return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zaczyna\u0107 si\u0119 od \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi ko\u0144czy\u0107 si\u0119 na \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zawiera\u0107 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`;\n return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Nieprawid\u0142owy klucz w ${issue.origin}`;\n case \"invalid_union\":\n return \"Nieprawid\u0142owe dane wej\u015Bciowe\";\n case \"invalid_element\":\n return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue.origin}`;\n default:\n return `Nieprawid\u0142owe dane wej\u015Bciowe`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"caracteres\", verb: \"ter\" },\n file: { unit: \"bytes\", verb: \"ter\" },\n array: { unit: \"itens\", verb: \"ter\" },\n set: { unit: \"itens\", verb: \"ter\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"padr\u00E3o\",\n email: \"endere\u00E7o de e-mail\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"data e hora ISO\",\n date: \"data ISO\",\n time: \"hora ISO\",\n duration: \"dura\u00E7\u00E3o ISO\",\n ipv4: \"endere\u00E7o IPv4\",\n ipv6: \"endere\u00E7o IPv6\",\n cidrv4: \"faixa de IPv4\",\n cidrv6: \"faixa de IPv6\",\n base64: \"texto codificado em base64\",\n base64url: \"URL codificada em base64\",\n json_string: \"texto JSON\",\n e164: \"n\u00FAmero E.164\",\n jwt: \"JWT\",\n template_literal: \"entrada\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u00FAmero\",\n null: \"nulo\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Tipo inv\u00E1lido: esperado instanceof ${issue.expected}, recebido ${received}`;\n }\n return `Tipo inv\u00E1lido: esperado ${expected}, recebido ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Entrada inv\u00E1lida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n return `Op\u00E7\u00E3o inv\u00E1lida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Texto inv\u00E1lido: deve come\u00E7ar com \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Texto inv\u00E1lido: deve terminar com \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Texto inv\u00E1lido: deve incluir \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Texto inv\u00E1lido: deve corresponder ao padr\u00E3o ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} inv\u00E1lido`;\n }\n case \"not_multiple_of\":\n return `N\u00FAmero inv\u00E1lido: deve ser m\u00FAltiplo de ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Chave inv\u00E1lida em ${issue.origin}`;\n case \"invalid_union\":\n return \"Entrada inv\u00E1lida\";\n case \"invalid_element\":\n return `Valor inv\u00E1lido em ${issue.origin}`;\n default:\n return `Campo inv\u00E1lido`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n const absCount = Math.abs(count);\n const lastDigit = absCount % 10;\n const lastTwoDigits = absCount % 100;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n return many;\n }\n if (lastDigit === 1) {\n return one;\n }\n if (lastDigit >= 2 && lastDigit <= 4) {\n return few;\n }\n return many;\n}\nconst error = () => {\n const Sizable = {\n string: {\n unit: {\n one: \"\u0441\u0438\u043C\u0432\u043E\u043B\",\n few: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\",\n many: \"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n file: {\n unit: {\n one: \"\u0431\u0430\u0439\u0442\",\n few: \"\u0431\u0430\u0439\u0442\u0430\",\n many: \"\u0431\u0430\u0439\u0442\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n array: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n set: {\n unit: {\n one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n },\n verb: \"\u0438\u043C\u0435\u0442\u044C\",\n },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0432\u043E\u0434\",\n email: \"email \u0430\u0434\u0440\u0435\u0441\",\n url: \"URL\",\n emoji: \"\u044D\u043C\u043E\u0434\u0437\u0438\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\",\n date: \"ISO \u0434\u0430\u0442\u0430\",\n time: \"ISO \u0432\u0440\u0435\u043C\u044F\",\n duration: \"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\",\n ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n base64: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64\",\n base64url: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url\",\n json_string: \"JSON \u0441\u0442\u0440\u043E\u043A\u0430\",\n e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0432\u043E\u0434\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0441\u0438\u0432\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`;\n }\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const maxValue = Number(issue.maximum);\n const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.maximum.toString()} ${unit}`;\n }\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n const minValue = Number(issue.minimum);\n const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.minimum.toString()} ${unit}`;\n }\n return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue.keys.length > 1 ? \"\u044B\u0435\" : \"\u044B\u0439\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0438\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\";\n case \"invalid_element\":\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue.origin}`;\n default:\n return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"znakov\", verb: \"imeti\" },\n file: { unit: \"bajtov\", verb: \"imeti\" },\n array: { unit: \"elementov\", verb: \"imeti\" },\n set: { unit: \"elementov\", verb: \"imeti\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"vnos\",\n email: \"e-po\u0161tni naslov\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO datum in \u010Das\",\n date: \"ISO datum\",\n time: \"ISO \u010Das\",\n duration: \"ISO trajanje\",\n ipv4: \"IPv4 naslov\",\n ipv6: \"IPv6 naslov\",\n cidrv4: \"obseg IPv4\",\n cidrv6: \"obseg IPv6\",\n base64: \"base64 kodiran niz\",\n base64url: \"base64url kodiran niz\",\n json_string: \"JSON niz\",\n e164: \"E.164 \u0161tevilka\",\n jwt: \"JWT\",\n template_literal: \"vnos\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0161tevilo\",\n array: \"tabela\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Neveljaven vnos: pri\u010Dakovano instanceof ${issue.expected}, prejeto ${received}`;\n }\n return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Neveljaven vnos: pri\u010Dakovano ${util.stringifyPrimitive(issue.values[0])}`;\n return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Neveljaven niz: mora se za\u010Deti z \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Neveljaven niz: mora se kon\u010Dati z \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Neprepoznan${issue.keys.length > 1 ? \"i klju\u010Di\" : \" klju\u010D\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Neveljaven klju\u010D v ${issue.origin}`;\n case \"invalid_union\":\n return \"Neveljaven vnos\";\n case \"invalid_element\":\n return `Neveljavna vrednost v ${issue.origin}`;\n default:\n return \"Neveljaven vnos\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"tecken\", verb: \"att ha\" },\n file: { unit: \"bytes\", verb: \"att ha\" },\n array: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n set: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"regulj\u00E4rt uttryck\",\n email: \"e-postadress\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO-datum och tid\",\n date: \"ISO-datum\",\n time: \"ISO-tid\",\n duration: \"ISO-varaktighet\",\n ipv4: \"IPv4-intervall\",\n ipv6: \"IPv6-intervall\",\n cidrv4: \"IPv4-spektrum\",\n cidrv6: \"IPv6-spektrum\",\n base64: \"base64-kodad str\u00E4ng\",\n base64url: \"base64url-kodad str\u00E4ng\",\n json_string: \"JSON-str\u00E4ng\",\n e164: \"E.164-nummer\",\n jwt: \"JWT\",\n template_literal: \"mall-literal\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"antal\",\n array: \"lista\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat instanceof ${issue.expected}, fick ${received}`;\n }\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${expected}, fick ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ogiltigt val: f\u00F6rv\u00E4ntade en av ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `F\u00F6r stor(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n }\n return `F\u00F6r stor(t): f\u00F6rv\u00E4ntat ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `Ogiltig str\u00E4ng: m\u00E5ste b\u00F6rja med \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `Ogiltig str\u00E4ng: m\u00E5ste sluta med \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Ogiltig str\u00E4ng: m\u00E5ste inneh\u00E5lla \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Ogiltig str\u00E4ng: m\u00E5ste matcha m\u00F6nstret \"${_issue.pattern}\"`;\n return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ogiltigt tal: m\u00E5ste vara en multipel av ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `${issue.keys.length > 1 ? \"Ok\u00E4nda nycklar\" : \"Ok\u00E4nd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Ogiltig nyckel i ${issue.origin ?? \"v\u00E4rdet\"}`;\n case \"invalid_union\":\n return \"Ogiltig input\";\n case \"invalid_element\":\n return `Ogiltigt v\u00E4rde i ${issue.origin ?? \"v\u00E4rdet\"}`;\n default:\n return `Ogiltig input`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n file: { unit: \"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n array: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n set: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\",\n email: \"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n date: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF\",\n time: \"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n duration: \"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1\",\n ipv4: \"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n ipv6: \"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n cidrv4: \"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n cidrv6: \"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n base64: \"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n base64url: \"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n json_string: \"JSON \u0B9A\u0BB0\u0BAE\u0BCD\",\n e164: \"E.164 \u0B8E\u0BA3\u0BCD\",\n jwt: \"JWT\",\n template_literal: \"input\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0B8E\u0BA3\u0BCD\",\n array: \"\u0B85\u0BA3\u0BBF\",\n null: \"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`;\n }\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.joinValues(issue.values, \"|\")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; //\n }\n return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.prefix}\" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n if (_issue.format === \"ends_with\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.suffix}\" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n if (_issue.format === \"includes\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.includes}\" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n if (_issue.format === \"regex\")\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n case \"unrecognized_keys\":\n return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue.keys.length > 1 ? \"\u0B95\u0BB3\u0BCD\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;\n case \"invalid_union\":\n return \"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\";\n case \"invalid_element\":\n return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;\n default:\n return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n file: { unit: \"\u0E44\u0E1A\u0E15\u0E4C\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n array: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n set: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n email: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25\",\n url: \"URL\",\n emoji: \"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n date: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO\",\n time: \"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n duration: \"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n ipv4: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4\",\n ipv6: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6\",\n cidrv4: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4\",\n cidrv6: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6\",\n base64: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64\",\n base64url: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL\",\n json_string: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON\",\n e164: \"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)\",\n jwt: \"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT\",\n template_literal: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\",\n array: \"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)\",\n null: \"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`;\n }\n return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19\" : \"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\"}`;\n return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22\" : \"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 \"${_issue.prefix}\"`;\n }\n if (_issue.format === \"ends_with\")\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 \"${_issue.includes}\" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;\n if (_issue.format === \"regex\")\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`;\n return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;\n case \"unrecognized_keys\":\n return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49\";\n case \"invalid_element\":\n return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n default:\n return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"karakter\", verb: \"olmal\u0131\" },\n file: { unit: \"bayt\", verb: \"olmal\u0131\" },\n array: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n set: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"girdi\",\n email: \"e-posta adresi\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO tarih ve saat\",\n date: \"ISO tarih\",\n time: \"ISO saat\",\n duration: \"ISO s\u00FCre\",\n ipv4: \"IPv4 adresi\",\n ipv6: \"IPv6 adresi\",\n cidrv4: \"IPv4 aral\u0131\u011F\u0131\",\n cidrv6: \"IPv6 aral\u0131\u011F\u0131\",\n base64: \"base64 ile \u015Fifrelenmi\u015F metin\",\n base64url: \"base64url ile \u015Fifrelenmi\u015F metin\",\n json_string: \"JSON dizesi\",\n e164: \"E.164 say\u0131s\u0131\",\n jwt: \"JWT\",\n template_literal: \"\u015Eablon dizesi\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Ge\u00E7ersiz de\u011Fer: beklenen instanceof ${issue.expected}, al\u0131nan ${received}`;\n }\n return `Ge\u00E7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Ge\u00E7ersiz de\u011Fer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n return `Ge\u00E7ersiz se\u00E7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00F6\u011Fe\"}`;\n return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Ge\u00E7ersiz metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131`;\n if (_issue.format === \"ends_with\")\n return `Ge\u00E7ersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n if (_issue.format === \"includes\")\n return `Ge\u00E7ersiz metin: \"${_issue.includes}\" i\u00E7ermeli`;\n if (_issue.format === \"regex\")\n return `Ge\u00E7ersiz metin: ${_issue.pattern} desenine uymal\u0131`;\n return `Ge\u00E7ersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Ge\u00E7ersiz say\u0131: ${issue.divisor} ile tam b\u00F6l\u00FCnebilmeli`;\n case \"unrecognized_keys\":\n return `Tan\u0131nmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} i\u00E7inde ge\u00E7ersiz anahtar`;\n case \"invalid_union\":\n return \"Ge\u00E7ersiz de\u011Fer\";\n case \"invalid_element\":\n return `${issue.origin} i\u00E7inde ge\u00E7ersiz de\u011Fer`;\n default:\n return `Ge\u00E7ersiz de\u011Fer`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n file: { unit: \"\u0431\u0430\u0439\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438\",\n url: \"URL\",\n emoji: \"\u0435\u043C\u043E\u0434\u0437\u0456\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO\",\n date: \"\u0434\u0430\u0442\u0430 ISO\",\n time: \"\u0447\u0430\u0441 ISO\",\n duration: \"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO\",\n ipv4: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4\",\n ipv6: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6\",\n cidrv4: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4\",\n cidrv6: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6\",\n base64: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64\",\n base64url: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url\",\n json_string: \"\u0440\u044F\u0434\u043E\u043A JSON\",\n e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0447\u0438\u0441\u043B\u043E\",\n array: \"\u043C\u0430\u0441\u0438\u0432\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`;\n }\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\"}`;\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} \u0431\u0443\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} \u0431\u0443\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0456\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n case \"invalid_union\":\n return \"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\";\n case \"invalid_element\":\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue.origin}`;\n default:\n return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n return uk();\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u062D\u0631\u0648\u0641\", verb: \"\u06C1\u0648\u0646\u0627\" },\n file: { unit: \"\u0628\u0627\u0626\u0679\u0633\", verb: \"\u06C1\u0648\u0646\u0627\" },\n array: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n set: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0627\u0646 \u067E\u0679\",\n email: \"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n url: \"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644\",\n emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n uuid: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n uuidv4: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4\",\n uuidv6: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6\",\n nanoid: \"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n guid: \"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n cuid: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n cuid2: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2\",\n ulid: \"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC\",\n xid: \"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC\",\n ksuid: \"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n datetime: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645\",\n date: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E\",\n time: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A\",\n duration: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A\",\n ipv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n ipv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n cidrv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C\",\n cidrv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C\",\n base64: \"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n base64url: \"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n json_string: \"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF\",\n e164: \"\u0627\u06CC 164 \u0646\u0645\u0628\u0631\",\n jwt: \"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC\",\n template_literal: \"\u0627\u0646 \u067E\u0679\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u0646\u0645\u0628\u0631\",\n array: \"\u0622\u0631\u06D2\",\n null: \"\u0646\u0644\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n }\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${util.stringifyPrimitive(issue.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u06D2 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0627\u0635\u0631\"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u0627 ${adj}${issue.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u06D2 ${adj}${issue.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n }\n return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u0627 ${adj}${issue.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.prefix}\" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n }\n if (_issue.format === \"ends_with\")\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.suffix}\" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n if (_issue.format === \"includes\")\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.includes}\" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n if (_issue.format === \"regex\")\n return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n case \"unrecognized_keys\":\n return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue.keys.length > 1 ? \"\u0632\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;\n case \"invalid_union\":\n return \"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679\";\n case \"invalid_element\":\n return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;\n default:\n return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"belgi\", verb: \"bo\u2018lishi kerak\" },\n file: { unit: \"bayt\", verb: \"bo\u2018lishi kerak\" },\n array: { unit: \"element\", verb: \"bo\u2018lishi kerak\" },\n set: { unit: \"element\", verb: \"bo\u2018lishi kerak\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"kirish\",\n email: \"elektron pochta manzili\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO sana va vaqti\",\n date: \"ISO sana\",\n time: \"ISO vaqt\",\n duration: \"ISO davomiylik\",\n ipv4: \"IPv4 manzil\",\n ipv6: \"IPv6 manzil\",\n mac: \"MAC manzil\",\n cidrv4: \"IPv4 diapazon\",\n cidrv6: \"IPv6 diapazon\",\n base64: \"base64 kodlangan satr\",\n base64url: \"base64url kodlangan satr\",\n json_string: \"JSON satr\",\n e164: \"E.164 raqam\",\n jwt: \"JWT\",\n template_literal: \"kirish\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"raqam\",\n array: \"massiv\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n }\n return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `Noto\u2018g\u2018ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n return `Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n }\n return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n if (_issue.format === \"ends_with\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n if (_issue.format === \"includes\")\n return `Noto\u2018g\u2018ri satr: \"${_issue.includes}\" ni o\u2018z ichiga olishi kerak`;\n if (_issue.format === \"regex\")\n return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `Noto\u2018g\u2018ri raqam: ${issue.divisor} ning karralisi bo\u2018lishi kerak`;\n case \"unrecognized_keys\":\n return `Noma\u2019lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} dagi kalit noto\u2018g\u2018ri`;\n case \"invalid_union\":\n return \"Noto\u2018g\u2018ri kirish\";\n case \"invalid_element\":\n return `${issue.origin} da noto\u2018g\u2018ri qiymat`;\n default:\n return `Noto\u2018g\u2018ri kirish`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"k\u00FD t\u1EF1\", verb: \"c\u00F3\" },\n file: { unit: \"byte\", verb: \"c\u00F3\" },\n array: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n set: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u0111\u1EA7u v\u00E0o\",\n email: \"\u0111\u1ECBa ch\u1EC9 email\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ng\u00E0y gi\u1EDD ISO\",\n date: \"ng\u00E0y ISO\",\n time: \"gi\u1EDD ISO\",\n duration: \"kho\u1EA3ng th\u1EDDi gian ISO\",\n ipv4: \"\u0111\u1ECBa ch\u1EC9 IPv4\",\n ipv6: \"\u0111\u1ECBa ch\u1EC9 IPv6\",\n cidrv4: \"d\u1EA3i IPv4\",\n cidrv6: \"d\u1EA3i IPv6\",\n base64: \"chu\u1ED7i m\u00E3 h\u00F3a base64\",\n base64url: \"chu\u1ED7i m\u00E3 h\u00F3a base64url\",\n json_string: \"chu\u1ED7i JSON\",\n e164: \"s\u1ED1 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u0111\u1EA7u v\u00E0o\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"s\u1ED1\",\n array: \"m\u1EA3ng\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n }\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${util.stringifyPrimitive(issue.values[0])}`;\n return `T\u00F9y ch\u1ECDn kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\u00E1c gi\u00E1 tr\u1ECB ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"ph\u1EA7n t\u1EED\"}`;\n return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\u00FAc b\u1EB1ng \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`;\n return `${FormatDictionary[_issue.format] ?? issue.format} kh\u00F4ng h\u1EE3p l\u1EC7`;\n }\n case \"not_multiple_of\":\n return `S\u1ED1 kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\u00E0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `Kh\u00F3a kh\u00F4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `Kh\u00F3a kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n case \"invalid_union\":\n return \"\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7\";\n case \"invalid_element\":\n return `Gi\u00E1 tr\u1ECB kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n default:\n return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u5B57\u7B26\", verb: \"\u5305\u542B\" },\n file: { unit: \"\u5B57\u8282\", verb: \"\u5305\u542B\" },\n array: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n set: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u8F93\u5165\",\n email: \"\u7535\u5B50\u90AE\u4EF6\",\n url: \"URL\",\n emoji: \"\u8868\u60C5\u7B26\u53F7\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO\u65E5\u671F\u65F6\u95F4\",\n date: \"ISO\u65E5\u671F\",\n time: \"ISO\u65F6\u95F4\",\n duration: \"ISO\u65F6\u957F\",\n ipv4: \"IPv4\u5730\u5740\",\n ipv6: \"IPv6\u5730\u5740\",\n cidrv4: \"IPv4\u7F51\u6BB5\",\n cidrv6: \"IPv6\u7F51\u6BB5\",\n base64: \"base64\u7F16\u7801\u5B57\u7B26\u4E32\",\n base64url: \"base64url\u7F16\u7801\u5B57\u7B26\u4E32\",\n json_string: \"JSON\u5B57\u7B26\u4E32\",\n e164: \"E.164\u53F7\u7801\",\n jwt: \"JWT\",\n template_literal: \"\u8F93\u5165\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"\u6570\u5B57\",\n array: \"\u6570\u7EC4\",\n null: \"\u7A7A\u503C(null)\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n }\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u4E2A\u5143\u7D20\"}`;\n return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.prefix}\" \u5F00\u5934`;\n if (_issue.format === \"ends_with\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.suffix}\" \u7ED3\u5C3E`;\n if (_issue.format === \"includes\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`;\n return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue.divisor} \u7684\u500D\u6570`;\n case \"unrecognized_keys\":\n return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `${issue.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;\n case \"invalid_union\":\n return \"\u65E0\u6548\u8F93\u5165\";\n case \"invalid_element\":\n return `${issue.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;\n default:\n return `\u65E0\u6548\u8F93\u5165`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u5B57\u5143\", verb: \"\u64C1\u6709\" },\n file: { unit: \"\u4F4D\u5143\u7D44\", verb: \"\u64C1\u6709\" },\n array: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n set: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u8F38\u5165\",\n email: \"\u90F5\u4EF6\u5730\u5740\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"ISO \u65E5\u671F\u6642\u9593\",\n date: \"ISO \u65E5\u671F\",\n time: \"ISO \u6642\u9593\",\n duration: \"ISO \u671F\u9593\",\n ipv4: \"IPv4 \u4F4D\u5740\",\n ipv6: \"IPv6 \u4F4D\u5740\",\n cidrv4: \"IPv4 \u7BC4\u570D\",\n cidrv6: \"IPv6 \u7BC4\u570D\",\n base64: \"base64 \u7DE8\u78BC\u5B57\u4E32\",\n base64url: \"base64url \u7DE8\u78BC\u5B57\u4E32\",\n json_string: \"JSON \u5B57\u4E32\",\n e164: \"E.164 \u6578\u503C\",\n jwt: \"JWT\",\n template_literal: \"\u8F38\u5165\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue.expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n }\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u500B\u5143\u7D20\"}`;\n return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing) {\n return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n }\n return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\") {\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.prefix}\" \u958B\u982D`;\n }\n if (_issue.format === \"ends_with\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.suffix}\" \u7D50\u5C3E`;\n if (_issue.format === \"includes\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`;\n return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue.divisor} \u7684\u500D\u6578`;\n case \"unrecognized_keys\":\n return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue.keys.length > 1 ? \"\u5011\" : \"\"}\uFF1A${util.joinValues(issue.keys, \"\u3001\")}`;\n case \"invalid_key\":\n return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;\n case \"invalid_union\":\n return \"\u7121\u6548\u7684\u8F38\u5165\u503C\";\n case \"invalid_element\":\n return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;\n default:\n return `\u7121\u6548\u7684\u8F38\u5165\u503C`;\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n const Sizable = {\n string: { unit: \"\u00E0mi\", verb: \"n\u00ED\" },\n file: { unit: \"bytes\", verb: \"n\u00ED\" },\n array: { unit: \"nkan\", verb: \"n\u00ED\" },\n set: { unit: \"nkan\", verb: \"n\u00ED\" },\n };\n function getSizing(origin) {\n return Sizable[origin] ?? null;\n }\n const FormatDictionary = {\n regex: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n email: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC \u00ECm\u1EB9\u0301l\u00EC\",\n url: \"URL\",\n emoji: \"emoji\",\n uuid: \"UUID\",\n uuidv4: \"UUIDv4\",\n uuidv6: \"UUIDv6\",\n nanoid: \"nanoid\",\n guid: \"GUID\",\n cuid: \"cuid\",\n cuid2: \"cuid2\",\n ulid: \"ULID\",\n xid: \"XID\",\n ksuid: \"KSUID\",\n datetime: \"\u00E0k\u00F3k\u00F2 ISO\",\n date: \"\u1ECDj\u1ECD\u0301 ISO\",\n time: \"\u00E0k\u00F3k\u00F2 ISO\",\n duration: \"\u00E0k\u00F3k\u00F2 t\u00F3 p\u00E9 ISO\",\n ipv4: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv4\",\n ipv6: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv6\",\n cidrv4: \"\u00E0gb\u00E8gb\u00E8 IPv4\",\n cidrv6: \"\u00E0gb\u00E8gb\u00E8 IPv6\",\n base64: \"\u1ECD\u0300r\u1ECD\u0300 t\u00ED a k\u1ECD\u0301 n\u00ED base64\",\n base64url: \"\u1ECD\u0300r\u1ECD\u0300 base64url\",\n json_string: \"\u1ECD\u0300r\u1ECD\u0300 JSON\",\n e164: \"n\u1ECD\u0301mb\u00E0 E.164\",\n jwt: \"JWT\",\n template_literal: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n };\n const TypeDictionary = {\n nan: \"NaN\",\n number: \"n\u1ECD\u0301mb\u00E0\",\n array: \"akop\u1ECD\",\n };\n return (issue) => {\n switch (issue.code) {\n case \"invalid_type\": {\n const expected = TypeDictionary[issue.expected] ?? issue.expected;\n const receivedType = util.parsedType(issue.input);\n const received = TypeDictionary[receivedType] ?? receivedType;\n if (/^[A-Z]/.test(issue.expected)) {\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi instanceof ${issue.expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n }\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n }\n case \"invalid_value\":\n if (issue.values.length === 1)\n return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${util.stringifyPrimitive(issue.values[0])}`;\n return `\u00C0\u1E63\u00E0y\u00E0n a\u1E63\u00EC\u1E63e: yan \u1ECD\u0300kan l\u00E1ra ${util.joinValues(issue.values, \"|\")}`;\n case \"too_big\": {\n const adj = issue.inclusive ? \"<=\" : \"<\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `T\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n return `T\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${adj}${issue.maximum}`;\n }\n case \"too_small\": {\n const adj = issue.inclusive ? \">=\" : \">\";\n const sizing = getSizing(issue.origin);\n if (sizing)\n return `K\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n return `K\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${adj}${issue.minimum}`;\n }\n case \"invalid_format\": {\n const _issue = issue;\n if (_issue.format === \"starts_with\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\u00FA \"${_issue.prefix}\"`;\n if (_issue.format === \"ends_with\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\u00ED p\u1EB9\u0300l\u00FA \"${_issue.suffix}\"`;\n if (_issue.format === \"includes\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\u00ED \"${_issue.includes}\"`;\n if (_issue.format === \"regex\")\n return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u00E1 \u00E0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`;\n return `A\u1E63\u00EC\u1E63e: ${FormatDictionary[_issue.format] ?? issue.format}`;\n }\n case \"not_multiple_of\":\n return `N\u1ECD\u0301mb\u00E0 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \u00E8y\u00E0 p\u00EDp\u00EDn ti ${issue.divisor}`;\n case \"unrecognized_keys\":\n return `B\u1ECDt\u00ECn\u00EC \u00E0\u00ECm\u1ECD\u0300: ${util.joinValues(issue.keys, \", \")}`;\n case \"invalid_key\":\n return `B\u1ECDt\u00ECn\u00EC a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n case \"invalid_union\":\n return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\n case \"invalid_element\":\n return `Iye a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n default:\n return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\n }\n };\n};\nexport default function () {\n return {\n localeError: error(),\n };\n}\n", "var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n constructor() {\n this._map = new WeakMap();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new WeakMap();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = { ...(this.get(p) ?? {}) };\n delete pm.id; // do not inherit id\n const f = { ...pm, ...this._map.get(schema) };\n return Object.keys(f).length ? f : undefined;\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nexport function registry() {\n return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n", "import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n return new Class({\n type: \"string\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n return new Class({\n type: \"string\",\n format: \"mac\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ...util.normalizeParams(params),\n });\n}\nexport const TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n return new Class({\n type: \"null\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n return new Class({\n type: \"any\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n return new Class({\n type: \"unknown\",\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n return new Class({\n type: \"never\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n return new Class({\n type: \"void\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n return new Class({\n type: \"date\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n return new checks.$ZodCheckLessThan({\n check: \"less_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: false,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n return new checks.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ...util.normalizeParams(params),\n value,\n inclusive: true,\n });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n return new checks.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ...util.normalizeParams(params),\n value,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n return new checks.$ZodCheckMaxSize({\n check: \"max_size\",\n ...util.normalizeParams(params),\n maximum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n return new checks.$ZodCheckMinSize({\n check: \"min_size\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n return new checks.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ...util.normalizeParams(params),\n size,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n const ch = new checks.$ZodCheckMaxLength({\n check: \"max_length\",\n ...util.normalizeParams(params),\n maximum,\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n return new checks.$ZodCheckMinLength({\n check: \"min_length\",\n ...util.normalizeParams(params),\n minimum,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n return new checks.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ...util.normalizeParams(params),\n length,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n return new checks.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ...util.normalizeParams(params),\n pattern,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n return new checks.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n return new checks.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n return new checks.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ...util.normalizeParams(params),\n includes,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n return new checks.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ...util.normalizeParams(params),\n prefix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n return new checks.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ...util.normalizeParams(params),\n suffix,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n return new checks.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n return new checks.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n return new checks.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx,\n });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ...util.normalizeParams(params),\n });\n}\nexport function _xor(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n inclusive: false,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right,\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [value],\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n return new Class({\n type: \"file\",\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue() {\n return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n },\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ...util.normalizeParams(params),\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType,\n });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n const norm = util.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm,\n });\n return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...util.normalizeParams(_params),\n });\n return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n const ch = _check((payload) => {\n payload.addIssue = (issue) => {\n if (typeof issue === \"string\") {\n payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n }\n else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal)\n _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n payload.issues.push(util.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n const ch = new checks.$ZodCheck({\n check: \"custom\",\n ...util.normalizeParams(params),\n });\n ch._zod.check = fn;\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n const ch = new checks.$ZodCheck({ check: \"describe\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, description });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n const ch = new checks.$ZodCheck({ check: \"meta\" });\n ch._zod.onattach = [\n (inst) => {\n const existing = registries.globalRegistry.get(inst) ?? {};\n registries.globalRegistry.add(inst, { ...existing, ...metadata });\n },\n ];\n ch._zod.check = () => { }; // no-op check\n return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n const params = util.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n const _String = Classes.String ?? schemas.$ZodString;\n const stringSchema = new _String({ type: \"string\", error: params.error });\n const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n const codec = new _Codec({\n type: \"pipe\",\n in: stringSchema,\n out: booleanSchema,\n transform: ((input, payload) => {\n let data = input;\n if (params.case !== \"sensitive\")\n data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n }\n else if (falsySet.has(data)) {\n return false;\n }\n else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [...truthySet, ...falsySet],\n input: payload.value,\n inst: codec,\n continue: false,\n });\n return {};\n }\n }),\n reverseTransform: ((input, _payload) => {\n if (input === true) {\n return truthyArray[0] || \"true\";\n }\n else {\n return falsyArray[0] || \"false\";\n }\n }),\n error: params.error,\n });\n return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = util.normalizeParams(_params);\n const def = {\n ...util.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n ...params,\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n", "import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n// return {\n// processor: inputs.processor,\n// metadataRegistry: inputs.metadata ?? globalRegistry,\n// target: inputs.target ?? \"draft-2020-12\",\n// unrepresentable: inputs.unrepresentable ?? \"throw\",\n// };\n// }\nexport function initializeContext(params) {\n // Normalize target: convert old non-hyphenated versions to hyphenated versions\n let target = params?.target ?? \"draft-2020-12\";\n if (target === \"draft-4\")\n target = \"draft-04\";\n if (target === \"draft-7\")\n target = \"draft-07\";\n return {\n processors: params.processors ?? {},\n metadataRegistry: params?.metadata ?? globalRegistry,\n target,\n unrepresentable: params?.unrepresentable ?? \"throw\",\n override: params?.override ?? (() => { }),\n io: params?.io ?? \"output\",\n counter: 0,\n seen: new Map(),\n cycles: params?.cycles ?? \"ref\",\n reused: params?.reused ?? \"inline\",\n external: params?.external ?? undefined,\n };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n var _a;\n const def = schema._zod.def;\n // check for schema in seens\n const seen = ctx.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n ctx.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n }\n else {\n const params = {\n ..._params,\n schemaPath: [..._params.schemaPath, schema],\n path: _params.path,\n };\n if (schema._zod.processJSONSchema) {\n schema._zod.processJSONSchema(ctx, result.schema, params);\n }\n else {\n const _json = result.schema;\n const processor = ctx.processors[def.type];\n if (!processor) {\n throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n }\n processor(schema, ctx, _json, params);\n }\n const parent = schema._zod.parent;\n if (parent) {\n // Also set ref if processor didn't (for inheritance)\n if (!result.ref)\n result.ref = parent;\n process(parent, ctx, params);\n ctx.seen.get(parent).isParent = true;\n }\n }\n // metadata\n const meta = ctx.metadataRegistry.get(schema);\n if (meta)\n Object.assign(result.schema, meta);\n if (ctx.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (ctx.io === \"input\" && result.schema._prefault)\n (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from ctx.seen in case it was overwritten\n const _result = ctx.seen.get(schema);\n return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n // iterate over seen map;\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // Track ids to detect duplicates across different schemas\n const idToSchema = new Map();\n for (const entry of ctx.seen.entries()) {\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n const existing = idToSchema.get(id);\n if (existing && existing !== entry[0]) {\n throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n }\n idToSchema.set(id, entry[0]);\n }\n }\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry) => {\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (ctx.external) {\n const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = ctx.external.uri ?? ((id) => id);\n if (externalId) {\n return { ref: uriGenerator(externalId) };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n }\n if (entry[1] === root) {\n return { ref: \"#\" };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n return { defId, ref: defUriPrefix + defId };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry) => {\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = { ...seen.schema };\n // defId won't be set if the schema is a reference to an external schema\n // or if the schema is the root schema\n if (defId)\n seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for (const key in schema) {\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (ctx.cycles === \"throw\") {\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" +\n `#/${seen.cycle?.join(\"/\")}/<root>` +\n '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (ctx.external) {\n const ext = ctx.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = ctx.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (ctx.reused === \"ref\") {\n extractToDef(entry);\n // biome-ignore lint:\n continue;\n }\n }\n }\n}\nexport function finalize(ctx, schema) {\n const root = ctx.seen.get(schema);\n if (!root)\n throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // flatten refs - inherit properties from parent schemas\n const flattenRef = (zodSchema) => {\n const seen = ctx.seen.get(zodSchema);\n // already processed\n if (seen.ref === null)\n return;\n const schema = seen.def ?? seen.schema;\n const _cached = { ...schema };\n const ref = seen.ref;\n seen.ref = null; // prevent infinite recursion\n if (ref) {\n flattenRef(ref);\n const refSeen = ctx.seen.get(ref);\n const refSchema = refSeen.schema;\n // merge referenced schema into current\n if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n // older drafts can't combine $ref with other properties\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n }\n else {\n Object.assign(schema, refSchema);\n }\n // restore child's own properties (child wins)\n Object.assign(schema, _cached);\n const isParentRef = zodSchema._zod.parent === ref;\n // For parent chain, child is a refinement - remove parent-only properties\n if (isParentRef) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (!(key in _cached)) {\n delete schema[key];\n }\n }\n }\n // When ref was extracted to $defs, remove properties that match the definition\n if (refSchema.$ref && refSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n // If parent was extracted (has $ref), propagate $ref to this schema\n // This handles cases like: readonly().meta({id}).describe()\n // where processor sets ref to innerType but parent should be referenced\n const parent = zodSchema._zod.parent;\n if (parent && parent !== ref) {\n // Ensure parent is processed first so its def has inherited properties\n flattenRef(parent);\n const parentSeen = ctx.seen.get(parent);\n if (parentSeen?.schema.$ref) {\n schema.$ref = parentSeen.schema.$ref;\n // De-duplicate with parent's definition\n if (parentSeen.def) {\n for (const key in schema) {\n if (key === \"$ref\" || key === \"allOf\")\n continue;\n if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n delete schema[key];\n }\n }\n }\n }\n }\n // execute overrides\n ctx.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? [],\n });\n };\n for (const entry of [...ctx.seen.entries()].reverse()) {\n flattenRef(entry[0]);\n }\n const result = {};\n if (ctx.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n }\n else if (ctx.target === \"draft-07\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n }\n else if (ctx.target === \"draft-04\") {\n result.$schema = \"http://json-schema.org/draft-04/schema#\";\n }\n else if (ctx.target === \"openapi-3.0\") {\n // OpenAPI 3.0 schema objects should not include a $schema property\n }\n else {\n // Arbitrary string values are allowed but won't have a $schema property set\n }\n if (ctx.external?.uri) {\n const id = ctx.external.registry.get(schema)?.id;\n if (!id)\n throw new Error(\"Schema is missing an `id` property\");\n result.$id = ctx.external.uri(id);\n }\n Object.assign(result, root.def ?? root.schema);\n // build defs object\n const defs = ctx.external?.defs ?? {};\n for (const entry of ctx.seen.entries()) {\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (ctx.external) {\n }\n else {\n if (Object.keys(defs).length > 0) {\n if (ctx.target === \"draft-2020-12\") {\n result.$defs = defs;\n }\n else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to finalize() is functionally independent\n // though the seen map is shared\n const finalized = JSON.parse(JSON.stringify(result));\n Object.defineProperty(finalized, \"~standard\", {\n value: {\n ...schema[\"~standard\"],\n jsonSchema: {\n input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n },\n },\n enumerable: false,\n writable: false,\n });\n return finalized;\n }\n catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? { seen: new Set() };\n if (ctx.seen.has(_schema))\n return false;\n ctx.seen.add(_schema);\n const def = _schema._zod.def;\n if (def.type === \"transform\")\n return true;\n if (def.type === \"array\")\n return isTransforming(def.element, ctx);\n if (def.type === \"set\")\n return isTransforming(def.valueType, ctx);\n if (def.type === \"lazy\")\n return isTransforming(def.getter(), ctx);\n if (def.type === \"promise\" ||\n def.type === \"optional\" ||\n def.type === \"nonoptional\" ||\n def.type === \"nullable\" ||\n def.type === \"readonly\" ||\n def.type === \"default\" ||\n def.type === \"prefault\") {\n return isTransforming(def.innerType, ctx);\n }\n if (def.type === \"intersection\") {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n if (def.type === \"record\" || def.type === \"map\") {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n if (def.type === \"pipe\") {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n if (def.type === \"object\") {\n for (const key in def.shape) {\n if (isTransforming(def.shape[key], ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"union\") {\n for (const option of def.options) {\n if (isTransforming(option, ctx))\n return true;\n }\n return false;\n }\n if (def.type === \"tuple\") {\n for (const item of def.items) {\n if (isTransforming(item, ctx))\n return true;\n }\n if (def.rest && isTransforming(def.rest, ctx))\n return true;\n return false;\n }\n return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n const ctx = initializeContext({ ...params, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n const { libraryOptions, target } = params ?? {};\n const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n process(schema, ctx);\n extractDefs(ctx, schema);\n return finalize(ctx, schema);\n};\n", "import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n .bag;\n if (typeof minimum === \"number\")\n json.minLength = minimum;\n if (typeof maximum === \"number\")\n json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\")\n delete json.format; // empty format is not valid\n // JSON Schema format: \"time\" requires a full time with offset or Z\n // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n if (format === \"time\") {\n delete json.format;\n }\n }\n if (contentEncoding)\n json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [...patterns];\n if (regexes.length === 1)\n json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n json.allOf = [\n ...regexes.map((regex) => ({\n ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n ? { type: \"string\" }\n : {}),\n pattern: regex.source,\n })),\n ];\n }\n }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\"))\n json.type = \"integer\";\n else\n json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.minimum = exclusiveMinimum;\n json.exclusiveMinimum = true;\n }\n else {\n json.exclusiveMinimum = exclusiveMinimum;\n }\n }\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMinimum >= minimum)\n delete json.minimum;\n else\n delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") {\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.maximum = exclusiveMaximum;\n json.exclusiveMaximum = true;\n }\n else {\n json.exclusiveMaximum = exclusiveMaximum;\n }\n }\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n if (exclusiveMaximum <= maximum)\n delete json.maximum;\n else\n delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\")\n json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n if (ctx.target === \"openapi-3.0\") {\n json.type = \"string\";\n json.nullable = true;\n json.enum = [null];\n }\n else {\n json.type = \"null\";\n }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n const def = schema._zod.def;\n const values = getEnumValues(def.entries);\n // Number enums can have both string and number values\n if (values.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (values.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n const def = schema._zod.def;\n const vals = [];\n for (const val of def.values) {\n if (val === undefined) {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n }\n else {\n // do not add to vals\n }\n }\n else if (typeof val === \"bigint\") {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n }\n else {\n vals.push(Number(val));\n }\n }\n else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n }\n else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n json.enum = [val];\n }\n else {\n json.const = val;\n }\n }\n else {\n if (vals.every((v) => typeof v === \"number\"))\n json.type = \"number\";\n if (vals.every((v) => typeof v === \"string\"))\n json.type = \"string\";\n if (vals.every((v) => typeof v === \"boolean\"))\n json.type = \"boolean\";\n if (vals.every((v) => v === null))\n json.type = \"null\";\n json.enum = vals;\n }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const pattern = schema._zod.pattern;\n if (!pattern)\n throw new Error(\"Pattern not found in template literal\");\n _json.type = \"string\";\n _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n const _json = json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\",\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined)\n file.minLength = minimum;\n if (maximum !== undefined)\n file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(_json, file);\n }\n else {\n Object.assign(_json, file); // shared props at root\n _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n }\n }\n else {\n Object.assign(_json, file);\n }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Function types cannot be represented in JSON Schema\");\n }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n if (ctx.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n json.type = \"array\";\n json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape;\n for (const key in shape) {\n json.properties[key] = process(shape[key], ctx, {\n ...params,\n path: [...params.path, \"properties\", key],\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n const requiredKeys = new Set([...allKeys].filter((key) => {\n const v = def.shape[key]._zod;\n if (ctx.io === \"input\") {\n return v.optin === undefined;\n }\n else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n }\n else if (!def.catchall) {\n // regular\n if (ctx.io === \"output\")\n json.additionalProperties = false;\n }\n else if (def.catchall) {\n json.additionalProperties = process(def.catchall, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n // This includes both z.xor() and discriminated unions\n const isExclusive = def.inclusive === false;\n const options = def.options.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n }));\n if (isExclusive) {\n json.oneOf = options;\n }\n else {\n json.anyOf = options;\n }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const a = process(def.left, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 0],\n });\n const b = process(def.right, ctx, {\n ...params,\n path: [...params.path, \"allOf\", 1],\n });\n const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...(isSimpleIntersection(a) ? a.allOf : [a]),\n ...(isSimpleIntersection(b) ? b.allOf : [b]),\n ];\n json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"array\";\n const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n const prefixItems = def.items.map((x, i) => process(x, ctx, {\n ...params,\n path: [...params.path, prefixPath, i],\n }));\n const rest = def.rest\n ? process(def.rest, ctx, {\n ...params,\n path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n })\n : null;\n if (ctx.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n if (rest) {\n json.items = rest;\n }\n }\n else if (ctx.target === \"openapi-3.0\") {\n json.items = {\n anyOf: prefixItems,\n };\n if (rest) {\n json.items.anyOf.push(rest);\n }\n json.minItems = prefixItems.length;\n if (!rest) {\n json.maxItems = prefixItems.length;\n }\n }\n else {\n json.items = prefixItems;\n if (rest) {\n json.additionalItems = rest;\n }\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\")\n json.minItems = minimum;\n if (typeof maximum === \"number\")\n json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n const json = _json;\n const def = schema._zod.def;\n json.type = \"object\";\n // For looseRecord with regex patterns, use patternProperties\n // This correctly represents \"only validate keys matching the pattern\" semantics\n // and composes well with allOf (intersections)\n const keyType = def.keyType;\n const keyBag = keyType._zod.bag;\n const patterns = keyBag?.patterns;\n if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n // Use patternProperties for looseRecord with regex patterns\n const valueSchema = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"patternProperties\", \"*\"],\n });\n json.patternProperties = {};\n for (const pattern of patterns) {\n json.patternProperties[pattern.source] = valueSchema;\n }\n }\n else {\n // Default behavior: use propertyNames + additionalProperties\n if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n json.propertyNames = process(def.keyType, ctx, {\n ...params,\n path: [...params.path, \"propertyNames\"],\n });\n }\n json.additionalProperties = process(def.valueType, ctx, {\n ...params,\n path: [...params.path, \"additionalProperties\"],\n });\n }\n // Add required for keys with discrete values (enum, literal, etc.)\n const keyValues = keyType._zod.values;\n if (keyValues) {\n const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n if (validKeyValues.length > 0) {\n json.required = validKeyValues;\n }\n }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n const inner = process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n if (ctx.target === \"openapi-3.0\") {\n seen.ref = def.innerType;\n json.nullable = true;\n }\n else {\n json.anyOf = [inner, { type: \"null\" }];\n }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n if (ctx.io === \"input\")\n json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n }\n catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n const def = schema._zod.def;\n process(def.innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n const innerType = schema._zod.innerType;\n process(innerType, ctx, params);\n const seen = ctx.seen.get(schema);\n seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n string: stringProcessor,\n number: numberProcessor,\n boolean: booleanProcessor,\n bigint: bigintProcessor,\n symbol: symbolProcessor,\n null: nullProcessor,\n undefined: undefinedProcessor,\n void: voidProcessor,\n never: neverProcessor,\n any: anyProcessor,\n unknown: unknownProcessor,\n date: dateProcessor,\n enum: enumProcessor,\n literal: literalProcessor,\n nan: nanProcessor,\n template_literal: templateLiteralProcessor,\n file: fileProcessor,\n success: successProcessor,\n custom: customProcessor,\n function: functionProcessor,\n transform: transformProcessor,\n map: mapProcessor,\n set: setProcessor,\n array: arrayProcessor,\n object: objectProcessor,\n union: unionProcessor,\n intersection: intersectionProcessor,\n tuple: tupleProcessor,\n record: recordProcessor,\n nullable: nullableProcessor,\n nonoptional: nonoptionalProcessor,\n default: defaultProcessor,\n prefault: prefaultProcessor,\n catch: catchProcessor,\n pipe: pipeProcessor,\n readonly: readonlyProcessor,\n promise: promiseProcessor,\n optional: optionalProcessor,\n lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n if (\"_idmap\" in input) {\n // Registry case\n const registry = input;\n const ctx = initializeContext({ ...params, processors: allProcessors });\n const defs = {};\n // First pass: process all schemas to build the seen map\n for (const entry of registry._idmap.entries()) {\n const [_, schema] = entry;\n process(schema, ctx);\n }\n const schemas = {};\n const external = {\n registry,\n uri: params?.uri,\n defs,\n };\n // Update the context with external configuration\n ctx.external = external;\n // Second pass: emit each schema\n for (const entry of registry._idmap.entries()) {\n const [key, schema] = entry;\n extractDefs(ctx, schema);\n schemas[key] = finalize(ctx, schema);\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs,\n };\n }\n return { schemas };\n }\n // Single schema case\n const ctx = initializeContext({ ...params, processors: allProcessors });\n process(input, ctx);\n extractDefs(ctx, input);\n return finalize(ctx, input);\n}\n", "import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n /** @deprecated Access via ctx instead */\n get metadataRegistry() {\n return this.ctx.metadataRegistry;\n }\n /** @deprecated Access via ctx instead */\n get target() {\n return this.ctx.target;\n }\n /** @deprecated Access via ctx instead */\n get unrepresentable() {\n return this.ctx.unrepresentable;\n }\n /** @deprecated Access via ctx instead */\n get override() {\n return this.ctx.override;\n }\n /** @deprecated Access via ctx instead */\n get io() {\n return this.ctx.io;\n }\n /** @deprecated Access via ctx instead */\n get counter() {\n return this.ctx.counter;\n }\n set counter(value) {\n this.ctx.counter = value;\n }\n /** @deprecated Access via ctx instead */\n get seen() {\n return this.ctx.seen;\n }\n constructor(params) {\n // Normalize target for internal context\n let normalizedTarget = params?.target ?? \"draft-2020-12\";\n if (normalizedTarget === \"draft-4\")\n normalizedTarget = \"draft-04\";\n if (normalizedTarget === \"draft-7\")\n normalizedTarget = \"draft-07\";\n this.ctx = initializeContext({\n processors: allProcessors,\n target: normalizedTarget,\n ...(params?.metadata && { metadata: params.metadata }),\n ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n ...(params?.override && { override: params.override }),\n ...(params?.io && { io: params.io }),\n });\n }\n /**\n * Process a schema to prepare it for JSON Schema generation.\n * This must be called before emit().\n */\n process(schema, _params = { path: [], schemaPath: [] }) {\n return process(schema, this.ctx, _params);\n }\n /**\n * Emit the final JSON Schema after processing.\n * Must call process() first.\n */\n emit(schema, _params) {\n // Apply emit params to the context\n if (_params) {\n if (_params.cycles)\n this.ctx.cycles = _params.cycles;\n if (_params.reused)\n this.ctx.reused = _params.reused;\n if (_params.external)\n this.ctx.external = _params.external;\n }\n extractDefs(this.ctx, schema);\n const result = finalize(this.ctx, schema);\n // Strip ~standard property to match old implementation's return type\n const { \"~standard\": _, ...plainResult } = result;\n return plainResult;\n }\n}\n", "export {};\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", "export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n core.$ZodISODateTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n core.$ZodISODate.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n core.$ZodISOTime.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n core.$ZodISODuration.init(inst, def);\n schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n return core._isoDuration(ZodISODuration, params);\n}\n", "import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n $ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper) => core.formatError(inst, mapper),\n // enumerable: false,\n },\n flatten: {\n value: (mapper) => core.flattenError(inst, mapper),\n // enumerable: false,\n },\n addIssue: {\n value: (issue) => {\n inst.issues.push(issue);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n addIssues: {\n value: (issues) => {\n inst.issues.push(...issues);\n inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n },\n // enumerable: false,\n },\n isEmpty: {\n get() {\n return inst.issues.length === 0;\n },\n // enumerable: false,\n },\n });\n // Object.defineProperty(inst, \"isEmpty\", {\n // get() {\n // return inst.issues.length === 0;\n // },\n // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n", "import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n", "// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n core.config({\n customError: map,\n });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n", "import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n ..._schemas,\n ..._checks,\n iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n // Schema identification\n \"$schema\",\n \"$ref\",\n \"$defs\",\n \"definitions\",\n // Core schema keywords\n \"$id\",\n \"id\",\n \"$comment\",\n \"$anchor\",\n \"$vocabulary\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n // Type\n \"type\",\n \"enum\",\n \"const\",\n // Composition\n \"anyOf\",\n \"oneOf\",\n \"allOf\",\n \"not\",\n // Object\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"patternProperties\",\n \"propertyNames\",\n \"minProperties\",\n \"maxProperties\",\n // Array\n \"items\",\n \"prefixItems\",\n \"additionalItems\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"contains\",\n \"minContains\",\n \"maxContains\",\n // String\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n // Number\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n // Already handled metadata\n \"description\",\n \"default\",\n // Content\n \"contentEncoding\",\n \"contentMediaType\",\n \"contentSchema\",\n // Unsupported (error-throwing)\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n \"if\",\n \"then\",\n \"else\",\n \"dependentSchemas\",\n \"dependentRequired\",\n // OpenAPI\n \"nullable\",\n \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n const $schema = schema.$schema;\n if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n return \"draft-2020-12\";\n }\n if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n return \"draft-7\";\n }\n if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n return \"draft-4\";\n }\n // Use defaultTarget if provided, otherwise default to draft-2020-12\n return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n if (!ref.startsWith(\"#\")) {\n throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n }\n const path = ref.slice(1).split(\"/\").filter(Boolean);\n // Handle root reference \"#\"\n if (path.length === 0) {\n return ctx.rootSchema;\n }\n const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (path[0] === defsKey) {\n const key = path[1];\n if (!key || !ctx.defs[key]) {\n throw new Error(`Reference not found: ${ref}`);\n }\n return ctx.defs[key];\n }\n throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n // Handle unsupported features\n if (schema.not !== undefined) {\n // Special case: { not: {} } represents never\n if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n return z.never();\n }\n throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n }\n if (schema.unevaluatedItems !== undefined) {\n throw new Error(\"unevaluatedItems is not supported\");\n }\n if (schema.unevaluatedProperties !== undefined) {\n throw new Error(\"unevaluatedProperties is not supported\");\n }\n if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n }\n if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n }\n // Handle $ref\n if (schema.$ref) {\n const refPath = schema.$ref;\n if (ctx.refs.has(refPath)) {\n return ctx.refs.get(refPath);\n }\n if (ctx.processing.has(refPath)) {\n // Circular reference - use lazy\n return z.lazy(() => {\n if (!ctx.refs.has(refPath)) {\n throw new Error(`Circular reference not resolved: ${refPath}`);\n }\n return ctx.refs.get(refPath);\n });\n }\n ctx.processing.add(refPath);\n const resolved = resolveRef(refPath, ctx);\n const zodSchema = convertSchema(resolved, ctx);\n ctx.refs.set(refPath, zodSchema);\n ctx.processing.delete(refPath);\n return zodSchema;\n }\n // Handle enum\n if (schema.enum !== undefined) {\n const enumValues = schema.enum;\n // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n if (ctx.version === \"openapi-3.0\" &&\n schema.nullable === true &&\n enumValues.length === 1 &&\n enumValues[0] === null) {\n return z.null();\n }\n if (enumValues.length === 0) {\n return z.never();\n }\n if (enumValues.length === 1) {\n return z.literal(enumValues[0]);\n }\n // Check if all values are strings\n if (enumValues.every((v) => typeof v === \"string\")) {\n return z.enum(enumValues);\n }\n // Mixed types - use union of literals\n const literalSchemas = enumValues.map((v) => z.literal(v));\n if (literalSchemas.length < 2) {\n return literalSchemas[0];\n }\n return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n }\n // Handle const\n if (schema.const !== undefined) {\n return z.literal(schema.const);\n }\n // Handle type\n const type = schema.type;\n if (Array.isArray(type)) {\n // Expand type array into anyOf union\n const typeSchemas = type.map((t) => {\n const typeSchema = { ...schema, type: t };\n return convertBaseSchema(typeSchema, ctx);\n });\n if (typeSchemas.length === 0) {\n return z.never();\n }\n if (typeSchemas.length === 1) {\n return typeSchemas[0];\n }\n return z.union(typeSchemas);\n }\n if (!type) {\n // No type specified - empty schema (any)\n return z.any();\n }\n let zodSchema;\n switch (type) {\n case \"string\": {\n let stringSchema = z.string();\n // Apply format using .check() with Zod format functions\n if (schema.format) {\n const format = schema.format;\n // Map common formats to Zod check functions\n if (format === \"email\") {\n stringSchema = stringSchema.check(z.email());\n }\n else if (format === \"uri\" || format === \"uri-reference\") {\n stringSchema = stringSchema.check(z.url());\n }\n else if (format === \"uuid\" || format === \"guid\") {\n stringSchema = stringSchema.check(z.uuid());\n }\n else if (format === \"date-time\") {\n stringSchema = stringSchema.check(z.iso.datetime());\n }\n else if (format === \"date\") {\n stringSchema = stringSchema.check(z.iso.date());\n }\n else if (format === \"time\") {\n stringSchema = stringSchema.check(z.iso.time());\n }\n else if (format === \"duration\") {\n stringSchema = stringSchema.check(z.iso.duration());\n }\n else if (format === \"ipv4\") {\n stringSchema = stringSchema.check(z.ipv4());\n }\n else if (format === \"ipv6\") {\n stringSchema = stringSchema.check(z.ipv6());\n }\n else if (format === \"mac\") {\n stringSchema = stringSchema.check(z.mac());\n }\n else if (format === \"cidr\") {\n stringSchema = stringSchema.check(z.cidrv4());\n }\n else if (format === \"cidr-v6\") {\n stringSchema = stringSchema.check(z.cidrv6());\n }\n else if (format === \"base64\") {\n stringSchema = stringSchema.check(z.base64());\n }\n else if (format === \"base64url\") {\n stringSchema = stringSchema.check(z.base64url());\n }\n else if (format === \"e164\") {\n stringSchema = stringSchema.check(z.e164());\n }\n else if (format === \"jwt\") {\n stringSchema = stringSchema.check(z.jwt());\n }\n else if (format === \"emoji\") {\n stringSchema = stringSchema.check(z.emoji());\n }\n else if (format === \"nanoid\") {\n stringSchema = stringSchema.check(z.nanoid());\n }\n else if (format === \"cuid\") {\n stringSchema = stringSchema.check(z.cuid());\n }\n else if (format === \"cuid2\") {\n stringSchema = stringSchema.check(z.cuid2());\n }\n else if (format === \"ulid\") {\n stringSchema = stringSchema.check(z.ulid());\n }\n else if (format === \"xid\") {\n stringSchema = stringSchema.check(z.xid());\n }\n else if (format === \"ksuid\") {\n stringSchema = stringSchema.check(z.ksuid());\n }\n // Note: json-string format is not currently supported by Zod\n // Custom formats are ignored - keep as plain string\n }\n // Apply constraints\n if (typeof schema.minLength === \"number\") {\n stringSchema = stringSchema.min(schema.minLength);\n }\n if (typeof schema.maxLength === \"number\") {\n stringSchema = stringSchema.max(schema.maxLength);\n }\n if (schema.pattern) {\n // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n }\n zodSchema = stringSchema;\n break;\n }\n case \"number\":\n case \"integer\": {\n let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n // Apply constraints\n if (typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.min(schema.minimum);\n }\n if (typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.max(schema.maximum);\n }\n if (typeof schema.exclusiveMinimum === \"number\") {\n numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n }\n else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n numberSchema = numberSchema.gt(schema.minimum);\n }\n if (typeof schema.exclusiveMaximum === \"number\") {\n numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n }\n else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n numberSchema = numberSchema.lt(schema.maximum);\n }\n if (typeof schema.multipleOf === \"number\") {\n numberSchema = numberSchema.multipleOf(schema.multipleOf);\n }\n zodSchema = numberSchema;\n break;\n }\n case \"boolean\": {\n zodSchema = z.boolean();\n break;\n }\n case \"null\": {\n zodSchema = z.null();\n break;\n }\n case \"object\": {\n const shape = {};\n const properties = schema.properties || {};\n const requiredSet = new Set(schema.required || []);\n // Convert properties - mark optional ones\n for (const [key, propSchema] of Object.entries(properties)) {\n const propZodSchema = convertSchema(propSchema, ctx);\n // If not in required array, make it optional\n shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n }\n // Handle propertyNames\n if (schema.propertyNames) {\n const keySchema = convertSchema(schema.propertyNames, ctx);\n const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n ? convertSchema(schema.additionalProperties, ctx)\n : z.any();\n // Case A: No properties (pure record)\n if (Object.keys(shape).length === 0) {\n zodSchema = z.record(keySchema, valueSchema);\n break;\n }\n // Case B: With properties (intersection of object and looseRecord)\n const objectSchema = z.object(shape).passthrough();\n const recordSchema = z.looseRecord(keySchema, valueSchema);\n zodSchema = z.intersection(objectSchema, recordSchema);\n break;\n }\n // Handle patternProperties\n if (schema.patternProperties) {\n // patternProperties: keys matching pattern must satisfy corresponding schema\n // Use loose records so non-matching keys pass through\n const patternProps = schema.patternProperties;\n const patternKeys = Object.keys(patternProps);\n const looseRecords = [];\n for (const pattern of patternKeys) {\n const patternValue = convertSchema(patternProps[pattern], ctx);\n const keySchema = z.string().regex(new RegExp(pattern));\n looseRecords.push(z.looseRecord(keySchema, patternValue));\n }\n // Build intersection: object schema + all pattern property records\n const schemasToIntersect = [];\n if (Object.keys(shape).length > 0) {\n // Use passthrough so patternProperties can validate additional keys\n schemasToIntersect.push(z.object(shape).passthrough());\n }\n schemasToIntersect.push(...looseRecords);\n if (schemasToIntersect.length === 0) {\n zodSchema = z.object({}).passthrough();\n }\n else if (schemasToIntersect.length === 1) {\n zodSchema = schemasToIntersect[0];\n }\n else {\n // Chain intersections: (A & B) & C & D ...\n let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n for (let i = 2; i < schemasToIntersect.length; i++) {\n result = z.intersection(result, schemasToIntersect[i]);\n }\n zodSchema = result;\n }\n break;\n }\n // Handle additionalProperties\n // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n const objectSchema = z.object(shape);\n if (schema.additionalProperties === false) {\n // Strict mode - no extra properties allowed\n zodSchema = objectSchema.strict();\n }\n else if (typeof schema.additionalProperties === \"object\") {\n // Extra properties must match the specified schema\n zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n }\n else {\n // additionalProperties is true or undefined - allow any extra properties (passthrough)\n zodSchema = objectSchema.passthrough();\n }\n break;\n }\n case \"array\": {\n // TODO: uniqueItems is not supported\n // TODO: contains/minContains/maxContains are not supported\n // Check if this is a tuple (prefixItems or items as array)\n const prefixItems = schema.prefixItems;\n const items = schema.items;\n if (prefixItems && Array.isArray(prefixItems)) {\n // Tuple with prefixItems (draft-2020-12)\n const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n const rest = items && typeof items === \"object\" && !Array.isArray(items)\n ? convertSchema(items, ctx)\n : undefined;\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (Array.isArray(items)) {\n // Tuple with items array (draft-7)\n const tupleItems = items.map((item) => convertSchema(item, ctx));\n const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n ? convertSchema(schema.additionalItems, ctx)\n : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n if (rest) {\n zodSchema = z.tuple(tupleItems).rest(rest);\n }\n else {\n zodSchema = z.tuple(tupleItems);\n }\n // Apply minItems/maxItems constraints to tuples\n if (typeof schema.minItems === \"number\") {\n zodSchema = zodSchema.check(z.minLength(schema.minItems));\n }\n if (typeof schema.maxItems === \"number\") {\n zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n }\n }\n else if (items !== undefined) {\n // Regular array\n const element = convertSchema(items, ctx);\n let arraySchema = z.array(element);\n // Apply constraints\n if (typeof schema.minItems === \"number\") {\n arraySchema = arraySchema.min(schema.minItems);\n }\n if (typeof schema.maxItems === \"number\") {\n arraySchema = arraySchema.max(schema.maxItems);\n }\n zodSchema = arraySchema;\n }\n else {\n // No items specified - array of any\n zodSchema = z.array(z.any());\n }\n break;\n }\n default:\n throw new Error(`Unsupported type: ${type}`);\n }\n // Apply metadata\n if (schema.description) {\n zodSchema = zodSchema.describe(schema.description);\n }\n if (schema.default !== undefined) {\n zodSchema = zodSchema.default(schema.default);\n }\n return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n // Convert base schema first (ignoring composition keywords)\n let baseSchema = convertBaseSchema(schema, ctx);\n const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n // Process composition keywords LAST (they can appear together)\n // Handle anyOf - wrap base schema with union\n if (schema.anyOf && Array.isArray(schema.anyOf)) {\n const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n const anyOfUnion = z.union(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n }\n // Handle oneOf - exclusive union (exactly one must match)\n if (schema.oneOf && Array.isArray(schema.oneOf)) {\n const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n const oneOfUnion = z.xor(options);\n baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n }\n // Handle allOf - wrap base schema with intersection\n if (schema.allOf && Array.isArray(schema.allOf)) {\n if (schema.allOf.length === 0) {\n baseSchema = hasExplicitType ? baseSchema : z.any();\n }\n else {\n let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n const startIdx = hasExplicitType ? 0 : 1;\n for (let i = startIdx; i < schema.allOf.length; i++) {\n result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n }\n baseSchema = result;\n }\n }\n // Handle nullable (OpenAPI 3.0)\n if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n baseSchema = z.nullable(baseSchema);\n }\n // Handle readOnly\n if (schema.readOnly === true) {\n baseSchema = z.readonly(baseSchema);\n }\n // Collect metadata: core schema keywords and unrecognized keys\n const extraMeta = {};\n // Core schema keywords that should be captured as metadata\n const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n for (const key of coreMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Content keywords - store as metadata\n const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n for (const key of contentMetadataKeys) {\n if (key in schema) {\n extraMeta[key] = schema[key];\n }\n }\n // Unrecognized keys (custom metadata)\n for (const key of Object.keys(schema)) {\n if (!RECOGNIZED_KEYS.has(key)) {\n extraMeta[key] = schema[key];\n }\n }\n if (Object.keys(extraMeta).length > 0) {\n ctx.registry.add(baseSchema, extraMeta);\n }\n return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n // Handle boolean schemas\n if (typeof schema === \"boolean\") {\n return schema ? z.any() : z.never();\n }\n const version = detectVersion(schema, params?.defaultTarget);\n const defs = (schema.$defs || schema.definitions || {});\n const ctx = {\n version,\n defs,\n refs: new Map(),\n processing: new Set(),\n rootSchema: schema,\n registry: params?.registry ?? globalRegistry,\n };\n return convertSchema(schema, ctx);\n}\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n return core._coercedDate(schemas.ZodDate, params);\n}\n", "/**\n * Locales currently shipped with the Mote product surfaces.\n *\n * @remarks\n * Shared by the Mote Web App and the Proposal App so both resolve host or\n * browser language tags with one rule (ADR-067).\n *\n * @public\n */\nexport const SUPPORTED_LOCALES = [\"en\", \"zh-CN\"] as const;\n\n/**\n * Locale identifier accepted by Mote product surfaces.\n *\n * @public\n */\nexport type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];\n\n/**\n * Resolve one BCP 47 language tag into a supported Mote locale.\n *\n * @remarks\n * Traditional Chinese locales deliberately do not fall through to Simplified\n * Chinese. Unsupported values let the caller continue to its next preference.\n *\n * @param value - Browser, host, storage, or user-profile language tag.\n * @returns Supported locale, or `undefined` when there is no safe mapping.\n *\n * @public\n */\nexport function resolveSupportedLocale(value: string | null | undefined): SupportedLocale | undefined {\n const normalized = value?.trim().toLowerCase();\n if (!normalized) {\n return undefined;\n }\n if (normalized === \"en\" || normalized.startsWith(\"en-\")) {\n return \"en\";\n }\n if (normalized === \"zh-tw\" || normalized.startsWith(\"zh-tw-\")\n || normalized === \"zh-hk\" || normalized.startsWith(\"zh-hk-\")\n || normalized === \"zh-mo\" || normalized.startsWith(\"zh-mo-\")) {\n return undefined;\n }\n return normalized === \"zh\" || normalized.startsWith(\"zh-\") ? \"zh-CN\" : undefined;\n}\n", "import { z } from \"zod\";\nimport { SUPPORTED_LOCALES, type SupportedLocale } from \"./locale.js\";\n\n/** Independently editable persona overrides; missing languages use Mote defaults. */\nexport const agentPersonasSchema = z.object({\n en: z.string().trim().min(1).max(1000).optional(),\n \"zh-CN\": z.string().trim().min(1).max(1000).optional(),\n}).strict();\n/** Validated user overrides; omitted keys select that locale's default persona. */\nexport type AgentPersonas = z.infer<typeof agentPersonasSchema>;\n\n/** A single locale selection shared by persona materialization and composition. */\nexport const agentLocaleSchema = z.enum(SUPPORTED_LOCALES);\n\n/** Default identity and specialization, independent of ticket responsibilities. */\nconst DEFAULT_PERSONAS: Record<string, Record<SupportedLocale, string>> = {\n overmind: { en: \"You are Overmind, coordinating specialists to help the user achieve their goals.\", \"zh-CN\": \"\u4F60\u662F\u603B\u534F\u8C03\u5458\uFF0C\u534F\u8C03\u5404\u4F4D\u4E13\u5BB6\uFF0C\u5E2E\u52A9\u7528\u6237\u8FBE\u6210\u76EE\u6807\u3002\" },\n cto: { en: \"You are a technical lead focused on clear architecture and maintainable systems.\", \"zh-CN\": \"\u4F60\u662F\u6280\u672F\u8D1F\u8D23\u4EBA\uFF0C\u5173\u6CE8\u6E05\u6670\u7684\u67B6\u6784\u548C\u6613\u4E8E\u7EF4\u62A4\u7684\u7CFB\u7EDF\u3002\" },\n dev: { en: \"You are a software engineer focused on simple, reliable implementations.\", \"zh-CN\": \"\u4F60\u662F\u8F6F\u4EF6\u5DE5\u7A0B\u5E08\uFF0C\u4E13\u6CE8\u4E8E\u7B80\u6D01\u3001\u53EF\u9760\u7684\u5B9E\u73B0\u3002\" },\n qa: { en: \"You are a quality engineer who checks behavior against requirements and evidence.\", \"zh-CN\": \"\u4F60\u662F\u8D28\u91CF\u5DE5\u7A0B\u5E08\uFF0C\u4F9D\u636E\u9700\u6C42\u548C\u8BC1\u636E\u9A8C\u8BC1\u5B9E\u9645\u884C\u4E3A\u3002\" },\n da: { en: \"You are a data analyst who turns trustworthy evidence into clear insights.\", \"zh-CN\": \"\u4F60\u662F\u6570\u636E\u5206\u6790\u5E08\uFF0C\u57FA\u4E8E\u53EF\u4FE1\u7684\u6570\u636E\u63D0\u4F9B\u6E05\u6670\u7684\u6D1E\u89C1\u3002\" },\n ca: { en: \"You are an agricultural advisor focused on practical, evidence-based guidance.\", \"zh-CN\": \"\u4F60\u662F\u519C\u4E1A\u987E\u95EE\uFF0C\u63D0\u4F9B\u57FA\u4E8E\u8BC1\u636E\u3001\u5207\u5B9E\u53EF\u884C\u7684\u5EFA\u8BAE\u3002\" },\n};\n\n/**\n * Select an override or a concise default in exactly the requested language.\n * @param role - Agent specialization.\n * @param personas - User-authored overrides, independently keyed by locale.\n * @param locale - Owner's selected language.\n */\nexport function resolveAgentPersona(role: string, personas: AgentPersonas, locale: SupportedLocale): string {\n return personas[locale] ?? DEFAULT_PERSONAS[role]?.[locale]\n ?? (locale === \"en\" ? \"You are a helpful specialist.\" : \"\u4F60\u662F\u4E00\u4F4D\u4E50\u4E8E\u52A9\u4EBA\u7684\u4E13\u5BB6\u3002\");\n}\n\n/**\n * Render the filesystem snapshot consumed by Pi and preserved by runtime upgrades.\n * The JSON flow mapping is valid YAML frontmatter. Keeping locale, overrides and\n * selected persona together prevents a turn reading mismatched separate files.\n * @param profile - Validated locale, persona overrides and role.\n * @returns Complete system_prompt.md, without session-specific instructions.\n */\nexport function renderAgentPersona(profile: { role: string; personas: AgentPersonas; locale: SupportedLocale }): string {\n return `---\\n${JSON.stringify({ locale: profile.locale, personas: profile.personas })}\\n---\\n\\n${resolveAgentPersona(profile.role, profile.personas, profile.locale)}\\n`;\n}\n\n/**\n * Read the locale and authored overrides from a materialized persona snapshot.\n * @param document - Contents of system_prompt.md.\n */\nexport function parseAgentPersona(document: string): { locale: SupportedLocale; personas: AgentPersonas } {\n const match = /^---\\n([^\\n]+)\\n---\\n/.exec(document);\n if (!match?.[1]) throw new Error(\"Invalid Mote persona snapshot\");\n return z.object({ locale: agentLocaleSchema, personas: agentPersonasSchema }).strict().parse(JSON.parse(match[1]));\n}\n", "import { z } from \"zod\";\n\n/** Provider-neutral reasoning effort selected on an individual agent profile. */\nexport const agentThinkingEffortSchema = z.enum([\n \"minimal\",\n \"low\",\n \"medium\",\n \"high\",\n \"xhigh\",\n \"max\",\n]);\n\n/** Provider-neutral reasoning effort selected on an individual agent profile. */\nexport type AgentThinkingEffort = z.infer<typeof agentThinkingEffortSchema>;\n\n/** Safest reasoning behavior applied to every newly provisioned agent. */\nexport const DEFAULT_AGENT_THINKING = {\n enabled: false,\n effort: \"minimal\",\n} as const satisfies { enabled: boolean; effort: AgentThinkingEffort };\n\n/** Ordered effort choices exposed by agent settings and the launch contract. */\nexport const AGENT_THINKING_EFFORTS = agentThinkingEffortSchema.options;\n", "import { z } from \"zod\";\n\n/** Immutable URL path segment chosen explicitly when a generated app is created. */\nexport const appCodeSchema = z.string().min(1).max(63).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);\n\n/**\n * Stable app information embedded in associated ticket snapshots.\n *\n * @remarks\n * The source path is relative to the Org sandbox generated-app source root. Runtime\n * worktree paths are derived from the app and ticket ids and never persisted.\n */\nexport interface TicketAppReference {\n /** Stable generated-app id. */\n id: string;\n /** User-facing app name. */\n name: string;\n /** Relative canonical source path inside the Org sandbox. */\n sourcePath: string;\n}\n\n/** Durable generated-app record returned by app commands. */\nexport interface AppRecord extends TicketAppReference {\n /** Shared goal, constraints and acceptance criteria for app work. */\n brief: string;\n /** Immutable app path identifier, unique within its Org. */\n appCode: string;\n /** Bundle selected for new member previews; existing tabs keep their version. */\n previewBundleVersionId: string | null;\n /** Last selected public bundle, retained even while publication is disabled. */\n liveBundleVersionId: string | null;\n /** Whether anonymous viewers may open the selected live bundle. */\n publicationEnabled: boolean;\n /** ISO timestamp when the app was created. */\n createdAt: string;\n /** ISO timestamp when app metadata last changed. */\n updatedAt: string;\n}\n\n/** REST response containing every generated app visible in one Org. */\nexport interface AppListResult {\n /** Generated apps ordered by most recent update. */\n apps: AppRecord[];\n}\n\n/** Validate the stable app reference carried by a ticket. */\nexport const ticketAppReferenceSchema = z.object({\n id: z.string().trim().uuid(),\n name: z.string().trim().min(1).max(200),\n sourcePath: z.string().trim().min(1).max(500),\n}).strict() satisfies z.ZodType<TicketAppReference>;\n\n/** Validate one durable generated-app record. */\nexport const appRecordSchema = ticketAppReferenceSchema.extend({\n appCode: appCodeSchema,\n brief: z.string().max(20000),\n previewBundleVersionId: z.string().uuid().nullable(),\n liveBundleVersionId: z.string().uuid().nullable(),\n publicationEnabled: z.boolean(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n}).strict() satisfies z.ZodType<AppRecord>;\n\n/** Validate one Org-scoped generated-app list response. */\nexport const appListResultSchema = z.object({\n apps: z.array(appRecordSchema),\n}).strict() satisfies z.ZodType<AppListResult>;\n", "import { z } from \"zod\";\n\n/**\n * Generic JSON value accepted by shared runtime contracts.\n *\n * @remarks\n * Multiple contract modules need a recursive JSON validator for metadata,\n * health details, and database-backed payloads. Centralizing it keeps those\n * modules aligned on one runtime shape.\n *\n * @public\n */\nexport const jsonValueSchema: z.ZodType<unknown> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema)\n ])\n);\n\n/**\n * Shared JSON value contract used by dataset rows and metadata.\n *\n * @remarks\n * Multiple runtime surfaces reuse the shared JSON contract so dataset payloads\n * and metadata stay aligned across the API, tool, and artifact boundaries.\n *\n * @public\n */\nexport type JsonValue = z.infer<typeof jsonValueSchema>;\n", "import { z } from \"zod\";\n\nimport { jsonValueSchema } from \"./primitives.js\";\n\n/**\n * PostgreSQL schema that holds the curated analytics datasets (ADR-069).\n *\n * @public\n */\nexport const ANALYTICS_SCHEMA = \"analytics\";\n\n/** Default number of rows one analytics query returns when the caller sets no limit. */\nexport const ANALYTICS_QUERY_DEFAULT_ROWS = 200;\n\n/** Server-owned ceiling for rows returned by one analytics query. */\nexport const ANALYTICS_QUERY_MAX_ROWS = 2_000;\n\n/** Maximum number of bound parameters accepted by one analytics query. */\nexport const ANALYTICS_QUERY_MAX_PARAMETERS = 50;\n\n/** Maximum UTF-8 size of one analytics SQL statement. */\nexport const ANALYTICS_SQL_MAX_BYTES = 32 * 1024;\n\n/** Maximum serialized result size for tools and Gen App viewers. */\nexport const ANALYTICS_RESPONSE_MAX_BYTES = 1024 * 1024;\n\n/** Bump when a dataset contract changes incompatibly; old bundles require revalidation. */\nexport const ANALYTICS_DATASET_CONTRACT_VERSION = \"2026-09-07\";\n\n/**\n * One example query shown beside a dataset in discovery.\n *\n * @public\n */\nexport interface AnalyticsDatasetExample {\n /** Short title naming the question the example answers. */\n title: string;\n /** Complete SQL accepted by `query_analytics_sql`. */\n sql: string;\n}\n\n/**\n * Tool-owned guidance for one analytics dataset.\n *\n * @remarks\n * Row meaning, units, and join keys live as PostgreSQL comments on the view\n * and its columns, next to the definition they describe. This map adds only\n * what the database cannot express: the permission code that decides whether\n * the caller should see the dataset at all, and worked examples.\n *\n * @public\n */\nexport interface AnalyticsDatasetGuide {\n /** Permission code whose absence hides the dataset from discovery. */\n requiredCapability: string;\n /** Whether Farm coverage describes all rows, some rows, or only independent reference rules. */\n scope: \"farm\" | \"mixed\" | \"reference\";\n /** Worked examples that also form the validator's accepted corpus. */\n examples: readonly AnalyticsDatasetExample[];\n}\n\n/**\n * Datasets exposed to `query_analytics_sql`, keyed by view name.\n *\n * @remarks\n * The validator accepts exactly these relations, so a view added to the\n * schema is unreachable until it is listed here.\n *\n * @public\n */\nexport const ANALYTICS_DATASET_GUIDES: Readonly<Record<string, AnalyticsDatasetGuide>> = {\n farms: {\n scope: \"farm\",\n requiredCapability: \"farm:read\",\n examples: [{\n title: \"Farms with their registered area\",\n sql: \"select farm_code, farm_name, registered_area_ha from analytics.farms order by farm_code\",\n }],\n },\n plots: {\n scope: \"farm\",\n requiredCapability: \"farm:read\",\n examples: [{\n title: \"Plot area per farm\",\n sql: \"select farm_code, count(*) as plots, sum(area_ha) as area_ha from analytics.plots group by farm_code order by farm_code\",\n }],\n },\n crop_plantings: {\n scope: \"farm\",\n requiredCapability: \"farm:read\",\n examples: [{\n title: \"Crops currently on each plot\",\n sql: \"select farm_code, plot_code, crop_name, cultivar, occupied_from from analytics.crop_plantings where occupied_until is null or occupied_until >= current_date order by farm_code, plot_code\",\n }],\n },\n agricultural_inputs: {\n scope: \"mixed\",\n requiredCapability: \"application:read\",\n examples: [{\n title: \"Pesticides applied whose registration has expired\",\n sql: \"select product_name, pesticide_cert_no, registration_valid_until from analytics.agricultural_inputs where input_kind = 'pesticide' and registration_valid_until < current_date order by registration_valid_until\",\n }],\n },\n applications: {\n scope: \"farm\",\n requiredCapability: \"application:read\",\n examples: [{\n title: \"Applications in a period with their delivery counts\",\n sql: \"select application_id, farm_code, first_started_at, component_count, target_count, operator_name from analytics.applications where first_started_at >= $1 and first_started_at < $2 order by first_started_at\",\n }],\n },\n input_usage: {\n scope: \"farm\",\n requiredCapability: \"application:read\",\n examples: [\n {\n title: \"Monthly agricultural input mass\",\n sql: \"select date_trunc('month', applied_at)::date as month, input_kind, sum(amount_kg) as kg, count(*) filter (where amount is not null and amount_kg is null and amount_l is null) as unconverted from analytics.input_usage group by 1, 2 order by 1, 2\",\n },\n {\n title: \"Top products by mass on one farm\",\n sql: \"select product_name, input_kind, sum(amount_kg) as kg, count(distinct application_id) as applications from analytics.input_usage where farm_code = $1 group by 1, 2 order by kg desc nulls last limit 20\",\n },\n ],\n },\n application_targets: {\n scope: \"farm\",\n requiredCapability: \"application:read\",\n examples: [{\n title: \"Deliveries per plot with area-normalized mixture volume\",\n sql: \"select plot_code, count(*) as deliveries, sum(applied_amount_l) as mixture_l, sum(applied_amount_l) / nullif(max(plot_area_ha), 0) as l_per_ha from analytics.application_targets where farm_code = $1 group by plot_code order by deliveries desc\",\n }],\n },\n farm_events: {\n scope: \"farm\",\n requiredCapability: \"event:read\",\n examples: [{\n title: \"Recent events by type\",\n sql: \"select event_type, count(*) as events, max(occurred_at) as latest from analytics.farm_events where occurred_at >= current_date - interval '90 days' group by event_type order by events desc\",\n }],\n },\n telemetry_metrics: {\n scope: \"reference\",\n requiredCapability: \"telemetry:read\",\n examples: [{\n title: \"Active metrics with units\",\n sql: \"select metric_key, display_name, default_unit, default_agg from analytics.telemetry_metrics where is_active order by metric_key\",\n }],\n },\n telemetry: {\n scope: \"farm\",\n requiredCapability: \"telemetry:read\",\n examples: [{\n title: \"Daily average of one metric per plot\",\n sql: \"select plot_code, date_trunc('day', observed_at)::date as day, avg(value_num) as avg_value, count(*) as readings from analytics.telemetry where metric_key = $1 and quality_flag = 'ok' and observed_at >= $2 group by 1, 2 order by 1, 2\",\n }],\n },\n device_installations: {\n scope: \"farm\",\n requiredCapability: \"device:read\",\n examples: [{\n title: \"Devices currently installed per plot\",\n sql: \"select farm_code, plot_code, device_type, count(*) as devices from analytics.device_installations where removed_at is null group by 1, 2, 3 order by 1, 2, 3\",\n }],\n },\n unit_conversion: {\n scope: \"reference\",\n requiredCapability: \"farm:read\",\n examples: [{\n title: \"Recognized units\",\n sql: \"select unit, dimension, base_factor from analytics.unit_conversion order by dimension, base_factor\",\n }],\n },\n};\n\n/**\n * Scalar value that can be bound to one `$n` placeholder.\n *\n * @public\n */\nexport const analyticsQueryParameterSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n]);\n\n/**\n * Request contract for the `query_analytics_sql` tool.\n *\n * @public\n */\nexport const queryAnalyticsSqlRequestSchema = z.object({\n sql: z.string().trim().min(1).max(ANALYTICS_SQL_MAX_BYTES).describe(\n \"One PostgreSQL SELECT over analytics datasets; use $1..$n placeholders for values supplied in parameters\",\n ),\n parameters: z.array(analyticsQueryParameterSchema).max(ANALYTICS_QUERY_MAX_PARAMETERS).optional().describe(\n \"Values bound to $1..$n in order; strings, numbers, booleans, or null\",\n ),\n maxRows: z.number().int().min(1).max(ANALYTICS_QUERY_MAX_ROWS).default(ANALYTICS_QUERY_DEFAULT_ROWS).optional().describe(\n `Row ceiling for this call, at most ${ANALYTICS_QUERY_MAX_ROWS}; the result flags truncation`,\n ),\n}).strict();\nexport type QueryAnalyticsSqlRequest = z.infer<typeof queryAnalyticsSqlRequestSchema>;\n\n/**\n * Org and Farm coverage a result was computed under.\n *\n * @remarks\n * Farm codes describe the outer access boundary. Each referenced dataset also\n * reports its effective Farm coverage after the action check. Reference and\n * mixed datasets keep their own non-Farm rules; scope never proves data completeness.\n *\n * @public\n */\nexport const analyticsScopeSchema = z.object({\n orgCode: z.string().nullable(),\n farmCodes: z.array(z.string()),\n datasets: z.array(z.object({\n name: z.string(),\n scope: z.enum([\"farm\", \"mixed\", \"reference\"]),\n /** Null for reference datasets, whose access does not depend on a Farm. */\n farmCodes: z.array(z.string()).nullable(),\n }).strict()),\n}).strict();\nexport type AnalyticsScope = z.infer<typeof analyticsScopeSchema>;\n\n/**\n * One output column of an analytics query.\n *\n * @public\n */\nexport const analyticsColumnSchema = z.object({\n name: z.string().min(1),\n type: z.string().min(1),\n}).strict();\n\n/**\n * Result contract for one `query_analytics_sql` execution.\n *\n * @public\n */\nexport const analyticsQueryResultSchema = z.object({\n /** Execution identifier for tracing; it never names a saved query. */\n queryId: z.string().uuid(),\n executedAt: z.string().datetime(),\n durationMs: z.number().int().min(0),\n effectiveScope: analyticsScopeSchema,\n columns: z.array(analyticsColumnSchema),\n rows: z.array(z.record(z.string(), jsonValueSchema)),\n rowCount: z.number().int().min(0),\n /** Whether more rows existed beyond the row ceiling. */\n truncated: z.boolean(),\n}).strict();\nexport type AnalyticsQueryResult = z.infer<typeof analyticsQueryResultSchema>;\n\n/**\n * Request contract for the `describe_analytics` tool.\n *\n * @public\n */\nexport const describeAnalyticsRequestSchema = z.object({\n datasets: z.array(z.string().trim().min(1)).max(50).optional().describe(\n \"Dataset names to describe in full; omit for the compact catalog\",\n ),\n}).strict();\nexport type DescribeAnalyticsRequest = z.infer<typeof describeAnalyticsRequestSchema>;\n\n/**\n * One documented column of a dataset.\n *\n * @public\n */\nexport const analyticsDatasetColumnSchema = z.object({\n name: z.string().min(1),\n type: z.string().min(1),\n description: z.string().nullable(),\n}).strict();\n\n/**\n * One dataset entry in discovery.\n *\n * @remarks\n * Columns and examples are present only for datasets the caller asked to\n * describe in full.\n *\n * @public\n */\nexport const analyticsDatasetSchema = z.object({\n name: z.string().min(1),\n qualifiedName: z.string().min(1),\n description: z.string().nullable(),\n requiredCapability: z.string().min(1),\n columns: z.array(analyticsDatasetColumnSchema).optional(),\n examples: z.array(z.object({ title: z.string().min(1), sql: z.string().min(1) }).strict()).optional(),\n}).strict();\nexport type AnalyticsDataset = z.infer<typeof analyticsDatasetSchema>;\n\n/**\n * Response contract for the `describe_analytics` tool.\n *\n * @public\n */\nexport const describeAnalyticsResponseSchema = z.object({\n generatedAt: z.string().datetime(),\n effectiveScope: analyticsScopeSchema,\n /** Supported SQL subset and limits, phrased for the model. */\n sqlRules: z.string().min(1),\n datasets: z.array(analyticsDatasetSchema),\n}).strict();\nexport type DescribeAnalyticsResponse = z.infer<typeof describeAnalyticsResponseSchema>;\n", "import { z } from \"zod\";\nimport {\n ANALYTICS_QUERY_DEFAULT_ROWS,\n ANALYTICS_QUERY_MAX_PARAMETERS,\n ANALYTICS_QUERY_MAX_ROWS,\n ANALYTICS_SQL_MAX_BYTES,\n analyticsColumnSchema,\n} from \"./analytics.js\";\n\n/** Stable query key within one immutable bundle; safe in a single URL segment. */\nexport const genAppQueryKeySchema = z.string().min(1).max(100).regex(/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/);\n\n/** Supported wire parameter types; registration supplies these exact PostgreSQL types. */\nexport const genAppParameterTypeSchema = z.enum([\n \"text\", \"boolean\", \"integer\", \"bigint\", \"numeric\", \"date\", \"timestamptz\", \"uuid\",\n]);\n\n/** One positional parameter declaration, corresponding to `$1`, `$2`, and so on. */\nexport const genAppParameterSchema = z.object({\n name: genAppQueryKeySchema,\n type: genAppParameterTypeSchema,\n nullable: z.boolean().default(false),\n}).strict();\nexport type GenAppParameter = z.infer<typeof genAppParameterSchema>;\n\n/** Source-owned SQL contract reviewed together with the frontend build. */\nexport const genAppQueryDeclarationSchema = z.object({\n key: genAppQueryKeySchema,\n sql: z.string().min(1).max(ANALYTICS_SQL_MAX_BYTES),\n parameters: z.array(genAppParameterSchema).max(ANALYTICS_QUERY_MAX_PARAMETERS),\n maxRows: z.number().int().min(1).max(ANALYTICS_QUERY_MAX_ROWS).default(ANALYTICS_QUERY_DEFAULT_ROWS),\n}).strict().refine((query) => new Set(query.parameters.map((parameter) => parameter.name)).size === query.parameters.length, {\n message: \"Parameter names must be unique within a query\",\n});\nexport type GenAppQueryDeclaration = z.infer<typeof genAppQueryDeclarationSchema>;\n\n/** Complete query inventory supplied with a build; an empty inventory is valid. */\nexport const genAppQueryManifestSchema = z.object({\n queries: z.array(genAppQueryDeclarationSchema).max(100),\n}).strict().refine((manifest) => new Set(manifest.queries.map((query) => query.key)).size === manifest.queries.length, {\n message: \"Query keys must be unique within a bundle\",\n});\nexport type GenAppQueryManifest = z.infer<typeof genAppQueryManifestSchema>;\n\n/** Host-resolved registration record; SQL is never returned by viewer routes. */\nexport const genAppRegisteredQuerySchema = genAppQueryDeclarationSchema.safeExtend({\n datasets: z.array(z.string().min(1)),\n requiredCapabilities: z.array(z.string().min(1)),\n columns: z.array(analyticsColumnSchema),\n});\nexport type GenAppRegisteredQuery = z.infer<typeof genAppRegisteredQuerySchema>;\n\n/** Explicit execution mode; the presence of a cookie never selects this value. */\nexport const genAppViewingModeSchema = z.enum([\"preview\", \"review\", \"public\"]);\nexport type GenAppViewingMode = z.infer<typeof genAppViewingModeSchema>;\n\n/** Bounded single-request upload; keeps the Worker memory footprint predictable. */\nexport const GEN_APP_MAX_ARTIFACT_BYTES = 8 * 1024 * 1024;\n/** JSON/base64 overhead plus the bounded SQL manifest. */\nexport const GEN_APP_MAX_UPLOAD_BODY_BYTES = 16 * 1024 * 1024;\n/** Source manifest stays outside `dist` and browser-served files. */\nexport const GEN_APP_QUERY_MANIFEST_FILE = \"mote.queries.json\";\n\n/** Canonical relative object path; reject hidden files, escaping and URL ambiguity. */\nexport const genAppArtifactPathSchema = z.string().min(1).max(512)\n .regex(/^[a-zA-Z0-9_-][a-zA-Z0-9_.-]*(\\/[a-zA-Z0-9_-][a-zA-Z0-9_.-]*)*$/)\n .refine((path) => path.split(\"/\").at(-1) !== GEN_APP_QUERY_MANIFEST_FILE, \"SQL manifests cannot be served\");\n\n/** Exact frontend bytes transported to the host; never an arbitrary R2 key. */\nexport const genAppArtifactFileSchema = z.object({\n path: genAppArtifactPathSchema,\n // A repeated four-character group overflows the RegExp stack on valid multi-MiB builds.\n base64: z.string().max(Math.ceil(GEN_APP_MAX_ARTIFACT_BYTES / 3) * 4)\n .refine((value) => value.length % 4 === 0 && /^[A-Za-z0-9+/]*={0,2}$/.test(value), \"Invalid base64\"),\n}).strict();\nexport type GenAppArtifactFile = z.infer<typeof genAppArtifactFileSchema>;\n\n/** Ready-bundle registration, signed by the active sandbox instance. */\nexport const genAppBundleUploadSchema = z.object({\n appId: z.uuid(),\n bundleVersionId: z.uuid(),\n commit: z.string().regex(/^[a-f0-9]{40}$/),\n manifest: genAppQueryManifestSchema,\n files: z.array(genAppArtifactFileSchema).min(1).max(512),\n}).strict();\nexport type GenAppBundleUpload = z.infer<typeof genAppBundleUploadSchema>;\n\n/** Non-secret integration receipt safe to retain in the sandbox Git directory. */\nexport const genAppBundleReceiptSchema = z.object({\n appId: z.uuid(),\n bundleVersionId: z.uuid(),\n commit: z.string().regex(/^[a-f0-9]{40}$/),\n artifactDigest: z.string().regex(/^[a-f0-9]{64}$/),\n queryManifestDigest: z.string().regex(/^[a-f0-9]{64}$/),\n}).strict();\nexport type GenAppBundleReceipt = z.infer<typeof genAppBundleReceiptSchema>;\n", "import { z } from \"zod\";\n\n/**\n * Maximum UTF-8 size of one user-authored channel message.\n *\n * @public\n */\nexport const MAX_CHANNEL_MESSAGE_BYTES = 1_000_000;\n\n/**\n * Stable error copy returned when a channel message exceeds its byte limit.\n *\n * @public\n */\nexport const CHANNEL_MESSAGE_TOO_LARGE_MESSAGE = \"Message exceeds the 1 MB limit.\";\n\n/**\n * Addressable actor returned by the trusted channel-principal directory.\n *\n * @remarks\n * A channel stores only principal ids and kinds. Agent ownership is included\n * here because delivery must resolve the owner's sandbox authority without\n * trusting browser-supplied identity metadata.\n *\n * @public\n */\nexport interface ChannelPrincipal {\n /** Stable principal id. */\n principalId: string;\n /** Actor kind used for authorship and agent delivery. */\n kind: \"user\" | \"agent\";\n /** Human-readable label used by mention pickers. */\n displayName: string;\n /** Immutable owner of an agent principal. */\n ownerUserId?: string;\n}\n\n/** Strict channel-principal projection schema. */\nexport const channelPrincipalSchema = z.object({\n principalId: z.string().trim().uuid(),\n kind: z.enum([\"user\", \"agent\"]),\n displayName: z.string().trim().min(1).max(160),\n ownerUserId: z.string().trim().uuid().optional(),\n}).strict().superRefine((value, context) => {\n if ((value.kind === \"agent\") !== (value.ownerUserId !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"ownerUserId\"],\n message: \"ownerUserId is required exactly for agent principals\",\n });\n }\n}) as z.ZodType<ChannelPrincipal>;\n\n/** Strict list response shared by API, Edge, and browser adapters. */\nexport const channelPrincipalListSchema = z.object({\n principals: z.array(channelPrincipalSchema),\n}).strict();\n\n/**\n * Existing channel event types that describe user-visible channel activity.\n *\n * @remarks\n * High-frequency content deltas and payload-dependent events are deliberately\n * absent. Channel Index projections carry only one of these stable types\n * plus its producer timestamp, leaving presentation decisions to clients.\n *\n * @public\n */\nexport const CHANNEL_ACTIVITY_EVENT_TYPES = [\n \"message.created\",\n \"channel.created\",\n \"channel.archived\",\n \"runtime.process_spawned\",\n \"runtime.process_exited\",\n \"system.error\",\n \"agent_start\",\n \"agent_end\",\n \"agent_settled\",\n \"turn_start\",\n \"turn_end\",\n \"message_start\",\n \"message_end\",\n \"tool_execution_start\",\n \"tool_execution_end\",\n \"compaction_start\",\n \"compaction_end\",\n \"auto_retry_start\",\n \"auto_retry_end\",\n] as const;\n\n/** User-visible event type projected into the Channel Index DO. */\nexport type ChannelActivityEventType = typeof CHANNEL_ACTIVITY_EVENT_TYPES[number];\n\n/**\n * Compact latest activity projected from one Channel DO.\n *\n * @public\n */\nexport interface ChannelActivity {\n /** Channel whose activity changed. */\n channelId: string;\n /** Existing channel event type; no parallel status vocabulary is introduced. */\n type: ChannelActivityEventType;\n /** ISO timestamp emitted with the source channel event. */\n ts: string;\n}\n\n/**\n * Complete activity state sent when a browser attaches to the Channel Index DO.\n *\n * @public\n */\nexport interface ChannelActivitySnapshotFrame {\n /** Snapshot discriminator outside the source channel event vocabulary. */\n type: \"channel.activity_snapshot\";\n /** Latest projected activity for channels that have emitted one. */\n activities: ChannelActivity[];\n}\n\n/** Browser-facing Channel Index stream frame. */\nexport type ChannelActivityStreamFrame = ChannelActivitySnapshotFrame | ChannelActivity;\n\n/**\n * Check whether an existing channel event should enter the activity projection.\n *\n * @param type - Channel event type to inspect.\n * @returns Whether the event is useful without its payload or message content.\n * @public\n */\nexport function isChannelActivityEventType(\n type: string,\n): type is ChannelActivityEventType {\n return (CHANNEL_ACTIVITY_EVENT_TYPES as readonly string[]).includes(type);\n}\n\n/**\n * Host API response authorizing Worker access to one channel.\n *\n * @remarks\n * The Worker passes this context into the Channel Durable Object after the\n * API verifies the browser user and resolves the active Org identity. The\n * shape keeps the direct 1:1 channel path; membership checks live in the DO.\n *\n * @public\n */\nexport interface ChannelAccessContext {\n /** Host-created channel id. */\n channelId: string;\n /** Authenticated user id opening the channel. */\n userId: string;\n /** Active Org id verified by the Edge Worker. */\n orgId: string;\n /** Active Org code used by the sandbox orchestrator. */\n orgCode: string;\n /** Ticket whose resource policy authorized this access, otherwise `null`. */\n ticketId: string | null;\n}\n\n/**\n * Principal kind stored for one durable channel message author.\n *\n * @public\n */\nexport type ChannelMessageAuthorKind = \"user\" | \"agent\";\n\n/**\n * Durable channel row shown in user-facing history.\n *\n * @public\n */\nexport interface ChannelSummary {\n /** Stable channel id used to load the complete message history. */\n id: string;\n /** Principals participating in this non-ticket channel. */\n participantPrincipalIds: string[];\n /** Current durable lifecycle state. */\n status: \"open\" | \"archived\";\n /** First message, used as the channel title. */\n title: string;\n /** ISO timestamp when the channel was created. */\n createdAt: string;\n}\n\n/**\n * One attributed message carried by a channel delivery command.\n *\n * @public\n */\nexport interface ChannelDeliveryMessage {\n /** Stable canonical entry identity. */\n id: string;\n /** Channel-scoped sequence of the delivered message. */\n seq: number;\n /** Host-attested authoring principal id. */\n authorPrincipalId: string;\n /** Principal kind of the author. */\n authorKind: ChannelMessageAuthorKind;\n /** Optional display name rendered as the author label. */\n authorDisplayName?: string;\n /** Complete message body. */\n body: string;\n /** Stable canonical identity of the replied-to message, when any. */\n replyToEntryId?: string;\n /** Structured principals mentioned by this message. */\n mentionedPrincipalIds: string[];\n}\n\n/**\n * Sandbox control command sent to the Sprite-local orchestrator.\n *\n * @remarks\n * `channel.deliver` is the one delivery command: the orchestrator resolves the\n * agent's channel session and either steers the matching live\n * process, queues the delivery, or launches a new process. There is no\n * separate start, follow-up, or rehydrate handshake.\n *\n * @public\n */\nexport type ChannelControlCommand =\n | {\n /** Stable delivery id used as the idempotency key across retries. */\n id: string;\n /** Deliver accepted channel messages to one targeted agent. */\n type: \"channel.deliver\";\n /** Host-created channel id the messages belong to. */\n channelId: string;\n /** Ticket associated with this channel delivery, when any. */\n ticketId?: string;\n /** Immutable `agentic.agent_profile.id` UUID targeted by this delivery. */\n agentId: string;\n /** Orchestrator-attested initiator this launch works for. */\n initiatorUserId: string;\n /** Active Org id used by Edge Org command routes. */\n orgId: string;\n /** Active Org code. */\n orgCode: string;\n /** Persisted delivery behavior selected when the message was accepted. */\n behavior: \"steer\" | \"queue\";\n /** Triggering message plus relevant context messages, oldest first. */\n messages: ChannelDeliveryMessage[];\n /** Raw history range captured by the owning DO for this delivery. */\n timeline: { after: number; through: number };\n }\n | {\n /** Correlation id for host-side request tracing. */\n id: string;\n /** Cancel the active turn for one agent in this channel. */\n type: \"channel.cancel\";\n /** Host-created channel id. */\n channelId: string;\n /** Immutable database-assigned agent id whose turn is cancelled. */\n agentId: string;\n /** Cancel only deliveries at or before this immutable timeline boundary. */\n through: number;\n }\n | {\n /** Correlation identity for this read-only runtime inspection. */\n id: string;\n type: \"channel.inspect\";\n channelId: string;\n }\n | {\n /** Correlation id for host-side request tracing. */\n id: string;\n /** Archive a channel: stop dispatch and cancel pending deliveries; the record is retained. */\n type: \"channel.archive\";\n /** Host-created channel id. */\n channelId: string;\n };\n\n/**\n * Validate one attributed delivery message.\n *\n * @public\n */\nexport const channelDeliveryMessageSchema = z.object({\n id: z.string().uuid(),\n seq: z.number().int().positive(),\n authorPrincipalId: z.string().trim().uuid(),\n authorKind: z.enum([\"user\", \"agent\"]),\n authorDisplayName: z.string().trim().min(1).max(200).optional(),\n body: z.string().min(1),\n replyToEntryId: z.string().uuid().optional(),\n mentionedPrincipalIds: z.array(z.string().trim().uuid()),\n}).strict();\n\nconst commandBaseSchema = z.object({\n id: z.string().min(1),\n channelId: z.string().min(1),\n}).strict();\n\n/**\n * Validate host control commands consumed by the sandbox orchestrator.\n *\n * @public\n */\nexport const channelControlCommandSchema = z.discriminatedUnion(\"type\", [\n commandBaseSchema.extend({\n type: z.literal(\"channel.deliver\"),\n ticketId: z.string().trim().uuid().optional(),\n agentId: z.string().trim().uuid(),\n initiatorUserId: z.string().trim().uuid(),\n orgId: z.string().trim().uuid(),\n orgCode: z.string().trim().min(1),\n behavior: z.enum([\"steer\", \"queue\"]),\n messages: z.array(channelDeliveryMessageSchema).min(1),\n timeline: z.object({ after: z.number().int().nonnegative(), through: z.number().int().nonnegative() }).strict(),\n }),\n commandBaseSchema.extend({\n type: z.literal(\"channel.cancel\"),\n agentId: z.string().trim().uuid(),\n through: z.number().int().nonnegative(),\n }),\n commandBaseSchema.extend({\n type: z.literal(\"channel.inspect\"),\n }),\n commandBaseSchema.extend({\n type: z.literal(\"channel.archive\"),\n }),\n]);\n\n/** Signed evidence of launches and deliveries owned by the current sandbox service. */\nexport const channelRuntimeStateSchema = z.object({\n sessions: z.array(z.object({\n agentId: z.string().uuid(),\n executionId: z.string().uuid(),\n messageIds: z.array(z.string().uuid()),\n }).strict()),\n}).strict();\n\n/** Runtime inspection is meaningful only after startup has removed old process groups. */\nexport type ChannelRuntimeState = z.infer<typeof channelRuntimeStateSchema>;\n", "import { z } from \"zod\";\n\nimport {\n ticketAppReferenceSchema,\n type TicketAppReference,\n} from \"./apps.js\";\n\n/**\n * Fixed ticket status values used by the agentic work schema.\n *\n * @public\n */\nexport const TICKET_STATUSES = [\"waiting\", \"ongoing\", \"intervention\", \"done\"] as const;\n\n/**\n * Stored ticket board status.\n *\n * @public\n */\nexport type TicketStatus = typeof TICKET_STATUSES[number];\n\n/**\n * Lightweight ticket routing tags accepted by the database.\n *\n * @public\n */\nexport const TICKET_SCOPES = [\"code\", \"analysis\", \"qa\", \"docs\"] as const;\n\n/**\n * Ticket work-area tag.\n *\n * @public\n */\nexport type TicketScope = typeof TICKET_SCOPES[number];\n\n/**\n * Legal ticket status transitions (ADR-028, ADR-062).\n *\n * @remarks\n * `ongoing` mirrors a live Drone run and drains only to `waiting`, the single\n * judgment queue: every run's release lands there for Overmind assessment, so\n * `ongoing` never moves straight to `done` or `intervention`. `done` is\n * terminal.\n *\n * @public\n */\nexport const TICKET_TRANSITIONS: readonly (readonly [TicketStatus, TicketStatus])[] = [\n [\"waiting\", \"ongoing\"],\n [\"waiting\", \"intervention\"],\n [\"waiting\", \"done\"],\n [\"ongoing\", \"waiting\"],\n [\"intervention\", \"waiting\"],\n [\"intervention\", \"done\"],\n] as const;\n\n/**\n * Check one ticket status transition against the fixed ADR-028 matrix.\n *\n * @param from - Current board status.\n * @param to - Requested board status.\n * @returns Whether the transition is legal.\n *\n * @public\n */\nexport function isLegalTicketTransition(from: TicketStatus, to: TicketStatus): boolean {\n return TICKET_TRANSITIONS.some(([source, target]) => source === from && target === to);\n}\n\n/**\n * Supported assignee filter for ticket listing.\n *\n * @public\n */\nexport type TicketAssigneeFilter = \"none\";\n\n/**\n * Optional filters accepted by ticket listing routes.\n *\n * @public\n */\nexport interface ListTicketsInput {\n /** Fixed board status to return. */\n status?: TicketStatus;\n /** Assignee filter; `none` returns only unassigned tickets. */\n assignee?: TicketAssigneeFilter;\n}\n\n/**\n * Ticket list response returned by the Org Durable Object read model.\n *\n * @public\n */\nexport interface ListTicketsResult {\n /** Current board projections visible under the requested filters. */\n tickets: TicketBoardProjection[];\n}\n\n/**\n * Authoritative current state returned by the Ticket Durable Object.\n *\n * @public\n */\nexport interface TicketState {\n /** Stable ticket id. */\n id: string;\n /** Principal that initiated the ticket; immutable ticket provenance. */\n initiatorPrincipalId: string;\n /**\n * User whose work this ticket is (ADR-063).\n *\n * @remarks\n * Stamped at creation from the creating agent's owner and immutable; it\n * routes judgment to the owner's Overmind. Null only on tickets created\n * before ADR-063, which stay conversation-driven.\n */\n ownerUserId: string | null;\n /** User-facing ticket title. */\n title: string;\n /** User-facing ticket description. */\n description: string;\n /** Current fixed board status. */\n status: TicketStatus;\n /** Lightweight work-area tags used for routing and filtering. */\n scope: TicketScope[];\n /** Assigned agent id, when routed to a logical agent. */\n assignedAgentId: string | null;\n /** Assigned agent name, when available. */\n assignedAgentName: string | null;\n /** Assigned agent role code, when available. */\n assignedAgentRole: string | null;\n /** Channel whose message caused this ticket, when any; provenance only. */\n originChannelId: string | null;\n /** Message whose content caused this ticket, when any; provenance only. */\n originMessageId: string | null;\n /** Optional generated app this work changes; standalone tickets need no app. */\n app: TicketAppReference | null;\n /** ISO timestamp when the ticket was created. */\n createdAt: string;\n /** ISO timestamp when the ticket last changed. */\n updatedAt: string;\n /**\n * Ticket-local sequence assigned to the latest accepted board mutation.\n *\n * @remarks\n * This is the monotonic latest-wins guard; `updatedAt` cannot order two\n * mutations accepted within the same millisecond.\n */\n seq: number;\n /** ISO timestamp when the ticket completed, when terminal. */\n completedAt: string | null;\n /** ISO timestamp when the ticket was archived, or `null` while board-visible. */\n archivedAt: string | null;\n}\n\n/**\n * Board-facing ticket projection streamed and stored by the Org Durable Object.\n *\n * @remarks\n * Org streams keep board metadata current without carrying ticket-detail\n * history. Opened ticket details read canonical timeline\n * pages independently from the owning Ticket Durable Object.\n *\n * @public\n */\nexport type TicketBoardProjection = TicketState;\n\n/**\n * Browser-facing Org ticket event envelope.\n *\n * @public\n */\nexport type OrgTicketEvent =\n | {\n /** Org that owns this event stream. */\n orgId: string;\n /** Ticket upsert event type. */\n type: \"ticket.created\" | \"ticket.updated\";\n /** ISO timestamp when the ticket projection last changed. */\n ts: string;\n /** Board projection to upsert without ticket-detail timeline records. */\n payload: { ticket: TicketBoardProjection };\n }\n | {\n /** Org that owns this event stream. */\n orgId: string;\n /** Ticket removal event type. */\n type: \"ticket.deleted\";\n /** ISO timestamp when the ticket was removed. */\n ts: string;\n /** Removed ticket id. */\n payload: { ticketId: string };\n };\n\n/**\n * Org-stream frame carrying the complete current board snapshot.\n *\n * @remarks\n * Sent by the Org Durable Object on consumer-socket accept, before the live\n * delta tail (ADR-038). The board is built before the socket is accepted, so\n * no delta can precede its snapshot; consumers replace their board rows\n * wholesale. A reconnect simply receives a fresh snapshot.\n *\n * @public\n */\nexport interface OrgBoardSnapshotFrame {\n /** Frame discriminator for a complete board snapshot. */\n type: \"board.snapshot\";\n /** Known durable timeline totals keyed by ticket id; missing means not yet reported. */\n timelineCounts: Record<string, number>;\n /** Org that owns the board. */\n orgId: string;\n /** Current board projections, newest change first. */\n tickets: TicketBoardProjection[];\n}\n\n/** Independent timeline activity; the high-water mark is both total count and ordering guard. */\nexport interface TicketTimelineCount {\n /** Owning ticket id. */\n ticketId: string;\n /** Total durable entries, excluding streaming updates and duplicate deliveries. */\n highWaterMark: number;\n}\n\n/** Compact count update, independent of ticket metadata and its sequence. */\nexport interface TicketTimelineCountFrame extends TicketTimelineCount {\n /** Count update discriminator. */\n type: \"ticket.timeline_count\";\n /** Org that owns the board. */\n orgId: string;\n}\n\n/**\n * Browser-facing Org board stream frame: snapshot, then live deltas.\n *\n * @public\n */\nexport type OrgBoardStreamFrame = OrgTicketEvent | OrgBoardSnapshotFrame | TicketTimelineCountFrame;\n\n/**\n * Validate a ticket status.\n *\n * @public\n */\nexport const ticketStatusSchema = z.enum(TICKET_STATUSES);\n\n/**\n * Validate a ticket scope tag.\n *\n * @public\n */\nexport const ticketScopeSchema = z.enum(TICKET_SCOPES);\n\n/**\n * Shared field shape between the board projection and authoritative ticket state.\n */\nconst ticketBoardProjectionShape = {\n id: z.string().trim().uuid(),\n initiatorPrincipalId: z.string().trim().uuid(),\n // Missing on pre-ADR-063 rows; defaulted so stored legacy state parses.\n ownerUserId: z.string().trim().uuid().nullable().default(null),\n title: z.string(),\n description: z.string(),\n status: ticketStatusSchema,\n scope: z.array(ticketScopeSchema),\n assignedAgentId: z.string().trim().uuid().nullable(),\n assignedAgentName: z.string().nullable(),\n assignedAgentRole: z.string().nullable(),\n originChannelId: z.string().trim().uuid().nullable(),\n originMessageId: z.string().trim().uuid().nullable(),\n app: ticketAppReferenceSchema.nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n seq: z.number().int().positive(),\n completedAt: z.string().nullable(),\n archivedAt: z.string().nullable(),\n} as const;\n\n/**\n * Validate the board-facing ticket projection.\n *\n * @public\n */\nexport const ticketBoardProjectionSchema = z.object(ticketBoardProjectionShape) as z.ZodType<TicketBoardProjection>;\n\n/**\n * Validate authoritative ticket state.\n *\n * @public\n */\nexport const ticketStateSchema = ticketBoardProjectionSchema;\n\n/** Domain recovery is independent of timeline recovery and its durable sequence. */\nexport const ticketDetailSnapshotSchema = z.object({ ticket: ticketStateSchema }).strict();\n/** Authoritative ticket fields loaded during DO state recovery. */\nexport type TicketDetailSnapshot = z.infer<typeof ticketDetailSnapshotSchema>;\n", "import { z } from \"zod\";\n\n/** Native Pi or host event. Unknown properties remain part of the canonical payload. */\nexport const timelinePayloadSchema = z.object({ type: z.string().min(1) }).passthrough();\n\n/** Small host-attested envelope, independent of provider and Pi content-block vocabulary. */\nexport const timelineRecordSchema = z.object({\n /** Stable record ID; active updates reserve their eventual message_end record ID. */\n id: z.string().uuid(),\n /** Stable identity for this producer delivery, preserved across retransmission. */\n producerEventId: z.string().uuid(),\n /** Payload origin; host events must not impersonate Pi events. */\n source: z.enum([\"pi\", \"mote\"]),\n /** Attested author, or null for a system action without a principal. */\n authorPrincipalId: z.string().uuid().nullable(),\n /** Agent emitting the event, independent of its ticket execution. */\n agentId: z.string().uuid().nullable(),\n /** Concrete agent execution identity; null for user/system facts and older channel records. */\n executionId: z.string().uuid().nullable(),\n /** Pi session identity and installed version, when this record originates in Pi. */\n piSessionId: z.string().nullable(),\n piVersion: z.string().nullable(),\n /** Message/reply/action relationship, without introducing a Mote turn ID. */\n relatedEntryId: z.string().uuid().nullable(),\n /** Acceptance timestamp for display; never used to recover ordering. */\n createdAt: z.string().datetime(),\n /** Unmodified Pi or Mote event, including unknown nested fields. */\n payload: timelinePayloadSchema,\n}).strict();\n\n/** Producer record or latest active update before durable sequence assignment. */\nexport type TimelineRecord = z.infer<typeof timelineRecordSchema>;\n\n/** Durable timeline entry. Live updates never allocate a durable sequence. */\nexport const timelineEntrySchema = timelineRecordSchema.extend({\n /** Monotonic durable position within one channel or ticket-work stream. */\n seq: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),\n});\n\n/** A retained record with its original per-stream durable sequence. */\nexport type TimelineEntry = z.infer<typeof timelineEntrySchema>;\n\n/** Scope keeps conversations/comments separate from ticket execution work. */\nexport const timelineScopeSchema = z.object({\n orgId: z.string().uuid(),\n kind: z.enum([\"channel\", \"ticket\"]),\n id: z.string().uuid(),\n}).strict();\n\n/** Authenticated owner of one independently ordered timeline. */\nexport type TimelineScope = z.infer<typeof timelineScopeSchema>;\n\n/** Bounded history page at a fixed durable snapshot barrier. */\nexport const timelinePageSchema = z.object({\n entries: z.array(timelineEntrySchema),\n cursor: z.number().int().nonnegative(),\n highWaterMark: z.number().int().nonnegative(),\n hasMore: z.boolean(),\n}).strict();\n\n/** Forward history page used by agent context reads and host storage recovery. */\nexport type TimelinePage = z.infer<typeof timelinePageSchema>;\n\n/** A contiguous browser window; context seeds rendering without claiming loaded history. */\nexport const timelineWindowSchema = z.object({\n entries: z.array(timelineEntrySchema),\n /** Exclusive lower and inclusive upper positions actually covered by this window. */\n after: z.number().int().nonnegative(),\n through: z.number().int().nonnegative(),\n /** Fixed subscription boundary, independent of the window's position. */\n highWaterMark: z.number().int().nonnegative(),\n /** Earlier lifecycle facts and tool starts required to interpret this window. */\n context: z.array(timelineEntrySchema),\n}).strict();\n\n/** Raw browser history plus its explicit coverage and presentation context. */\nexport type TimelineWindow = z.infer<typeof timelineWindowSchema>;\n\n/**\n * Decide retention without changing a payload.\n * @param record - Native event and its host-attested origin.\n * @returns True only for Pi streaming updates; all other timeline events are retained.\n */\nexport function isTimelineUpdate(record: Pick<TimelineRecord, \"source\" | \"payload\">): boolean {\n return record.source === \"pi\" && record.payload.type === \"message_update\";\n}\n\n/** Live ordering belongs to one DO incarnation, independently of durable cursors. */\nconst timelineDeliveryOrder = { epoch: z.string().uuid(), sequence: z.number().int().nonnegative() };\n\n/** Live frames validate the envelope while retaining the complete native payload. */\nexport const timelineDeliverySchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"timeline.update\"), ...timelineDeliveryOrder, record: timelineRecordSchema }).strict(),\n z.object({ type: z.literal(\"timeline.entry\"), ...timelineDeliveryOrder, record: timelineEntrySchema }).strict(),\n]);\n\n/** Durable entry or temporary accumulated partial delivered live. */\nexport type TimelineDelivery = z.infer<typeof timelineDeliverySchema>;\n\n/** Subscription barrier with an initial window, followed by live deliveries. */\nexport const timelineFrameSchema = z.union([\n timelineDeliverySchema,\n // A surviving socket needs only new ordering metadata after DO hibernation.\n z.object({\n type: z.literal(\"timeline.sync\"), ...timelineDeliveryOrder,\n highWaterMark: z.number().int().nonnegative(),\n }).strict(),\n z.object({\n type: z.literal(\"timeline.snapshot\"), ...timelineDeliveryOrder,\n highWaterMark: z.number().int().nonnegative(),\n updates: z.array(timelineDeliverySchema),\n window: timelineWindowSchema,\n }).strict(),\n]);\n\n/** Lossless browser protocol, including initial partials and metadata-only resynchronization. */\nexport type TimelineFrame = z.infer<typeof timelineFrameSchema>;\n\n/** Parent metadata projected before a channel's first timeline batch. */\nexport const timelineChannelMetadataSchema = z.object({\n ownerPrincipalId: z.string().uuid().nullable(),\n ticketId: z.string().uuid().nullable(),\n memberPrincipalIds: z.array(z.string().uuid()),\n}).strict().refine((value) => (value.ownerPrincipalId === null) !== (value.ticketId === null), {\n message: \"A channel has exactly one owner or ticket\",\n});\n\n/** HMAC-attested database principal; clients cannot call these internal APIs directly. */\nconst timelineAccessSchema = z.object({\n scope: timelineScopeSchema,\n principalId: z.string().uuid(),\n principalKind: z.enum([\"user\", \"agent\"]),\n}).strict();\n\n/** Internal durable-drain batch; the API commits the entire ordered batch atomically. */\nexport const timelinePersistRequestSchema = timelineAccessSchema.extend({\n entries: z.array(timelineEntrySchema).min(1).max(100),\n channel: timelineChannelMetadataSchema.optional(),\n}).refine((value) => value.scope.kind === \"channel\" || value.channel === undefined, {\n message: \"Ticket work cannot project a channel parent\",\n});\n\n/** Internal page request used by DO recovery and future context reads. */\nexport const timelineReadRequestSchema = timelineAccessSchema.extend({\n after: z.number().int().nonnegative().optional(),\n limit: z.number().int().min(1).max(100).optional(),\n through: z.number().int().nonnegative().optional(),\n});\n\n/** Host-attested persistence command. */\nexport type TimelinePersistRequest = z.infer<typeof timelinePersistRequestSchema>;\n/** Host-attested recovery/context command. */\nexport type TimelineReadRequest = z.infer<typeof timelineReadRequestSchema>;\n\n/**\n * Build the envelope for a host-observed fact, without a Pi-shaped reconstruction.\n * @param payload - Host event with its original, domain-owned fields.\n * @param identity - Attested author, agent when applicable, and stable retry identity.\n * @returns Durable host record before the owning DO assigns its sequence.\n */\nexport function createHostTimelineRecord(\n payload: TimelineRecord[\"payload\"],\n identity: {\n id?: string;\n authorPrincipalId: string | null;\n agentId?: string | null;\n createdAt?: string;\n },\n): TimelineRecord {\n const id = identity.id ?? crypto.randomUUID();\n return {\n id, producerEventId: id, source: \"mote\",\n authorPrincipalId: identity.authorPrincipalId, agentId: identity.agentId ?? null,\n executionId: null, piSessionId: null, piVersion: null, relatedEntryId: null,\n createdAt: identity.createdAt ?? new Date().toISOString(), payload,\n };\n}\n", "import { z } from \"zod\";\nimport { timelineEntrySchema } from \"./message-timeline.js\";\n\n/** Small authored records supplement the raw timeline without duplicating tool activity. */\nexport const WORKLOG_TYPES = [\"worklog.decision\", \"worklog.handoff\", \"worklog.guide\"] as const;\n/** Bounded prose keeps briefing useful as model context. @param max - Maximum UTF-16 string length. */\nconst text = (max: number) => z.string().trim().min(1).max(max);\n\n/** A consequential choice and the reason later agents should preserve it. */\nexport const ticketDecisionSchema = z.object({ choice: text(1024), rationale: text(2048) }).strict();\n/** One assignment's results; unfinished work is a valid handoff. References point to evidence, not copied logs. */\nexport const ticketHandoffSchema = z.object({\n results: text(2048), validation: text(1024), remainingWork: text(1024),\n references: z.array(text(512)).max(8).default([]),\n}).strict();\n/** Overmind advice is passive and never starts or steers a Pi turn. */\nexport const ticketGuideSchema = z.object({ message: text(2048) }).strict();\n/** Canonical discriminator lives in the payload and is indexed by the timeline store. */\nexport const ticketWorklogPayloadSchema = z.discriminatedUnion(\"type\", [\n ticketDecisionSchema.extend({ type: z.literal(\"worklog.decision\") }),\n ticketHandoffSchema.extend({ type: z.literal(\"worklog.handoff\") }),\n ticketGuideSchema.extend({ type: z.literal(\"worklog.guide\") }),\n]);\n/** Original identity and sequence are retained in compact worklog reads. */\nexport const ticketWorklogEntrySchema = timelineEntrySchema.extend({\n source: z.literal(\"mote\"), payload: ticketWorklogPayloadSchema,\n});\nexport type TicketWorklogPayload = z.infer<typeof ticketWorklogPayloadSchema>;\n\n/** Stable filtered pagination; execution filtering requires the author for the existing work index. */\nexport const ticketWorklogReadSchema = z.object({\n after: z.number().int().safe().nonnegative().default(0),\n through: z.number().int().safe().nonnegative().optional(),\n limit: z.number().int().min(1).max(20).default(8),\n executionId: z.string().uuid().optional(),\n agentId: z.string().uuid().optional(),\n}).strict().refine(value => Boolean(value.executionId) === Boolean(value.agentId), {\n message: \"executionId and agentId must be supplied together\",\n});\nexport type TicketWorklogRead = z.infer<typeof ticketWorklogReadSchema>;\n\n/** Host-only command envelope; agent-facing commands cannot supply attribution. */\nexport const ticketWorklogWriteSchema = z.object({\n commandId: z.string().uuid(), agentId: z.string().uuid(), executionId: z.string().uuid(),\n ownerUserId: z.string().uuid(),\n authority: z.enum([\"overmind\", \"drone\"]),\n assignmentTicketId: z.string().uuid().optional(),\n record: ticketWorklogPayloadSchema,\n}).strict();\n", "import { z } from \"zod\";\n\n/** Reserved system labels cannot be allocated to an Org in any environment. */\nexport const RESERVED_ORG_CODES: readonly string[] = [\n \"www\", \"api\", \"admin\", \"edge\", \"auth\", \"mcp\", \"gateway\", \"app\", \"apps\",\n \"core\", \"dev\", \"staging\", \"mqtt\", \"cf-bounce\",\n];\n\n/** Canonical lowercase ASCII format accepted for a confirmed Org Code. */\nexport const orgCodeSchema = z.string()\n .min(2)\n .max(63)\n .regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)\n .refine((code) => !RESERVED_ORG_CODES.includes(code), \"Org code is reserved for platform routing\");\n\n/**\n * Public registration payload for one new Org Application.\n *\n * @remarks\n * Mobile is required contact information only. This contract deliberately has\n * no mobile-verification or mobile-login field; email remains the sole v1\n * verification and login identifier.\n *\n * Registration deliberately carries no password. The Login Identity is created\n * without a credential and the password is chosen at email verification\n * ({@link orgApplicationEmailVerificationSchema}), so the owner of the email\n * address, not whoever submitted the form, picks the credential.\n *\n * @public\n */\nexport const orgApplicationRegistrationSchema = z.object({\n applicantName: z.string().trim().min(1).max(160),\n email: z.string().trim().toLowerCase().email().max(320),\n mobile: z.string().trim().regex(/^\\+[1-9]\\d{7,14}$/),\n organizationName: z.string().trim().min(1).max(240),\n termsAccepted: z.literal(true),\n termsVersion: z.string().trim().min(1).max(80),\n}).strict();\n\n/** Validated public registration payload. */\nexport type OrgApplicationRegistration = z.infer<typeof orgApplicationRegistrationSchema>;\n\n/**\n * Email verification submission that consumes the verification token and sets\n * the Login Identity's first password.\n *\n * @remarks\n * The token proves control of the email address, which is the only login\n * identifier, so the same transaction may verify the email, set the credential,\n * submit the application for review, and issue the Applicant Session.\n *\n * @public\n */\nexport const orgApplicationEmailVerificationSchema = z.object({\n token: z.string().trim().regex(/^[A-Za-z0-9_-]{32,256}$/),\n password: z.string().min(8).max(256),\n}).strict();\n\n/** Validated email verification submission carrying the chosen password. */\nexport type OrgApplicationEmailVerification = z.infer<\n typeof orgApplicationEmailVerificationSchema\n>;\n\n/**\n * Request for a fresh verification email.\n *\n * @remarks\n * The response never reveals whether the address is known, so the payload\n * carries the address alone and no identity or application reference.\n *\n * @public\n */\nexport const emailVerificationResendSchema = z.object({\n email: z.string().trim().toLowerCase().email().max(320),\n}).strict();\n\n/** Validated request for a fresh verification email. */\nexport type EmailVerificationResend = z.infer<typeof emailVerificationResendSchema>;\n\n/**\n * What the verification page shows before the token is consumed.\n *\n * @remarks\n * The preview confirms which address is being verified and for which\n * organization. The strict object keeps identity and application identifiers\n * out of a surface reachable with an unconsumed token alone.\n *\n * @public\n */\nexport const emailVerificationPreviewSchema = z.object({\n email: z.string().email(),\n organizationName: z.string().trim().min(1).max(240),\n}).strict();\n\n/** Validated verification preview shown before the token is consumed. */\nexport type EmailVerificationPreview = z.infer<typeof emailVerificationPreviewSchema>;\n\n/**\n * Applicant-visible progress stages for an Org Application.\n *\n * @remarks\n * These stages describe what the Applicant can do or expect next. They are\n * intentionally separate from internal review decisions, and Postgres holds no\n * provisioning run state to derive a failure stage from: an Org that is not yet\n * active is simply `provisioning` until a sandbox is published.\n *\n * @public\n */\nexport const applicantApplicationStageSchema = z.enum([\n \"verify_email\",\n \"under_review\",\n \"complete_org_setup\",\n \"provisioning\",\n \"ready\",\n \"rejected\",\n \"reset\",\n]);\n\n/**\n * Safe application progress returned to an authenticated Applicant.\n *\n * @remarks\n * The strict object boundary prevents internal review notes and provisioning\n * diagnostics from being added accidentally to the Applicant API.\n *\n * @public\n */\nexport const applicantApplicationProjectionSchema = z.object({\n applicationId: z.string().uuid(),\n organizationName: z.string().trim().min(1).max(240),\n stage: applicantApplicationStageSchema,\n applicantMessage: z.string().trim().min(1).max(2_000).optional(),\n /** Confirmed Org Code, present once the Applicant has chosen it. */\n orgCode: orgCodeSchema.optional(),\n}).strict();\n\n/**\n * Org Code chosen by the Applicant after the Application is approved.\n *\n * @remarks\n * The code is confirmed exactly once and is immutable afterwards. Provisioning\n * runs independently of this submission; whichever branch finishes last\n * activates the Org.\n *\n * @public\n */\nexport const orgCodeSubmissionSchema = z.object({\n orgCode: orgCodeSchema,\n}).strict();\n\n/**\n * Availability verdict for one candidate Org Code.\n *\n * @remarks\n * The probed code is echoed unvalidated so the Applicant UI can report\n * `invalid` for input that `orgCodeSchema` would reject outright, and `taken`\n * only for a well-formed code that another Org already holds.\n *\n * @public\n */\nexport const orgCodeAvailabilitySchema = z.object({\n orgCode: z.string().trim().min(1).max(63),\n availability: z.enum([\"available\", \"invalid\", \"taken\"]),\n}).strict();\n\n/**\n * New Org Application submitted by an identity whose previous Application was\n * reset by Mote staff. Rejection is final and offers no resubmission.\n *\n * @remarks\n * The identity and its verified email are retained, so resubmission carries\n * only the organization name and a fresh terms acceptance and goes straight to\n * review without another email verification.\n *\n * @public\n */\nexport const orgApplicationResubmissionSchema = z.object({\n organizationName: z.string().trim().min(1).max(240),\n termsAccepted: z.literal(true),\n termsVersion: z.string().trim().min(1).max(80),\n}).strict();\n\n/** Applicant-visible progress stage for an Org Application. */\nexport type ApplicantApplicationStage = z.infer<typeof applicantApplicationStageSchema>;\n\n/** Safe Applicant-facing projection of one Org Application. */\nexport type ApplicantApplicationProjection = z.infer<\n typeof applicantApplicationProjectionSchema\n>;\n\n/** Validated Org Code submitted by an Applicant after approval. */\nexport type OrgCodeSubmission = z.infer<typeof orgCodeSubmissionSchema>;\n\n/** Availability verdict returned for one candidate Org Code. */\nexport type OrgCodeAvailability = z.infer<typeof orgCodeAvailabilitySchema>;\n\n/** Validated resubmission payload for a reset Org Application. */\nexport type OrgApplicationResubmission = z.infer<\n typeof orgApplicationResubmissionSchema\n>;\n", "export const EDGE_HMAC_FRESHNESS_MS = 5 * 60 * 1000;\n/** Short replay window for stateless sandbox request verification. */\nexport const SANDBOX_REQUEST_HMAC_FRESHNESS_MS = 60 * 1000;\nexport const EDGE_HMAC_DEFAULT_MAX_NONCES = 10_000;\nexport const SANDBOX_EDGE_HMAC_ALG = \"MOTE-SANDBOX-EDGE-HMAC-SHA256-v1\";\nexport const EDGE_API_HMAC_ALG = \"MOTE-EDGE-API-HMAC-SHA256-v1\";\nexport const SANDBOX_REQUEST_HMAC_ALG = \"MOTE-SANDBOX-REQUEST-HMAC-SHA256-v1\";\nexport const SANDBOX_EDGE_HMAC_HEADERS = {\n alg: \"x-mote-sandbox-edge-alg\",\n timestamp: \"x-mote-sandbox-edge-ts\",\n nonce: \"x-mote-sandbox-edge-nonce\",\n bodyHash: \"x-mote-sandbox-edge-body-sha256\",\n signature: \"x-mote-sandbox-edge-signature\",\n} as const;\nexport const EDGE_API_HMAC_HEADERS = {\n alg: \"x-mote-edge-api-alg\",\n timestamp: \"x-mote-edge-api-ts\",\n nonce: \"x-mote-edge-api-nonce\",\n bodyHash: \"x-mote-edge-api-body-sha256\",\n signature: \"x-mote-edge-api-signature\",\n} as const;\nexport const SANDBOX_REQUEST_HMAC_HEADERS = {\n alg: \"x-mote-sandbox-request-alg\",\n timestamp: \"x-mote-sandbox-request-ts\",\n nonce: \"x-mote-sandbox-request-nonce\",\n bodyHash: \"x-mote-sandbox-request-body-sha256\",\n signature: \"x-mote-sandbox-request-signature\",\n} as const;\nexport const SANDBOX_EDGE_HMAC_HEADER_NAMES = Object.values(SANDBOX_EDGE_HMAC_HEADERS);\nexport const SANDBOX_REQUEST_HMAC_HEADER_NAMES = Object.values(\n SANDBOX_REQUEST_HMAC_HEADERS,\n);\n\nconst SANDBOX_EDGE_HMAC_CONFIG = {\n alg: SANDBOX_EDGE_HMAC_ALG,\n headers: SANDBOX_EDGE_HMAC_HEADERS,\n} as const;\nconst EDGE_API_HMAC_CONFIG = {\n alg: EDGE_API_HMAC_ALG,\n headers: EDGE_API_HMAC_HEADERS,\n} as const;\nconst SANDBOX_REQUEST_HMAC_CONFIG = {\n alg: SANDBOX_REQUEST_HMAC_ALG,\n headers: SANDBOX_REQUEST_HMAC_HEADERS,\n} as const;\n\ntype EdgeHmacConfig =\n | typeof SANDBOX_EDGE_HMAC_CONFIG\n | typeof EDGE_API_HMAC_CONFIG\n | typeof SANDBOX_REQUEST_HMAC_CONFIG;\n\n/**\n * Parsed Mote internal HMAC fields from request headers or query params.\n *\n * @public\n */\nexport interface EdgeHmacFields {\n /** HMAC algorithm marker for wire-format versioning. */\n alg: string;\n /** Unix timestamp in milliseconds generated by the signer. */\n timestamp: string;\n /** Random one-time value used to reject replay inside the freshness window. */\n nonce: string;\n /** Base64url SHA-256 digest of the exact request body. */\n bodyHash: string;\n /** Base64url HMAC-SHA256 signature over the canonical request string. */\n signature: string;\n}\n\n/**\n * Minimal lookup surface for headers, query params, or test fixtures.\n *\n * @public\n */\nexport interface EdgeHmacFieldSource {\n /**\n * Read one HMAC field by its canonical wire name.\n *\n * @param name - Header or query parameter name.\n */\n get(name: string): string | null | undefined;\n}\n\n/**\n * Runtime-owned replay cache used by HMAC verification.\n *\n * @public\n */\nexport interface EdgeHmacNonceStore {\n /**\n * Check whether a timestamp-qualified nonce has already been accepted.\n *\n * @param nonceKey - Timestamp-qualified nonce key.\n * @param timestamp - Request timestamp in unix milliseconds.\n * @param nowMs - Verification time in unix milliseconds.\n */\n isReplay(nonceKey: string, timestamp: number, nowMs: number): boolean;\n\n /**\n * Record a nonce after signature verification succeeds.\n *\n * @param nonceKey - Timestamp-qualified nonce key.\n * @param timestamp - Request timestamp in unix milliseconds.\n * @param nowMs - Verification time in unix milliseconds.\n */\n remember(nonceKey: string, timestamp: number, nowMs: number): void;\n}\n\n/**\n * Configuration for the default in-memory nonce replay cache.\n *\n * @public\n */\nexport interface EdgeHmacMemoryNonceStoreOptions {\n /** Maximum accepted clock skew and nonce retention window. */\n freshnessMs?: number;\n /** Maximum accepted nonce entries retained before oldest-entry eviction. */\n maxEntries?: number;\n}\n\n/**\n * Simple in-memory nonce cache for one runtime process or Worker isolate.\n *\n * @public\n */\nexport class EdgeHmacMemoryNonceStore implements EdgeHmacNonceStore {\n private readonly seen = new Map<string, number>();\n private readonly freshnessMs: number;\n private readonly maxEntries: number;\n\n /**\n * Create a nonce cache with time-based replay semantics and a memory cap.\n *\n * @param options - Freshness window and maximum retained nonce entries.\n */\n constructor(options: EdgeHmacMemoryNonceStoreOptions = {}) {\n this.freshnessMs = normalizePositiveInteger(options.freshnessMs, EDGE_HMAC_FRESHNESS_MS);\n this.maxEntries = normalizePositiveInteger(options.maxEntries, EDGE_HMAC_DEFAULT_MAX_NONCES);\n }\n\n /**\n * Check whether a timestamp-qualified nonce has already been accepted.\n *\n * @param nonceKey - Timestamp-qualified nonce key.\n * @param timestamp - Request timestamp in unix milliseconds.\n * @param nowMs - Verification time in unix milliseconds.\n */\n isReplay(nonceKey: string, timestamp: number, nowMs: number): boolean {\n this.prune(nowMs);\n const seenAt = this.seen.get(nonceKey);\n return seenAt !== undefined && Math.abs(timestamp - seenAt) <= this.freshnessMs;\n }\n\n /**\n * Record a nonce after signature verification succeeds.\n *\n * @param nonceKey - Timestamp-qualified nonce key.\n * @param timestamp - Request timestamp in unix milliseconds.\n */\n remember(nonceKey: string, timestamp: number, nowMs: number): void {\n this.prune(nowMs);\n this.seen.set(nonceKey, timestamp);\n this.pruneOldest();\n }\n\n /**\n * Remove nonce entries that can no longer be replayed.\n *\n * @param nowMs - Current unix milliseconds.\n */\n private prune(nowMs: number): void {\n for (const [key, timestamp] of this.seen.entries()) {\n if (Math.abs(nowMs - timestamp) > this.freshnessMs) {\n this.seen.delete(key);\n }\n }\n }\n\n /**\n * Evict oldest accepted nonces until the cache is under the memory cap.\n */\n private pruneOldest(): void {\n while (this.seen.size > this.maxEntries) {\n const oldest = this.seen.keys().next().value;\n if (typeof oldest !== \"string\") {\n return;\n }\n this.seen.delete(oldest);\n }\n }\n}\n\n/**\n * Input for creating a Mote internal HMAC signature.\n *\n * @public\n */\nexport interface CreateEdgeHmacInput {\n /** HTTP method covered by the signature. */\n method: string;\n /** Request URL whose path/query is covered by the signature. */\n url: URL;\n /** Exact raw request body string. Use an empty string for WebSocket upgrades. */\n body: string;\n /** Shared channel secret for the selected HMAC config. */\n secret: string;\n /** Optional deterministic timestamp used by tests. */\n timestampMs?: number;\n /** Optional deterministic nonce used by tests. */\n nonce?: string;\n}\n\n/**\n * Input for verifying a Mote internal HMAC signature.\n *\n * @public\n */\nexport interface VerifyEdgeHmacInput {\n /** HTTP method covered by the signature. */\n method: string;\n /** Request URL whose path/query is covered by the signature. */\n url: URL;\n /** Exact raw request body string. Use an empty string for WebSocket upgrades. */\n body: string;\n /** Shared channel secret for the selected HMAC config. */\n secret: string | undefined;\n /** Parsed fields from request headers or query params. */\n fields: EdgeHmacFields | null;\n /** Optional replay cache for accepted nonces. */\n nonceStore?: EdgeHmacNonceStore;\n /** Optional deterministic verification time used by tests. */\n nowMs?: number;\n /** Optional freshness window override used by tests. */\n freshnessMs?: number;\n}\n\n/**\n * Read sandbox-edge HMAC fields from headers or query params.\n *\n * @param source - Field reader for sandbox-edge HMAC names.\n * @returns HMAC fields or `null` when any required field is missing.\n */\nexport function readSandboxEdgeHmacFields(source: EdgeHmacFieldSource): EdgeHmacFields | null {\n return readConfiguredHmacFields(source, SANDBOX_EDGE_HMAC_CONFIG);\n}\n\n/**\n * Read edge-to-API HMAC fields from headers or query params.\n *\n * @param source - Field reader for edge-to-API HMAC names.\n * @returns HMAC fields or `null` when any required field is missing.\n */\nexport function readEdgeApiHmacFields(source: EdgeHmacFieldSource): EdgeHmacFields | null {\n return readConfiguredHmacFields(source, EDGE_API_HMAC_CONFIG);\n}\n\n/**\n * Read the proof attached by one trusted sandbox orchestrator.\n *\n * @param source - Header reader for the sandbox-request HMAC names.\n * @returns Complete proof fields, or `null` when any field is absent.\n */\nexport function readSandboxRequestHmacFields(\n source: EdgeHmacFieldSource,\n): EdgeHmacFields | null {\n return readConfiguredHmacFields(source, SANDBOX_REQUEST_HMAC_CONFIG);\n}\n\n/**\n * Create HMAC headers for one sandbox-edge request.\n *\n * @param input - Request URL, method, body, secret, and optional deterministic values.\n * @returns Headers carrying a short-lived sandbox-edge HMAC proof.\n */\nexport async function createSandboxEdgeHmacHeaders(input: CreateEdgeHmacInput): Promise<Record<string, string>> {\n return createConfiguredHmacHeaders(input, SANDBOX_EDGE_HMAC_CONFIG);\n}\n\n/**\n * Create HMAC headers for one edge-to-API request.\n *\n * @param input - Request URL, method, body, secret, and optional deterministic values.\n * @returns Headers carrying a short-lived edge-to-API HMAC proof.\n */\nexport async function createEdgeApiHmacHeaders(input: CreateEdgeHmacInput): Promise<Record<string, string>> {\n return createConfiguredHmacHeaders(input, EDGE_API_HMAC_CONFIG);\n}\n\n/**\n * Sign one complete orchestrator request with its derived sandbox credential.\n *\n * @param input - Exact method, URL, body, and sandbox-bound secret.\n * @returns Versioned headers covering the full request.\n */\nexport async function createSandboxRequestHmacHeaders(\n input: CreateEdgeHmacInput,\n): Promise<Record<string, string>> {\n return createConfiguredHmacHeaders(input, SANDBOX_REQUEST_HMAC_CONFIG);\n}\n\n/**\n * Append sandbox-edge HMAC query params for WebSocket clients that cannot send custom headers.\n *\n * @param url - URL to mutate before the request is sent.\n * @param input - Request method, body, secret, and optional deterministic values.\n */\nexport async function appendSandboxEdgeHmacQuery(\n url: URL,\n input: Omit<CreateEdgeHmacInput, \"url\">,\n): Promise<void> {\n const headers = await createSandboxEdgeHmacHeaders({ ...input, url });\n for (const [key, value] of Object.entries(headers)) {\n url.searchParams.set(key, value);\n }\n}\n\n/**\n * Verify one sandbox-edge HMAC request proof.\n *\n * @param input - Request details, parsed HMAC fields, secret, and optional nonce store.\n * @returns Whether the signature is fresh, non-replayed, and valid.\n */\nexport async function verifySandboxEdgeHmac(input: VerifyEdgeHmacInput): Promise<boolean> {\n return verifyConfiguredHmac(input, SANDBOX_EDGE_HMAC_CONFIG);\n}\n\n/**\n * Verify one edge-to-API HMAC request proof.\n *\n * @param input - Request details, parsed HMAC fields, secret, and optional nonce store.\n * @returns Whether the signature is fresh, non-replayed, and valid.\n */\nexport async function verifyEdgeApiHmac(input: VerifyEdgeHmacInput): Promise<boolean> {\n return verifyConfiguredHmac(input, EDGE_API_HMAC_CONFIG);\n}\n\n/**\n * Verify one orchestrator request against its derived sandbox credential.\n *\n * @param input - Exact received request and the server-derived secret.\n * @returns Whether the proof is fresh and covers the request exactly.\n */\nexport async function verifySandboxRequestHmac(\n input: VerifyEdgeHmacInput,\n): Promise<boolean> {\n return verifyConfiguredHmac({\n ...input,\n freshnessMs: input.freshnessMs ?? SANDBOX_REQUEST_HMAC_FRESHNESS_MS,\n }, SANDBOX_REQUEST_HMAC_CONFIG);\n}\n\n/**\n * Derive one revocable sandbox credential from an environment master key.\n *\n * @remarks\n * The master key remains in the Credential Gateway Worker. Provisioning receives\n * only this derived value, so deleting or replacing a sandbox instance changes\n * its request identity without storing another secret in Postgres.\n *\n * @param environmentMasterKey - Base64url-encoded 256-bit Worker secret.\n * @param sandboxInstanceId - Random UUID assigned to one concrete sandbox instance.\n * @returns Base64url-encoded 256-bit HMAC credential for that instance.\n */\nexport async function deriveSandboxRequestSecret(\n environmentMasterKey: string,\n sandboxInstanceId: string,\n): Promise<string> {\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(sandboxInstanceId)) {\n throw new Error(\"sandboxInstanceId must be a UUID\");\n }\n const masterBytes = base64UrlToBytes(environmentMasterKey);\n if (masterBytes.byteLength !== 32) {\n throw new Error(\"sandbox request master key must contain exactly 32 bytes\");\n }\n const material = await crypto.subtle.importKey(\n \"raw\",\n masterBytes,\n \"HKDF\",\n false,\n [\"deriveBits\"],\n );\n const bits = await crypto.subtle.deriveBits({\n name: \"HKDF\",\n hash: \"SHA-256\",\n salt: new TextEncoder().encode(\"mote-sandbox-request-v1\"),\n info: new TextEncoder().encode(sandboxInstanceId.toLowerCase()),\n }, material, 256);\n return bytesToBase64Url(new Uint8Array(bits));\n}\n\n/**\n * Read configured HMAC fields from a header or query-param source.\n *\n * @param source - Field reader for configured HMAC names.\n * @param config - HMAC header names and algorithm marker.\n * @returns HMAC fields or `null` when any required field is missing.\n */\nfunction readConfiguredHmacFields(\n source: EdgeHmacFieldSource,\n config: EdgeHmacConfig\n): EdgeHmacFields | null {\n const alg = source.get(config.headers.alg)?.trim();\n const timestamp = source.get(config.headers.timestamp)?.trim();\n const nonce = source.get(config.headers.nonce)?.trim();\n const bodyHash = source.get(config.headers.bodyHash)?.trim();\n const signature = source.get(config.headers.signature)?.trim();\n if (!alg || !timestamp || !nonce || !bodyHash || !signature) {\n return null;\n }\n return { alg, timestamp, nonce, bodyHash, signature };\n}\n\n/**\n * Create HMAC headers for one configured internal request.\n *\n * @param input - Request URL, method, body, secret, and optional deterministic values.\n * @param config - HMAC header names and algorithm marker.\n * @returns Headers carrying a short-lived HMAC proof.\n */\nasync function createConfiguredHmacHeaders(\n input: CreateEdgeHmacInput,\n config: EdgeHmacConfig\n): Promise<Record<string, string>> {\n const timestamp = String(input.timestampMs ?? Date.now());\n const nonce = input.nonce ?? createEdgeHmacNonce();\n const bodyHash = await sha256Base64Url(input.body);\n const canonical = createConfiguredHmacCanonicalString({\n config,\n method: input.method,\n pathAndQuery: canonicalConfiguredHmacPathAndQuery(input.url, config),\n timestamp,\n nonce,\n bodyHash,\n });\n return {\n [config.headers.alg]: config.alg,\n [config.headers.timestamp]: timestamp,\n [config.headers.nonce]: nonce,\n [config.headers.bodyHash]: bodyHash,\n [config.headers.signature]: await hmacSha256Base64Url(input.secret, canonical),\n };\n}\n\n/**\n * Verify one configured HMAC request proof.\n *\n * @param input - Request details, parsed HMAC fields, secret, and optional nonce store.\n * @param config - HMAC header names and algorithm marker.\n * @returns Whether the signature is fresh, non-replayed, and valid.\n */\nasync function verifyConfiguredHmac(\n input: VerifyEdgeHmacInput,\n config: EdgeHmacConfig\n): Promise<boolean> {\n const secret = input.secret?.trim();\n const fields = input.fields;\n if (!secret || !fields || fields.alg !== config.alg) {\n return false;\n }\n\n const nowMs = input.nowMs ?? Date.now();\n const freshnessMs = input.freshnessMs ?? EDGE_HMAC_FRESHNESS_MS;\n const timestamp = Number(fields.timestamp);\n if (!Number.isInteger(timestamp) || Math.abs(nowMs - timestamp) > freshnessMs) {\n return false;\n }\n if (fields.bodyHash !== await sha256Base64Url(input.body)) {\n return false;\n }\n\n const nonceKey = createEdgeHmacNonceKey(fields);\n if (input.nonceStore?.isReplay(nonceKey, timestamp, nowMs)) {\n return false;\n }\n\n const canonical = createConfiguredHmacCanonicalString({\n config,\n method: input.method,\n pathAndQuery: canonicalConfiguredHmacPathAndQuery(input.url, config),\n timestamp: fields.timestamp,\n nonce: fields.nonce,\n bodyHash: fields.bodyHash,\n });\n const expected = await hmacSha256Base64Url(secret, canonical);\n if (!constantTimeStringEqual(fields.signature, expected)) {\n return false;\n }\n\n input.nonceStore?.remember(nonceKey, timestamp, nowMs);\n return true;\n}\n\n/**\n * Build the exact string signed by a configured HMAC proof.\n *\n * @param input - HMAC config and canonical request components.\n * @returns Newline-delimited canonical string.\n */\nfunction createConfiguredHmacCanonicalString(input: {\n config: EdgeHmacConfig;\n method: string;\n pathAndQuery: string;\n timestamp: string;\n nonce: string;\n bodyHash: string;\n}): string {\n return [\n input.config.alg,\n input.method.toUpperCase(),\n input.pathAndQuery,\n input.timestamp,\n input.nonce,\n input.bodyHash,\n ].join(\"\\n\");\n}\n\n/**\n * Return path and query with the configured HMAC transport fields removed.\n *\n * @param url - Request URL.\n * @param config - HMAC header names and algorithm marker.\n * @returns Canonical path and query.\n */\nfunction canonicalConfiguredHmacPathAndQuery(\n url: URL,\n config: EdgeHmacConfig\n): string {\n const search = new URLSearchParams(url.search);\n for (const key of Object.values(config.headers)) {\n search.delete(key);\n }\n const query = search.toString();\n return query ? `${url.pathname}?${query}` : url.pathname;\n}\n\n/**\n * Build the replay-cache key for one HMAC request.\n *\n * @param fields - Parsed HMAC request fields.\n * @returns Timestamp-qualified nonce key.\n */\nfunction createEdgeHmacNonceKey(fields: Pick<EdgeHmacFields, \"timestamp\" | \"nonce\">): string {\n return `${fields.timestamp}:${fields.nonce}`;\n}\n\n/**\n * Hash a request body for the HMAC canonical string.\n *\n * @param body - Exact raw request body.\n * @returns Base64url SHA-256 digest.\n */\nasync function sha256Base64Url(body: string): Promise<string> {\n const digest = await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(body));\n return bytesToBase64Url(new Uint8Array(digest));\n}\n\n/**\n * Sign a canonical request string.\n *\n * @param secret - Per-sandbox HMAC secret.\n * @param canonical - Canonical request string.\n * @returns Base64url HMAC-SHA256 signature.\n */\nasync function hmacSha256Base64Url(secret: string, canonical: string): Promise<string> {\n const key = await crypto.subtle.importKey(\n \"raw\",\n new TextEncoder().encode(secret),\n { name: \"HMAC\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n const signature = await crypto.subtle.sign(\"HMAC\", key, new TextEncoder().encode(canonical));\n return bytesToBase64Url(new Uint8Array(signature));\n}\n\n/**\n * Create a random base64url nonce for edge HMAC signing.\n *\n * @param byteLength - Number of random bytes before base64url encoding.\n * @returns Random nonce string.\n */\nfunction createEdgeHmacNonce(byteLength = 18): string {\n const bytes = new Uint8Array(byteLength);\n crypto.getRandomValues(bytes);\n return bytesToBase64Url(bytes);\n}\n\n/**\n * Normalize optional positive integer configuration.\n *\n * @param value - Candidate configuration value.\n * @param fallback - Value used when the candidate is missing or invalid.\n * @returns Positive integer configuration value.\n */\nfunction normalizePositiveInteger(value: number | undefined, fallback: number): number {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0 ? value : fallback;\n}\n\n/**\n * Compare signatures without short-circuiting on the first mismatched byte.\n *\n * @param actual - Signature supplied by the caller.\n * @param expected - Locally computed signature.\n * @returns Whether both signatures match.\n */\nfunction constantTimeStringEqual(actual: string, expected: string): boolean {\n if (actual.length !== expected.length) {\n return false;\n }\n let diff = 0;\n for (let index = 0; index < actual.length; index += 1) {\n diff |= actual.charCodeAt(index) ^ expected.charCodeAt(index);\n }\n return diff === 0;\n}\n\n/**\n * Encode bytes as base64url without padding.\n *\n * @param bytes - Bytes to encode.\n * @returns Base64url string.\n */\nfunction bytesToBase64Url(bytes: Uint8Array): string {\n let binary = \"\";\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return btoa(binary).replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replace(/=+$/u, \"\");\n}\n\n/** Decode strict base64url without permitting ambiguous alphabet variants. */\nfunction base64UrlToBytes(value: string): Uint8Array {\n if (!/^[A-Za-z0-9_-]+$/u.test(value)) {\n throw new Error(\"sandbox request master key must be base64url\");\n }\n const padded = value.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\")\n .padEnd(Math.ceil(value.length / 4) * 4, \"=\");\n const binary = atob(padded);\n return Uint8Array.from(binary, (character) => character.charCodeAt(0));\n}\n", "/**\n * Validate and normalize an absolute HTTP(S) origin.\n *\n * @param value - Candidate origin, with no route, query, fragment, or credentials.\n * @param label - Configuration name included in validation errors.\n * @returns Normalized origin without a trailing slash.\n * @throws When `value` is not a path-free absolute HTTP(S) origin.\n */\nexport function parseHttpOrigin(value: string, label: string): string {\n let parsed: URL;\n try {\n parsed = new URL(value.trim());\n } catch {\n throw new Error(`${label} must contain only an absolute HTTP(S) origin`);\n }\n if (\n ![\"http:\", \"https:\"].includes(parsed.protocol)\n || parsed.username\n || parsed.password\n || parsed.pathname !== \"/\"\n || parsed.search\n || parsed.hash\n ) {\n throw new Error(`${label} must contain only an absolute HTTP(S) origin`);\n }\n return parsed.origin;\n}\n", "import { z } from \"zod\";\n\nimport { orgCodeSchema } from \"./org-onboarding.js\";\n\n/**\n * Canonical, non-secret authority attested by the trusted orchestrator for one\n * agent launch (ADR-061).\n *\n * @remarks\n * The stable agent socket authenticates the `(ownerUserId, agentId)` identity;\n * the orchestrator attests the launch's initiator. No permission snapshot\n * travels with the request: IAM recalculates the agent \u2229 owner \u2229 initiator\n * intersection against current grants on every protected operation.\n * `launchId` is process-lifetime correlation for audit only and carries no\n * authority.\n */\nexport const sandboxAgentAuthoritySchema = z.object({\n orgId: z.uuid(),\n orgCode: orgCodeSchema,\n sandboxInstanceId: z.uuid(),\n sandboxName: z.string().trim().min(1).max(200),\n agentId: z.uuid(),\n ownerUserId: z.uuid(),\n initiatorUserId: z.uuid(),\n launchId: z.uuid(),\n}).strict();\nexport type SandboxAgentAuthority = z.infer<typeof sandboxAgentAuthoritySchema>;\n\n/** MCP invocation forwarded from a credential-free agent process. */\nconst sandboxMcpInvocationSchema = z.object({\n kind: z.literal(\"mcp\"),\n server: z.literal(\"mote\"),\n orgCode: orgCodeSchema,\n payload: z.json(),\n}).strict();\n\n/** Provider invocation forwarded without accepting a caller-selected origin or headers. */\nconst sandboxConnectorInvocationSchema = z.object({\n kind: z.literal(\"connector\"),\n orgCode: orgCodeSchema,\n alias: z.string().trim().min(1).max(100).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/u),\n method: z.enum([\"GET\", \"HEAD\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"]),\n path: z.string().min(1).max(8 * 1_024).startsWith(\"/\"),\n body: z.json().optional(),\n}).strict();\n\n/** Closed operation set accepted at the sandbox-to-Gateway boundary. */\nexport const sandboxInvocationOperationSchema = z.discriminatedUnion(\"kind\", [\n sandboxMcpInvocationSchema,\n sandboxConnectorInvocationSchema,\n]);\nexport type SandboxInvocationOperation = z.infer<typeof sandboxInvocationOperationSchema>;\n\n/** Complete HMAC-covered request envelope sent by one trusted orchestrator. */\nexport const sandboxInvocationEnvelopeSchema = z.object({\n version: z.literal(1),\n sandboxInstanceId: z.uuid(),\n authority: sandboxAgentAuthoritySchema,\n operation: sandboxInvocationOperationSchema,\n}).strict().superRefine((envelope, context) => {\n if (envelope.sandboxInstanceId !== envelope.authority.sandboxInstanceId) {\n context.addIssue({\n code: \"custom\",\n path: [\"sandboxInstanceId\"],\n message: \"sandbox instance does not match the agent authority\",\n });\n }\n if (envelope.operation.orgCode !== envelope.authority.orgCode) {\n context.addIssue({\n code: \"custom\",\n path: [\"operation\", \"orgCode\"],\n message: \"operation Org does not match the agent authority\",\n });\n }\n});\nexport type SandboxInvocationEnvelope = z.infer<typeof sandboxInvocationEnvelopeSchema>;\n", "import { z } from \"zod\";\nimport { timelineFrameSchema, timelineRecordSchema, timelineWindowSchema } from \"./message-timeline.js\";\n\n/** Browser reads are scoped by the authenticated socket, never by a client-supplied ticket ID. */\nexport const timelineReadFrameSchema = z.object({\n type: z.literal(\"timeline.read\"),\n requestId: z.string().uuid(),\n direction: z.enum([\"before\", \"after\"]),\n cursor: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n through: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n}).strict();\n\n/** One explicitly requested older or recovery window. */\nexport type TimelineReadFrame = z.infer<typeof timelineReadFrameSchema>;\n\n/** Page responses do not participate in the live delivery sequence. */\nexport const timelineServerFrameSchema = z.union([\n timelineFrameSchema,\n z.object({ type: z.literal(\"timeline.window\"), requestId: z.string().uuid(), window: timelineWindowSchema }).strict(),\n z.object({ type: z.literal(\"timeline.read-error\"), requestId: z.string().uuid(), error: z.string() }).strict(),\n]);\n\n/** The same producer protocol serves channel and ticket-work timelines. */\nexport const timelineAppendSchema = z.object({\n type: z.literal(\"timeline.append\"),\n record: timelineRecordSchema,\n}).strict();\n\n/** Keep each WebSocket frame below platform limits even for aggregate Pi events. */\nconst PART_CHARACTERS = 64 * 1024;\n\n/**\n * Serialize a timeline frame losslessly, splitting oversized JSON into small frames.\n * @param value - Complete protocol value; payloads remain opaque JSON.\n * @returns Ordered frames to send synchronously on one socket.\n */\nexport function* encodeTimelineFrame(value: unknown): Generator<string> {\n const text = JSON.stringify(value);\n if (text.length <= PART_CHARACTERS) {\n yield text;\n return;\n }\n const transferId = crypto.randomUUID();\n for (let start = 0, part = 0; start < text.length; part++) {\n let end = Math.min(start + PART_CHARACTERS, text.length);\n const last = text.charCodeAt(end - 1);\n if (end < text.length && last >= 0xd800 && last <= 0xdbff) end--;\n yield JSON.stringify({\n type: \"timeline.chunk\", transferId, part,\n content: text.slice(start, end), final: end === text.length,\n });\n start = end;\n }\n}\n\n/**\n * Reassembles one ordered socket's transient transfers. Never store these chunks.\n *\n * @remarks\n * A new socket starts a fresh decoder. Producers retry the complete record until\n * durable acceptance is ACKed, so interrupted transfers need no durable journal.\n */\nexport class TimelineFrameDecoder {\n private transfer: { id: string; parts: string[] } | undefined;\n\n /**\n * Decode one frame, returning undefined while an oversized record is incomplete.\n * @param text - Incoming WebSocket text frame.\n * @returns Original JSON value when complete.\n */\n accept(text: string): unknown {\n const frame: unknown = JSON.parse(text);\n if (!frame || typeof frame !== \"object\" || !(\"type\" in frame) || frame.type !== \"timeline.chunk\") {\n this.transfer = undefined;\n return frame;\n }\n const chunk = frame as Record<string, unknown>;\n if (typeof chunk.transferId !== \"string\" || !Number.isSafeInteger(chunk.part)\n || typeof chunk.content !== \"string\" || chunk.content.length > PART_CHARACTERS\n || typeof chunk.final !== \"boolean\") {\n this.transfer = undefined;\n throw new Error(\"Invalid timeline chunk\");\n }\n if (chunk.part === 0) this.transfer = { id: chunk.transferId, parts: [] };\n const transfer = this.transfer;\n if (!transfer || transfer.id !== chunk.transferId || transfer.parts.length !== chunk.part) {\n this.transfer = undefined;\n throw new Error(\"Incomplete timeline transfer; resend the complete record\");\n }\n transfer.parts.push(chunk.content);\n if (!chunk.final) return undefined;\n this.transfer = undefined;\n return JSON.parse(transfer.parts.join(\"\"));\n }\n}\n", "import {\n access,\n mkdir,\n readFile,\n readdir,\n rmdir,\n writeFile,\n} from \"node:fs/promises\";\nimport { mkdirSync, rmdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\n/** Root-owned cgroup v2 subtree reserved for one Sandbox Orchestrator. */\nexport const DEFAULT_AGENT_CGROUP_ROOT = \"/sys/fs/cgroup/mote/runs\";\n\nconst RUN_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u;\nconst EMPTY_WAIT_TIMEOUT_MS = 5_000;\nconst EMPTY_POLL_INTERVAL_MS = 20;\n\n/** One directory returned from the owned cgroup root. */\nexport interface AgentCgroupEntry {\n /** Directory name below the cgroup root. */\n name: string;\n /** Whether the entry is a direct child cgroup directory. */\n isDirectory: boolean;\n}\n\n/** Minimal cgroupfs operations used by the lifecycle controller. */\nexport interface AgentCgroupFilesystem {\n /** Verify cgroup v2 and create the orchestrator-owned root. */\n ensureRoot(): Promise<void>;\n /** List direct entries below the owned root. */\n list(): Promise<AgentCgroupEntry[]>;\n /** Synchronously create one empty run cgroup before process spawn. */\n create(runId: string): void;\n /** Read whether a run cgroup still contains any process. */\n isPopulated(runId: string): Promise<boolean>;\n /** Kill every process in one run cgroup through `cgroup.kill`. */\n kill(runId: string): Promise<void>;\n /** Remove one empty run cgroup. */\n remove(runId: string): Promise<void>;\n /** Remove a newly created cgroup after a synchronous spawn failure. */\n removeEmpty(runId: string): void;\n}\n\n/** Kernel containment allocated for exactly one run. */\nexport interface AgentRunCgroup {\n /** Control file the fixed root launcher writes before executing agent code. */\n readonly procsPath: string;\n /** Kill any remaining descendants and remove the empty cgroup. */\n terminate(): Promise<void>;\n /** Remove the still-empty cgroup after a synchronous launch failure. */\n abort(): void;\n}\n\n/** Cgroup lifecycle owned by one root Sandbox Orchestrator. */\nexport interface AgentCgroupController {\n /** Reconcile all cgroups left by a previous orchestrator process. */\n prepareRoot(): Promise<void>;\n /** Allocate one new cgroup for a validated run id. */\n open(runId: string): AgentRunCgroup;\n}\n\n/** Options for the production controller and its deterministic contract tests. */\nexport interface CreateLinuxAgentCgroupControllerInput {\n /** Exact cgroup v2 subtree owned by this orchestrator. */\n root?: string;\n /** Optional filesystem boundary used by focused tests. */\n filesystem?: AgentCgroupFilesystem;\n}\n\n/**\n * Create the cgroup v2 controller for agent descendant containment.\n *\n * @param input - Optional owned root and deterministic filesystem boundary.\n * @returns Controller used once at startup and once per agent run.\n */\nexport function createLinuxAgentCgroupController(\n input: CreateLinuxAgentCgroupControllerInput = {},\n): AgentCgroupController {\n const root = input.root ?? DEFAULT_AGENT_CGROUP_ROOT;\n const filesystem = input.filesystem ?? createProductionCgroupFilesystem(root);\n return {\n async prepareRoot() {\n await filesystem.ensureRoot();\n const entries = await filesystem.list();\n for (const entry of entries) {\n if (!entry.isDirectory || !RUN_ID_PATTERN.test(entry.name)) {\n throw new Error(`unexpected entry in agent cgroup root: ${entry.name}`);\n }\n }\n // There is exactly one orchestrator per Sprite and runs are not recovered.\n // Every entry seen before listeners start therefore belongs to the prior\n // orchestrator process and must be drained before accepting new work.\n for (const entry of entries) {\n await drainAndRemove(filesystem, entry.name);\n }\n },\n open(rawRunId) {\n const runId = normalizeRunId(rawRunId);\n filesystem.create(runId);\n let terminalPromise: Promise<void> | undefined;\n let aborted = false;\n return {\n procsPath: join(root, runId, \"cgroup.procs\"),\n terminate() {\n if (aborted) return Promise.resolve();\n terminalPromise ??= drainAndRemove(filesystem, runId);\n return terminalPromise;\n },\n abort() {\n if (terminalPromise || aborted) return;\n filesystem.removeEmpty(runId);\n aborted = true;\n },\n };\n },\n };\n}\n\n/** Kill remaining descendants, observe emptiness, and remove one cgroup. */\nasync function drainAndRemove(\n filesystem: AgentCgroupFilesystem,\n runId: string,\n): Promise<void> {\n if (await filesystem.isPopulated(runId)) {\n await filesystem.kill(runId);\n const deadline = Date.now() + EMPTY_WAIT_TIMEOUT_MS;\n while (await filesystem.isPopulated(runId)) {\n if (Date.now() >= deadline) {\n throw new Error(`agent cgroup did not become empty: ${runId}`);\n }\n await new Promise((resolve) => setTimeout(resolve, EMPTY_POLL_INTERVAL_MS));\n }\n }\n await filesystem.remove(runId);\n}\n\n/** Create the direct cgroupfs adapter used only by the root Linux host. */\nfunction createProductionCgroupFilesystem(root: string): AgentCgroupFilesystem {\n return {\n async ensureRoot() {\n await access(\"/sys/fs/cgroup/cgroup.controllers\");\n await mkdir(root, { recursive: true });\n await Promise.all([\n access(join(root, \"cgroup.events\")),\n access(join(root, \"cgroup.kill\")),\n access(join(root, \"cgroup.procs\")),\n ]);\n },\n async list() {\n // cgroupfs materializes control files in every cgroup directory. Only\n // direct child directories are orchestrator-created run cgroups.\n return (await readdir(root, { withFileTypes: true }))\n .filter((entry) => entry.isDirectory())\n .map((entry) => ({ name: entry.name, isDirectory: true }));\n },\n create(runId) {\n mkdirSync(join(root, runId));\n },\n async isPopulated(runId) {\n const events = await readFile(join(root, runId, \"cgroup.events\"), \"utf8\");\n const match = /^populated ([01])$/mu.exec(events);\n if (!match) throw new Error(`agent cgroup events are malformed: ${runId}`);\n return match[1] === \"1\";\n },\n async kill(runId) {\n await writeFile(join(root, runId, \"cgroup.kill\"), \"1\\n\");\n },\n async remove(runId) {\n await rmdir(join(root, runId));\n },\n removeEmpty(runId) {\n rmdirSync(join(root, runId));\n },\n };\n}\n\n/** Validate and canonicalize one cgroup directory name. */\nfunction normalizeRunId(runId: string): string {\n const normalized = runId.toLowerCase();\n if (!RUN_ID_PATTERN.test(normalized)) {\n throw new Error(\"agent cgroup run id is invalid\");\n }\n return normalized;\n}\n", "import { agentPersonasSchema, agentLocaleSchema, renderAgentPersona, type AgentPersonas, type SupportedLocale } from \"@liy/mote-core\";\nimport { cp, mkdir, rename, rm, symlink, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport {\n resolveAgentRoot,\n resolvePiExtensionsRoot,\n resolvePiSkillsRoot,\n} from \"./shared/config.js\";\nimport { isRecord } from \"./shared/json.js\";\nimport {\n readAgentProfiles,\n upsertAgentProfile,\n} from \"./commands/agent-profiles.js\";\nimport {\n ensureAgentDirectory,\n requireSafeId,\n type AgentDirectorySpace,\n} from \"./users-tree.js\";\n\n/** Agent roles whose profiles include the Gen App authoring skill. */\nconst GEN_APP_ROLES = new Set([\"dev\", \"cto\", \"qa\"]);\n/** Universal skills installed into every agent profile. */\nconst UNIVERSAL_SKILLS = [\"orchestrator\", \"agent-browser\", \"inline-widget\"];\nconst UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;\n\n/** Serializes profile writes so concurrent saves cannot lose roster entries. */\nlet profileUpdates: Promise<unknown> = Promise.resolve();\n\n/** Validated body of one signed `PUT /agents/:agentId/profile` request. */\nexport interface EnsureAgentRequest {\n /** Trusted owner user id resolved by Mote API from the agent profile. */\n userId: string;\n /** Immutable database-assigned agent id. */\n agentId: string;\n /** Profile content for the root-owned template. */\n profile: {\n name: string;\n role: string;\n personas: AgentPersonas;\n /** Owner language used when materializing this profile. */\n locale: SupportedLocale;\n };\n}\n\n/**\n * Parse and validate one dynamic agent-ensure request body.\n *\n * @param body - Parsed JSON request body.\n * @returns Validated request, or `undefined` when the body is malformed.\n */\nexport function parseEnsureAgentRequest(body: unknown): EnsureAgentRequest | undefined {\n if (!isRecord(body) || !isRecord(body.profile)) {\n return undefined;\n }\n const { userId, agentId } = body;\n const profile = body.profile;\n if (\n typeof userId !== \"string\" || !UUID_PATTERN.test(userId.trim())\n || typeof agentId !== \"string\" || !UUID_PATTERN.test(agentId.trim())\n || typeof profile.name !== \"string\" || !profile.name.trim()\n || typeof profile.role !== \"string\" || !profile.role.trim()\n || !agentPersonasSchema.safeParse(profile.personas).success\n || !agentLocaleSchema.safeParse(profile.locale).success\n ) {\n return undefined;\n }\n return {\n userId: userId.trim().toLowerCase(),\n agentId: agentId.trim().toLowerCase(),\n profile: {\n name: profile.name.trim(),\n role: profile.role.trim(),\n personas: agentPersonasSchema.parse(profile.personas),\n locale: agentLocaleSchema.parse(profile.locale),\n },\n };\n}\n\n/**\n * Ensure one dynamically created agent: template, roster entry, and directory.\n *\n * @remarks\n * The operation is idempotent (ADR-061 \u00A74) and accepts no caller-supplied\n * path, UID, GID, or mode. The root-owned template under the agent root is\n * scaffolded from an existing roster template, preserving the shared extension\n * symlink and copying its skills, then the agent-specific system\n * prompt is written separately. The users-tree\n * ensure copies the finished template into the stable profile directory.\n *\n * @param input - Environment and validated ensure request.\n * @returns Ensured stable directory locations.\n */\nexport function ensureLocalAgent(input: {\n env: NodeJS.ProcessEnv;\n request: EnsureAgentRequest;\n}): Promise<AgentDirectorySpace> {\n const next = profileUpdates.catch(() => undefined).then(() => materializeLocalAgent(input));\n profileUpdates = next;\n return next;\n}\n\n/**\n * Write the template, roster and stable profile within the materialization queue.\n * @param input - Trusted environment and validated profile request.\n */\nasync function materializeLocalAgent(input: {\n env: NodeJS.ProcessEnv;\n request: EnsureAgentRequest;\n}): Promise<AgentDirectorySpace> {\n const agentRoot = resolveAgentRoot(input.env);\n const agentId = requireSafeId(input.request.agentId, \"agent id\");\n const templateDir = join(agentRoot, agentId);\n await refreshAgentTemplate({\n templateDir,\n extensionsPath: resolvePiExtensionsRoot(input.env),\n skillsRoot: resolvePiSkillsRoot(input.env),\n profile: input.request.profile,\n });\n // The roster is the only materialization input at boot (ADR-084), so a\n // dynamically created agent must record its persona source here. Writing\n // only the rendered path would lose the agent on the next restart.\n await upsertAgentProfile(agentRoot, {\n id: agentId,\n name: input.request.profile.name,\n role: input.request.profile.role,\n ownerUserId: input.request.userId,\n personas: input.request.profile.personas,\n locale: input.request.profile.locale,\n systemPromptPath: join(templateDir, \"system_prompt.md\"),\n });\n return ensureAgentDirectory({\n env: input.env,\n userId: input.request.userId,\n agentId,\n profileTemplateDir: templateDir,\n refreshProfile: true,\n });\n}\n\n/**\n * Write or refresh one root-owned agent profile template.\n *\n * @param input - Template destination and validated profile content.\n */\nasync function refreshAgentTemplate(input: {\n templateDir: string;\n extensionsPath: string;\n skillsRoot: string;\n profile: EnsureAgentRequest[\"profile\"];\n}): Promise<void> {\n await mkdir(input.templateDir, { recursive: true, mode: 0o755 });\n // Both payloads come straight from the installed per-run runtime (ADR-084).\n // A new agent therefore no longer depends on an existing sibling profile to\n // copy from, which used to make the first agent in a fresh sandbox\n // unensurable, and the link means a runtime update needs no profile rewrite.\n await rm(join(input.templateDir, \"extensions\"), { recursive: true, force: true });\n await symlink(input.extensionsPath, join(input.templateDir, \"extensions\"), \"dir\");\n for (const skill of UNIVERSAL_SKILLS) {\n await cp(\n join(input.skillsRoot, skill),\n join(input.templateDir, \"skills\", skill),\n { recursive: true, force: true },\n );\n }\n if (GEN_APP_ROLES.has(input.profile.role.toLowerCase())) {\n await cp(\n join(input.skillsRoot, \"gen-app\"),\n join(input.templateDir, \"skills\", \"gen-app\"),\n { recursive: true, force: true },\n );\n } else {\n await rm(join(input.templateDir, \"skills\", \"gen-app\"), {\n recursive: true,\n force: true,\n });\n }\n await writeFile(\n join(input.templateDir, \"system_prompt.md.next\"),\n renderAgentPersona(input.profile),\n \"utf8\",\n );\n await rename(\n join(input.templateDir, \"system_prompt.md.next\"),\n join(input.templateDir, \"system_prompt.md\"),\n );\n}\n", "export function parseJson(line: string): Record<string, unknown> | undefined {\n try {\n const value = JSON.parse(line) as unknown;\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * Parse raw JSON text into an object record.\n *\n * @param text - Raw JSON text. Blank text is treated as an empty object.\n * @returns Parsed object body.\n */\nexport function parseJsonObject(text: string): Record<string, unknown> {\n const parsed = text.trim() ? (JSON.parse(text) as unknown) : {};\n if (!isRecord(parsed)) {\n throw new Error(\"request body must be a JSON object\");\n }\n return parsed;\n}\n\n/**\n * Parse a JSON response body when the host supplied one.\n *\n * @param text - Raw response text.\n * @returns Parsed JSON value, or an empty object for blank/non-JSON bodies.\n */\nexport function parseOptionalJson(text: string): unknown {\n if (!text.trim()) {\n return {};\n }\n try {\n return JSON.parse(text) as unknown;\n } catch {\n return {};\n }\n}\n\n/**\n * Drop undefined and empty-string fields from compact diagnostic payloads.\n *\n * @param input - Candidate payload fields.\n * @returns Payload with only meaningful scalar metadata.\n */\nexport function compactRecord(\n input: Record<string, unknown>\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(input).filter(\n ([, value]) => value !== undefined && value !== \"\"\n )\n );\n}\n\n/**\n * Narrow unknown JSON values to plain object records.\n *\n * @param value - Unknown parsed JSON value.\n * @returns Whether the value is a non-array object.\n */\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n", "import { mkdir, readFile, rename, stat, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\n\nimport { isRecord } from \"../shared/json.js\";\n\n/**\n * One agent roster entry read from `<agent_root>/agent-roster.json`.\n */\nexport interface AgentDirectoryProfile {\n /** Stable agent id used as the per-agent template directory name. */\n id: string;\n /** Org-unique agent name used by ticket routing and board display. */\n name: string;\n /** Human-readable role tag stored in the Org agent row. */\n role?: string;\n /** Immutable owner of the agent (ADR-060); the users-tree parent directory. */\n ownerUserId?: string;\n /** Absolute path to the agent's system prompt, when present in the roster. */\n systemPromptPath?: string;\n /** User-authored persona overrides, preserved so boot can re-render. */\n personas?: unknown;\n /** Owner language, preserved so boot can re-render. */\n locale?: string;\n}\n\n/**\n * Cached snapshot of one materialized agent roster file.\n */\ninterface AgentProfileCacheEntry {\n /** File modification timestamp used to invalidate stale parsed rosters. */\n mtimeMs: number;\n /** File byte length used with mtime to detect rewritten rosters. */\n size: number;\n /** Parsed and validated agent roster entries. */\n profiles: AgentDirectoryProfile[];\n}\n\n/**\n * Orchestrator-owned roster file name.\n *\n * @remarks\n * ADR-084 merges the provisioning seed and the materialized roster into this\n * one file. It is both the launch index and the input for the next render, so\n * entries carry the persona source alongside the rendered prompt path.\n */\nexport const AGENT_ROSTER_FILE_NAME = \"agent-roster.json\";\n\nconst agentProfileCache = new Map<string, AgentProfileCacheEntry>();\n\n/**\n * Read the agent roster from `<agent_root>/agent-roster.json`.\n *\n * @remarks\n * The roster is parsed once and reused until the file metadata changes. Commands\n * still stat the file so an updated sandbox agent roster is picked up without\n * restarting the orchestrator process.\n *\n * @param agentRoot - Per-agent Pi profile template root.\n * @returns Validated roster entries, or an empty list when the file is missing.\n */\nexport async function readAgentProfiles(agentRoot: string): Promise<AgentDirectoryProfile[]> {\n const profilesPath = join(agentRoot, AGENT_ROSTER_FILE_NAME);\n let fileStat: { mtimeMs: number; size: number };\n try {\n fileStat = await stat(profilesPath);\n } catch {\n agentProfileCache.delete(profilesPath);\n return [];\n }\n\n const cached = agentProfileCache.get(profilesPath);\n if (cached && cached.mtimeMs === fileStat.mtimeMs && cached.size === fileStat.size) {\n return cached.profiles;\n }\n\n try {\n const raw = await readFile(profilesPath, \"utf8\");\n const profiles = parseAgentProfiles(raw);\n agentProfileCache.set(profilesPath, {\n mtimeMs: fileStat.mtimeMs,\n size: fileStat.size,\n profiles,\n });\n return profiles;\n } catch {\n agentProfileCache.delete(profilesPath);\n return [];\n }\n}\n\n/**\n * Resolve one agent profile by id from the cached roster.\n *\n * @param agentRoot - Per-agent Pi profile template root.\n * @param agentId - Stable Org agent id.\n * @returns Matching profile, or `undefined` when the roster lacks the agent.\n */\nexport async function readAgentProfileById(\n agentRoot: string,\n agentId: string\n): Promise<AgentDirectoryProfile | undefined> {\n const profiles = await readAgentProfiles(agentRoot);\n return profiles.find((profile) => profile.id === agentId);\n}\n\n/**\n * Upsert one roster entry so dynamically created agents survive restart.\n *\n * @remarks\n * Used by the private ensure operation (ADR-061 \u00A74). The write replaces the\n * roster atomically and invalidates the mtime cache so a concurrent command\n * observes the refreshed roster.\n *\n * @param agentRoot - Per-agent Pi profile template root.\n * @param profile - Complete validated roster entry.\n */\nexport async function upsertAgentProfile(\n agentRoot: string,\n profile: AgentDirectoryProfile,\n): Promise<void> {\n const profilesPath = join(agentRoot, AGENT_ROSTER_FILE_NAME);\n const existing = await readAgentProfiles(agentRoot);\n const next = existing.filter((entry) => entry.id !== profile.id);\n next.push(profile);\n await mkdir(dirname(profilesPath), { recursive: true });\n const temporaryPath = `${profilesPath}.tmp`;\n await writeFile(temporaryPath, `${JSON.stringify(next, null, 2)}\\n`, \"utf8\");\n await rename(temporaryPath, profilesPath);\n agentProfileCache.delete(profilesPath);\n}\n\n/**\n * Parse a materialized agent roster file.\n *\n * @param raw - Raw JSON text from `agent-roster.json`.\n * @returns Validated roster entries.\n */\nfunction parseAgentProfiles(raw: string): AgentDirectoryProfile[] {\n const parsed = JSON.parse(raw) as unknown;\n const list = Array.isArray(parsed)\n ? parsed\n : isRecord(parsed) && Array.isArray(parsed.agents)\n ? parsed.agents\n : [];\n return list.filter(\n (entry): entry is AgentDirectoryProfile =>\n isRecord(entry) &&\n typeof entry.id === \"string\" &&\n typeof entry.name === \"string\"\n ).map((entry) => ({\n id: entry.id,\n name: entry.name,\n ...(typeof entry.role === \"string\" && entry.role.trim() ? { role: entry.role.trim() } : {}),\n ...(typeof entry.ownerUserId === \"string\" && entry.ownerUserId.trim()\n ? { ownerUserId: entry.ownerUserId.trim() }\n : {}),\n ...(typeof entry.systemPromptPath === \"string\" && entry.systemPromptPath.trim()\n ? { systemPromptPath: entry.systemPromptPath.trim() }\n : {}),\n }));\n}\n", "import {\n chmod,\n chown,\n cp,\n lchown,\n lstat,\n mkdir,\n readdir,\n rename,\n rm,\n stat,\n} from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport type { AgentSessionKey } from \"@liy/mote-core\";\n\nimport {\n DEFAULT_USERS_ROOT,\n STABLE_GID_MAX,\n STABLE_GID_MIN,\n resolveUsersRoot,\n} from \"./shared/config.js\";\n\n/** Traverse-only root: any process may pass through, none may enumerate users. */\nconst USERS_ROOT_MODE = 0o711;\n/** Setgid + group `--x`: the stable user group traverses toward its agents only. */\nconst USER_DIR_MODE = 0o2710;\n/** Setgid + group `r-x`: agent processes list and traverse their own agent dir. */\nconst AGENT_DIR_MODE = 0o2750;\n/** Setgid + group `rwx`: Pi may create root-level runtime state in its profile. */\nconst PROFILE_ROOT_MODE = 0o2770;\n/** Setgid + group `r-x`: root-authored profile subdirectories remain directly read-only. */\nconst PROFILE_DIR_MODE = 0o2750;\n/** Setgid + group `rwx`: every process of the agent reads and writes memory. */\nconst MEMORY_DIR_MODE = 0o2770;\n/** Setgid + group `r-x`: agents traverse to contexts but cannot replace them. */\nconst SESSIONS_DIR_MODE = 0o2750;\n/** Setgid + group `rwx`: Pi creates and updates session files here. */\nconst ANCHOR_DIR_MODE = 0o2770;\n/** Group-readable root-owned profile file. */\nconst PROFILE_FILE_MODE = 0o640;\n/** Group-executable root-owned profile file. */\nconst PROFILE_EXECUTABLE_MODE = 0o750;\n/** Pi-owned runtime state retained when authored profile resources change. */\nconst PROFILE_RUNTIME_STATE_ENTRIES = new Set([\"mcp-cache.json\"]);\n/** Root-owned template entries refreshed on boot; persona overrides were preserved by release capture. */\nconst PROFILE_RUNTIME_PACKAGE_ENTRIES = [\"extensions\", \"skills\", \"node_modules\", \"system_prompt.md\"] as const;\n/** Directory names accepted below the root; no separators or dot segments. */\nconst SAFE_ID_PATTERN = /^[0-9a-z][0-9a-z-]{0,63}$/u;\n/** Stable filename of the one per-agent authority socket. */\nconst AGENT_SOCKET_FILENAME = \"agent.sock\";\n\n/**\n * Stable filesystem locations for one user-owned agent (ADR-061).\n */\nexport interface AgentDirectorySpace {\n /** Stable user directory containing every agent of the owner. */\n userDir: string;\n /** Stable agent directory containing socket, profile, memory, sessions, and work. */\n agentDir: string;\n /** Stable Pi profile directory passed as `PI_CODING_AGENT_DIR`. */\n profileDir: string;\n /** Durable agent memory directory writable by every process of the agent. */\n memoryDir: string;\n /** Parent of every purpose-specific session directory. */\n sessionsDir: string;\n /** Root-managed parent of every writable purpose-specific work directory. */\n workRootDir: string;\n /** Stable per-agent authority socket path. */\n socketPath: string;\n /** Stable user GID; present only under production isolation. */\n userGid?: number;\n /** Stable agent GID; present only under production isolation. */\n agentGid?: number;\n}\n\n/**\n * Agent directory space plus one context's durable session and work directories.\n */\nexport interface AgentSessionSpace extends AgentDirectorySpace {\n /** Purpose-specific session directory used as `HOME` and Pi `--session-dir`. */\n sessionDir: string;\n /** Purpose-specific neutral working directory used by conversational launches. */\n workDir: string;\n}\n\n/** Ensure operations share one queue so GID allocation never races itself. */\nlet ensureQueue: Promise<unknown> = Promise.resolve();\n\nfunction serialize<T>(operation: () => Promise<T>): Promise<T> {\n const next = ensureQueue.catch(() => undefined).then(operation);\n ensureQueue = next;\n return next;\n}\n\n/** Inputs identifying one user-owned agent directory. */\nexport interface EnsureAgentDirectoryInput {\n /** Orchestrator process environment. */\n env: NodeJS.ProcessEnv;\n /** Trusted owner user id resolved from the agent profile. */\n userId: string;\n /** Immutable agent id. */\n agentId: string;\n /**\n * Root-owned profile template materialized into the stable profile directory.\n *\n * @remarks\n * An absent stable profile is created from this template. Existing authored\n * profile resources change only when {@link refreshProfile} is true.\n */\n profileTemplateDir?: string;\n /** Explicit agent create/update operation that refreshes authored resources. */\n refreshProfile?: boolean;\n}\n\n/** Inputs selecting one purpose-specific session directory for an agent. */\nexport interface EnsureAgentSessionSpaceInput {\n /** Orchestrator process environment. */\n env: NodeJS.ProcessEnv;\n /** Trusted owner user id resolved from the agent profile. */\n userId: string;\n /** Complete agent and purpose-specific Pi session identity. */\n sessionKey: AgentSessionKey;\n}\n\n/**\n * Ensure one agent's complete stable directory tree (ADR-061).\n *\n * @remarks\n * Production isolation applies only on the fixed {@link DEFAULT_USERS_ROOT};\n * alternate roots are explicitly reserved for non-Sprite integration hosts,\n * where the current process must own entries without privileged `chown` and\n * no stable groups exist. Under isolation the filesystem is the GID registry:\n * an existing directory's group is reused, a new directory takes the scanned\n * high-water GID plus one across the whole tree, and every level is\n * re-chowned and re-chmodded on each ensure so a crash between steps\n * converges on the next call. The operation is idempotent and belongs to\n * sandbox provisioning and explicit agent create/update handling. Launches\n * use {@link ensureAgentSessionSpace} and never refresh authored profile data.\n *\n * @param input - Environment and validated owner/agent identity.\n * @returns Stable directory locations and, under isolation, stable GIDs.\n */\nexport function ensureAgentDirectory(\n input: EnsureAgentDirectoryInput,\n): Promise<AgentDirectorySpace> {\n return serialize(() => ensureAgentDirectoryUnlocked(input));\n}\n\n/**\n * Ensure the agent tree plus one context's session and work directories before a launch.\n *\n * @param input - Agent directory identity plus the purpose-specific session context.\n * @returns Agent space and both durable context directories.\n */\nexport function ensureAgentSessionSpace(\n input: EnsureAgentSessionSpaceInput,\n): Promise<AgentSessionSpace> {\n return serialize(async () => {\n const space = await requireAgentDirectoryUnlocked({\n env: input.env,\n userId: input.userId,\n agentId: input.sessionKey.agentId,\n });\n const contextDirectory = input.sessionKey.contextKind === \"assessment\"\n ? \"assessment\"\n : `${input.sessionKey.contextKind}-${requireSafeId(input.sessionKey.contextId, \"session context id\")}`;\n const sessionDir = join(space.sessionsDir, contextDirectory);\n const workDir = join(space.workRootDir, contextDirectory);\n if (space.agentGid === undefined) {\n await Promise.all([\n mkdir(sessionDir, { recursive: true }),\n mkdir(workDir, { recursive: true }),\n ]);\n } else {\n await Promise.all([\n ensureOwnedDir(sessionDir, space.agentGid, ANCHOR_DIR_MODE),\n ensureOwnedDir(workDir, space.agentGid, ANCHOR_DIR_MODE),\n ]);\n }\n return { ...space, sessionDir, workDir };\n });\n}\n\n/** Serialized-body implementation shared by both ensure operations. */\nasync function ensureAgentDirectoryUnlocked(\n input: EnsureAgentDirectoryInput,\n): Promise<AgentDirectorySpace> {\n const root = resolveUsersRoot(input.env);\n const { agentsDir, space } = resolveAgentDirectoryPaths(root, input.userId, input.agentId);\n if (root !== DEFAULT_USERS_ROOT) {\n for (const path of [\n space.userDir,\n agentsDir,\n space.agentDir,\n space.memoryDir,\n space.sessionsDir,\n space.workRootDir,\n ]) {\n await mkdir(path, { recursive: true });\n }\n await materializeProfileDir({\n profileDir: space.profileDir,\n ...(input.profileTemplateDir === undefined ? {} : { templateDir: input.profileTemplateDir }),\n refresh: input.refreshProfile === true,\n });\n return space;\n }\n await ensureUsersRootDir(root);\n const userGid = await resolveStableGid(root, space.userDir);\n await ensureOwnedDir(space.userDir, userGid, USER_DIR_MODE);\n await ensureOwnedDir(agentsDir, userGid, USER_DIR_MODE);\n const agentGid = await resolveStableGid(root, space.agentDir);\n await ensureOwnedDir(space.agentDir, agentGid, AGENT_DIR_MODE);\n await ensureOwnedDir(space.memoryDir, agentGid, MEMORY_DIR_MODE);\n await ensureOwnedDir(space.sessionsDir, agentGid, SESSIONS_DIR_MODE);\n await ensureOwnedDir(space.workRootDir, agentGid, SESSIONS_DIR_MODE);\n await materializeProfileDir({\n profileDir: space.profileDir,\n ...(input.profileTemplateDir === undefined ? {} : { templateDir: input.profileTemplateDir }),\n refresh: input.refreshProfile === true,\n agentGid,\n });\n return { ...space, userGid, agentGid };\n}\n\n/**\n * Resolve and validate an already-provisioned agent directory for one launch.\n *\n * @remarks\n * This read-only profile path is deliberately separate from provisioning. It\n * fails when the lifecycle operation did not materialize the agent instead of\n * repairing or replacing profile resources during launch.\n *\n * @param input - Trusted owner and agent identity resolved by IAM.\n * @returns Existing stable agent directory locations.\n */\nasync function requireAgentDirectoryUnlocked(input: {\n env: NodeJS.ProcessEnv;\n userId: string;\n agentId: string;\n}): Promise<AgentDirectorySpace> {\n const root = resolveUsersRoot(input.env);\n const { agentsDir, space } = resolveAgentDirectoryPaths(root, input.userId, input.agentId);\n if (root !== DEFAULT_USERS_ROOT) {\n for (const [path, label] of [\n [space.userDir, \"user directory\"],\n [agentsDir, \"agents directory\"],\n [space.agentDir, \"agent directory\"],\n [space.profileDir, \"agent profile directory\"],\n [space.memoryDir, \"agent memory directory\"],\n [space.sessionsDir, \"agent sessions directory\"],\n [space.workRootDir, \"agent work directory\"],\n ] as const) {\n if (!await statDirectory(path)) {\n throw new Error(`${label} is not provisioned: ${path}`);\n }\n }\n return space;\n }\n\n const userGid = await requireStableDirectoryGid(space.userDir, \"user directory\", USER_DIR_MODE);\n await validateFixedDirectory(agentsDir, \"agents directory\", userGid, USER_DIR_MODE);\n const agentGid = await requireStableDirectoryGid(space.agentDir, \"agent directory\", AGENT_DIR_MODE);\n await validateFixedDirectory(space.profileDir, \"agent profile directory\", agentGid, PROFILE_ROOT_MODE);\n await validateFixedDirectory(space.memoryDir, \"agent memory directory\", agentGid, MEMORY_DIR_MODE);\n await validateFixedDirectory(space.sessionsDir, \"agent sessions directory\", agentGid, SESSIONS_DIR_MODE);\n await validateFixedDirectory(space.workRootDir, \"agent work directory\", agentGid, SESSIONS_DIR_MODE);\n return { ...space, userGid, agentGid };\n}\n\n/**\n * Resolve deterministic paths for one safe owner and agent identity.\n *\n * @param root - Trusted users-tree root.\n * @param userId - Owner id used as one safe path segment.\n * @param agentId - Agent id used as one safe path segment.\n * @returns Agents parent plus all stable per-agent paths.\n */\nfunction resolveAgentDirectoryPaths(\n root: string,\n userId: string,\n agentId: string,\n): { agentsDir: string; space: AgentDirectorySpace } {\n const userDir = join(root, requireSafeId(userId, \"user id\"));\n const agentsDir = join(userDir, \"agents\");\n const agentDir = join(agentsDir, requireSafeId(agentId, \"agent id\"));\n return {\n agentsDir,\n space: {\n userDir,\n agentDir,\n profileDir: join(agentDir, \"profile\"),\n memoryDir: join(agentDir, \"memory\"),\n sessionsDir: join(agentDir, \"sessions\"),\n workRootDir: join(agentDir, \"work\"),\n socketPath: join(agentDir, AGENT_SOCKET_FILENAME),\n },\n };\n}\n\n/**\n * Prepare and validate the users root at orchestrator boot.\n *\n * @remarks\n * Under production isolation, user and agent entries must be root-owned\n * directories with in-range stable GIDs. A directory still group-owned by\n * root is a creation crash artifact from before any state could exist and is\n * removed; anything else unexpected fails startup so a layout mistake can\n * never hide (ADR-061 fail-closed boot validation).\n *\n * @param env - Orchestrator process environment.\n */\nexport async function prepareUsersRoot(env: NodeJS.ProcessEnv): Promise<void> {\n const root = resolveUsersRoot(env);\n if (root !== DEFAULT_USERS_ROOT) {\n await mkdir(root, { recursive: true });\n return;\n }\n await ensureUsersRootDir(root);\n await validateFixedDirectory(root, \"users root\", 0, USERS_ROOT_MODE);\n const stableGids = new Map<number, string>();\n for (const userEntry of await readdir(root, { withFileTypes: true })) {\n requireCanonicalEntryName(userEntry.name, \"user directory\");\n const userDir = join(root, userEntry.name);\n const userGid = await validateStableDir(\n userDir,\n `user directory ${userEntry.name}`,\n userEntry.isDirectory(),\n USER_DIR_MODE,\n );\n if (userGid === null) {\n continue;\n }\n claimStableGid(stableGids, userGid, `user directory ${userEntry.name}`);\n const agentsDir = join(userDir, \"agents\");\n const userChildren = await readdir(userDir, { withFileTypes: true });\n for (const child of userChildren) {\n if (child.name !== \"agents\") {\n throw new Error(`users tree holds an unexpected user entry: ${userEntry.name}/${child.name}`);\n }\n }\n if (!userChildren.some((child) => child.name === \"agents\")) {\n continue;\n }\n await validateFixedDirectory(\n agentsDir,\n `agents directory ${userEntry.name}/agents`,\n userGid,\n USER_DIR_MODE,\n );\n const agentEntries = await readdir(agentsDir, { withFileTypes: true });\n for (const agentEntry of agentEntries) {\n requireCanonicalEntryName(agentEntry.name, \"agent directory\");\n const agentDir = join(agentsDir, agentEntry.name);\n const agentGid = await validateStableDir(\n agentDir,\n `agent directory ${userEntry.name}/agents/${agentEntry.name}`,\n agentEntry.isDirectory(),\n AGENT_DIR_MODE,\n );\n if (agentGid === null) {\n continue;\n }\n claimStableGid(\n stableGids,\n agentGid,\n `agent directory ${userEntry.name}/agents/${agentEntry.name}`,\n );\n await validateAgentBoundary(agentDir, agentGid, userEntry.name, agentEntry.name);\n }\n }\n}\n\n/**\n * Validate one stable tree entry, removing only creation crash artifacts.\n *\n * @param path - User or agent directory path.\n * @param label - Diagnostic entry label.\n * @param isDirectory - Whether the parent listing saw a directory.\n * @param expectedMode - Exact permission and setgid bits required by policy.\n * @returns Stable GID, or `null` when a root-group creation artifact was removed.\n */\nasync function validateStableDir(\n path: string,\n label: string,\n isDirectory: boolean,\n expectedMode: number,\n): Promise<number | null> {\n if (!isDirectory) {\n throw new Error(`users tree holds a non-directory entry: ${label}`);\n }\n const info = await lstat(path);\n if (!info.isDirectory()) {\n throw new Error(`users tree entry changed type during validation: ${label}`);\n }\n if (info.uid !== 0) {\n throw new Error(`users tree entry is not root-owned: ${label}`);\n }\n if (info.gid === 0) {\n await rm(path, { recursive: true, force: true });\n return null;\n }\n if (!isStableGid(info.gid)) {\n throw new Error(`users tree entry GID is outside the reserved range: ${label}`);\n }\n if ((info.mode & 0o7777) !== expectedMode) {\n throw new Error(`users tree entry has an unexpected mode: ${label}`);\n }\n return info.gid;\n}\n\n/** Reject non-canonical or path-like directory entries in the stable tree. */\nfunction requireCanonicalEntryName(name: string, label: string): void {\n if (requireSafeId(name, label) !== name) {\n throw new Error(`${label} is not canonical`);\n }\n}\n\n/** Ensure one stable GID identifies exactly one user or agent boundary. */\nfunction claimStableGid(registry: Map<number, string>, gid: number, label: string): void {\n const existing = registry.get(gid);\n if (existing) {\n throw new Error(`stable GID ${gid} is shared by ${existing} and ${label}`);\n }\n registry.set(gid, label);\n}\n\n/** Validate one root-owned directory with a caller-supplied stable group. */\nasync function validateFixedDirectory(\n path: string,\n label: string,\n gid: number,\n mode: number,\n): Promise<void> {\n const info = await lstat(path);\n if (!info.isDirectory() || info.uid !== 0 || info.gid !== gid || (info.mode & 0o7777) !== mode) {\n throw new Error(`users tree directory violates its fixed policy: ${label}`);\n }\n}\n\n/** Validate the permission-bearing entries directly below one stable agent. */\nasync function validateAgentBoundary(\n agentDir: string,\n agentGid: number,\n userId: string,\n agentId: string,\n): Promise<void> {\n const prefix = `${userId}/agents/${agentId}`;\n for (const entry of await readdir(agentDir, { withFileTypes: true })) {\n const path = join(agentDir, entry.name);\n if (entry.name === \"profile\") {\n await validateFixedDirectory(path, `${prefix}/profile`, agentGid, PROFILE_ROOT_MODE);\n continue;\n }\n if (entry.name === \"memory\") {\n await validateFixedDirectory(path, `${prefix}/memory`, agentGid, MEMORY_DIR_MODE);\n continue;\n }\n if (entry.name === \"sessions\") {\n await validateFixedDirectory(path, `${prefix}/sessions`, agentGid, SESSIONS_DIR_MODE);\n await validateSessionContextDirectories(path, agentGid, `${prefix}/sessions`);\n continue;\n }\n if (entry.name === \"work\") {\n await validateFixedDirectory(path, `${prefix}/work`, agentGid, SESSIONS_DIR_MODE);\n await validateSessionContextDirectories(path, agentGid, `${prefix}/work`);\n continue;\n }\n if (entry.name === AGENT_SOCKET_FILENAME) {\n const info = await lstat(path);\n if (!info.isSocket() || info.uid !== 0 || info.gid !== agentGid || (info.mode & 0o7777) !== 0o660) {\n throw new Error(`users tree socket violates its fixed policy: ${prefix}/${AGENT_SOCKET_FILENAME}`);\n }\n continue;\n }\n throw new Error(`users tree holds an unexpected agent entry: ${prefix}/${entry.name}`);\n }\n}\n\n/** Validate root-created context directories; Pi-owned contents stay opaque. */\nasync function validateSessionContextDirectories(path: string, agentGid: number, label: string): Promise<void> {\n for (const entry of await readdir(path, { withFileTypes: true })) {\n requireCanonicalEntryName(entry.name, \"session context directory\");\n await validateFixedDirectory(\n join(path, entry.name),\n `${label}/${entry.name}`,\n agentGid,\n ANCHOR_DIR_MODE,\n );\n }\n}\n\n/**\n * Select the next stable GID from the scanned existing set.\n *\n * @param existingGids - GIDs of current user and agent directories.\n * @returns High-water in-range GID plus one.\n */\nexport function selectNextStableGid(existingGids: readonly number[]): number {\n let highest = STABLE_GID_MIN - 1;\n for (const gid of existingGids) {\n if (isStableGid(gid) && gid > highest) {\n highest = gid;\n }\n }\n const next = highest + 1;\n if (next > STABLE_GID_MAX) {\n throw new Error(\"stable users-tree GID range is exhausted\");\n }\n return next;\n}\n\n/**\n * Validate and canonicalize one path segment below the users root.\n *\n * @param value - Candidate user, agent, or session context id.\n * @param label - Diagnostic field name.\n * @returns Lowercased id safe to join into root-managed paths.\n */\nexport function requireSafeId(value: string, label: string): string {\n const normalized = value.trim().toLowerCase();\n if (!SAFE_ID_PATTERN.test(normalized)) {\n throw new Error(`${label} is not a safe path segment`);\n }\n return normalized;\n}\n\nfunction isStableGid(gid: number): boolean {\n return gid >= STABLE_GID_MIN && gid <= STABLE_GID_MAX;\n}\n\nasync function ensureUsersRootDir(root: string): Promise<void> {\n await mkdir(root, { recursive: true });\n await chmod(root, USERS_ROOT_MODE);\n}\n\n/**\n * Resolve one directory's stable GID from the filesystem registry.\n *\n * @remarks\n * The scan covers the whole `/users` tree \u2014 user directories and agent\n * directories share the one reserved range \u2014 so a new directory of either\n * kind takes the global high-water GID plus one.\n *\n * @param root - Fixed users root.\n * @param path - User or agent directory whose GID is being resolved.\n * @returns Existing in-range GID, or the next unused stable GID.\n */\nasync function resolveStableGid(root: string, path: string): Promise<number> {\n const existing = await statDirGid(path);\n if (existing !== undefined && isStableGid(existing)) {\n return existing;\n }\n const gids: number[] = [];\n for (const userEntry of await readdir(root, { withFileTypes: true })) {\n if (!userEntry.isDirectory()) {\n continue;\n }\n const userDir = join(root, userEntry.name);\n const userGid = await statDirGid(userDir);\n if (userGid !== undefined) {\n gids.push(userGid);\n }\n let agentEntries;\n try {\n agentEntries = await readdir(join(userDir, \"agents\"), { withFileTypes: true });\n } catch {\n continue;\n }\n for (const agentEntry of agentEntries) {\n if (!agentEntry.isDirectory()) {\n continue;\n }\n const agentGid = await statDirGid(join(userDir, \"agents\", agentEntry.name));\n if (agentGid !== undefined) {\n gids.push(agentGid);\n }\n }\n }\n return selectNextStableGid(gids);\n}\n\n/**\n * Materialize or explicitly refresh root-authored profile resources.\n *\n * @remarks\n * Provisioning fills an absent profile. Agent create/update operations pass\n * `refresh: true`; ordinary boot reconciliation refreshes only code shipped by\n * the runtime package and its materialized persona snapshot. Each authored\n * top-level entry is replaced independently while Pi-owned runtime entries\n * such as `mcp-cache.json` remain untouched. Launches never call this function.\n *\n * @param input - Stable profile, optional template, refresh intent, and GID.\n */\nasync function materializeProfileDir(input: {\n profileDir: string;\n templateDir?: string;\n refresh: boolean;\n agentGid?: number;\n}): Promise<void> {\n const profileExists = await statDirectory(input.profileDir);\n const templateExists = input.templateDir === undefined\n ? false\n : await statDirectory(input.templateDir);\n if (!profileExists && !templateExists) {\n throw new Error(`agent profile template is unavailable: ${input.templateDir ?? \"not provided\"}`);\n }\n await mkdir(input.profileDir, { recursive: true });\n if (templateExists && (!profileExists || input.refresh)) {\n await syncAuthoredProfileEntries({\n profileDir: input.profileDir,\n templateDir: input.templateDir as string,\n ...(input.agentGid === undefined ? {} : { agentGid: input.agentGid }),\n });\n } else if (templateExists) {\n await syncRuntimePackageProfileEntries({\n profileDir: input.profileDir,\n templateDir: input.templateDir as string,\n ...(input.agentGid === undefined ? {} : { agentGid: input.agentGid }),\n });\n }\n if (input.agentGid !== undefined) {\n await chown(input.profileDir, 0, input.agentGid);\n await chmod(input.profileDir, PROFILE_ROOT_MODE);\n }\n}\n\n/**\n * Refresh runtime resources and the persona rebuilt from preserved overrides.\n *\n * @remarks\n * Runtime upgrades replace extensions, bundled skills, and dependency links on\n * the next orchestrator boot, together with the rebuilt persona snapshot. Its\n * overrides were preserved by release capture; Pi-owned runtime state survives.\n *\n * @param input - Stable destination, trusted runtime template, and optional agent GID.\n */\nasync function syncRuntimePackageProfileEntries(input: {\n profileDir: string;\n templateDir: string;\n agentGid?: number;\n}): Promise<void> {\n const templateEntries = new Set(await readdir(input.templateDir));\n for (const name of PROFILE_RUNTIME_PACKAGE_ENTRIES) {\n const destination = join(input.profileDir, name);\n if (!templateEntries.has(name)) {\n await rm(destination, { recursive: true, force: true });\n continue;\n }\n await replaceAuthoredProfileEntry({\n source: join(input.templateDir, name),\n destination,\n ...(input.agentGid === undefined ? {} : { agentGid: input.agentGid }),\n });\n }\n}\n\n/**\n * Replace authored profile entries while retaining explicit Pi runtime state.\n *\n * @param input - Stable destination, trusted template, and optional agent GID.\n */\nasync function syncAuthoredProfileEntries(input: {\n profileDir: string;\n templateDir: string;\n agentGid?: number;\n}): Promise<void> {\n const templateEntries = await readdir(input.templateDir);\n for (const name of templateEntries) {\n if (PROFILE_RUNTIME_STATE_ENTRIES.has(name)) {\n throw new Error(`agent profile template uses reserved runtime entry: ${name}`);\n }\n }\n const authoredEntries = new Set(templateEntries);\n for (const name of await readdir(input.profileDir)) {\n if (!authoredEntries.has(name) && !PROFILE_RUNTIME_STATE_ENTRIES.has(name)) {\n await rm(join(input.profileDir, name), { recursive: true, force: true });\n }\n }\n for (const name of templateEntries) {\n await replaceAuthoredProfileEntry({\n source: join(input.templateDir, name),\n destination: join(input.profileDir, name),\n ...(input.agentGid === undefined ? {} : { agentGid: input.agentGid }),\n });\n }\n}\n\n/**\n * Replace one profile resource with rollback if the final rename fails.\n *\n * @param input - Trusted source, stable destination, and optional agent GID.\n */\nasync function replaceAuthoredProfileEntry(input: {\n source: string;\n destination: string;\n agentGid?: number;\n}): Promise<void> {\n const next = `${input.destination}.mote-next`;\n const previous = `${input.destination}.mote-previous`;\n await rm(next, { recursive: true, force: true });\n await rm(previous, { recursive: true, force: true });\n await cp(input.source, next, {\n recursive: true,\n force: true,\n dereference: false,\n });\n if (input.agentGid !== undefined) {\n await applyProfileTreePolicy(next, input.agentGid);\n }\n if ((await lstat(next)).isFile()) {\n await rename(next, input.destination);\n return;\n }\n let retainedPrevious = false;\n try {\n await rename(input.destination, previous);\n retainedPrevious = true;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") {\n throw error;\n }\n }\n try {\n await rename(next, input.destination);\n } catch (error) {\n if (retainedPrevious) {\n await rename(previous, input.destination);\n }\n throw error;\n }\n await rm(previous, { recursive: true, force: true });\n}\n\n/** Apply root ownership and read-only group modes to the authored profile template. */\nasync function applyProfileTreePolicy(path: string, agentGid: number): Promise<void> {\n const metadata = await lstat(path);\n if (metadata.isSymbolicLink()) {\n await lchown(path, 0, agentGid);\n return;\n }\n await chown(path, 0, agentGid);\n if (metadata.isDirectory()) {\n await chmod(path, PROFILE_DIR_MODE);\n for (const entry of await readdir(path)) {\n await applyProfileTreePolicy(join(path, entry), agentGid);\n }\n return;\n }\n if (metadata.isFile()) {\n await chmod(\n path,\n metadata.mode & 0o111 ? PROFILE_EXECUTABLE_MODE : PROFILE_FILE_MODE,\n );\n }\n}\n\nasync function ensureOwnedDir(path: string, gid: number, mode: number): Promise<void> {\n try {\n await mkdir(path);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw error;\n }\n }\n await chown(path, 0, gid);\n await chmod(path, mode);\n}\n\n/**\n * Read one stable root-owned directory GID without repairing filesystem state.\n *\n * @param path - Trusted directory path.\n * @param label - Diagnostic directory name.\n * @param mode - Required permission and setgid bits.\n * @returns Existing stable GID.\n */\nasync function requireStableDirectoryGid(\n path: string,\n label: string,\n mode: number,\n): Promise<number> {\n const info = await lstat(path);\n if (!info.isDirectory() || info.uid !== 0 || !isStableGid(info.gid) || (info.mode & 0o7777) !== mode) {\n throw new Error(`users tree entry violates its stable policy: ${label}`);\n }\n return info.gid;\n}\n\nasync function statDirGid(path: string): Promise<number | undefined> {\n try {\n return (await stat(path)).gid;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return undefined;\n }\n throw error;\n }\n}\n\nasync function statDirectory(path: string): Promise<boolean> {\n try {\n return (await stat(path)).isDirectory();\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n return false;\n }\n throw error;\n }\n}\n", "import { createSandboxRequestHmacHeaders } from \"@liy/mote-core\";\n\n/** API refusal carrying stable retry semantics for the public delivery route. */\nexport class SandboxApiRequestError extends Error {\n /** HTTP status returned by the trusted sandbox authority. */\n readonly status: number;\n\n /** @param status - Sandbox-authority HTTP refusal status. */\n constructor(status: number, detail?: string) {\n super(detail ?? `Mote API rejected the sandbox request (status ${status})`);\n this.name = \"SandboxApiRequestError\";\n this.status = status;\n }\n}\n\n/**\n * Build the shared active-sandbox signed JSON transport.\n * @param input - Closed host environment, transport override and bounded timeout.\n * @returns Sender for paths below this Org's internal API boundary.\n */\nexport function createSandboxApiClient(input: {\n env: NodeJS.ProcessEnv; fetchRequest?: typeof fetch; timeoutMs?: number;\n}): (path: string, body: Record<string, unknown>) => Promise<unknown> {\n const apiOrigin = requireOrigin(input.env.MOTE_API_ORIGIN, \"MOTE_API_ORIGIN\");\n const orgId = requireValue(input.env.MOTE_ORG_ID, \"MOTE_ORG_ID\");\n const secret = requireValue(\n input.env.MOTE_SANDBOX_REQUEST_SECRET,\n \"MOTE_SANDBOX_REQUEST_SECRET\",\n );\n const sandboxInstanceId = requireValue(\n input.env.MOTE_SANDBOX_INSTANCE_ID,\n \"MOTE_SANDBOX_INSTANCE_ID\",\n );\n const fetchRequest = input.fetchRequest ?? fetch;\n const timeoutMs = input.timeoutMs ?? 15_000;\n\n const send = async (\n path: string,\n body: Record<string, unknown>,\n ): Promise<unknown> => {\n const url = new URL(\n `/internal/orgs/${encodeURIComponent(orgId)}/${path}`,\n apiOrigin,\n );\n // The Gateway derives the per-instance verification key from this signed\n // claim; the API separately requires it to match the active sandbox row.\n const rawBody = JSON.stringify({ ...body, sandboxInstanceId });\n const response = await fetchRequest(url, {\n method: \"POST\",\n redirect: \"error\",\n headers: {\n \"content-type\": \"application/json\",\n ...await createSandboxRequestHmacHeaders({\n method: \"POST\",\n url,\n body: rawBody,\n secret,\n }),\n },\n body: rawBody,\n signal: AbortSignal.timeout(timeoutMs),\n });\n if (!response.ok) {\n const failure = await response.json().catch(() => null) as { error?: unknown } | null;\n const detail = failure?.error;\n throw new SandboxApiRequestError(response.status,\n typeof detail === \"string\" ? detail\n : detail && typeof detail === \"object\" && \"message\" in detail && typeof detail.message === \"string\"\n ? detail.message : undefined);\n }\n return response.json();\n };\n\n return send;\n}\n\n/** Require a normalized path-free HTTP(S) origin. */\nfunction requireOrigin(value: string | undefined, name: string): string {\n const url = new URL(requireValue(value, name));\n if (url.pathname !== \"/\" || url.search || url.hash || url.username || url.password) {\n throw new Error(`${name} must be a path-free HTTP(S) origin`);\n }\n return url.origin;\n}\n\n/** Require one non-empty trusted environment value. */\nfunction requireValue(value: string | undefined, name: string): string {\n const normalized = value?.trim();\n if (!normalized) throw new Error(`${name} is required`);\n return normalized;\n}\n", "import {\n AGENT_THINKING_EFFORTS,\n type AgentThinkingEffort,\n type AgentSessionKey,\n} from \"@liy/mote-core\";\n\nimport { createSandboxApiClient } from \"./sandbox-api-client.js\";\n\n/** Canonical non-secret launch identity resolved by IAM (ADR-060/061). */\nexport interface AgentLaunchContext {\n /** Org that owns the sandbox and agent. */\n orgId: string;\n /** Org code used by protected forwarding. */\n orgCode: string;\n /** Immutable agent id the context describes. */\n agentId: string;\n /** Org-unique agent display name. */\n agentName: string;\n /** Agent profile role. */\n agentRole: string;\n /** Immutable owner of the agent. */\n ownerUserId: string;\n /** Pi model provider selected by the agent profile. */\n modelProvider: string;\n /** Pi model selected by the agent profile. */\n modelName: string;\n /** Whether Pi should enable provider reasoning for this launch. */\n thinkingEnabled: boolean;\n /** Provider-neutral reasoning effort selected by the agent profile. */\n thinkingEffort: AgentThinkingEffort;\n}\n\n/** Launch-context request for one attested initiator. */\nexport interface ResolveLaunchContextRequest {\n /** Immutable agent id targeted by the launch. */\n agentId: string;\n /** Orchestrator-attested initiator the launch works for. */\n initiatorUserId: string;\n}\n\n/** Non-secret IAM launch client used by the sandbox orchestrator. */\nexport interface AgentLaunchClient {\n /**\n * Resolve canonical launch identity, validating the initiator.\n *\n * @remarks\n * No permission snapshot is returned: IAM recalculates the agent \u2229 owner \u2229\n * initiator intersection against current grants on every protected request.\n */\n resolveLaunchContext(request: ResolveLaunchContextRequest): Promise<AgentLaunchContext>;\n /** Resolve the mapped Pi session for one pair, or `null` when unbound. */\n resolvePiSession(sessionKey: AgentSessionKey): Promise<string | null>;\n /** Bind one pair to its current Pi session id. */\n bindPiSession(binding: { sessionKey: AgentSessionKey; piSessionId: string }): Promise<void>;\n}\n\n/** Dependencies for the sandbox-to-API HMAC client. */\nexport interface CreateAgentLaunchClientInput {\n /** Closed orchestrator environment containing the derived sandbox credential. */\n env: NodeJS.ProcessEnv;\n /** Fetch seam overridden by transport tests. */\n fetchRequest?: typeof fetch;\n /** Hard request timeout. */\n timeoutMs?: number;\n}\n\n/**\n * Build the sandbox launch client with one derived request credential.\n *\n * @param input - Trusted environment, fetch transport, and timeout.\n * @returns Launch-context and Pi-session operations with no OAuth lifecycle.\n */\nexport function createAgentLaunchClient(\n input: CreateAgentLaunchClientInput,\n): AgentLaunchClient {\n const send = createSandboxApiClient(input);\n\n return {\n async resolveLaunchContext(request) {\n const value = await send(\"agent-launch-context\", {\n agentId: request.agentId,\n initiatorUserId: request.initiatorUserId,\n });\n return parseLaunchContext(value);\n },\n async resolvePiSession(sessionKey) {\n const value = await send(\"pi-sessions/resolve\", {\n sessionKey,\n });\n if (!isRecord(value)) {\n throw new Error(\"Mote API returned an invalid Pi session mapping\");\n }\n const piSessionId = value.piSessionId;\n if (piSessionId === null) {\n return null;\n }\n if (typeof piSessionId !== \"string\" || !piSessionId.trim()) {\n throw new Error(\"Mote API returned an invalid Pi session id\");\n }\n return piSessionId;\n },\n async bindPiSession(binding) {\n await send(\"pi-sessions/bind\", {\n sessionKey: binding.sessionKey,\n piSessionId: binding.piSessionId,\n });\n },\n };\n}\n\n/** Validate one launch-context response body. */\nfunction parseLaunchContext(value: unknown): AgentLaunchContext {\n if (\n !isRecord(value)\n || typeof value.orgId !== \"string\"\n || typeof value.orgCode !== \"string\"\n || typeof value.agentId !== \"string\"\n || typeof value.agentName !== \"string\"\n || typeof value.agentRole !== \"string\"\n || typeof value.ownerUserId !== \"string\"\n || typeof value.modelProvider !== \"string\"\n || typeof value.modelName !== \"string\"\n || typeof value.thinkingEnabled !== \"boolean\"\n || typeof value.thinkingEffort !== \"string\"\n || !AGENT_THINKING_EFFORTS.includes(value.thinkingEffort as AgentThinkingEffort)\n ) {\n throw new Error(\"Mote API returned an invalid agent launch context\");\n }\n return {\n orgId: value.orgId,\n orgCode: value.orgCode,\n agentId: value.agentId,\n agentName: value.agentName,\n agentRole: value.agentRole,\n ownerUserId: value.ownerUserId,\n modelProvider: value.modelProvider,\n modelName: value.modelName,\n thinkingEnabled: value.thinkingEnabled,\n thinkingEffort: value.thinkingEffort as AgentThinkingEffort,\n };\n}\n\n/** Narrow one parsed JSON value to an object record. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n", "import { createSandboxEdgeHmacHeaders } from \"@liy/mote-core\";\n\nimport { readPositiveInteger } from \"../shared/config.js\";\nimport { isRecord, parseOptionalJson } from \"../shared/json.js\";\n\nexport type EdgeHttpResult =\n | { ok: true; payload: unknown }\n | { ok: false; error: { code: string; message: string } };\n\n/** Per-attempt deadline before an edge request is retried or fails. */\nconst EDGE_HTTP_TIMEOUT_MS = 10_000;\n/** Transport retries after the first attempt. */\nconst EDGE_HTTP_RETRIES = 2;\n/** Base delay between transport retries. */\nconst EDGE_HTTP_RETRY_DELAY_MS = 250;\n/** Gateway statuses retried because the command may never have been seen. */\nconst RETRIED_HTTP_STATUSES = new Set([502, 503, 504]);\n\n/**\n * Send one HMAC-authenticated HTTP request to the Edge Worker.\n *\n * @remarks\n * Transport failures and gateway errors are retried with the identical body,\n * so mutation retries replay the same `commandId` and the owning Durable\n * Object deduplicates them (ADR-042 4.6). Thrown fetch errors are normalized\n * into error results: this function never rejects.\n *\n * @param url - Fully resolved Edge Worker URL.\n * @param input - HTTP method, sandbox-edge secret, and optional JSON body.\n * @returns Parsed Edge response payload or normalized transport error.\n */\nexport async function requestSignedEdgeHttp(\n url: URL,\n input: {\n method: \"GET\" | \"POST\" | \"PATCH\";\n sandboxEdgeSecret: string;\n body?: Record<string, unknown>;\n }\n): Promise<EdgeHttpResult> {\n const requestBody = input.body ? JSON.stringify(input.body) : \"\";\n const timeoutMs = readPositiveInteger(\n process.env.MOTE_EDGE_HTTP_TIMEOUT_MS,\n EDGE_HTTP_TIMEOUT_MS,\n );\n let lastError = \"edge request failed\";\n for (let attempt = 0; attempt <= EDGE_HTTP_RETRIES; attempt += 1) {\n if (attempt > 0) {\n await new Promise((resolve) => {\n setTimeout(resolve, EDGE_HTTP_RETRY_DELAY_MS * attempt).unref();\n });\n }\n let response: Response;\n try {\n response = await fetch(url, {\n method: input.method,\n headers: {\n ...(requestBody ? { \"Content-Type\": \"application/json\" } : {}),\n // Signed per attempt: each retry needs a fresh timestamp and nonce.\n ...await createSandboxEdgeHmacHeaders({\n method: input.method,\n url,\n body: requestBody,\n secret: input.sandboxEdgeSecret,\n }),\n },\n ...(requestBody ? { body: requestBody } : {}),\n signal: AbortSignal.timeout(timeoutMs),\n });\n } catch (error) {\n lastError = error instanceof Error ? error.message : String(error);\n continue;\n }\n if (RETRIED_HTTP_STATUSES.has(response.status)) {\n lastError = `Edge Worker returned HTTP ${response.status}`;\n await response.body?.cancel().catch(() => undefined);\n continue;\n }\n const text = await response.text();\n const responseBody = parseOptionalJson(text);\n if (!response.ok) {\n return {\n ok: false,\n error: {\n code: readHostErrorCode(responseBody, response.status),\n message: readHostErrorMessage(responseBody, response.status),\n },\n };\n }\n return {\n ok: true,\n payload: responseBody,\n };\n }\n return {\n ok: false,\n error: {\n code: \"edge_unreachable\",\n message: `Edge Worker request failed after ${EDGE_HTTP_RETRIES + 1} attempts: ${lastError}`,\n },\n };\n}\n\n/**\n * Ensure a configured host URL resolves relative paths as expected.\n *\n * @param value - Raw configured API URL.\n * @returns URL object ending in a slash for path replacement.\n */\nexport function ensureUrlBase(value: string): URL {\n return new URL(value.endsWith(\"/\") ? value : `${value}/`);\n}\n\n/**\n * Extract a stable host error code from a JSON response.\n *\n * @param body - Parsed host response payload.\n * @param status - Host HTTP status code.\n * @returns Machine-readable error code.\n */\nfunction readHostErrorCode(body: unknown, status: number): string {\n return isRecord(body) && typeof body.error === \"string\"\n ? body.error\n : `http_${status}`;\n}\n\n/**\n * Extract a readable host error message from a JSON response.\n *\n * @param body - Parsed host response payload.\n * @param status - Host HTTP status code.\n * @returns Human-readable error message.\n */\nfunction readHostErrorMessage(body: unknown, status: number): string {\n return isRecord(body) && typeof body.message === \"string\"\n ? body.message\n : `Mote API request failed with HTTP ${status}`;\n}\n", "import { randomUUID } from \"node:crypto\";\nimport { type GenAppBundleUpload } from \"@liy/mote-core\";\nimport { readBuildArtifact } from \"../gen-app-build.js\";\nimport type { GenAppBundleClient } from \"../gen-app-bundle-client.js\";\nimport { lstat, mkdir, readFile, readdir, realpath, rename, stat, writeFile } from \"node:fs/promises\";\nimport { isAbsolute, join, resolve } from \"node:path\";\n\nimport { createHostWorkspaceProcessRuntime } from \"../workspace-process-runtime.js\";\n\nimport {\n resolveOrchestratorStateRoot,\n resolveAgentWorktreesRoot,\n resolveQuarantinedWorktreesRoot,\n resolveWorkspacesRoot,\n} from \"../shared/config.js\";\n\nconst workspaceProcessRuntime = createHostWorkspaceProcessRuntime();\nconst activeIntegrations = new Set<string>();\n/** Maximum time allowed for one deterministic Gen App production build. */\nconst GEN_APP_BUILD_TIMEOUT_MS = 5 * 60 * 1_000;\n/** Bounded build output retained by Node when reporting a failed command. */\nconst GEN_APP_BUILD_MAX_BUFFER_BYTES = 1024 * 1024;\n\n/** Stable error codes returned when a Gen App violates the build contract. */\nexport type GenAppBuildValidationErrorCode =\n | \"gen_app_workspace_invalid\"\n | \"gen_app_package_json_missing\"\n | \"gen_app_package_json_invalid\"\n | \"gen_app_build_script_missing\"\n | \"gen_app_build_failed\"\n | \"gen_app_build_timeout\"\n | \"gen_app_build_changed_head\"\n | \"gen_app_dist_missing\"\n | \"gen_app_dist_invalid\"\n | \"gen_app_index_html_missing\"\n | \"gen_app_index_html_empty\";\n\n/** Structured failure raised by the deterministic Gen App build validator. */\nexport class GenAppBuildValidationError extends Error {\n /** Stable command error code exposed to the agent. */\n readonly code: GenAppBuildValidationErrorCode;\n\n /**\n * Create one actionable Gen App build failure.\n *\n * @param code - Stable machine-readable failure code.\n * @param message - Concise repair guidance for the assigned Drone Agent.\n */\n constructor(code: GenAppBuildValidationErrorCode, message: string) {\n super(message);\n this.name = \"GenAppBuildValidationError\";\n this.code = code;\n }\n}\n\n/** Stable filesystem and branch identity for one app-associated ticket. */\nexport interface TicketWorkspaceIdentity {\n /** Canonical app repository checked out on `main`. */\n repositoryDir: string;\n /** Ticket-isolated Git worktree. */\n worktreeDir: string;\n /** Ticket feature branch shared by the canonical repo and worktree. */\n branch: string;\n}\n\n/** Result of reconciling a worktree whose durable ticket no longer exists. */\nexport interface OrphanTicketWorkspaceResolution {\n /** Destructive cleanup is used only when all work is already on `main`. */\n action: \"cleaned\" | \"quarantined\";\n /** Why the worktree required quarantine instead of normal cleanup. */\n reason?: \"dirty\" | \"unmerged\";\n /** New location when potentially unique work was retained. */\n quarantineDir?: string;\n}\n\n/**\n * Initialize the canonical Git repository for one generated app.\n *\n * @remarks\n * The empty root commit gives every ticket branch a stable base. Existing\n * repositories are accepted only when they expose the required `main` branch;\n * a partially initialized directory fails closed instead of being overwritten.\n *\n * @param input - Runtime environment and sandbox-minted app id.\n * @returns Absolute canonical repository directory.\n */\nexport async function initializeAppRepository(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n}): Promise<string> {\n const appId = requirePathSegment(input.appId, \"appId\");\n const repositoryDir = join(resolveWorkspacesRoot(input.env), appId);\n if (await pathExists(repositoryDir)) {\n await requireGitRepository(repositoryDir);\n await runGit(repositoryDir, [\"rev-parse\", \"--verify\", \"refs/heads/main\"]);\n return repositoryDir;\n }\n await workspaceProcessRuntime.ensureDirectory(resolveWorkspacesRoot(input.env));\n await runGit(undefined, [\"init\", \"--initial-branch=main\", repositoryDir]);\n await runGit(repositoryDir, [\"config\", \"core.sharedRepository\", \"group\"]);\n await runGit(repositoryDir, [\n \"-c\",\n \"user.name=Mote Orchestrator\",\n \"-c\",\n \"user.email=orchestrator@mote.local\",\n \"commit\",\n \"--allow-empty\",\n \"-m\",\n \"Initialize app repository\",\n ]);\n return repositoryDir;\n}\n\n/**\n * Permanently remove one generated app repository and every derived worktree.\n *\n * @remarks\n * App deletion is explicitly destructive, so unlike ticket cleanup it removes\n * dirty and unmerged work. Worktrees are removed before the canonical Git\n * repository because their administrative metadata points back to that repo.\n *\n * @param input - Runtime environment and app id selected for deletion.\n */\nexport async function deleteAppWorkspace(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n}): Promise<void> {\n const appId = requirePathSegment(input.appId, \"appId\");\n if (activeIntegrations.has(appId)) {\n throw new Error(`cannot delete app ${appId} while it is being integrated`);\n }\n await workspaceProcessRuntime.remove(join(resolveAgentWorktreesRoot(input.env), appId));\n await workspaceProcessRuntime.remove(join(resolveQuarantinedWorktreesRoot(input.env), appId));\n await workspaceProcessRuntime.remove(join(resolveWorkspacesRoot(input.env), appId));\n}\n\n/**\n * Provision the required worktree and `ticket/<ticketId>` branch.\n *\n * @param input - Runtime environment, app id, and ticket id.\n * @returns Absolute ticket worktree directory.\n */\nexport async function provisionTicketWorkspace(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n ticketId: string;\n}): Promise<string> {\n const identity = resolveTicketWorkspaceIdentity(input);\n await requireGitRepository(identity.repositoryDir);\n if (await pathExists(identity.worktreeDir)) {\n await requireExpectedWorktree(identity);\n return identity.worktreeDir;\n }\n await workspaceProcessRuntime.ensureDirectory(\n join(resolveAgentWorktreesRoot(input.env), requirePathSegment(input.appId, \"appId\")),\n );\n await runGit(identity.repositoryDir, [\"worktree\", \"prune\"]);\n const branchExists = await gitSucceeds(identity.repositoryDir, [\n \"show-ref\",\n \"--verify\",\n \"--quiet\",\n `refs/heads/${identity.branch}`,\n ]);\n await runGit(identity.repositoryDir, branchExists\n ? [\"worktree\", \"add\", identity.worktreeDir, identity.branch]\n : [\"worktree\", \"add\", \"-b\", identity.branch, identity.worktreeDir, \"main\"]);\n return identity.worktreeDir;\n}\n\n/**\n * Build one app ticket from a clean committed HEAD and validate its required output.\n *\n * @remarks\n * Author validation and gatekeeper integration use this function so agent\n * behavior cannot bypass the same manifest, build, and output contract. The\n * previous `dist` is removed before `npm run build`, preventing stale output\n * from satisfying validation. Build scripts must leave the committed checkout\n * clean and must not advance HEAD.\n *\n * @param input - Runtime environment plus the app and ticket workspace identity.\n * @returns Exact commit and fresh `dist` directory produced by the build.\n * @throws {@link GenAppBuildValidationError} when the build contract is not met.\n */\nexport async function validateTicketWorkspaceBuild(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n ticketId: string;\n}): Promise<{ commit: string; distDir: string }> {\n const identity = resolveTicketWorkspaceIdentity(input);\n try {\n await requireExpectedWorktree(identity);\n await requireNoGitOperation(identity.worktreeDir);\n await requireCleanCheckout(identity.worktreeDir, \"ticket worktree\");\n } catch (error) {\n throw new GenAppBuildValidationError(\n \"gen_app_workspace_invalid\",\n error instanceof Error ? error.message : \"ticket worktree is not ready to build\",\n );\n }\n\n const commit = (await runGit(identity.worktreeDir, [\"rev-parse\", \"HEAD\"])).trim();\n const packagePath = join(identity.worktreeDir, \"package.json\");\n const packageJson = await readPackageJson(packagePath);\n if (!isRecord(packageJson.scripts)\n || typeof packageJson.scripts.build !== \"string\"\n || !packageJson.scripts.build.trim()) {\n throw new GenAppBuildValidationError(\n \"gen_app_build_script_missing\",\n \"package.json must define a non-empty scripts.build command\",\n );\n }\n\n const distDir = join(identity.worktreeDir, \"dist\");\n await workspaceProcessRuntime.remove(distDir);\n try {\n await workspaceProcessRuntime.run(\"npm\", [\"run\", \"build\"], {\n cwd: identity.worktreeDir,\n timeoutMs: GEN_APP_BUILD_TIMEOUT_MS,\n maxOutputBytes: GEN_APP_BUILD_MAX_BUFFER_BYTES,\n });\n } catch (error) {\n if (isTimedOutProcessError(error)) {\n throw new GenAppBuildValidationError(\n \"gen_app_build_timeout\",\n `npm run build exceeded ${GEN_APP_BUILD_TIMEOUT_MS / 1_000} seconds`,\n );\n }\n throw new GenAppBuildValidationError(\n \"gen_app_build_failed\",\n `npm run build failed${formatProcessFailure(error)}`,\n );\n }\n\n const builtCommit = (await runGit(identity.worktreeDir, [\"rev-parse\", \"HEAD\"])).trim();\n if (builtCommit !== commit) {\n throw new GenAppBuildValidationError(\n \"gen_app_build_changed_head\",\n \"npm run build must not create commits or change ticket HEAD\",\n );\n }\n await requireBuildOutput(distDir);\n try {\n await requireCleanCheckout(identity.worktreeDir, \"ticket worktree after npm run build\");\n } catch (error) {\n throw new GenAppBuildValidationError(\n \"gen_app_workspace_invalid\",\n error instanceof Error ? error.message : \"npm run build left uncommitted changes\",\n );\n }\n return { commit, distDir };\n}\n\n/** Persistent upload intent makes response loss and post-fast-forward retries reuse the exact bytes. */\ninterface IntegrationIntent {\n upload: GenAppBundleUpload;\n expectedPrevious: string | null;\n}\n\n/**\n * Run the same production build and host column checks without registering a bundle.\n * @param input - Owned ticket identity and signed host client.\n * @returns Accepted query keys and resolved columns.\n */\nexport async function checkTicketWorkspace(input: {\n env: NodeJS.ProcessEnv; appId: string; ticketId: string; client: GenAppBundleClient;\n}): Promise<unknown> {\n await validateTicketWorkspaceBuild(input);\n const artifact = await readBuildArtifact(resolveTicketWorkspaceIdentity(input).worktreeDir);\n return input.client.check(input.appId, artifact.manifest);\n}\n\n/**\n * Register exact reviewed bytes, fast-forward main, then compare-and-swap the preview pointer.\n * Recovery retains the original upload and expected pointer in private orchestrator state.\n * @param input - Owned ticket identity and active-sandbox host client.\n * @returns Integrated commit and the immutable bundle version serving its preview.\n */\nexport async function integrateTicketWorkspace(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n ticketId: string;\n client: GenAppBundleClient;\n}): Promise<{ commit: string; bundleVersionId: string }> {\n const identity = resolveTicketWorkspaceIdentity(input);\n if (activeIntegrations.has(input.appId)) throw new Error(`another integration is updating app ${input.appId}`);\n activeIntegrations.add(input.appId);\n try {\n await requireExpectedWorktree(identity);\n await requireNoGitOperation(identity.worktreeDir);\n await requireCanonicalMain(identity.repositoryDir);\n await requireCleanCheckout(identity.repositoryDir, \"canonical app repository\");\n await requireCleanCheckout(identity.worktreeDir, \"ticket worktree\");\n if (!await gitSucceeds(identity.worktreeDir, [\"merge-base\", \"--is-ancestor\", \"main\", \"HEAD\"])) {\n throw new Error(\"ticket branch is stale; merge the latest main into the worktree and rerun the gate\");\n }\n const commit = (await runGit(identity.worktreeDir, [\"rev-parse\", \"HEAD\"])).trim();\n const intentDir = join(resolveOrchestratorStateRoot(input.env), \"integrations\", requirePathSegment(input.appId, \"appId\"));\n await mkdir(intentDir, { recursive: true, mode: 0o700 });\n const intentPath = join(intentDir, `${requirePathSegment(input.ticketId, \"ticketId\")}-${commit}.json`);\n let intent: IntegrationIntent;\n if (await pathExists(intentPath)) {\n intent = JSON.parse(await readFile(intentPath, \"utf8\")) as IntegrationIntent;\n if (intent.upload.commit !== commit || intent.upload.appId !== input.appId) throw new Error(\"Invalid integration recovery record\");\n } else {\n const expectedPrevious = await input.client.pointer(input.appId);\n const build = await validateTicketWorkspaceBuild(input);\n if (build.commit !== commit) throw new Error(\"ticket HEAD changed before the build; rerun the gate\");\n const artifact = await readBuildArtifact(identity.worktreeDir);\n intent = { expectedPrevious, upload: { ...artifact, appId: input.appId, bundleVersionId: randomUUID(), commit } };\n const temporary = `${intentPath}.${randomUUID()}.tmp`;\n await writeFile(temporary, JSON.stringify(intent), { mode: 0o600, flush: true });\n await rename(temporary, intentPath);\n }\n const receipt = await input.client.register(intent.upload);\n if (receipt.bundleVersionId !== intent.upload.bundleVersionId || receipt.commit !== commit || receipt.appId !== input.appId) {\n throw new Error(\"Registered bundle does not match integration intent\");\n }\n await requireCleanCheckout(identity.worktreeDir, \"ticket worktree after upload\");\n if ((await runGit(identity.worktreeDir, [\"rev-parse\", \"HEAD\"])).trim() !== commit\n || !await gitSucceeds(identity.repositoryDir, [\"merge-base\", \"--is-ancestor\", \"main\", commit])) {\n throw new Error(\"ticket or main changed during registration; rerun the gate\");\n }\n await runGit(identity.repositoryDir, [\"merge\", \"--ff-only\", commit]);\n if ((await runGit(identity.repositoryDir, [\"rev-parse\", \"HEAD\"])).trim() !== commit) {\n throw new Error(\"integrated app commit does not match the registered build\");\n }\n await input.client.activate(input.appId, receipt.bundleVersionId, intent.expectedPrevious);\n return { commit, bundleVersionId: receipt.bundleVersionId };\n } finally { activeIntegrations.delete(input.appId); }\n}\n\n/**\n * Remove a merged ticket worktree and its feature branch.\n *\n * @remarks\n * Cleanup never forces deletion: dirty or unmerged work is evidence that the\n * ticket has not completed the integration contract and must be inspected.\n *\n * @param input - Runtime environment, app id, and ticket id.\n */\nexport async function cleanupTicketWorkspace(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n ticketId: string;\n}): Promise<void> {\n const identity = resolveTicketWorkspaceIdentity(input);\n await requireGitRepository(identity.repositoryDir);\n await requireNoGitOperation(identity.repositoryDir);\n await requireCanonicalMain(identity.repositoryDir);\n await requireCleanCheckout(identity.repositoryDir, \"canonical app repository\");\n if (await pathExists(identity.worktreeDir)) {\n await requireExpectedWorktree(identity);\n await requireNoGitOperation(identity.worktreeDir);\n await requireCleanCheckout(identity.worktreeDir, \"ticket worktree\");\n }\n const branchExists = await gitSucceeds(identity.repositoryDir, [\n \"show-ref\",\n \"--verify\",\n \"--quiet\",\n `refs/heads/${identity.branch}`,\n ]);\n if (!branchExists) {\n await runGit(identity.repositoryDir, [\"worktree\", \"prune\"]);\n return;\n }\n if (!await gitSucceeds(identity.repositoryDir, [\"merge-base\", \"--is-ancestor\", identity.branch, \"main\"])) {\n throw new Error(`cannot clean unmerged branch ${identity.branch}`);\n }\n if (await pathExists(identity.worktreeDir)) {\n await runGit(identity.repositoryDir, [\"worktree\", \"remove\", identity.worktreeDir]);\n } else {\n await runGit(identity.repositoryDir, [\"worktree\", \"prune\"]);\n }\n await runGit(identity.repositoryDir, [\"branch\", \"-d\", identity.branch]);\n await runGit(identity.repositoryDir, [\"worktree\", \"prune\"]);\n}\n\n/**\n * Remove a safe orphan or move its potentially unique work out of active scheduling.\n *\n * @remarks\n * A clean branch already reachable from canonical `main` uses the normal cleanup\n * contract. Dirty or unmerged work is retained through `git worktree move`, which\n * updates Git's administrative metadata while removing the directory from active\n * worktree enumeration.\n *\n * @param input - Runtime environment, app id, and missing ticket id.\n * @returns Whether the orphan was deleted or quarantined for recovery.\n */\nexport async function resolveOrphanTicketWorkspace(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n ticketId: string;\n}): Promise<OrphanTicketWorkspaceResolution> {\n const identity = resolveTicketWorkspaceIdentity(input);\n if (activeIntegrations.has(input.appId)) {\n throw new Error(`cannot reconcile orphan worktree while app ${input.appId} is being integrated`);\n }\n await requireGitRepository(identity.repositoryDir);\n await requireExpectedWorktree(identity);\n await requireNoGitOperation(identity.worktreeDir);\n\n const clean = await isCleanCheckout(identity.worktreeDir);\n const merged = await gitSucceeds(identity.repositoryDir, [\n \"merge-base\",\n \"--is-ancestor\",\n identity.branch,\n \"main\",\n ]);\n if (clean && merged) {\n await cleanupTicketWorkspace(input);\n return { action: \"cleaned\" };\n }\n\n const appId = requirePathSegment(input.appId, \"appId\");\n const ticketId = requirePathSegment(input.ticketId, \"ticketId\");\n const quarantineDir = join(resolveQuarantinedWorktreesRoot(input.env), appId, ticketId);\n if (await pathExists(quarantineDir)) {\n throw new Error(`orphan quarantine already exists: ${quarantineDir}`);\n }\n await workspaceProcessRuntime.ensureDirectory(join(resolveQuarantinedWorktreesRoot(input.env), appId));\n await runGit(identity.repositoryDir, [\"worktree\", \"move\", identity.worktreeDir, quarantineDir]);\n return {\n action: \"quarantined\",\n reason: clean ? \"unmerged\" : \"dirty\",\n quarantineDir,\n };\n}\n\n/**\n * Enumerate every ticket worktree currently on local disk.\n *\n * @remarks\n * Reconcile input (ADR-042): leftover directories of completed tickets are\n * local runtime state the orchestrator owns, so enumeration is free and a\n * lost `done` observation can no longer leak a worktree forever.\n *\n * @param env - Orchestrator process environment.\n * @returns App and ticket identity for each worktree directory found.\n */\nexport async function listTicketWorktrees(\n env: NodeJS.ProcessEnv\n): Promise<Array<{ appId: string; ticketId: string }>> {\n const root = resolveAgentWorktreesRoot(env);\n const worktrees: Array<{ appId: string; ticketId: string }> = [];\n let appEntries;\n try {\n appEntries = await readdir(root, { withFileTypes: true });\n } catch (error) {\n if (isMissingPathError(error)) {\n return [];\n }\n throw error;\n }\n for (const appEntry of appEntries) {\n if (!appEntry.isDirectory()) {\n continue;\n }\n let ticketEntries;\n try {\n ticketEntries = await readdir(join(root, appEntry.name), { withFileTypes: true });\n } catch (error) {\n if (isMissingPathError(error)) {\n // App deletion may race enumeration after the root listing completes.\n continue;\n }\n throw error;\n }\n for (const ticketEntry of ticketEntries) {\n if (ticketEntry.isDirectory()) {\n worktrees.push({ appId: appEntry.name, ticketId: ticketEntry.name });\n }\n }\n }\n return worktrees;\n}\n\n/**\n * Check whether a filesystem operation lost a path to normal concurrent deletion.\n *\n * @param error - Filesystem error thrown by a Node promise API.\n * @returns Whether the path was absent rather than unreadable or malformed.\n */\nfunction isMissingPathError(error: unknown): boolean {\n return error instanceof Error\n && \"code\" in error\n && (error as NodeJS.ErrnoException).code === \"ENOENT\";\n}\n\n/**\n * Derive all runtime paths from stable app and ticket identities.\n *\n * @param input - Runtime environment, app id, and ticket id.\n * @returns Canonical repository, worktree, and branch identity.\n */\nexport function resolveTicketWorkspaceIdentity(input: {\n env: NodeJS.ProcessEnv;\n appId: string;\n ticketId: string;\n}): TicketWorkspaceIdentity {\n const appId = requirePathSegment(input.appId, \"appId\");\n const ticketId = requirePathSegment(input.ticketId, \"ticketId\");\n return {\n repositoryDir: join(resolveWorkspacesRoot(input.env), appId),\n worktreeDir: join(resolveAgentWorktreesRoot(input.env), appId, ticketId),\n branch: `ticket/${ticketId}`,\n };\n}\n\n/**\n * Require one path component that cannot escape its configured root.\n *\n * @param value - Candidate app or ticket id.\n * @param field - Field name used in validation errors.\n * @returns Safe normalized path segment.\n */\nfunction requirePathSegment(value: string, field: string): string {\n const normalized = value.trim();\n if (!normalized || normalized === \".\" || normalized === \"..\" || !/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(normalized)) {\n throw new Error(`${field} is not a safe path segment`);\n }\n return normalized;\n}\n\n/**\n * Read and parse the required regular `package.json` file.\n *\n * @param packagePath - Absolute manifest path inside the ticket worktree.\n * @returns Parsed manifest object.\n */\nasync function readPackageJson(packagePath: string): Promise<Record<string, unknown>> {\n let manifestStat;\n try {\n manifestStat = await lstat(packagePath);\n } catch {\n throw new GenAppBuildValidationError(\n \"gen_app_package_json_missing\",\n \"Gen App worktree must contain package.json\",\n );\n }\n if (!manifestStat.isFile() || manifestStat.isSymbolicLink()) {\n throw new GenAppBuildValidationError(\n \"gen_app_package_json_invalid\",\n \"package.json must be a regular file\",\n );\n }\n try {\n const parsed: unknown = JSON.parse(await readFile(packagePath, \"utf8\"));\n if (!isRecord(parsed)) {\n throw new Error(\"manifest is not an object\");\n }\n return parsed;\n } catch {\n throw new GenAppBuildValidationError(\n \"gen_app_package_json_invalid\",\n \"package.json must contain a valid JSON object\",\n );\n }\n}\n\n/**\n * Require the fresh production build output served by the preview runtime.\n *\n * @param distDir - Absolute `dist` directory produced by `npm run build`.\n */\nasync function requireBuildOutput(distDir: string): Promise<void> {\n let distStat;\n try {\n distStat = await lstat(distDir);\n } catch {\n throw new GenAppBuildValidationError(\n \"gen_app_dist_missing\",\n \"npm run build must create dist\",\n );\n }\n if (!distStat.isDirectory() || distStat.isSymbolicLink()) {\n throw new GenAppBuildValidationError(\n \"gen_app_dist_invalid\",\n \"npm run build must create dist as a real directory\",\n );\n }\n\n const indexPath = join(distDir, \"index.html\");\n let indexStat;\n try {\n indexStat = await lstat(indexPath);\n } catch {\n throw new GenAppBuildValidationError(\n \"gen_app_index_html_missing\",\n \"npm run build must create dist/index.html\",\n );\n }\n if (!indexStat.isFile() || indexStat.isSymbolicLink()) {\n throw new GenAppBuildValidationError(\n \"gen_app_index_html_missing\",\n \"dist/index.html must be a regular file\",\n );\n }\n if (indexStat.size === 0) {\n throw new GenAppBuildValidationError(\n \"gen_app_index_html_empty\",\n \"dist/index.html must not be empty\",\n );\n }\n}\n\n/**\n * Check a JSON-like value before reading manifest properties.\n *\n * @param value - Candidate object value.\n * @returns Whether the value is a non-null record.\n */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Detect Node child-process timeout failures without relying on an internal error class.\n *\n * @param error - Rejected `execFile` value.\n * @returns Whether Node terminated the process after the configured timeout.\n */\nfunction isTimedOutProcessError(error: unknown): boolean {\n return isRecord(error) && error.killed === true;\n}\n\n/**\n * Format bounded build diagnostics without returning an unbounded process log.\n *\n * @param error - Rejected `execFile` value.\n * @returns Optional concise stderr or process message suffix.\n */\nfunction formatProcessFailure(error: unknown): string {\n const stderr = isRecord(error) && typeof error.stderr === \"string\" ? error.stderr.trim() : \"\";\n const message = stderr || (error instanceof Error ? error.message.trim() : \"\");\n if (!message) {\n return \"\";\n }\n const bounded = message.length > 1_000 ? `${message.slice(0, 997)}...` : message;\n return `: ${bounded}`;\n}\n\n/**\n * Require one canonical app Git repository.\n *\n * @param repositoryDir - Derived canonical repository directory.\n */\nasync function requireGitRepository(repositoryDir: string): Promise<void> {\n if (!await gitSucceeds(repositoryDir, [\"rev-parse\", \"--is-inside-work-tree\"])) {\n throw new Error(`app repository is not initialized: ${repositoryDir}`);\n }\n}\n\n/**\n * Require the canonical repository checkout to remain on `main`.\n *\n * @param repositoryDir - Derived canonical app repository.\n */\nasync function requireCanonicalMain(repositoryDir: string): Promise<void> {\n const branch = (await runGit(repositoryDir, [\"branch\", \"--show-current\"])).trim();\n if (branch !== \"main\") {\n throw new Error(`canonical app repository must be on main, found ${branch || \"detached HEAD\"}`);\n }\n}\n\n/**\n * Require the derived worktree to be checked out on its ticket branch.\n *\n * @param identity - Derived workspace identity.\n */\nasync function requireExpectedWorktree(identity: TicketWorkspaceIdentity): Promise<void> {\n if (!await pathExists(identity.worktreeDir)) {\n throw new Error(`ticket worktree does not exist: ${identity.worktreeDir}`);\n }\n const branch = (await runGit(identity.worktreeDir, [\"branch\", \"--show-current\"])).trim();\n if (branch !== identity.branch) {\n throw new Error(`ticket worktree must use ${identity.branch}, found ${branch || \"detached HEAD\"}`);\n }\n const repositoryCommonDir = await resolveGitPath(identity.repositoryDir, [\"rev-parse\", \"--git-common-dir\"]);\n const worktreeCommonDir = await resolveGitPath(identity.worktreeDir, [\"rev-parse\", \"--git-common-dir\"]);\n if (repositoryCommonDir !== worktreeCommonDir) {\n throw new Error(\"ticket worktree belongs to a different app repository\");\n }\n}\n\n/**\n * Resolve one Git-reported filesystem path to its canonical absolute path.\n *\n * @param directory - Checkout used to run the Git command.\n * @param args - Git command that prints one path.\n * @returns Canonical absolute filesystem path.\n */\nasync function resolveGitPath(directory: string, args: string[]): Promise<string> {\n const rawPath = (await runGit(directory, args)).trim();\n return realpath(isAbsolute(rawPath) ? rawPath : resolve(directory, rawPath));\n}\n\n/**\n * Require an index and working tree with no pending changes.\n *\n * @param directory - Git checkout to inspect.\n * @param label - Human-readable checkout name used in failures.\n */\nasync function requireCleanCheckout(directory: string, label: string): Promise<void> {\n if (!await isCleanCheckout(directory)) {\n throw new Error(`${label} has uncommitted changes`);\n }\n}\n\n/**\n * Check whether an index and working tree have no pending changes.\n *\n * @param directory - Git checkout to inspect.\n * @returns Whether the checkout is clean.\n */\nasync function isCleanCheckout(directory: string): Promise<boolean> {\n const status = await runGit(directory, [\"status\", \"--porcelain\"]);\n return !status.trim();\n}\n\n/**\n * Reject a checkout with an unfinished merge, rebase, or cherry-pick.\n *\n * @param directory - Git checkout to inspect.\n */\nasync function requireNoGitOperation(directory: string): Promise<void> {\n for (const ref of [\"MERGE_HEAD\", \"REBASE_HEAD\", \"CHERRY_PICK_HEAD\", \"REVERT_HEAD\"]) {\n if (await gitSucceeds(directory, [\"rev-parse\", \"--quiet\", \"--verify\", ref])) {\n throw new Error(`Git checkout has an unfinished operation (${ref})`);\n }\n }\n for (const name of [\"rebase-merge\", \"rebase-apply\"]) {\n const rawPath = (await runGit(directory, [\"rev-parse\", \"--git-path\", name])).trim();\n const operationPath = isAbsolute(rawPath) ? rawPath : resolve(directory, rawPath);\n if (await pathExists(operationPath)) {\n throw new Error(`Git checkout has an unfinished operation (${name})`);\n }\n }\n}\n\n/**\n * Run Git while preserving actionable process failures.\n *\n * @param cwd - Optional repository or worktree directory.\n * @param args - Git arguments after the optional `-C` prefix.\n * @returns Git standard output.\n */\nasync function runGit(cwd: string | undefined, args: string[]): Promise<string> {\n const result = await workspaceProcessRuntime.run(\n \"git\",\n [...(cwd ? [\"-C\", cwd] : []), ...args],\n );\n return result.stdout;\n}\n\n/**\n * Run a Git predicate whose non-zero exit status means false.\n *\n * @param cwd - Repository or worktree directory.\n * @param args - Predicate Git arguments.\n * @returns Whether Git exited successfully.\n */\nasync function gitSucceeds(cwd: string, args: string[]): Promise<boolean> {\n try {\n await runGit(cwd, args);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Check one filesystem path without treating absence as an error.\n *\n * @param path - Absolute path to inspect.\n * @returns Whether the path exists.\n */\nasync function pathExists(path: string): Promise<boolean> {\n try {\n await stat(path);\n return true;\n } catch {\n return false;\n }\n}\n", "import { fileURLToPath } from \"node:url\";\nimport { GEN_APP_MAX_UPLOAD_BODY_BYTES, type GenAppBundleUpload } from \"@liy/mote-core\";\nimport { createHostWorkspaceProcessRuntime } from \"./workspace-process-runtime.js\";\n\n/**\n * Collect build bytes as the workspace UID, never as the privileged orchestrator.\n * This module and its executable stay at the package output root in both the\n * development build and the published Sprite bundle, so relocation is safe.\n * @param worktreeDir - Validated ticket checkout containing the manifest and dist.\n * @returns Bounded manifest and artifact bytes for host registration.\n */\nexport async function readBuildArtifact(worktreeDir: string): Promise<Pick<GenAppBundleUpload, \"manifest\" | \"files\">> {\n const result = await createHostWorkspaceProcessRuntime().run(\"node\", [\n fileURLToPath(new URL(\"./read-gen-app-build.js\", import.meta.url)), worktreeDir,\n ], { cwd: worktreeDir, maxOutputBytes: GEN_APP_MAX_UPLOAD_BODY_BYTES });\n return JSON.parse(result.stdout) as Pick<GenAppBundleUpload, \"manifest\" | \"files\">;\n}\n", "import { execFile } from \"node:child_process\";\nimport { dirname } from \"node:path\";\nimport { promisify } from \"node:util\";\n\nimport { DEFAULT_AGENT_SHARED_RESOURCE_GID } from \"./shared/config.js\";\n\nconst execFileAsync = promisify(execFile);\nconst SETPRIV_PATH = \"/usr/bin/setpriv\";\nconst WORKSPACE_UID = 1_001;\nconst WORKSPACE_GID = 1_001;\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_MAX_OUTPUT_BYTES = 1024 * 1024;\nconst WORKSPACE_PATH = [\n \"/.sprite/bin\",\n \"/opt/mote/runtime/node_modules/.bin\",\n \"/home/sprite/.local/bin\",\n \"/usr/local/sbin\",\n \"/usr/local/bin\",\n \"/usr/sbin\",\n \"/usr/bin\",\n \"/sbin\",\n \"/bin\",\n].join(\":\");\n\n/** Bounded execution options for one orchestrator-coordinated workspace command. */\nexport interface WorkspaceProcessRunOptions {\n /** Trusted absolute working directory, when the command needs one. */\n cwd?: string;\n /** Maximum command duration before Node terminates the subprocess. */\n timeoutMs?: number;\n /** Maximum combined buffered output retained for diagnostics. */\n maxOutputBytes?: number;\n}\n\n/** Captured output from one successful workspace command. */\nexport interface WorkspaceProcessResult {\n /** UTF-8 standard output. */\n stdout: string;\n /** UTF-8 standard error. */\n stderr: string;\n}\n\n/** Narrow process boundary for Git, builds, and trusted workspace maintenance. */\nexport interface WorkspaceProcessRuntime {\n /**\n * Run one literal executable and argument vector with a closed environment.\n *\n * @param command - Trusted executable name or absolute path.\n * @param args - Literal arguments passed without shell interpolation.\n * @param options - Optional trusted working directory and resource bounds.\n * @returns Captured UTF-8 output after successful completion.\n */\n run(\n command: string,\n args: readonly string[],\n options?: WorkspaceProcessRunOptions,\n ): Promise<WorkspaceProcessResult>;\n /**\n * Create one trusted shared directory and any missing parents.\n *\n * @param path - Absolute path already constrained to a shared workspace root.\n */\n ensureDirectory(path: string): Promise<void>;\n /**\n * Remove one trusted shared workspace tree when it exists.\n *\n * @param path - Absolute path already constrained to a shared workspace root.\n */\n remove(path: string): Promise<void>;\n\n}\n\n/**\n * Create the production UID-1001 workspace process boundary.\n *\n * @remarks\n * The fixed shell applies the cooperative umask before `setpriv` selects\n * Sprite's default identity, retains only `mote-workspace`, drops capabilities,\n * and enables `no_new_privs`. Command and arguments remain positional values.\n *\n * @returns Runtime suitable for the root Sandbox Orchestrator.\n */\nexport function createSetprivWorkspaceProcessRuntime(): WorkspaceProcessRuntime {\n return createWorkspaceProcessRuntime(WORKSPACE_PATH, (command, args) => ({\n executable: \"/bin/sh\",\n args: [\n \"-c\",\n `umask 0007; exec ${SETPRIV_PATH} \\\"$@\\\"`,\n \"mote-workspace-launch\",\n `--reuid=${WORKSPACE_UID}`,\n `--regid=${WORKSPACE_GID}`,\n `--groups=${DEFAULT_AGENT_SHARED_RESOURCE_GID}`,\n \"--bounding-set=-all\",\n \"--inh-caps=-all\",\n \"--ambient-caps=-all\",\n \"--no-new-privs\",\n \"--\",\n command,\n ...args,\n ],\n }));\n}\n\n/**\n * Create the portable boundary used by non-root development and tests.\n *\n * @remarks\n * It preserves the exact closed environment and umask contract but cannot\n * claim Linux UID/GID isolation. The packaged Sprite verifier exercises the\n * production runtime as root.\n *\n * @returns Runtime that executes as the current development identity.\n */\nexport function createDirectWorkspaceProcessRuntime(): WorkspaceProcessRuntime {\n const developmentPath = `${dirname(process.execPath)}:${WORKSPACE_PATH}`;\n return createWorkspaceProcessRuntime(developmentPath, (command, args) => ({\n executable: \"/bin/sh\",\n args: [\"-c\", \"umask 0007; exec \\\"$@\\\"\", \"mote-workspace-direct\", command, ...args],\n }));\n}\n\n/**\n * Select the production privilege drop or portable development runtime.\n *\n * @remarks\n * A Linux root process is the provisioned Sandbox Orchestrator and must cross\n * the UID-1001 boundary. Non-root and non-Linux hosts cannot perform that\n * transition and use the behaviorally equivalent direct runtime for tests.\n *\n * @returns Runtime appropriate for the current host identity.\n */\nexport function createHostWorkspaceProcessRuntime(): WorkspaceProcessRuntime {\n return process.platform === \"linux\" && process.getuid?.() === 0\n ? createSetprivWorkspaceProcessRuntime()\n : createDirectWorkspaceProcessRuntime();\n}\n\n/** Literal command selected after applying the owning runtime boundary. */\ninterface WorkspaceCommand {\n /** Executable passed to Node without shell lookup. */\n executable: string;\n /** Literal executable arguments. */\n args: string[];\n}\n\n/** Build one runner around a trusted command transformation. */\nfunction createWorkspaceProcessRuntime(\n path: string,\n selectCommand: (command: string, args: readonly string[]) => WorkspaceCommand,\n): WorkspaceProcessRuntime {\n const run: WorkspaceProcessRuntime[\"run\"] = async (command, args, options = {}) => {\n const selected = selectCommand(command, args);\n const result = await execFileAsync(selected.executable, selected.args, {\n cwd: options.cwd,\n encoding: \"utf8\",\n env: createWorkspaceProcessEnvironment(path),\n timeout: options.timeoutMs ?? DEFAULT_TIMEOUT_MS,\n maxBuffer: options.maxOutputBytes ?? DEFAULT_MAX_OUTPUT_BYTES,\n });\n return {\n stdout: String(result.stdout),\n stderr: String(result.stderr),\n };\n };\n return {\n run,\n async ensureDirectory(directoryPath) {\n await run(process.execPath, [\n \"--input-type=module\",\n \"-e\",\n \"import{mkdir}from'node:fs/promises';await mkdir(process.argv[1],{recursive:true})\",\n directoryPath,\n ]);\n },\n async remove(workspacePath) {\n await run(process.execPath, [\n \"--input-type=module\",\n \"-e\",\n \"import{rm}from'node:fs/promises';await rm(process.argv[1],{recursive:true,force:true})\",\n workspacePath,\n ]);\n },\n\n };\n}\n\n/** Build the complete credential-free environment passed to workspace code. */\nfunction createWorkspaceProcessEnvironment(path: string): NodeJS.ProcessEnv {\n return {\n HOME: \"/home/sprite\",\n LANG: \"C.UTF-8\",\n LOGNAME: \"sprite\",\n PATH: path,\n TMPDIR: \"/tmp\",\n USER: \"sprite\",\n };\n}\n", "import { appCodeSchema, appRecordSchema } from \"@liy/mote-core\";\nimport { resolveEdgeOrigin } from \"../shared/config.js\";\nimport { isRecord } from \"../shared/json.js\";\nimport { requestSignedEdgeHttp } from \"../server/edge-egress-http.js\";\nimport { initializeAppRepository } from \"../scheduler/ticket-workspace.js\";\nimport type { OrgCommandContext } from \"./ticket-command.js\";\nimport type { AgentCommand, AgentCommandResult } from \"./types.js\";\n\n/** Recognize generated-app commands. @param type - Local command name. */\nexport function isAppCommand(type: string): boolean {\n return [\"app.create\", \"app.get\", \"app.update\"].includes(type);\n}\n\n/**\n * Read shared app context or let Overmind create and maintain it.\n * @remarks The app owns the brief. Tickets only reference the app; no synthetic\n * ticket or duplicated brief is created. Repository initialization is idempotent.\n * @param context - Trusted launch identity and board authority.\n * @param command - Parsed app command.\n * @param env - Orchestrator connection and workspace configuration.\n * @returns Authoritative app, plus repository location on creation.\n */\nexport async function executeAppCommand(context: OrgCommandContext, command: AgentCommand, env: NodeJS.ProcessEnv): Promise<AgentCommandResult> {\n const fail = (message: string): AgentCommandResult => ({ ok: false, error: { code: \"invalid_payload\", message } });\n const edgeUrl = resolveEdgeOrigin(env);\n const sandboxEdgeSecret = env.MOTE_SANDBOX_EDGE_SECRET?.trim();\n if (!edgeUrl || !sandboxEdgeSecret) return fail(\"App commands require the sandbox Edge connection\");\n const creating = command.type === \"app.create\";\n const reading = command.type === \"app.get\";\n const payload = isRecord(command.payload) ? command.payload : {};\n const appId = creating ? command.id : reading ? command.payload : payload.appId;\n if (typeof appId !== \"string\" || !/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(appId)) return fail(\"App id must be a UUID\");\n const brief = payload.brief ?? (creating ? \"\" : undefined);\n if (!reading && (typeof brief !== \"string\" || brief.length > 20000)) return fail(\"App brief must contain at most 20000 characters\");\n const allowed = creating ? [\"appCode\", \"name\", \"brief\"] : [\"appId\", \"brief\"];\n if (!reading && Object.keys(payload).some(key => !allowed.includes(key))) return fail(\"Unsupported app field\");\n const name = typeof payload.name === \"string\" ? payload.name.trim() : \"\";\n const appCode = appCodeSchema.safeParse(payload.appCode);\n if (creating && (!name || name.length > 200 || !appCode.success)) return fail(\"App creation requires a valid app code and a name of at most 200 characters\");\n const url = new URL(`/edge/orgs/${encodeURIComponent(context.orgId)}/apps/${encodeURIComponent(appId)}`, edgeUrl);\n const result = await requestSignedEdgeHttp(url, {\n method: reading ? \"GET\" : creating ? \"POST\" : \"PATCH\",\n sandboxEdgeSecret,\n ...(!reading ? { body: {\n commandId: command.id, agentId: context.agentId, authority: context.authority,\n brief, ...(creating ? { name, appCode: appCode.data } : {}),\n } } : {}),\n });\n if (!result.ok) return result;\n const parsed = appRecordSchema.safeParse(isRecord(result.payload) ? result.payload.app : undefined);\n if (!parsed.success) return fail(\"Edge returned an invalid app record\");\n if (!creating) return { ok: true, id: command.id, payload: { app: parsed.data } };\n try {\n const repository = await initializeAppRepository({ env, appId: parsed.data.id });\n return { ok: true, id: command.id, payload: { app: parsed.data, repository } };\n } catch (error) {\n return { ok: false, error: { code: \"app_repository_failed\", message: error instanceof Error ? error.message : \"app repository initialization failed\" } };\n }\n}\n", "import { parseAgentPersona } from \"@liy/mote-core\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport { resolveAgentRoot } from \"../shared/config.js\";\nimport {\n readAgentProfiles,\n type AgentDirectoryProfile,\n} from \"./agent-profiles.js\";\nimport type {\n AgentCommand,\n AgentCommandResult,\n} from \"./types.js\";\n\n/**\n * Check whether a command targets the read-only agent profile directory.\n *\n * @param type - Parsed local agent command type.\n * @returns Whether the command should be handled by the agent directory module.\n */\nexport function isAgentDirectoryCommand(type: string): boolean {\n return type === \"agent.list\" || type === \"agent.get\" || type === \"agent.prompt\";\n}\n\n/**\n * Serve the read-only `agent.*` commands backed by the on-disk profile store.\n *\n * These commands do not require a channel; they read the agent roster and\n * per-agent persona directly from the agent template root filesystem.\n *\n * @param command - Parsed `agent.list`, `agent.get`, or `agent.prompt` command.\n * @param env - Orchestrator process environment used to locate the agent root.\n * @returns Roster, single profile, or selected persona payload.\n */\nexport async function executeAgentDirectoryCommand(\n command: AgentCommand,\n env: NodeJS.ProcessEnv\n): Promise<AgentCommandResult> {\n const agentRoot = resolveAgentRoot(env);\n const profiles = await readAgentProfiles(agentRoot);\n if (command.type === \"agent.list\") {\n return { ok: true, id: command.id, payload: { agents: profiles } };\n }\n const name = typeof command.payload === \"string\" ? command.payload.trim() : \"\";\n if (!name) {\n return {\n ok: false,\n error: { code: \"invalid_payload\", message: \"agent name is required\" },\n };\n }\n const profile = profiles.find(\n (entry) => entry.name.toLowerCase() === name.toLowerCase()\n );\n if (!profile) {\n return {\n ok: false,\n error: { code: \"unknown_agent\", message: `agent not found: ${name}` },\n };\n }\n if (command.type === \"agent.get\") {\n return { ok: true, id: command.id, payload: { agent: profile } };\n }\n const persona = await readAgentPersona(agentRoot, profile);\n return {\n ok: true,\n id: command.id,\n payload: { name: profile.name, agentId: profile.id, persona },\n };\n}\n\n/**\n * Read one agent's selected persona, preferring the roster's `systemPromptPath` and\n * falling back to the conventional `<agent_root>/<agent_id>/system_prompt.md`.\n *\n * @param agentRoot - Per-agent Pi config root.\n * @param profile - Resolved roster entry.\n * @returns Selected persona text, or an empty string when absent.\n */\nasync function readAgentPersona(\n agentRoot: string,\n profile: AgentDirectoryProfile\n): Promise<string> {\n const promptPath =\n profile.systemPromptPath ?? join(agentRoot, profile.id, \"system_prompt.md\");\n try {\n const raw = await readFile(promptPath, \"utf8\");\n parseAgentPersona(raw);\n return raw.replace(/^---\\n[^\\n]+\\n---\\n/, \"\").trim();\n } catch {\n return \"\";\n }\n}\n", "import { randomUUID } from \"node:crypto\";\n\nimport {\n TICKET_STATUSES,\n ticketWorklogPayloadSchema, ticketWorklogReadSchema,\n ticketStateSchema,\n type TicketStatus,\n} from \"@liy/mote-core\";\n\nimport {\n EDGE_ORIGIN_ENV,\n resolveAgentRoot,\n resolveEdgeOrigin,\n} from \"../shared/config.js\";\nimport { isRecord } from \"../shared/json.js\";\nimport {\n ensureUrlBase,\n requestSignedEdgeHttp,\n} from \"../server/edge-egress-http.js\";\nimport { readAgentProfileById } from \"./agent-profiles.js\";\nimport type {\n AgentCommand,\n AgentCommandResult,\n} from \"./types.js\";\n\nconst TICKET_CREATE_FIELDS = new Set([\"title\", \"summary\", \"description\", \"scope\", \"appId\", \"contextTicketId\"]);\nconst TICKET_ASSIGN_FIELDS = new Set([\n \"ticketId\",\n \"assigneeAgentId\",\n \"assigneeAgentName\",\n \"assigneeAgentRole\",\n \"summary\",\n]);\nconst TICKET_TRANSITION_FIELDS = new Set([\"ticketId\", \"summary\"]);\n/** Archive lifecycle intent behind each Overmind-only CLI verb. */\nconst TICKET_ARCHIVE_VERBS: Readonly<Record<string, boolean>> = {\n \"ticket.archive\": true,\n \"ticket.unarchive\": false,\n};\n\n/**\n * Board intent behind each ticket transition verb (ADR-028 4.2, ADR-062).\n *\n * @remarks\n * `ticket.start` and `ticket.release` are lifecycle-derived orchestrator\n * verbs: the scheduler issues them from run lifecycle facts, and the agent\n * command executor rejects them from any spawned process. The judgment\n * verbs (`park`, `unpark`, `done`) remain Overmind commands; `park` also\n * serves the scheduler's escalation caps.\n */\nconst TICKET_TRANSITION_VERBS: Record<string, {\n /** Board status after the verb. */\n toStatus: TicketStatus;\n}> = {\n \"ticket.start\": { toStatus: \"ongoing\" },\n // The release always clears the assignee; the Ticket DO derives that from\n // the edge itself (ADR-062), so no wire flag exists.\n \"ticket.release\": { toStatus: \"waiting\" },\n \"ticket.park\": { toStatus: \"intervention\" },\n \"ticket.unpark\": { toStatus: \"waiting\" },\n \"ticket.done\": { toStatus: \"done\" },\n};\n\n/**\n * Minimal trusted context shared by Org-scoped agent commands.\n */\nexport interface OrgCommandContext {\n /** Active Org id that owns the ticket board. */\n orgId: string;\n /** Agent id used for edge command audit when the command mutates state. */\n agentId?: string;\n /**\n * Owner of the issuing agent, from the trusted launch registry (ADR-063).\n *\n * @remarks\n * Stamped onto created tickets as their immutable `ownerUserId`, routing\n * judgment to this user's Overmind. Never derived from agent payloads.\n */\n ownerUserId?: string;\n /** Channel the issuing launch serves, when channel-anchored; provenance only. */\n channelId?: string;\n /** Ticket that owns this autonomous launch; used only to resolve creation provenance. */\n ticketId?: string;\n /** Canonical input message, supplied by the channel runtime. */\n originMessageId?: string;\n /**\n * Board authority behind the command, when the caller holds one (ADR-062).\n *\n * @remarks\n * `overmind` is set by the command executor for verified Overmind\n * launches; `orchestrator` is asserted only by trusted scheduler code\n * issuing lifecycle-derived transitions. Drone launches hold no board\n * authority, so the field stays absent for them.\n */\n authority?: \"overmind\" | \"orchestrator\";\n /** Orchestrator-attested user whose authority governs this launch. */\n initiatorUserId?: string;\n /** Unique execution identity supplied by the launch registry. */\n executionId?: string;\n /** Present only for scheduled Drone assignment work, never ticket comments. */\n assignmentTicketId?: string;\n}\n\n/**\n * Check whether a command targets the Kanban Ticket command surface.\n *\n * @param type - Parsed local agent command type.\n * @returns Whether the command belongs to the ticket command module.\n */\nexport function isTicketCommand(type: string): boolean {\n return [\n \"ticket.create\",\n \"ticket.assign\",\n \"ticket.list\",\n \"ticket.get\",\n \"ticket.timeline\",\n \"ticket.brief\", \"ticket.worklog\", \"ticket.decision\", \"ticket.handoff\", \"ticket.guide\",\n ].includes(type) || type in TICKET_TRANSITION_VERBS || type in TICKET_ARCHIVE_VERBS;\n}\n\n/**\n * Forward Org ticket commands to the Edge Worker with sandbox HMAC.\n *\n * @param context - Org, agent, and optional channel provenance.\n * @param command - Validated local command envelope.\n * @param env - Orchestrator process environment containing Edge config.\n * @returns Command envelope containing the Edge response payload.\n */\nexport async function executeTicketCommand(\n context: OrgCommandContext,\n command: AgentCommand,\n env: NodeJS.ProcessEnv\n): Promise<AgentCommandResult> {\n const edgeUrl = resolveEdgeOrigin(env);\n if (!edgeUrl) {\n return {\n ok: false,\n error: {\n code: \"missing_edge_url\",\n message: `${EDGE_ORIGIN_ENV} is required`,\n },\n };\n }\n const sandboxEdgeSecret = env.MOTE_SANDBOX_EDGE_SECRET?.trim();\n if (!sandboxEdgeSecret) {\n return {\n ok: false,\n error: {\n code: \"missing_sandbox_edge_secret\",\n message: \"MOTE_SANDBOX_EDGE_SECRET is required\",\n },\n };\n }\n if ([\"ticket.decision\", \"ticket.handoff\", \"ticket.guide\"].includes(command.type)) {\n const raw = command.payload;\n if (!isRecord(raw) || Object.keys(raw).some(key => key !== \"ticketId\" && key !== \"record\")\n || typeof raw.ticketId !== \"string\" || !raw.ticketId.trim()) {\n return { ok: false, error: { code: \"invalid_payload\", message: \"Worklog write requires ticketId and record only\" } };\n }\n const parsed = ticketWorklogPayloadSchema.safeParse(isRecord(raw.record)\n ? { ...raw.record, type: command.type.replace(\"ticket.\", \"worklog.\") } : undefined);\n if (!parsed.success || (isRecord(raw.record) && \"type\" in raw.record)) {\n return { ok: false, error: { code: \"invalid_payload\", message: parsed.success ? \"Record type is selected by the command\" : parsed.error.message } };\n }\n if (!context.agentId || !context.executionId || !context.ownerUserId\n || (command.type === \"ticket.guide\" && context.authority !== \"overmind\")\n || (command.type === \"ticket.handoff\" && context.assignmentTicketId !== raw.ticketId)\n || (context.authority !== \"overmind\" && context.assignmentTicketId !== raw.ticketId)) {\n return { ok: false, error: { code: \"forbidden_worklog\", message: \"Worklog requires the ticket's assigned Drone or its owner's Overmind\" } };\n }\n const url = new URL(`/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(raw.ticketId)}/worklog`, ensureUrlBase(edgeUrl));\n return requestTicketEdgeHttp(command.id, url, { method: \"POST\", sandboxEdgeSecret, body: {\n commandId: command.id, agentId: context.agentId, executionId: context.executionId,\n ownerUserId: context.ownerUserId, authority: context.authority === \"overmind\" ? \"overmind\" : \"drone\",\n ...(context.assignmentTicketId ? { assignmentTicketId: context.assignmentTicketId } : {}), record: parsed.data,\n } });\n }\n if (command.type === \"ticket.brief\" || command.type === \"ticket.worklog\") {\n if (!isRecord(command.payload) || typeof command.payload.ticketId !== \"string\" || !command.payload.ticketId.trim()) {\n return { ok: false, error: { code: \"invalid_payload\", message: \"Worklog read requires ticketId\" } };\n }\n const { ticketId, ...options } = command.payload;\n const parsed = ticketWorklogReadSchema.safeParse(options);\n if (!parsed.success) return { ok: false, error: { code: \"invalid_payload\", message: parsed.error.message } };\n const url = new URL(`/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(ticketId)}/${command.type === \"ticket.brief\" ? \"brief\" : \"worklog\"}`, ensureUrlBase(edgeUrl));\n for (const [key, value] of Object.entries(parsed.data)) if (value !== undefined) url.searchParams.set(key, String(value));\n return requestTicketEdgeHttp(command.id, url, { method: \"GET\", sandboxEdgeSecret });\n }\n if (command.type === \"ticket.list\") {\n const input = parseTicketListPayload(command.payload);\n if (!input.ok) {\n return input.result;\n }\n const url = new URL(\n `/edge/orgs/${encodeURIComponent(context.orgId)}/tickets`,\n ensureUrlBase(edgeUrl)\n );\n url.searchParams.set(\"status\", input.payload.status);\n if (input.payload.unassigned) {\n url.searchParams.set(\"assignee\", \"none\");\n }\n return requestTicketEdgeHttp(command.id, url, {\n method: \"GET\",\n sandboxEdgeSecret,\n });\n }\n if (command.type === \"ticket.timeline\") {\n const payload = command.payload;\n if (!isRecord(payload) || typeof payload.ticketId !== \"string\" || !payload.ticketId.trim()\n || !Number.isSafeInteger(payload.after) || Number(payload.after) < 0\n || (payload.through !== undefined && (!Number.isSafeInteger(payload.through) || Number(payload.through) < 0))) {\n return { ok: false, error: { code: \"invalid_payload\", message: \"ticket.timeline requires ticketId and a nonnegative after cursor\" } };\n }\n const url = new URL(`/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(payload.ticketId)}/timeline`, ensureUrlBase(edgeUrl));\n url.searchParams.set(\"after\", String(payload.after));\n if (payload.through !== undefined) url.searchParams.set(\"through\", String(payload.through));\n return requestTicketEdgeHttp(command.id, url, { method: \"GET\", sandboxEdgeSecret });\n }\n if (command.type === \"ticket.get\") {\n const ticketId = typeof command.payload === \"string\" ? command.payload.trim() : \"\";\n if (!ticketId) {\n return {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message: \"ticket.get requires a ticket id\",\n },\n };\n }\n const url = new URL(\n `/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(ticketId)}`,\n ensureUrlBase(edgeUrl)\n );\n return requestTicketEdgeHttp(command.id, url, {\n method: \"GET\",\n sandboxEdgeSecret,\n });\n }\n const archived = TICKET_ARCHIVE_VERBS[command.type];\n if (archived !== undefined) {\n const ticketId = typeof command.payload === \"string\" ? command.payload.trim() : \"\";\n if (!ticketId) {\n return {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message: `${command.type} requires a ticket id`,\n },\n };\n }\n if (!context.agentId) {\n return {\n ok: false,\n error: {\n code: \"missing_agent\",\n message: `${command.type} requires an agent id`,\n },\n };\n }\n const archiveUrl = new URL(\n `/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(ticketId)}/archive`,\n ensureUrlBase(edgeUrl),\n );\n return requestTicketEdgeHttp(command.id, archiveUrl, {\n method: \"POST\",\n sandboxEdgeSecret,\n body: {\n commandId: command.id,\n agentId: context.agentId,\n ...(context.authority ? { authority: context.authority } : {}),\n archived,\n },\n });\n }\n if (!isRecord(command.payload)) {\n return {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message: `${command.type} payload must be a JSON object`,\n },\n };\n }\n if (!context.agentId) {\n return {\n ok: false,\n error: {\n code: \"missing_agent\",\n message: `${command.type} requires an agent id`,\n },\n };\n }\n if (command.type === \"ticket.assign\") {\n const ticketAssignInput = parseTicketAssignPayload(command.payload);\n if (!ticketAssignInput.ok) {\n return ticketAssignInput.result;\n }\n const assignmentPayload = await enrichTicketAssignPayload(\n ticketAssignInput.payload,\n env\n );\n const assignUrl = new URL(\n `/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(ticketAssignInput.ticketId)}/assignments`,\n ensureUrlBase(edgeUrl)\n );\n return requestTicketEdgeHttp(command.id, assignUrl, {\n method: \"POST\",\n sandboxEdgeSecret,\n body: {\n commandId: command.id,\n agentId: context.agentId,\n ...(context.authority ? { authority: context.authority } : {}),\n ...assignmentPayload,\n },\n });\n }\n const verb = TICKET_TRANSITION_VERBS[command.type];\n if (verb) {\n const transitionInput = parseTicketTransitionPayload(command.type, command.payload);\n if (!transitionInput.ok) {\n return transitionInput.result;\n }\n const transitionUrl = new URL(\n `/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(transitionInput.ticketId)}/transitions`,\n ensureUrlBase(edgeUrl)\n );\n return requestTicketEdgeHttp(command.id, transitionUrl, {\n method: \"POST\",\n sandboxEdgeSecret,\n body: {\n commandId: command.id,\n agentId: context.agentId,\n toStatus: verb.toStatus,\n summary: transitionInput.summary,\n ...(context.authority ? { authority: context.authority } : {}),\n },\n });\n }\n const ticketCreateInput = parseTicketCreatePayload(command.payload);\n if (!ticketCreateInput.ok) {\n return ticketCreateInput.result;\n }\n const { contextTicketId: requestedContext, ...payload } = ticketCreateInput.payload;\n const contextTicketId = context.ticketId ?? requestedContext;\n let originChannelId = context.channelId;\n let originMessageId = context.originMessageId;\n if (!originChannelId && typeof contextTicketId === \"string\") {\n const sourceUrl = new URL(`/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(contextTicketId)}`, ensureUrlBase(edgeUrl));\n const source = await requestSignedEdgeHttp(sourceUrl, { method: \"GET\", sandboxEdgeSecret });\n if (!source.ok) return source;\n const parsed = ticketStateSchema.safeParse(isRecord(source.payload) ? source.payload.ticket : undefined);\n if (!parsed.success || parsed.data.ownerUserId !== context.ownerUserId) return { ok: false, error: { code: \"ticket_scope_violation\", message: \"creation context must belong to this work's owner\" } };\n originChannelId = parsed.data.originChannelId ?? undefined;\n originMessageId = parsed.data.originMessageId ?? undefined;\n }\n // The sandbox mints the ticket id (ADR-030) so the create command can target\n // its owning Ticket Durable Object before the ticket exists anywhere else.\n const ticketId = randomUUID();\n const url = new URL(\n `/edge/orgs/${encodeURIComponent(context.orgId)}/tickets/${encodeURIComponent(ticketId)}`,\n ensureUrlBase(edgeUrl)\n );\n return requestTicketEdgeHttp(command.id, url, {\n method: \"POST\",\n sandboxEdgeSecret,\n body: {\n commandId: command.id,\n agentId: context.agentId,\n ...(context.ownerUserId ? { ownerUserId: context.ownerUserId } : {}),\n ...payload,\n ...(originChannelId ? { originChannelId } : {}),\n ...(originMessageId ? { originMessageId } : {}),\n },\n });\n}\n\n/**\n * Parse the command payload for `ticket.list`.\n *\n * @param payload - Raw command payload posted by the local CLI.\n * @returns Parsed payload or structured command rejection.\n */\nfunction parseTicketListPayload(payload: unknown):\n | {\n ok: true;\n payload: {\n status: TicketStatus;\n unassigned: boolean;\n };\n }\n | { ok: false; result: AgentCommandResult } {\n if (!isRecord(payload)) {\n return {\n ok: false,\n result: {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message: \"ticket.list payload must be a JSON object\",\n },\n },\n };\n }\n const status = payload.status;\n if (\n typeof status !== \"string\" ||\n !TICKET_STATUSES.includes(status as TicketStatus)\n ) {\n return {\n ok: false,\n result: {\n ok: false,\n error: {\n code: \"invalid_status\",\n message: \"ticket.list requires a valid status\",\n },\n },\n };\n }\n return {\n ok: true,\n payload: {\n status: status as TicketStatus,\n unassigned: payload.unassigned === true,\n },\n };\n}\n\n/**\n * Validate the `ticket.create` payload before forwarding it to the host API.\n *\n * @param payload - JSON object supplied by the sandbox-local agent command.\n * @returns Accepted payload or structured command rejection.\n */\nfunction parseTicketCreatePayload(\n payload: Record<string, unknown>\n):\n | { ok: true; payload: Record<string, unknown> }\n | { ok: false; result: AgentCommandResult } {\n const unsupported = Object.keys(payload).filter((key) => !TICKET_CREATE_FIELDS.has(key));\n if (unsupported.length > 0) {\n return {\n ok: false,\n result: {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message: `ticket.create unsupported field: ${unsupported.join(\", \")}`,\n },\n },\n };\n }\n if (typeof payload.summary !== \"string\" || !payload.summary.trim()) {\n return {\n ok: false,\n result: {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message: \"ticket.create requires a summary\",\n },\n },\n };\n }\n for (const field of [\"appId\", \"contextTicketId\"]) {\n if (payload[field] !== undefined && (typeof payload[field] !== \"string\" || !/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(payload[field]))) return { ok: false, result: { ok: false, error: { code: \"invalid_payload\", message: `${field} must be a UUID` } } };\n }\n return {\n ok: true,\n payload,\n };\n}\n\n/**\n * Validate the `ticket.assign` payload before forwarding it to the Edge Worker.\n *\n * @remarks\n * `assigneeAgentId: null` unassigns the ticket. The Org Durable Object\n * generates a dedicated `assignment` host receipt from the previous and next\n * assignee; optional summary text is appended as extra context. Assignee name\n * and role remain optional display hints used by the board frame and host receipt.\n *\n * @param payload - JSON object supplied by the sandbox-local agent command.\n * @returns Accepted route/body split or structured command rejection.\n */\nfunction parseTicketAssignPayload(\n payload: Record<string, unknown>\n):\n | { ok: true; ticketId: string; payload: Record<string, unknown> }\n | { ok: false; result: AgentCommandResult } {\n const reject = (message: string): { ok: false; result: AgentCommandResult } => ({\n ok: false,\n result: {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message,\n },\n },\n });\n const unsupported = Object.keys(payload).filter((key) => !TICKET_ASSIGN_FIELDS.has(key));\n if (unsupported.length > 0) {\n return reject(`ticket.assign unsupported field: ${unsupported.join(\", \")}`);\n }\n const ticketId = payload.ticketId;\n if (typeof ticketId !== \"string\" || !ticketId.trim()) {\n return reject(\"ticket.assign requires a ticketId\");\n }\n if (!(\"assigneeAgentId\" in payload)) {\n return reject(\"ticket.assign requires assigneeAgentId (null unassigns)\");\n }\n const assignee = payload.assigneeAgentId;\n if (assignee !== null && (typeof assignee !== \"string\" || !assignee.trim())) {\n return reject(\"ticket.assign assigneeAgentId must be an agent id or null\");\n }\n const body: Record<string, unknown> = {\n assigneeAgentId: typeof assignee === \"string\" ? assignee.trim() : null,\n };\n if (payload.summary !== undefined) {\n if (typeof payload.summary !== \"string\" || !payload.summary.trim()) {\n return reject(\"ticket.assign summary must be non-empty when provided\");\n }\n body.summary = payload.summary.trim();\n }\n if (typeof payload.assigneeAgentName === \"string\" && payload.assigneeAgentName.trim()) {\n body.assigneeAgentName = payload.assigneeAgentName.trim();\n }\n if (typeof payload.assigneeAgentRole === \"string\" && payload.assigneeAgentRole.trim()) {\n body.assigneeAgentRole = payload.assigneeAgentRole.trim();\n }\n return { ok: true, ticketId: ticketId.trim(), payload: body };\n}\n\n/**\n * Add cached roster display fields to an assignment payload when the caller only supplied an id.\n *\n * @param payload - Validated assignment payload ready for the Edge Worker.\n * @param env - Orchestrator process environment used to locate `agent-roster.json`.\n * @returns Assignment payload with best-effort `assigneeAgentName` and role hints.\n */\nasync function enrichTicketAssignPayload(\n payload: Record<string, unknown>,\n env: NodeJS.ProcessEnv\n): Promise<Record<string, unknown>> {\n const assigneeAgentId = payload.assigneeAgentId;\n if (typeof assigneeAgentId !== \"string\") {\n return payload;\n }\n const needsName = typeof payload.assigneeAgentName !== \"string\" || !payload.assigneeAgentName.trim();\n const needsRole = typeof payload.assigneeAgentRole !== \"string\" || !payload.assigneeAgentRole.trim();\n if (!needsName && !needsRole) {\n return payload;\n }\n\n const profile = await readAgentProfileById(resolveAgentRoot(env), assigneeAgentId);\n if (!profile) {\n return payload;\n }\n return {\n ...payload,\n ...(needsName ? { assigneeAgentName: profile.name } : {}),\n ...(needsRole && profile.role ? { assigneeAgentRole: profile.role } : {}),\n };\n}\n\n/**\n * Validate one ticket transition verb payload before forwarding to the Edge Worker.\n *\n * @param type - Transition command type used in rejection messages.\n * @param payload - JSON object supplied by the sandbox-local agent command.\n * @returns Accepted ticket id and summary, or structured command rejection.\n */\nfunction parseTicketTransitionPayload(\n type: string,\n payload: unknown\n):\n | { ok: true; ticketId: string; summary: string }\n | { ok: false; result: AgentCommandResult } {\n const reject = (message: string): { ok: false; result: AgentCommandResult } => ({\n ok: false,\n result: {\n ok: false,\n error: {\n code: \"invalid_payload\",\n message,\n },\n },\n });\n if (!isRecord(payload)) {\n return reject(`${type} payload must be a JSON object`);\n }\n const unsupported = Object.keys(payload).filter((key) => !TICKET_TRANSITION_FIELDS.has(key));\n if (unsupported.length > 0) {\n return reject(`${type} unsupported field: ${unsupported.join(\", \")}`);\n }\n if (typeof payload.ticketId !== \"string\" || !payload.ticketId.trim()) {\n return reject(`${type} requires a ticketId`);\n }\n if (typeof payload.summary !== \"string\" || !payload.summary.trim()) {\n return reject(`${type} requires a summary explaining the transition`);\n }\n return { ok: true, ticketId: payload.ticketId.trim(), summary: payload.summary.trim() };\n}\n\n/**\n * Wrap a signed Edge HTTP response in the command envelope expected by the command route.\n *\n * @param commandId - Caller-generated command id retained in the response.\n * @param url - Fully resolved Edge Worker URL.\n * @param input - HTTP method, sandbox-edge secret, and optional JSON body.\n * @returns Structured command result.\n */\nasync function requestTicketEdgeHttp(\n commandId: string,\n url: URL,\n input: {\n method: \"GET\" | \"POST\";\n sandboxEdgeSecret: string;\n body?: Record<string, unknown>;\n }\n): Promise<AgentCommandResult> {\n const result = await requestSignedEdgeHttp(url, input);\n if (!result.ok) {\n return result;\n }\n return {\n ok: true,\n id: commandId,\n payload: result.payload,\n };\n}\n", "import { genAppBundleReceiptSchema, type GenAppBundleUpload, type GenAppQueryManifest } from \"@liy/mote-core\";\nimport { createSandboxApiClient } from \"./sandbox-api-client.js\";\n\n/** Host registration operations used by integration and the read-only author check. */\nexport type GenAppBundleClient = ReturnType<typeof createGenAppBundleClient>;\n\n/**\n * Bind the trusted issuing agent identity once; agents supply no credentials.\n *\n * @param env - Closed orchestrator environment.\n * @param actor - Identity supplied by the kernel-bound launch registry.\n */\nexport function createGenAppBundleClient(env: NodeJS.ProcessEnv, actor: { agentId: string; initiatorUserId: string }) {\n const send = createSandboxApiClient({ env, timeoutMs: 120_000 });\n const request = (body: Record<string, unknown>) => send(\"gen-app-bundles\", { ...body, ...actor });\n return {\n /**\n * @param appId - App being integrated.\n * @returns Pointer before the build starts.\n */\n async pointer(appId: string): Promise<string | null> {\n const value = await request({ operation: \"pointer\", appId });\n if (!value || typeof value !== \"object\" || !(\"bundleVersionId\" in value)\n || (value.bundleVersionId !== null && typeof value.bundleVersionId !== \"string\")) throw new Error(\"Invalid bundle pointer response\");\n return value.bundleVersionId;\n },\n /**\n * @param appId - Owned app.\n * @param manifest - Committed query declarations.\n */\n check(appId: string, manifest: GenAppQueryManifest) { return request({ operation: \"check\", appId, manifest }); },\n /**\n * @param upload - Exact clean build and manifest, retained for crash recovery.\n */\n async register(upload: GenAppBundleUpload) {\n return genAppBundleReceiptSchema.parse(await request({ operation: \"register\", upload }));\n },\n /**\n * @param appId - Owned app.\n * @param bundleVersionId - Ready version.\n * @param expectedPrevious - Pre-build pointer.\n */\n async activate(appId: string, bundleVersionId: string, expectedPrevious: string | null) {\n await request({ operation: \"activate\", appId, bundleVersionId, expectedPrevious });\n },\n };\n}\n", "import { ticketStateSchema } from \"@liy/mote-core\";\n\nimport { createGenAppBundleClient } from \"../gen-app-bundle-client.js\";\nimport { isRecord } from \"../shared/json.js\";\nimport {\n cleanupTicketWorkspace,\n checkTicketWorkspace,\n GenAppBuildValidationError,\n integrateTicketWorkspace,\n} from \"../scheduler/ticket-workspace.js\";\nimport { executeTicketCommand, type OrgCommandContext } from \"./ticket-command.js\";\nimport type { AgentCommand, AgentCommandResult } from \"./types.js\";\n\n/**\n * Check whether a command performs local app-workspace mechanics.\n *\n * @param type - Parsed local command type.\n * @returns Whether the workspace command module owns the command.\n */\nexport function isWorkspaceCommand(type: string): boolean {\n return type === \"integration.run\" || type === \"workspace.cleanup\" || type === \"workspace.check\";\n}\n\n/**\n * Integrate or clean one app-associated ticket workspace.\n *\n * @param context - Verified Org and acting agent identity.\n * @param command - Parsed integration or cleanup command.\n * @param env - Orchestrator environment containing workspace roots and edge config.\n * @returns Integration evidence or cleanup confirmation.\n */\nexport async function executeWorkspaceCommand(\n context: OrgCommandContext,\n command: AgentCommand,\n env: NodeJS.ProcessEnv,\n): Promise<AgentCommandResult> {\n const ticketId = typeof command.payload === \"string\" ? command.payload.trim() : \"\";\n if (!ticketId) {\n return { ok: false, error: { code: \"invalid_payload\", message: `${command.type} requires a ticket id` } };\n }\n const loaded = await executeTicketCommand(context, {\n id: `${command.id}:ticket`,\n type: \"ticket.get\",\n payload: ticketId,\n }, env);\n const parsed = ticketStateSchema.safeParse(\n loaded.ok && isRecord(loaded.payload) ? loaded.payload.ticket : undefined,\n );\n if (!parsed.success) {\n return loaded.ok\n ? { ok: false, error: { code: \"invalid_ticket\", message: \"ticket could not be loaded\" } }\n : loaded;\n }\n const ticket = parsed.data;\n if (!ticket.app) {\n return { ok: false, error: { code: \"ticket_has_no_app\", message: \"ticket is not associated with an app\" } };\n }\n\n try {\n if (command.type === \"workspace.cleanup\") {\n if (ticket.status !== \"done\") {\n return { ok: false, error: { code: \"ticket_not_done\", message: \"workspace cleanup requires a done ticket\" } };\n }\n await cleanupTicketWorkspace({ env, appId: ticket.app.id, ticketId });\n return { ok: true, id: command.id, payload: { ticketId, appId: ticket.app.id, cleaned: true } };\n }\n if (ticket.status !== \"ongoing\" || ticket.assignedAgentId !== context.agentId) {\n return {\n ok: false,\n error: {\n code: \"integration_not_owned\",\n message: \"integration requires the currently assigned ongoing Drone Agent\",\n },\n };\n }\n if (!context.agentId || !context.initiatorUserId) throw new Error(\"A verified agent launch is required\");\n const client = createGenAppBundleClient(env, { agentId: context.agentId, initiatorUserId: context.initiatorUserId });\n if (command.type === \"workspace.check\") {\n return { ok: true, id: command.id, payload: await checkTicketWorkspace({ env, appId: ticket.app.id, ticketId, client }) };\n }\n const integrated = await integrateTicketWorkspace({ env, appId: ticket.app.id, ticketId, client });\n return {\n ok: true,\n id: command.id,\n payload: {\n ticketId,\n appId: ticket.app.id,\n commit: integrated.commit,\n bundleVersionId: integrated.bundleVersionId,\n\n },\n };\n } catch (error) {\n if (error instanceof GenAppBuildValidationError) {\n return {\n ok: false,\n error: { code: error.code, message: error.message },\n };\n }\n return {\n ok: false,\n error: {\n code: command.type === \"workspace.cleanup\" ? \"workspace_cleanup_failed\" : \"integration_failed\",\n message: error instanceof Error ? error.message : `${command.type} failed`,\n },\n };\n }\n}\n", "import type { AgentLaunch } from \"../shared/types.js\";\nimport {\n executeAppCommand,\n isAppCommand,\n} from \"./app-command.js\";\nimport {\n executeAgentDirectoryCommand,\n isAgentDirectoryCommand,\n} from \"./agent-directory-command.js\";\nimport {\n executeTicketCommand,\n isTicketCommand,\n type OrgCommandContext,\n} from \"./ticket-command.js\";\nimport {\n executeWorkspaceCommand,\n isWorkspaceCommand,\n} from \"./workspace-command.js\";\nimport type {\n AgentCommand,\n AgentCommandResult,\n} from \"./types.js\";\n\n/**\n * Dependencies required to execute one parsed local agent command.\n */\nexport interface ExecuteAgentCommandInput {\n /** Parsed command received from the stable agent socket. */\n command: AgentCommand;\n /** Trusted launch registry entry resolved for the calling process. */\n launch: AgentLaunch;\n /** Orchestrator process environment used by command modules that call the edge. */\n env: NodeJS.ProcessEnv;\n /** Resolve current Drone ownership from the scheduler's live-run table. */\n hasActiveDrone(ticketId: string): boolean;\n}\n\n/**\n * Org commands only a verified Overmind process may issue (ADR-028, ADR-039,\n * ADR-062).\n */\nconst OVERMIND_ONLY_COMMANDS = new Set([\n \"app.create\",\n \"app.update\",\n \"ticket.assign\",\n \"ticket.guide\",\n \"ticket.park\",\n \"ticket.unpark\",\n \"ticket.done\",\n \"ticket.archive\",\n \"ticket.unarchive\",\n \"workspace.cleanup\",\n]);\n\n/**\n * Lifecycle-derived transitions no spawned process may issue (ADR-062).\n *\n * @remarks\n * The scheduler authors these directly with orchestrator authority; the\n * agent socket has no path to them regardless of process kind.\n */\nconst ORCHESTRATOR_ONLY_COMMANDS = new Set([\"ticket.start\", \"ticket.release\"]);\n\n/**\n * Validate and execute one parsed local agent command.\n *\n * @remarks\n * The launch registry entry is the only identity input: the stable agent\n * socket authenticated the `(ownerUserId, agentId)` pair and the orchestrator\n * attested the initiator at launch (ADR-060/061). No permission snapshot is\n * consulted here; protected requests recalculate authority in IAM.\n *\n * @param input - Command, trusted launch, and environment.\n * @returns Command acceptance result.\n */\nexport async function executeAgentCommand(\n input: ExecuteAgentCommandInput\n): Promise<AgentCommandResult> {\n const scopeRejection = authorizeTicketScope(input);\n if (scopeRejection) {\n return scopeRejection;\n }\n if (isAgentDirectoryCommand(input.command.type)) {\n return executeAgentDirectoryCommand(input.command, input.env);\n }\n const context = resolveOrgCommandContext(input.launch);\n if (isAppCommand(input.command.type) || isWorkspaceCommand(input.command.type)) {\n const authorization = authorizeOrgCommand(input);\n if (!authorization.ok) {\n return authorization.result;\n }\n const result = isAppCommand(input.command.type)\n ? executeAppCommand(context, input.command, input.env)\n : executeWorkspaceCommand(context, input.command, input.env);\n return finalizeScopedCommand(input, await result);\n }\n if (isTicketCommand(input.command.type)) {\n const authorization = authorizeOrgCommand(input);\n if (!authorization.ok) {\n return authorization.result;\n }\n const result = await executeTicketCommand(context, input.command, input.env);\n return finalizeScopedCommand(input, result);\n }\n return {\n ok: false,\n error: { code: \"unknown_command\", message: \"unknown command type\" },\n };\n}\n\n/**\n * Enforce the ADR-028 and ADR-039 role matrix on Org commands.\n *\n * @param input - Command plus its trusted launch entry.\n * @returns Authorization pass or structured rejection.\n */\nfunction authorizeOrgCommand(\n input: ExecuteAgentCommandInput,\n): { ok: true } | { ok: false; result: AgentCommandResult } {\n const forbid = (message: string): { ok: false; result: AgentCommandResult } => ({\n ok: false,\n result: {\n ok: false,\n error: { code: \"forbidden\", message },\n },\n });\n const { launch } = input;\n const type = input.command.type;\n if (ORCHESTRATOR_ONLY_COMMANDS.has(type)) {\n return forbid(`${type} is lifecycle-derived (ADR-062); agent processes report their result in their final response`);\n }\n if (OVERMIND_ONLY_COMMANDS.has(type)) {\n if (launch.kind !== \"overmind\") {\n return forbid(`${type} requires a verified Overmind process`);\n }\n if (type === \"workspace.cleanup\") {\n const ticketId = readCommandTicketId(input.command);\n if (typeof ticketId === \"string\" && input.hasActiveDrone(ticketId)) {\n return forbid(\"workspace.cleanup cannot run while a Drone Agent owns the ticket workspace\");\n }\n }\n return { ok: true };\n }\n // Integration is the one remaining Drone-own command: only the assigned\n // gatekeeper Drone's process may integrate its own ticket (ADR-039).\n if (type === \"integration.run\" || type === \"workspace.check\") {\n if (launch.kind !== \"drone\") {\n return forbid(`${type} requires the assigned Drone Agent process`);\n }\n const ticketId = readCommandTicketId(input.command);\n if (launch.ticketId && ticketId !== launch.ticketId) {\n return forbid(`${type} is limited to the ticket this process was spawned for`);\n }\n return { ok: true };\n }\n return { ok: true };\n}\n\n/**\n * Read the ticket id carried by a ticket-scoped command.\n *\n * @param command - Parsed local command.\n * @returns Ticket id, or undefined for a malformed payload.\n */\nfunction readCommandTicketId(command: AgentCommand): unknown {\n if ([\n \"integration.run\",\n \"workspace.check\",\n \"workspace.cleanup\",\n \"ticket.archive\",\n \"ticket.unarchive\",\n ].includes(command.type)) {\n return typeof command.payload === \"string\" ? command.payload : undefined;\n }\n return isRecordPayload(command.payload) ? command.payload.ticketId : undefined;\n}\n\n/**\n * Narrow a command payload to a JSON object.\n *\n * @param payload - Raw command payload.\n * @returns Whether the payload is a non-array object.\n */\nfunction isRecordPayload(payload: unknown): payload is Record<string, unknown> {\n return Boolean(payload) && typeof payload === \"object\" && !Array.isArray(payload);\n}\n\n/**\n * Build the Org command context from one trusted launch entry.\n *\n * @param launch - Registry entry resolved through the stable agent socket.\n * @returns Ticket command context.\n */\nfunction resolveOrgCommandContext(launch: AgentLaunch): OrgCommandContext {\n return {\n orgId: launch.orgId,\n agentId: launch.sessionKey.agentId,\n ownerUserId: launch.ownerUserId,\n executionId: launch.launchId,\n ...(launch.kind === \"drone\" && launch.sessionKey.contextKind === \"ticket\" && launch.ticketId\n ? { assignmentTicketId: launch.ticketId } : {}),\n // Drone launches hold no board authority (ADR-062); only a verified\n // Overmind process carries one onto the wire.\n ...(launch.kind === \"overmind\" ? { authority: \"overmind\" as const } : {}),\n initiatorUserId: launch.initiatorUserId,\n ...(launch.ticketId ? { ticketId: launch.ticketId } : {}),\n ...(launch.channelId ? { channelId: launch.channelId } : {}),\n ...(launch.originMessageId ? { originMessageId: launch.originMessageId } : {}),\n };\n}\n\n/**\n * Enforce the root-owned ticket cohort boundary of autonomous work.\n *\n * @param input - Command plus the launch's optional trusted cohort scope.\n * @returns Structured rejection, or `undefined` when the command stays inside scope.\n */\nfunction authorizeTicketScope(input: ExecuteAgentCommandInput): AgentCommandResult | undefined {\n const scope = input.launch.ticketScope;\n if (!scope) {\n return undefined;\n }\n if (input.command.type === \"ticket.list\" || isAgentDirectoryCommand(input.command.type)) {\n return undefined;\n }\n const ticketIds = input.command.type === \"ticket.create\" && input.launch.ticketId\n ? [input.launch.ticketId] : readScopedCommandTicketIds(input.command);\n if (input.command.type === \"ticket.create\" && ticketIds.length === 0) {\n return ticketScopeViolation(\"ticket.create from autonomous work requires a scoped contextTicketId\");\n }\n const outside = ticketIds.find((ticketId) => !scope.has(ticketId));\n return outside\n ? ticketScopeViolation(`${input.command.type} cannot target ticket ${outside} outside this work cohort`)\n : undefined;\n}\n\n/**\n * Read every existing ticket referenced by one command for scope enforcement.\n *\n * @param command - Parsed agent command received from the stable agent socket.\n * @returns Existing ticket ids the command would observe or mutate.\n */\nfunction readScopedCommandTicketIds(command: AgentCommand): string[] {\n const payload = command.payload;\n if (isAppCommand(command.type) || isAgentDirectoryCommand(command.type)) return [];\n if (typeof payload === \"string\") {\n return payload.trim() ? [payload.trim()] : [];\n }\n if (!isRecordPayload(payload)) {\n return [];\n }\n const fields = [command.type === \"ticket.create\" ? \"contextTicketId\" : \"ticketId\"];\n return fields\n .map((field) => payload[field])\n .filter((value): value is string => typeof value === \"string\" && Boolean(value.trim()))\n .map((value) => value.trim());\n}\n\n/**\n * Filter a ticket-list result to the launch's delegated cohort.\n *\n * @param input - Command and launch used for execution.\n * @param result - Successful or failed command result returned by Edge.\n * @returns Scope-filtered result.\n */\nfunction finalizeScopedCommand(\n input: ExecuteAgentCommandInput,\n result: AgentCommandResult,\n): AgentCommandResult {\n const scope = input.launch.ticketScope;\n if (scope && input.command.type === \"ticket.create\" && result.ok && isRecordPayload(result.payload)) {\n const ticket = result.payload.ticket;\n if (isRecordPayload(ticket) && typeof ticket.id === \"string\") scope.add(ticket.id);\n }\n if (\n !scope\n || input.command.type !== \"ticket.list\"\n || !result.ok\n || !isRecordPayload(result.payload)\n || !Array.isArray(result.payload.tickets)\n ) {\n return result;\n }\n return {\n ...result,\n payload: {\n ...result.payload,\n tickets: result.payload.tickets.filter(\n (ticket) => isRecordPayload(ticket) && typeof ticket.id === \"string\" && scope.has(ticket.id),\n ),\n },\n };\n}\n\n/**\n * Create one stable cohort-boundary rejection.\n *\n * @param message - Human-readable scope violation.\n * @returns Rejected command result.\n */\nfunction ticketScopeViolation(message: string): AgentCommandResult {\n return { ok: false, error: { code: \"ticket_scope_violation\", message } };\n}\n", "import { readFile, readdir } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport type { Writable } from \"node:stream\";\n\nimport { parseAgentPersona, type AgentSessionKey } from \"@liy/mote-core\";\n\nimport type { AgentLaunchClient } from \"./agent-launch-client.js\";\nimport {\n createAgentWorkSpriteTaskName,\n startAgentWorkExecution,\n type AgentWorkExecution,\n type AgentWorkTerminalOutcome,\n type StartAgentWorkExecutionInput,\n} from \"./agent-work-lifecycle.js\";\nimport type { AgentProcessRuntime } from \"./agent-process-runtime.js\";\nimport type { LaunchRegistry } from \"./launch-registry.js\";\nimport type {\n AgentProcessKind,\n ProcessIdentityAllocator,\n} from \"./scheduler/process-identity.js\";\nimport type { AgentCommandChannelManager } from \"./server/agent-command-channel.js\";\nimport type { AgentLaunch } from \"./shared/types.js\";\nimport type { SpriteTaskLeaseManager } from \"./sprite-task-lease.js\";\nimport { ensureAgentSessionSpace } from \"./users-tree.js\";\n\n/** Runtime dependencies shared by every launch path. */\nexport interface AgentLaunchRuntime {\n /** Orchestrator process environment. */\n env: NodeJS.ProcessEnv;\n /** Diagnostic sink for Pi and lifecycle failures. */\n stderr: Writable;\n /** Exclusion and socket-resolution registry keyed by agent session context. */\n registry: LaunchRegistry;\n /** Private IAM launch-context and Pi-session client. */\n launchClient: AgentLaunchClient;\n /** Stable per-agent socket manager; absent only in portable unit tests. */\n channels?: AgentCommandChannelManager;\n /** Sprite Task manager used by the shared execution lifecycle. */\n spriteTaskLeases: SpriteTaskLeaseManager;\n /** Monotonic UID allocator. */\n identityAllocator: ProcessIdentityAllocator;\n /** Execution start seam injected by scheduler tests. */\n startRun?: (input: StartAgentWorkExecutionInput) => Promise<AgentWorkExecution>;\n /** Portable process boundary used by host integration tests. */\n processRuntime?: AgentProcessRuntime;\n}\n\n/** One concrete Pi launch request resolved to its trusted context. */\nexport interface StartAgentLaunchInput {\n /** Complete agent and purpose-specific Pi session identity. */\n sessionKey: AgentSessionKey;\n /** Orchestrator-attested initiator this launch works for. */\n initiatorUserId: string;\n /** Authority class used by the command role matrix. */\n kind: AgentProcessKind;\n /** Channel this launch serves, when channel-scoped. */\n channelId?: string;\n /** Ticket providing launch context, for assigned work or ticket discussion. */\n ticketId?: string;\n /** Root-owned ticket boundary for autonomous work cohorts. */\n ticketScope?: Set<string>;\n /** Working directory for the Pi child; defaults to the stable context work directory. */\n cwd?: string;\n /** App that owns the ticket worktree, when this is assigned ticket work. */\n appId?: string;\n /** First instruction delivered to the spawned process. */\n prompt?: string;\n /** User message that caused this launch; retained as ticket provenance. */\n originMessageId?: string;\n /** Diagnostic label. */\n label: string;\n /** Short Sprite Task label such as `channel` or `drone`. */\n spriteTaskLabel: string;\n /** Observer for parsed Pi RPC events. */\n onPiEvent?(event: Record<string, unknown>): void;\n /** Observer for non-JSON stdout records. */\n onUnparsedOutput?(line: string): void;\n /** Observer invoked after the operating system starts the child. */\n onSpawn?(launch: AgentLaunch, pid: number | undefined, cwd: string): void;\n /** Observer invoked after confirmed process-group teardown. */\n onStopped?(launch: AgentLaunch): Promise<void> | void;\n /** Required worklog for scheduled assignments; absent for channel and assessment launches. */\n handoff?: {\n /** Query the accepted worklog for this concrete launch. */\n check(launch: AgentLaunch): Promise<boolean>;\n };\n /** Domain callback whose presence keeps the RPC process idle after settlement. */\n onTurnSettled?(launch: AgentLaunch, outcome: AgentWorkTerminalOutcome): Promise<void> | void;\n /** Domain terminal handoff; the registry entry is released afterwards. */\n onTerminal(launch: AgentLaunch, outcome: AgentWorkTerminalOutcome): Promise<void> | void;\n}\n\n/**\n * Start one Pi launch under the full ADR-060/061 launch protocol.\n *\n * @remarks\n * The launch path is fixed: resolve the IAM launch context for the attested\n * initiator, ensure the owner's stable agent and context directories, bind the\n * stable agent socket, register the purpose-specific session exclusion entry,\n * resolve the authoritative Pi session mapping, and spawn. After the prompt\n * is accepted the created Pi session id is read with `get_state` and bound\n * back after Pi accepts the prompt. A mapping whose session file is missing starts a\n * fresh session and rebinds; a delivery never fails on a missing file.\n *\n * @param runtime - Shared launch runtime dependencies.\n * @param input - Concrete launch request.\n * @returns Registered launch after the Orchestrator hands off the initial prompt.\n */\nexport async function startAgentLaunch(\n runtime: AgentLaunchRuntime,\n input: StartAgentLaunchInput,\n): Promise<AgentLaunch> {\n const { sessionKey } = input;\n const context = await runtime.launchClient.resolveLaunchContext({\n agentId: sessionKey.agentId,\n initiatorUserId: input.initiatorUserId,\n });\n const space = await ensureAgentSessionSpace({\n env: runtime.env,\n userId: context.ownerUserId,\n sessionKey,\n });\n const cwd = input.cwd ?? space.workDir;\n await runtime.channels?.ensureAgentSocket({\n agentId: sessionKey.agentId,\n socketPath: space.socketPath,\n ...(space.agentGid === undefined ? {} : { agentGid: space.agentGid }),\n });\n const identity = runtime.identityAllocator.allocate({\n agentId: sessionKey.agentId,\n orgId: context.orgId,\n kind: input.kind,\n ...(input.ticketId ? { ticketId: input.ticketId } : {}),\n });\n const launch: AgentLaunch = {\n launchId: identity.launchId,\n sessionKey,\n ownerUserId: context.ownerUserId,\n initiatorUserId: input.initiatorUserId,\n orgId: context.orgId,\n orgCode: context.orgCode,\n kind: input.kind,\n ...(input.channelId ? { channelId: input.channelId } : {}),\n ...(input.originMessageId ? { originMessageId: input.originMessageId } : {}),\n ...(input.ticketId ? { ticketId: input.ticketId } : {}),\n ...(input.ticketScope ? { ticketScope: input.ticketScope } : {}),\n processUid: identity.uid,\n identity,\n profileDir: space.profileDir,\n sessionDir: space.sessionDir,\n memoryDir: space.memoryDir,\n socketPath: space.socketPath,\n execution: undefined,\n modelSettings: {\n provider: context.modelProvider,\n model: context.modelName,\n thinking: context.thinkingEnabled ? context.thinkingEffort : \"off\",\n },\n stopping: new AbortController(),\n };\n runtime.registry.open(launch);\n const releaseLaunch = (): void => {\n launch.stopping.abort();\n runtime.registry.release(launch);\n };\n let execution: AgentWorkExecution | undefined;\n let piSessionId: string | null = null;\n try {\n piSessionId = await runtime.launchClient.resolvePiSession(sessionKey);\n const resumeSessionFile = piSessionId\n ? await findPiSessionFile(space.sessionDir, piSessionId)\n : undefined;\n const startRun = runtime.startRun ?? startAgentWorkExecution;\n execution = await startRun({\n env: runtime.env,\n stderr: runtime.stderr,\n label: input.label,\n spriteTaskName: createAgentWorkSpriteTaskName(input.spriteTaskLabel),\n spriteTaskLeases: runtime.spriteTaskLeases,\n cwd,\n ...launch.modelSettings,\n profileDir: space.profileDir,\n sessionDir: space.sessionDir,\n ...(resumeSessionFile ? { resumeSessionFile } : {}),\n commandSocketPath: space.socketPath,\n launchId: launch.launchId,\n ...(space.userGid !== undefined && space.agentGid !== undefined\n ? { supplementaryGids: [space.userGid, space.agentGid] }\n : {}),\n envOverrides: {\n AGENT_ID: sessionKey.agentId,\n MOTE_SESSION_CONTEXT_KIND: sessionKey.contextKind,\n ...(sessionKey.contextKind !== \"assessment\"\n ? { MOTE_SESSION_CONTEXT_ID: sessionKey.contextId }\n : {}),\n MOTE_AGENT_MEMORY_DIR: space.memoryDir,\n MOTE_AGENT_ROLE: context.agentRole,\n ...(input.appId ? { MOTE_APP_ID: input.appId } : {}),\n ...(input.channelId ? { MOTE_CHANNEL_ID: input.channelId } : {}),\n ...(input.ticketId ? { MOTE_TICKET_ID: input.ticketId } : {}),\n },\n kernelIdentity: identity,\n ...(runtime.processRuntime ? { processRuntime: runtime.processRuntime } : {}),\n ...await launchMessages(space.profileDir, input, launch),\n onSpawn: (pid) => {\n input.onSpawn?.(launch, pid, cwd);\n },\n onStopped: async () => {\n await input.onStopped?.(launch);\n },\n ...(input.onTurnSettled ? {\n onTurnSettled: async (outcome) => input.onTurnSettled?.(launch, outcome),\n } : {}),\n ...(input.onPiEvent ? { onPiEvent: input.onPiEvent } : {}),\n ...(input.onUnparsedOutput ? { onUnparsedOutput: input.onUnparsedOutput } : {}),\n onTerminal: async (outcome) => {\n try {\n await input.onTerminal(launch, outcome);\n } finally {\n releaseLaunch();\n }\n },\n });\n launch.execution = execution;\n await execution.ready;\n } catch (error) {\n if (execution) {\n await execution.completion;\n } else {\n releaseLaunch();\n }\n throw error;\n }\n void bindReportedPiSession(runtime, launch, execution, piSessionId);\n return launch;\n}\n\n/**\n * Read Pi's created or resumed session id and bind the mapping when changed.\n *\n * @remarks\n * Best-effort by design: a bind failure leaves the previous mapping in place\n * and the next launch converges. Never fails the delivery.\n *\n * @param runtime - Host client and error stream used to persist the session mapping.\n * @param launch - Logical agent session whose Pi session should be discoverable.\n * @param execution - Running Pi process that reports the session it opened.\n * @param mappedPiSessionId - Session mapping resolved before this launch.\n */\nasync function bindReportedPiSession(\n runtime: AgentLaunchRuntime,\n launch: AgentLaunch,\n execution: AgentWorkExecution,\n mappedPiSessionId: string | null,\n): Promise<void> {\n try {\n const state = await execution.getState();\n const sessionId = state.sessionId;\n if (typeof sessionId !== \"string\" || !sessionId.trim()) {\n return;\n }\n if (sessionId === mappedPiSessionId) {\n return;\n }\n await runtime.launchClient.bindPiSession({\n sessionKey: launch.sessionKey,\n piSessionId: sessionId,\n });\n } catch (error) {\n runtime.stderr.write(\n `[launch:${launch.launchId}] Pi session binding failed: ${\n error instanceof Error ? error.message : String(error)\n }\\n`,\n );\n }\n}\n\n/**\n * Locate the cached session file for one mapped Pi session id.\n *\n * @remarks\n * Pi session files are `<timestamp>_<sessionId>.jsonl`. The mapping is\n * authoritative; a missing file is a lost cache and yields `undefined` so the\n * launch starts a fresh session (ADR-060 \u00A73). Files are never scanned to\n * SELECT a session \u2014 only to locate the already-mapped one.\n *\n * @param sessionDir - Purpose-specific session directory.\n * @param piSessionId - Mapped Pi session id.\n * @returns Absolute session file path, or `undefined` when the cache is lost.\n */\nexport async function findPiSessionFile(\n sessionDir: string,\n piSessionId: string,\n): Promise<string | undefined> {\n let entries: string[];\n try {\n entries = await readdir(sessionDir);\n } catch {\n return undefined;\n }\n const suffix = `_${piSessionId}.jsonl`;\n const match = entries.find(\n (name) => name.endsWith(suffix) || name === `${piSessionId}.jsonl`,\n );\n return match ? join(sessionDir, match) : undefined;\n}\n\n/**\n * Compose launch and handoff messages from one materialized locale snapshot.\n * Explicit user messages retain their original text.\n * @param profileDir - Stable, root-owned Pi profile directory.\n * @param input - Trusted launch context and optional assignment handoff check.\n * @param launch - Concrete execution used to verify the accepted handoff.\n * @returns Initial prompt and, for assignments, a localized completion reminder.\n */\nasync function launchMessages(\n profileDir: string,\n input: StartAgentLaunchInput,\n launch: AgentLaunch,\n): Promise<Pick<StartAgentWorkExecutionInput, \"prompt\" | \"handoff\">> {\n if (input.prompt !== undefined && !input.handoff) return { prompt: input.prompt };\n const { contextKind } = input.sessionKey;\n if (contextKind === \"channel\" && input.prompt === undefined) throw new Error(\"Channel launch requires a user message\");\n const { locale } = parseAgentPersona(await readFile(join(profileDir, \"system_prompt.md\"), \"utf8\"));\n let prompt = input.prompt;\n if (prompt === undefined) {\n if (contextKind === \"assessment\") {\n prompt = locale === \"en\"\n ? \"Assess the work board: resolve unassigned waiting tickets and reassess parked tickets.\"\n : \"\u8BC4\u4F30\u5DE5\u5355\u770B\u677F\uFF1A\u5904\u7406\u5C1A\u672A\u5206\u914D\u7684\u5F85\u529E\u5DE5\u5355\uFF0C\u5E76\u91CD\u65B0\u8BC4\u4F30\u5DF2\u6401\u7F6E\u7684\u5DE5\u5355\u3002\";\n } else {\n prompt = locale === \"en\" ? \"Work the assigned ticket.\" : \"\u5904\u7406\u6240\u5206\u914D\u7684\u5DE5\u5355\u3002\";\n }\n }\n const handoff = input.handoff;\n if (!handoff) return { prompt };\n if (input.sessionKey.contextKind !== \"ticket\") throw new Error(\"Assignment handoff requires a ticket launch\");\n const ticketId = input.sessionKey.contextId;\n return {\n prompt,\n handoff: {\n check: () => handoff.check(launch),\n reminder: locale === \"en\"\n ? `Your assignment ended without an accepted handoff. Read orchestrator ticket brief ${ticketId} if needed, then submit orchestrator ticket handoff ${ticketId} with JSON fields results, validation, remainingWork, and optional references. Report unfinished work honestly. Only record the handoff; do not resume implementation or repeat validation.`\n : `\u672C\u6B21\u4EFB\u52A1\u5DF2\u7ED3\u675F\uFF0C\u4F46\u5C1A\u672A\u8BB0\u5F55\u6709\u6548\u4EA4\u63A5\u3002\u5982\u9700\u4E0A\u4E0B\u6587\uFF0C\u8BFB\u53D6 orchestrator ticket brief ${ticketId}\uFF0C\u7136\u540E\u63D0\u4EA4 orchestrator ticket handoff ${ticketId}\uFF0CJSON \u5B57\u6BB5\u5305\u62EC results\u3001validation\u3001remainingWork \u548C\u53EF\u9009\u7684 references\u3002\u5982\u5B9E\u62A5\u544A\u672A\u5B8C\u6210\u7684\u5DE5\u4F5C\u3002\u4EC5\u8BB0\u5F55\u4EA4\u63A5\uFF0C\u4E0D\u8981\u7EE7\u7EED\u5B9E\u73B0\u6216\u91CD\u590D\u9A8C\u8BC1\u3002`,\n },\n };\n}\n", "import { randomUUID } from \"node:crypto\";\nimport type { Writable } from \"node:stream\";\n\nimport type { AgentThinkingEffort } from \"@liy/mote-core\";\n\nimport { checkAssignmentHandoff, type AssignmentHandoff, type AssignmentHandoffStatus } from \"./assignment-handoff.js\";\n\nimport {\n createSetprivAgentProcessRuntime,\n type AgentProcessRuntime,\n} from \"./agent-process-runtime.js\";\nimport {\n DEFAULT_SANDBOX_LOCAL_BIN_DIR,\n readPositiveInteger,\n} from \"./shared/config.js\";\nimport type { AgentProcessIdentity } from \"./scheduler/process-identity.js\";\nimport { parseJson } from \"./shared/json.js\";\nimport { attachLineReader } from \"./shared/stream.js\";\nimport type { PiChild } from \"./shared/types.js\";\nimport type {\n SpriteTaskLease,\n SpriteTaskLeaseManager,\n} from \"./sprite-task-lease.js\";\n\n/** Maximum time allowed for a domain adapter to hand terminal output to its owning Durable Object. */\nconst DEFAULT_TERMINAL_HANDOFF_TIMEOUT_MS = 6_000;\n/** Maximum time a live Pi execution may emit no RPC output before it is terminated. */\nconst DEFAULT_AGENT_EXECUTION_OUTPUT_IDLE_TIMEOUT_MS = 10 * 60_000;\n/** Maximum time a cancellation may wait for both the Pi response and settlement. */\nconst DEFAULT_ABORT_TIMEOUT_MS = 5_000;\n/** Maximum wait for Pi to acknowledge one steering or state command. */\nconst DEFAULT_COMMAND_ACCEPT_TIMEOUT_MS = 5_000;\n/**\n * Non-secret host settings that Pi and its child tools may inherit.\n *\n * The list is intentionally closed: the Orchestrator service environment also\n * contains Edge, Sprite, database, and OAuth credentials that must never cross\n * the agent process boundary.\n */\nconst PI_HOST_ENVIRONMENT = [\n \"HOME\",\n \"LANG\",\n \"LC_ALL\",\n \"LC_CTYPE\",\n \"LOGNAME\",\n \"SHELL\",\n \"TERM\",\n \"TMPDIR\",\n \"TZ\",\n \"USER\",\n \"AGENT_BROWSER_EXECUTABLE_PATH\",\n \"MOTE_AGENTIC_COMPONENT_CATALOG_PACKAGE\",\n] as const;\n\n/**\n * Launch-scoped context that trusted Orchestrator code may expose to Pi.\n *\n * These values guide agent behavior but never authorize a request. The stable\n * agent socket plus the registered launch context own request attribution.\n */\nconst PI_RUN_ENVIRONMENT = [\n \"AGENT_ID\",\n \"MOTE_CHANNEL_ID\",\n \"MOTE_SESSION_CONTEXT_KIND\",\n \"MOTE_SESSION_CONTEXT_ID\",\n \"MOTE_AGENT_MEMORY_DIR\",\n \"MOTE_AGENT_ROLE\",\n \"MOTE_APP_ID\",\n \"MOTE_TICKET_ID\",\n] as const;\n\n/**\n * The first terminal fact observed for one Agent Work Execution.\n */\nexport type AgentWorkTerminalCause =\n | \"settled\"\n | \"prompt_rejected\"\n | \"steer_rejected\"\n | \"spawn_error\"\n | \"write_error\"\n | \"process_exit\"\n | \"inactivity_timeout\"\n | \"cancelled\"\n | \"stopped\";\n\n/**\n * Terminal result passed to the channel or board adapter exactly once.\n */\nexport interface AgentWorkTerminalOutcome {\n /** First terminal cause; later process signals cannot replace it. */\n cause: AgentWorkTerminalCause;\n /** Accepted assignment handoff status, independent of process success. */\n handoff?: AssignmentHandoffStatus;\n /** Primary assignment settled before any handoff reminder; bookkeeping failure must not retry implementation. */\n assignmentSettled?: boolean;\n /** Optional human-readable detail for diagnostics and user-facing errors. */\n message?: string;\n /** Child exit code after bounded shutdown, when available. */\n exitCode?: number | null;\n /** Child exit signal after bounded shutdown, when available. */\n signal?: NodeJS.Signals | null;\n}\n\n/**\n * Inputs required to run one bounded Pi process behind one Sprite Task.\n */\nexport interface StartAgentWorkExecutionInput {\n /** Orchestrator environment containing host process and lifecycle settings. */\n env: NodeJS.ProcessEnv;\n /** Diagnostic label, such as a channel id or ticket id. */\n label: string;\n /** Unique Sprite Task name owned only by this execution. */\n spriteTaskName: string;\n /** Sprite Task manager used to acquire the owner handle before spawning Pi. */\n spriteTaskLeases: SpriteTaskLeaseManager;\n /** Working directory for the Pi child. */\n cwd: string;\n /** Provider selected by the durable agent profile. */\n provider: string;\n /** Model selected by the durable agent profile. */\n model: string;\n /** Pi thinking level derived from the durable agent profile. */\n thinking: \"off\" | AgentThinkingEffort;\n /** Stable root-managed Pi profile directory (`PI_CODING_AGENT_DIR`). */\n profileDir: string;\n /**\n * Durable anchor session directory (ADR-060/061).\n *\n * @remarks\n * Every launch uses the directory selected by its purpose-specific context\n * as its `HOME` and Pi `--session-dir`; no disposable private home exists.\n */\n sessionDir: string;\n /**\n * Exact mapped Pi session file to resume, when the mapping's cache survived.\n *\n * @remarks\n * Absent for a fresh session: Pi starts a new session in {@link sessionDir}\n * and the orchestrator binds the reported session id afterwards. Files are\n * never scanned to select a session (ADR-060 \u00A73).\n */\n resumeSessionFile?: string;\n /** Stable per-agent authority socket exposed as `MOTE_AGENT_COMMAND_SOCKET`. */\n commandSocketPath?: string;\n /** Private launch id exposed only to this process as `MOTE_AGENT_LAUNCH_ID`. */\n launchId?: string;\n /** Stable owner-user and agent GIDs granted as supplementary groups. */\n supplementaryGids?: readonly number[];\n /** Process-specific identity and work context. */\n envOverrides: Record<string, string>;\n /** Allocated UID, GID, and launch id that production binds to this process. */\n kernelIdentity?: AgentProcessIdentity;\n /** Portable process boundary injected by tests; production leaves this unset. */\n processRuntime?: AgentProcessRuntime;\n /** First instruction written after the child reports `spawn`. */\n prompt: string;\n /** Scheduled assignment completion requirement; absent for channels and assessments. */\n handoff?: AssignmentHandoff;\n /** Diagnostic sink for Pi stderr and lifecycle failures. */\n stderr: Writable;\n /** Observer for parsed Pi RPC events. Observer errors are diagnostic only. */\n onPiEvent?(event: Record<string, unknown>): void;\n /** Observer for non-JSON stdout records. */\n onUnparsedOutput?(line: string): void;\n /** Observer invoked after the operating system starts the child. */\n onSpawn?(pid: number | undefined): void;\n /**\n * Observer invoked only after process-group termination is confirmed.\n *\n * @remarks\n * The UID remains retired because allocation is monotonic. This callback is\n * skipped if process-group teardown cannot be confirmed.\n */\n onStopped?(): Promise<void> | void;\n /**\n * Turn handoff that enables reuse after successful settlement.\n *\n * @remarks\n * When present, the lifecycle releases the turn's Sprite Task and leaves the\n * RPC child idle after this callback. Omit it for finite autonomous work.\n *\n * @param outcome - Successful turn settlement handed to the channel adapter.\n */\n onTurnSettled?(outcome: AgentWorkTerminalOutcome): Promise<void> | void;\n /**\n * Domain handoff invoked once after Pi stops and before the Sprite Task releases.\n *\n * The lifecycle applies a hard deadline, so a failed Durable Object ACK can\n * never retain the Sprite Task indefinitely.\n */\n onTerminal(outcome: AgentWorkTerminalOutcome): Promise<void> | void;\n}\n\n/**\n * Handle for the one active Pi process owned by an Agent Work Execution.\n */\nexport interface AgentWorkExecution {\n /** Unique Sprite Task held by this execution. */\n readonly spriteTaskName: string;\n /** Resolves after the initial prompt has been written; rejects on startup failure. */\n readonly ready: Promise<void>;\n /** Resolves after Pi accepts the initial prompt and is ready for RPC commands. */\n readonly accepted: Promise<void>;\n /** Resolves after process shutdown, bounded handoff, and Task release. */\n readonly completion: Promise<AgentWorkTerminalOutcome>;\n /** Whether the reusable RPC child is idle and can accept a new prompt. */\n isIdle(): boolean;\n /** Resolve when the current or most recently submitted turn finishes handoff. */\n waitForTurn(): Promise<AgentWorkTerminalOutcome>;\n /**\n * Start another turn on an idle reusable RPC child.\n *\n * @param message - User-authored prompt for the next turn.\n */\n prompt(message: string): Promise<void>;\n /** Whether the process can still accept a steering message. */\n acceptsSteer(): boolean;\n /**\n * Queue one user steering message into this same Pi execution.\n *\n * @param message - User-authored instruction delivered with Pi's `steer` RPC command.\n */\n steer(message: string): Promise<void>;\n /**\n * Read Pi's current RPC session state.\n *\n * @remarks\n * Used after spawn to read the created or resumed Pi session id so the\n * authoritative purpose-specific session mapping can be bound (ADR-060 \u00A73).\n */\n getState(): Promise<Record<string, unknown>>;\n /** Cancel the current Pi execution through correlated abort and settlement. */\n cancel(): Promise<AgentWorkTerminalOutcome>;\n /**\n * Stop the execution for a deterministic external reason.\n *\n * @param reason - Diagnostic reason for stopping the process.\n */\n stop(reason: string): Promise<AgentWorkTerminalOutcome>;\n}\n\n/**\n * Create a unique provider Task name for one Pi execution.\n *\n * @param label - Short diagnostic label such as `channel` or `drone`.\n * @returns Sprite-safe name that is never reused by another execution.\n */\nexport function createAgentWorkSpriteTaskName(label: string): string {\n const safeLabel = label\n .toLowerCase()\n .replace(/[^a-z0-9-]+/gu, \"-\")\n .replace(/^-+|-+$/gu, \"\")\n .slice(0, 20) || \"work\";\n return `mote-pi-${safeLabel}-${randomUUID()}`;\n}\n\n/**\n * Start one Agent Work Execution shared by channel and autonomous agents.\n *\n * @remarks\n * Fallible workspace preparation belongs to the caller. This module acquires\n * exactly one unique Sprite Task immediately before spawning exactly one Pi\n * process, then owns every terminal path through one finite finalizer.\n *\n * @param input - Process, Task, event, and terminal-handoff configuration.\n * @returns Active execution handle after the Sprite Task has been acquired.\n */\nexport async function startAgentWorkExecution(\n input: StartAgentWorkExecutionInput\n): Promise<AgentWorkExecution> {\n let task: SpriteTaskLease | undefined = await input.spriteTaskLeases.acquire(\n input.spriteTaskName,\n );\n let processRuntime: AgentProcessRuntime;\n let child: PiChild;\n try {\n processRuntime = resolveProcessRuntime(input);\n child = spawnPi(input, processRuntime);\n } catch (error) {\n const outcome: AgentWorkTerminalOutcome = {\n cause: \"spawn_error\",\n message: errorMessage(error),\n };\n try {\n await runBoundedHandoff(input, outcome);\n } finally {\n await task.release();\n task = undefined;\n }\n throw error;\n }\n\n const idleTimeoutMs = readPositiveInteger(\n input.env.AGENT_EXECUTION_OUTPUT_IDLE_TIMEOUT_MS,\n DEFAULT_AGENT_EXECUTION_OUTPUT_IDLE_TIMEOUT_MS\n );\n const abortTimeoutMs = readPositiveInteger(\n input.env.MOTE_PI_ABORT_TIMEOUT_MS,\n DEFAULT_ABORT_TIMEOUT_MS\n );\n const commandAcceptTimeoutMs = readPositiveInteger(\n input.env.MOTE_PI_COMMAND_ACCEPT_TIMEOUT_MS,\n DEFAULT_COMMAND_ACCEPT_TIMEOUT_MS\n );\n\n let phase:\n | \"starting\"\n | \"acquiring\"\n | \"running\"\n | \"cancelling\"\n | \"settling\"\n | \"idle\"\n | \"finalizing\"\n | \"terminal\" = \"starting\";\n let idleTimer: ReturnType<typeof setTimeout> | undefined;\n let abortTimer: ReturnType<typeof setTimeout> | undefined;\n let handoffTimer: ReturnType<typeof setTimeout> | undefined;\n let handoffReminderSent = false;\n let assignmentSettled = false;\n let handoffStatus: AssignmentHandoffStatus | undefined;\n let assistantFailed = false;\n let terminalPromise: Promise<AgentWorkTerminalOutcome> | undefined;\n let resolveCompletion!: (outcome: AgentWorkTerminalOutcome) => void;\n let turnCompletion: Promise<AgentWorkTerminalOutcome>;\n let resolveTurnCompletion!: (outcome: AgentWorkTerminalOutcome) => void;\n let resolveReady!: () => void;\n let rejectReady!: (error: Error) => void;\n let readySettled = false;\n let resolveAccepted!: () => void;\n let rejectAccepted!: (error: Error) => void;\n let acceptedSettled = false;\n let abortState: { id: string } | undefined;\n const initialPromptId = `${input.label}-prompt`;\n const pendingSteers = new Map<string, {\n timer: ReturnType<typeof setTimeout>;\n resolve(): void;\n reject(error: Error): void;\n }>();\n const pendingStateRequests = new Map<string, {\n timer: ReturnType<typeof setTimeout>;\n resolve(state: Record<string, unknown>): void;\n reject(error: Error): void;\n }>();\n const pendingPrompts = new Map<string, {\n timer: ReturnType<typeof setTimeout>;\n resolve(): void;\n reject(error: Error): void;\n }>();\n\n const completion = new Promise<AgentWorkTerminalOutcome>((resolve) => {\n resolveCompletion = resolve;\n });\n const createTurnCompletion = (): Promise<AgentWorkTerminalOutcome> =>\n new Promise((resolve) => {\n resolveTurnCompletion = resolve;\n });\n turnCompletion = createTurnCompletion();\n const ready = new Promise<void>((resolve, reject) => {\n resolveReady = resolve;\n rejectReady = reject;\n });\n const accepted = new Promise<void>((resolve, reject) => {\n resolveAccepted = resolve;\n rejectAccepted = reject;\n });\n\n const settleReady = (error?: Error): void => {\n if (readySettled) {\n return;\n }\n readySettled = true;\n if (error) {\n rejectReady(error);\n return;\n }\n resolveReady();\n };\n\n const settleAccepted = (error?: Error): void => {\n if (acceptedSettled) {\n return;\n }\n acceptedSettled = true;\n if (error) {\n rejectAccepted(error);\n return;\n }\n resolveAccepted();\n };\n\n const clearTimers = (): void => {\n clearTimeout(handoffTimer);\n handoffTimer = undefined;\n if (idleTimer) {\n clearTimeout(idleTimer);\n idleTimer = undefined;\n }\n if (abortTimer) {\n clearTimeout(abortTimer);\n abortTimer = undefined;\n }\n };\n\n /**\n * Relinquish the current turn's Task exactly once within this lifecycle.\n *\n * @remarks\n * Ownership is cleared before awaiting DELETE so concurrent settlement and\n * process termination cannot both retain or release the same handle.\n *\n * @returns Completion after the bounded lease release attempt.\n */\n const releaseTask = async (): Promise<void> => {\n const ownedTask = task;\n task = undefined;\n if (!ownedTask) {\n return;\n }\n try {\n await ownedTask.release();\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] Sprite task release failed: ${errorMessage(error)}\\n`,\n );\n }\n };\n\n const beginTerminal = (\n outcome: AgentWorkTerminalOutcome\n ): Promise<AgentWorkTerminalOutcome> => {\n if (terminalPromise) {\n return terminalPromise;\n }\n phase = \"finalizing\";\n clearTimers();\n const terminalError = new Error(\n outcome.message ?? `Pi execution ended: ${outcome.cause}`\n );\n settleReady(terminalError);\n settleAccepted(terminalError);\n for (const [id, pending] of pendingSteers) {\n clearTimeout(pending.timer);\n pending.reject(terminalError);\n pendingSteers.delete(id);\n }\n for (const [id, pending] of pendingStateRequests) {\n clearTimeout(pending.timer);\n pending.reject(terminalError);\n pendingStateRequests.delete(id);\n }\n for (const [id, pending] of pendingPrompts) {\n clearTimeout(pending.timer);\n pending.reject(terminalError);\n pendingPrompts.delete(id);\n }\n terminalPromise = (async () => {\n try {\n let containmentRemoved = false;\n try {\n await processRuntime.terminate(child);\n containmentRemoved = true;\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] process containment teardown failed: ${errorMessage(error)}\\n`\n );\n }\n if (containmentRemoved) {\n try {\n await input.onStopped?.();\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] stopped observer failed: ${errorMessage(error)}\\n`\n );\n }\n }\n if (input.handoff) {\n outcome.assignmentSettled = assignmentSettled;\n outcome.handoff = handoffStatus === \"recorded\" ? \"recorded\" : await checkAssignmentHandoff(input.handoff);\n }\n outcome.exitCode = child.exitCode;\n outcome.signal = child.signalCode;\n try {\n await runBoundedHandoff(input, outcome);\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] terminal handoff failed: ${errorMessage(error)}\\n`\n );\n }\n } finally {\n await releaseTask();\n phase = \"terminal\";\n resolveTurnCompletion(outcome);\n resolveCompletion(outcome);\n }\n return outcome;\n })();\n return terminalPromise;\n };\n\n /**\n * Finish one successful turn while retaining the quiet RPC process.\n *\n * The turn-owned Task and producer handoff end before the process becomes\n * reusable. With no Task, network connection, or output, Sprite idle policy\n * may suspend the process without losing the durable Pi session file.\n *\n * @param outcome - Successful settlement for the active turn.\n * @param handoff - Reuse-specific domain handoff to run before becoming idle.\n * @returns Completion after the handoff and Sprite Task release.\n */\n const settleReusableTurn = async (\n outcome: AgentWorkTerminalOutcome,\n handoff: NonNullable<StartAgentWorkExecutionInput[\"onTurnSettled\"]>,\n ): Promise<void> => {\n phase = \"settling\";\n clearTimers();\n try {\n await runBoundedHandoff(input, outcome, handoff);\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] reusable turn handoff failed: ${errorMessage(error)}\\n`,\n );\n } finally {\n await releaseTask();\n if (phase === \"settling\") {\n phase = \"idle\";\n resolveTurnCompletion(outcome);\n }\n }\n };\n\n const armIdleTimer = (): void => {\n if (idleTimer) {\n clearTimeout(idleTimer);\n }\n if (phase !== \"starting\" && phase !== \"running\" && phase !== \"cancelling\") {\n return;\n }\n idleTimer = setTimeout(() => {\n input.stderr.write(\n `[run:${input.label}] no Pi activity for ${idleTimeoutMs}ms; ending the execution\\n`\n );\n void beginTerminal({\n cause: \"inactivity_timeout\",\n message: `Pi emitted no activity for ${idleTimeoutMs}ms`,\n });\n }, idleTimeoutMs);\n idleTimer.unref();\n };\n\n const writeFrame = (\n frame: Record<string, unknown>,\n failureCause: \"write_error\"\n ): Promise<void> =>\n new Promise((resolve, reject) => {\n let serialized: string;\n try {\n serialized = `${JSON.stringify(frame)}\\n`;\n } catch (error) {\n const failure = new Error(errorMessage(error));\n reject(failure);\n void beginTerminal({ cause: failureCause, message: failure.message });\n return;\n }\n try {\n child.stdin.write(serialized, (error) => {\n if (!error) {\n resolve();\n return;\n }\n reject(error);\n void beginTerminal({ cause: failureCause, message: error.message });\n });\n } catch (error) {\n const failure = error instanceof Error ? error : new Error(String(error));\n reject(failure);\n void beginTerminal({ cause: failureCause, message: failure.message });\n }\n });\n\n /** Keep the same process and lease for at most one handoff-only reminder turn. */\n const settleAssignment = async (): Promise<void> => {\n if (!input.handoff) return;\n assignmentSettled = true;\n phase = \"settling\";\n if (idleTimer) clearTimeout(idleTimer);\n handoffStatus = await checkAssignmentHandoff(input.handoff);\n // Cancellation or process exit may have won while the host read was pending.\n if (phase !== \"settling\") return;\n if (handoffStatus !== \"missing\" || handoffReminderSent) {\n void beginTerminal({ cause: \"settled\" });\n return;\n }\n handoffReminderSent = true;\n phase = \"running\";\n handoffTimer = setTimeout(() => {\n void beginTerminal({ cause: \"inactivity_timeout\", message: \"Assignment handoff reminder exceeded its deadline\" });\n }, input.handoff.reminderTimeoutMs ?? 60_000);\n handoffTimer.unref();\n armIdleTimer();\n try {\n await writeFrame({ id: `${initialPromptId}-handoff`, type: \"prompt\", message: input.handoff.reminder }, \"write_error\");\n } catch {\n // writeFrame owns terminal failure and process teardown.\n }\n };\n\n // ChildProcess errors do not include errors emitted by its stdio streams.\n // Keep every pipe failure inside this execution's existing finite finalizer.\n for (const [name, stream] of [[\"stdin\", child.stdin], [\"stdout\", child.stdout], [\"stderr\", child.stderr]] as const) {\n stream.on(\"error\", (error) => {\n void beginTerminal({ cause: \"write_error\", message: `Pi ${name} failed: ${error.message}` });\n });\n }\n attachLineReader(child.stdout, (line) => {\n armIdleTimer();\n const event = parseJson(line);\n if (!event) {\n try {\n input.onUnparsedOutput?.(line);\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] output observer failed: ${errorMessage(error)}\\n`\n );\n }\n return;\n }\n try {\n input.onPiEvent?.(event);\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] Pi event observer failed: ${errorMessage(error)}\\n`\n );\n }\n if (\n event.type === \"response\" &&\n event.command === \"prompt\" &&\n event.id === initialPromptId\n ) {\n if (event.success === true) {\n settleAccepted();\n } else {\n const message = readRpcError(event, \"Pi rejected the initial prompt\");\n settleAccepted(new Error(message));\n void beginTerminal({ cause: \"prompt_rejected\", message });\n }\n return;\n }\n if (\n event.type === \"response\" &&\n event.command === \"steer\" &&\n typeof event.id === \"string\"\n ) {\n const pending = pendingSteers.get(event.id);\n if (pending) {\n clearTimeout(pending.timer);\n pendingSteers.delete(event.id);\n if (event.success === true) {\n pending.resolve();\n } else {\n const message = readRpcError(event, \"Pi rejected the steer command\");\n pending.reject(new Error(message));\n void beginTerminal({ cause: \"steer_rejected\", message });\n }\n }\n return;\n }\n if (\n event.type === \"response\" &&\n event.command === \"prompt\" &&\n typeof event.id === \"string\"\n ) {\n if (event.id === `${initialPromptId}-handoff` && event.success !== true) {\n void beginTerminal({ cause: \"prompt_rejected\", message: readRpcError(event, \"Pi rejected the handoff reminder\") });\n return;\n }\n const pending = pendingPrompts.get(event.id);\n if (pending) {\n clearTimeout(pending.timer);\n pendingPrompts.delete(event.id);\n if (event.success === true) {\n pending.resolve();\n } else {\n const message = readRpcError(event, \"Pi rejected the prompt command\");\n pending.reject(new Error(message));\n void beginTerminal({ cause: \"prompt_rejected\", message });\n }\n }\n return;\n }\n if (\n event.type === \"response\" &&\n event.command === \"get_state\" &&\n typeof event.id === \"string\"\n ) {\n const pending = pendingStateRequests.get(event.id);\n if (pending) {\n clearTimeout(pending.timer);\n pendingStateRequests.delete(event.id);\n if (event.success === true && isStateRecord(event.data)) {\n pending.resolve(event.data);\n } else {\n pending.reject(\n new Error(readRpcError(event, \"Pi rejected the get_state command\")),\n );\n }\n }\n return;\n }\n if (\n abortState &&\n event.type === \"response\" &&\n event.id === abortState.id &&\n event.command === \"abort\"\n ) {\n if (event.success !== true) {\n void beginTerminal({\n cause: \"cancelled\",\n message: readRpcError(event, \"Pi rejected the abort command\"),\n });\n }\n return;\n }\n const rejectedCommand = readRejectedCommand(event);\n if (rejectedCommand) {\n void beginTerminal({\n cause: rejectedCommand === \"steer\" ? \"steer_rejected\" : \"prompt_rejected\",\n message: readRpcError(event, `Pi rejected the ${rejectedCommand} command`),\n });\n return;\n }\n if (event.type === \"message_end\" && isStateRecord(event.message) && event.message.role === \"assistant\") {\n assistantFailed = event.message.stopReason === \"error\" || event.message.stopReason === \"aborted\";\n }\n if (event.type !== \"agent_settled\") {\n return;\n }\n if (phase !== \"running\" && phase !== \"cancelling\") {\n return;\n }\n if (input.handoff && !abortState && !assistantFailed) {\n void settleAssignment();\n return;\n }\n // A successful reusable channel turn releases its Task but keeps the quiet\n // RPC process. Cancellation and failures retain the finite terminal path.\n if (input.onTurnSettled && !abortState) {\n void settleReusableTurn({ cause: \"settled\" }, input.onTurnSettled);\n return;\n }\n void beginTerminal({ cause: abortState ? \"cancelled\" : \"settled\" });\n });\n attachLineReader(child.stderr, (line) => {\n input.stderr.write(`[run:${input.label}] ${line}\\n`);\n });\n child.once(\"spawn\", () => {\n if (phase !== \"starting\") {\n return;\n }\n phase = \"running\";\n try {\n input.onSpawn?.(child.pid);\n } catch (error) {\n input.stderr.write(\n `[run:${input.label}] spawn observer failed: ${errorMessage(error)}\\n`\n );\n }\n armIdleTimer();\n void writeFrame(\n { id: initialPromptId, type: \"prompt\", message: input.prompt },\n \"write_error\"\n ).then(() => settleReady(), (error) => settleReady(error));\n });\n child.once(\"error\", (error) => {\n settleReady(error);\n void beginTerminal({ cause: \"spawn_error\", message: error.message });\n });\n child.once(\"close\", (code, signal) => {\n if (phase === \"finalizing\" || phase === \"terminal\") {\n return;\n }\n void beginTerminal({\n cause: \"process_exit\",\n message: `Pi exited before settlement (code ${String(code)}, signal ${String(signal)})`,\n exitCode: code,\n signal,\n });\n });\n\n return {\n spriteTaskName: input.spriteTaskName,\n ready,\n accepted,\n completion,\n isIdle() {\n return phase === \"idle\";\n },\n waitForTurn() {\n return turnCompletion;\n },\n async prompt(message) {\n if (phase !== \"idle\") {\n throw new Error(\"Pi RPC process is not idle and reusable\");\n }\n phase = \"acquiring\";\n let acquiredTask: SpriteTaskLease;\n try {\n acquiredTask = await input.spriteTaskLeases.acquire(\n createAgentWorkSpriteTaskName(input.label),\n );\n } catch (error) {\n if (phase === \"acquiring\") {\n phase = \"idle\";\n }\n throw error;\n }\n task = acquiredTask;\n if (phase !== \"acquiring\") {\n await releaseTask();\n throw new Error(\"Pi RPC process stopped while acquiring its Sprite task\");\n }\n turnCompletion = createTurnCompletion();\n const id = `${input.label}-prompt-${randomUUID()}`;\n const promptAccepted = new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n pendingPrompts.delete(id);\n const error = new Error(\n `Pi did not acknowledge the prompt command within ${commandAcceptTimeoutMs}ms`,\n );\n reject(error);\n void beginTerminal({ cause: \"prompt_rejected\", message: error.message });\n }, commandAcceptTimeoutMs);\n timer.unref();\n pendingPrompts.set(id, { timer, resolve, reject });\n });\n phase = \"running\";\n armIdleTimer();\n await Promise.all([\n writeFrame({ id, type: \"prompt\", message }, \"write_error\"),\n promptAccepted,\n ]);\n },\n acceptsSteer() {\n return phase === \"starting\" || phase === \"running\";\n },\n async steer(message) {\n if (phase !== \"starting\" && phase !== \"running\") {\n throw new Error(\"Pi execution is no longer accepting steering messages\");\n }\n await accepted;\n if (phase !== \"running\") {\n throw new Error(\"Pi execution settled before the steering message was accepted\");\n }\n const id = `${input.label}-steer-${randomUUID()}`;\n const steerAccepted = new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n pendingSteers.delete(id);\n const error = new Error(\n `Pi did not acknowledge the steer command within ${commandAcceptTimeoutMs}ms`\n );\n reject(error);\n void beginTerminal({\n cause: \"steer_rejected\",\n message: error.message,\n });\n }, commandAcceptTimeoutMs);\n timer.unref();\n pendingSteers.set(id, { timer, resolve, reject });\n });\n await Promise.all([\n writeFrame({ id, type: \"steer\", message }, \"write_error\"),\n steerAccepted,\n ]);\n },\n async getState() {\n await accepted;\n if (phase !== \"running\" && phase !== \"cancelling\" && phase !== \"idle\") {\n throw new Error(\"Pi execution is not accepting state requests\");\n }\n const id = `${input.label}-state-${randomUUID()}`;\n const answered = new Promise<Record<string, unknown>>((resolve, reject) => {\n const timer = setTimeout(() => {\n pendingStateRequests.delete(id);\n reject(new Error(\n `Pi did not answer the get_state command within ${commandAcceptTimeoutMs}ms`\n ));\n }, commandAcceptTimeoutMs);\n timer.unref();\n pendingStateRequests.set(id, { timer, resolve, reject });\n });\n await writeFrame({ id, type: \"get_state\" }, \"write_error\");\n return answered;\n },\n async cancel() {\n if (phase === \"settling\" && input.handoff) {\n return beginTerminal({ cause: \"cancelled\", message: \"Assignment cancelled during handoff verification\" });\n }\n if (phase === \"finalizing\" || phase === \"terminal\") {\n return completion;\n }\n if (phase === \"cancelling\") {\n return turnCompletion;\n }\n if (phase === \"acquiring\") {\n return beginTerminal({\n cause: \"cancelled\",\n message: \"Pi prompt cancelled during Sprite task acquisition\",\n });\n }\n try {\n await ready;\n } catch {\n return completion;\n }\n if (phase === \"idle\") {\n return turnCompletion;\n }\n if (phase !== \"running\") {\n return turnCompletion;\n }\n phase = \"cancelling\";\n const id = `${input.label}-abort-${randomUUID()}`;\n abortState = { id };\n abortTimer = setTimeout(() => {\n void beginTerminal({\n cause: \"cancelled\",\n message: \"Pi did not settle cancellation before the deadline\",\n });\n }, abortTimeoutMs);\n abortTimer.unref();\n try {\n await writeFrame({ id, type: \"abort\" }, \"write_error\");\n } catch {\n return turnCompletion;\n }\n return turnCompletion;\n },\n stop(reason) {\n void beginTerminal({ cause: \"stopped\", message: reason });\n return completion;\n },\n };\n}\n\n/**\n * Spawn the configured Pi RPC child.\n *\n * @param input - Execution configuration already protected by a Sprite Task.\n * @param processRuntime - Containment boundary that starts the unprivileged child.\n * @returns Spawned child process with piped RPC streams.\n */\nfunction spawnPi(\n input: StartAgentWorkExecutionInput,\n processRuntime: AgentProcessRuntime,\n): PiChild {\n const command = input.env.MOTE_PI_COMMAND?.trim();\n if (!command) {\n throw new Error(\"MOTE_PI_COMMAND is required\");\n }\n const args = [\n \"--mode\",\n \"rpc\",\n \"--session-dir\",\n input.sessionDir,\n \"--approve\",\n ];\n if (input.resumeSessionFile) {\n // Resume exactly the mapped Pi session file; the Postgres mapping is\n // authoritative and files are never scanned to select a session.\n args.push(\"--session\", input.resumeSessionFile);\n }\n args.push(\n \"--provider\",\n input.provider,\n \"--model\",\n input.model,\n \"--thinking\",\n input.thinking,\n );\n return processRuntime.spawn({\n command,\n args,\n cwd: input.cwd,\n stateDir: input.sessionDir,\n env: createPiEnvironment(input),\n ...(input.kernelIdentity ? { identity: input.kernelIdentity } : {}),\n });\n}\n\n/**\n * Select a portable injected boundary or the production `setpriv` runtime.\n *\n * @param input - Execution input containing identity and trusted host settings.\n * @returns Process runtime that owns privilege drop and process-group teardown.\n */\nfunction resolveProcessRuntime(\n input: StartAgentWorkExecutionInput,\n): AgentProcessRuntime {\n if (input.processRuntime) {\n return input.processRuntime;\n }\n if (!input.kernelIdentity) {\n throw new Error(\"kernelIdentity is required for an agent execution\");\n }\n return createSetprivAgentProcessRuntime(\n input.kernelIdentity,\n undefined,\n input.supplementaryGids ?? [],\n );\n}\n\n/**\n * Build the closed environment passed across the untrusted Pi boundary.\n *\n * @remarks\n * Provider credentials never cross this boundary. Protected MCP and provider\n * requests are attributed through the stable agent socket plus the private\n * per-launch id, which only this process's environment carries.\n *\n * @param input - Execution configuration containing host and launch-scoped values.\n * @returns Minimal environment required by Pi and the sandbox-local CLI.\n */\nfunction createPiEnvironment(\n input: StartAgentWorkExecutionInput,\n): NodeJS.ProcessEnv {\n const environment: NodeJS.ProcessEnv = {\n ...pickEnvironment(input.env, PI_HOST_ENVIRONMENT),\n ...pickEnvironment(input.envOverrides, PI_RUN_ENVIRONMENT),\n PATH: prependLocalBin(input.env.PATH ?? process.env.PATH),\n PI_CODING_AGENT_DIR: input.profileDir,\n PWD: input.cwd,\n };\n if (input.commandSocketPath) {\n environment.MOTE_AGENT_COMMAND_SOCKET = input.commandSocketPath;\n }\n if (input.launchId) {\n environment.MOTE_AGENT_LAUNCH_ID = input.launchId;\n }\n return environment;\n}\n\n/**\n * Copy named, non-empty variables from one trusted environment source.\n *\n * @param source - Host or launch-scoped environment values.\n * @param names - Closed list of variables allowed across the Pi boundary.\n * @returns Selected environment without undefined or empty entries.\n */\nfunction pickEnvironment(\n source: NodeJS.ProcessEnv | Record<string, string>,\n names: readonly string[]\n): NodeJS.ProcessEnv {\n const selected: NodeJS.ProcessEnv = {};\n for (const name of names) {\n const value = source[name];\n if (value !== undefined && value !== \"\") {\n selected[name] = value;\n }\n }\n return selected;\n}\n\n/**\n * Run the adapter handoff under the lifecycle's hard deadline.\n *\n * @param input - Execution configuration containing the adapter callback.\n * @param outcome - First terminal result handed to the adapter.\n * @param handoff - Domain callback selected for process or reusable-turn completion.\n */\nasync function runBoundedHandoff(\n input: StartAgentWorkExecutionInput,\n outcome: AgentWorkTerminalOutcome,\n handoff: StartAgentWorkExecutionInput[\"onTerminal\"] = input.onTerminal,\n): Promise<void> {\n const timeoutMs = readPositiveInteger(\n input.env.MOTE_PI_TERMINAL_HANDOFF_TIMEOUT_MS,\n DEFAULT_TERMINAL_HANDOFF_TIMEOUT_MS\n );\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n await Promise.race([\n Promise.resolve(handoff(outcome)),\n new Promise<never>((_resolve, reject) => {\n timer = setTimeout(() => {\n reject(new Error(`terminal handoff exceeded ${timeoutMs}ms`));\n }, timeoutMs);\n timer.unref();\n }),\n ]);\n } finally {\n if (timer) {\n clearTimeout(timer);\n }\n }\n}\n\n/**\n * Prepend sandbox-local command shims to the child PATH.\n *\n * @param basePath - Existing PATH inherited by the Orchestrator.\n * @returns PATH containing the sandbox-local bin directory exactly once.\n */\nfunction prependLocalBin(basePath: string | undefined): string {\n const trimmed = basePath?.trim();\n if (!trimmed) {\n return DEFAULT_SANDBOX_LOCAL_BIN_DIR;\n }\n if (trimmed.split(\":\").includes(DEFAULT_SANDBOX_LOCAL_BIN_DIR)) {\n return trimmed;\n }\n return `${DEFAULT_SANDBOX_LOCAL_BIN_DIR}:${trimmed}`;\n}\n\n/**\n * Read a failed Pi prompt or steer response.\n *\n * @param event - Parsed Pi RPC frame.\n * @returns Rejected command name, if this is a terminal command rejection.\n */\nfunction readRejectedCommand(\n event: Record<string, unknown>\n): \"prompt\" | \"steer\" | undefined {\n if (\n event.type !== \"response\" ||\n event.success !== false ||\n (event.command !== \"prompt\" && event.command !== \"steer\")\n ) {\n return undefined;\n }\n return event.command;\n}\n\n/** Narrow one get_state response payload to a state record. */\nfunction isStateRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/**\n * Extract a useful error from one failed Pi response.\n *\n * @param event - Parsed Pi RPC response.\n * @param fallback - Message used when Pi omitted error detail.\n * @returns Human-readable response error.\n */\nfunction readRpcError(\n event: Record<string, unknown>,\n fallback: string\n): string {\n for (const key of [\"error\", \"message\"] as const) {\n const value = event[key];\n if (typeof value === \"string\" && value.trim()) {\n return value.trim();\n }\n }\n return fallback;\n}\n\n/**\n * Normalize an unknown thrown value for diagnostics.\n *\n * @param error - Unknown failure value.\n * @returns Human-readable message.\n */\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n", "/** Outcome of consulting the authoritative ticket worklog, including a failed read. */\nexport type AssignmentHandoffStatus = \"recorded\" | \"missing\" | \"unverified\";\n\n/** Required only for a scheduled Drone assignment; guidance never uses this delivery path. */\nexport interface AssignmentHandoff {\n /** Query the owning Ticket DO for this execution's accepted handoff. */\n check(): Promise<boolean>;\n /** Narrow instruction asking only for the missing handoff. */\n reminder: string;\n /** Total reminder deadline, unaffected by continuing Pi output. Defaults to 60 seconds. */\n reminderTimeoutMs?: number;\n /** Bound each authoritative read, including shutdown. Defaults to 3 seconds. */\n checkTimeoutMs?: number;\n}\n\n/**\n * Distinguish an absent handoff from unavailable host evidence without delaying teardown indefinitely.\n * @param handoff - Assignment-scoped query and deadline.\n * @returns Authoritative presence, absence, or an explicit unavailable result.\n */\nexport async function checkAssignmentHandoff(handoff: AssignmentHandoff): Promise<AssignmentHandoffStatus> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n return await Promise.race([\n handoff.check().then(present => present ? \"recorded\" as const : \"missing\" as const),\n new Promise<AssignmentHandoffStatus>(resolve => {\n timer = setTimeout(() => resolve(\"unverified\"), handoff.checkTimeoutMs ?? 3_000);\n timer.unref();\n }),\n ]);\n } catch {\n return \"unverified\";\n } finally {\n clearTimeout(timer);\n }\n}\n", "import { spawn } from \"node:child_process\";\nimport { once } from \"node:events\";\n\nimport {\n createLinuxAgentCgroupController,\n type AgentCgroupController,\n type AgentRunCgroup,\n} from \"./agent-cgroup.js\";\nimport {\n AGENT_UID_MAX,\n AGENT_UID_MIN,\n type AgentProcessIdentity,\n} from \"./scheduler/process-identity.js\";\nimport {\n DEFAULT_AGENT_SHARED_RESOURCE_GID,\n STABLE_GID_MAX,\n STABLE_GID_MIN,\n} from \"./shared/config.js\";\nimport type { PiChild } from \"./shared/types.js\";\n\nconst SETPRIV_PATH = \"/usr/bin/setpriv\";\n\n/** Kernel fields required to launch one registered agent process. */\nexport type AgentKernelIdentity = Pick<AgentProcessIdentity, \"uid\" | \"gid\" | \"launchId\">;\n\n/** Complete, credential-free process specification passed to the launcher. */\nexport interface AgentProcessLaunchSpecification {\n command: string;\n args: string[];\n cwd: string;\n stateDir: string;\n env: NodeJS.ProcessEnv;\n identity?: AgentKernelIdentity;\n}\n\n/** Process boundary used by every agent execution lifecycle. */\nexport interface AgentProcessRuntime {\n /** Launch one process under the registered launch UID/GID. */\n spawn(specification: AgentProcessLaunchSpecification): PiChild;\n /** Gracefully stop the process group, then remove cgroup containment. */\n terminate(child: PiChild): Promise<void>;\n}\n\n/**\n * Create the production launcher using the standard Linux `setpriv` utility.\n *\n * @remarks\n * The fixed root shell attaches itself to the launch cgroup before `setpriv`\n * drops all capabilities, enables no-new-privileges, selects the unique\n * launch UID/GID, and retains the fixed shared-workspace supplementary group\n * plus the stable owner-user and agent groups (ADR-061 \u00A72).\n * Node also creates a process group for graceful signaling. No native Mote\n * executable or agent-visible credential is involved.\n *\n * @param identity - Immutable registered launch UID, GID, and correlation id.\n * @param cgroups - Cgroup v2 boundary prepared during orchestrator startup.\n * @param stableGids - Stable owner-user and agent GIDs from the reserved range.\n * @returns Runtime bound to that identity.\n */\nexport function createSetprivAgentProcessRuntime(\n identity: AgentKernelIdentity,\n cgroups: AgentCgroupController = createLinuxAgentCgroupController(),\n stableGids: readonly number[] = [],\n): AgentProcessRuntime {\n validateIdentity(identity);\n for (const gid of stableGids) {\n validateStableGid(gid);\n }\n const supplementaryGroups = [\n DEFAULT_AGENT_SHARED_RESOURCE_GID,\n ...stableGids,\n ].join(\",\");\n let containment: AgentRunCgroup | undefined;\n return {\n spawn(specification) {\n if (!specification.identity || !sameIdentity(specification.identity, identity)) {\n throw new Error(\"agent launch identity does not match its process runtime\");\n }\n if (containment) throw new Error(\"agent process runtime can launch only once\");\n containment = cgroups.open(identity.launchId);\n try {\n return spawn(\"/bin/sh\", [\n \"-c\",\n `printf '%s\\\\n' \"$$\" > \"$1\"; shift; umask 0007; exec ${SETPRIV_PATH} \"$@\"`,\n \"mote-agent-launch\",\n containment.procsPath,\n `--reuid=${identity.uid}`,\n `--regid=${identity.gid}`,\n `--groups=${supplementaryGroups}`,\n \"--bounding-set=-all\",\n \"--inh-caps=-all\",\n \"--ambient-caps=-all\",\n \"--no-new-privs\",\n \"--\",\n specification.command,\n ...specification.args,\n ], {\n cwd: specification.cwd,\n env: { ...specification.env, HOME: specification.stateDir, PWD: specification.cwd },\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n detached: true,\n });\n } catch (error) {\n containment.abort();\n throw error;\n }\n },\n async terminate(child) {\n child.stdin.end();\n if (!await waitForExit(child, 500)) {\n signalProcessGroup(child, \"SIGTERM\");\n await waitForExit(child, 1_500);\n }\n if (!containment) {\n throw new Error(\"agent process runtime has no cgroup containment\");\n }\n // Process-group signaling is graceful; cgroup.kill catches descendants\n // that changed session, double-forked, or outlived the direct child.\n await containment.terminate();\n if (!await waitForExit(child, 500)) {\n throw new Error(\"agent process did not terminate after cgroup teardown\");\n }\n },\n };\n}\n\n/** Create the portable direct runtime used only by tests. */\nexport function createDirectAgentProcessRuntime(): AgentProcessRuntime {\n return {\n spawn(specification) {\n return spawn(specification.command, specification.args, {\n cwd: specification.cwd,\n env: specification.env,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n },\n async terminate(child) {\n child.stdin.end();\n if (await waitForExit(child, 500)) return;\n child.kill(\"SIGTERM\");\n if (await waitForExit(child, 1_500)) return;\n child.kill(\"SIGKILL\");\n await waitForExit(child, 500);\n },\n };\n}\n\n/** Validate the reserved non-root launch identity range. */\nfunction validateIdentity(identity: AgentKernelIdentity): void {\n if (identity.uid !== identity.gid\n || identity.uid < AGENT_UID_MIN\n || identity.uid > AGENT_UID_MAX) {\n throw new Error(\"agent kernel identity is outside the reserved UID/GID range\");\n }\n}\n\n/** Reject supplementary groups outside the reserved stable GID range. */\nfunction validateStableGid(gid: number): void {\n if (!Number.isInteger(gid)\n || gid < STABLE_GID_MIN\n || gid > STABLE_GID_MAX) {\n throw new Error(\"stable users-tree GID is outside the reserved range\");\n }\n}\n\n/** Compare immutable kernel launch fields. */\nfunction sameIdentity(left: AgentKernelIdentity, right: AgentKernelIdentity): boolean {\n return left.uid === right.uid && left.gid === right.gid && left.launchId === right.launchId;\n}\n\n/** Signal the detached process group, falling back to the direct child. */\nfunction signalProcessGroup(child: PiChild, signal: NodeJS.Signals): void {\n if (child.pid !== undefined) {\n try {\n process.kill(-child.pid, signal);\n return;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ESRCH\") throw error;\n }\n }\n child.kill(signal);\n}\n\n/** Check whether a child reached an operating-system terminal state. */\nfunction hasExited(child: PiChild): boolean {\n return child.exitCode !== null || child.signalCode !== null;\n}\n\n/** Wait for child close without retaining a listener past the deadline. */\nfunction waitForExit(child: PiChild, timeoutMs: number): Promise<boolean> {\n if (hasExited(child)) return Promise.resolve(true);\n return once(child, \"close\", { signal: AbortSignal.timeout(timeoutMs) })\n .then(() => true)\n .catch(() => hasExited(child));\n}\n", "import { randomUUID } from \"node:crypto\";\n\n/** First UID reserved for sandbox agent processes. */\nexport const AGENT_UID_MIN = 200_000;\n/** Last UID reserved for sandbox agent processes. */\nexport const AGENT_UID_MAX = 265_535;\n/** UUID form accepted for trusted pre-allocated launch identifiers. */\nconst LAUNCH_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;\n\n/** Authority class of one orchestrator-spawned agent process. */\nexport type AgentProcessKind = \"overmind\" | \"drone\";\n\n/**\n * Kernel-bound identity of one agent process spawned by this orchestrator.\n *\n * @remarks\n * The matching unique UID/GID constrains process and filesystem access. The\n * launch registry associates this identity with its trusted launch context\n * before spawn, while `launchId` remains audit correlation and must never be\n * accepted as caller-supplied proof of authority.\n */\nexport interface AgentProcessIdentity {\n /** UID unique across the complete orchestrator process lifetime. */\n uid: number;\n /** Unique primary GID matching {@link uid} for process containment. */\n gid: number;\n /** Process-lifetime launch id used for containment naming and audit. */\n launchId: string;\n /** Logical agent id the process acts as. */\n agentId: string;\n /** Org whose sandbox owns the process. */\n orgId: string;\n /** Authority class used by the command role matrix. */\n kind: AgentProcessKind;\n /** Ticket providing process context, when present. */\n ticketId?: string;\n}\n\n/** Monotonic process identity allocator that retains no per-launch facts. */\nexport interface ProcessIdentityAllocator {\n /**\n * Reserve a process-lifetime-unique UID and construct one immutable identity.\n *\n * @param identity - Logical process identity selected by trusted orchestrator code.\n * @returns Kernel-bound identity to pass to the hardened launcher.\n */\n allocate(\n identity: Omit<AgentProcessIdentity, \"uid\" | \"gid\" | \"launchId\"> & {\n /** Trusted pre-allocated launch id, when the caller already minted one. */\n launchId?: string;\n },\n ): AgentProcessIdentity;\n}\n\n/**\n * Create the process-local kernel identity allocator.\n *\n * @remarks\n * Authority and lifecycle state belong to the launch registry. The allocator\n * deliberately stores only its next UID, so no second identity registry can\n * drift from the registry's trusted launch context.\n *\n * @returns Allocator with monotonic allocation over Mote's bounded UID range.\n */\nexport function createProcessIdentityAllocator(): ProcessIdentityAllocator {\n let nextUid = AGENT_UID_MIN;\n\n const allocateUid = (): number => {\n if (nextUid > AGENT_UID_MAX) {\n throw new Error(\"sandbox agent UID range is exhausted\");\n }\n const uid = nextUid;\n nextUid += 1;\n return uid;\n };\n\n return {\n allocate(identity) {\n const launchId = identity.launchId ?? randomUUID();\n if (!LAUNCH_ID_PATTERN.test(launchId)) {\n throw new Error(\"agent launch id must be a UUID\");\n }\n const uid = allocateUid();\n const { launchId: _requestedLaunchId, ...logicalIdentity } = identity;\n const complete: AgentProcessIdentity = {\n ...logicalIdentity,\n launchId,\n uid,\n gid: uid,\n };\n return complete;\n },\n };\n}\n", "import type { Readable } from \"node:stream\";\n\nexport function attachLineReader(\n stream: Readable,\n onLine: (line: string) => void\n): void {\n let buffer = \"\";\n stream.on(\"data\", (chunk) => {\n buffer += chunk.toString(\"utf8\");\n let newlineIndex = buffer.indexOf(\"\\n\");\n while (newlineIndex >= 0) {\n const line = buffer.slice(0, newlineIndex).trimEnd();\n buffer = buffer.slice(newlineIndex + 1);\n if (line.trim()) {\n onLine(line);\n }\n newlineIndex = buffer.indexOf(\"\\n\");\n }\n });\n stream.once(\"end\", () => {\n if (buffer.trim()) {\n onLine(buffer.trimEnd());\n }\n });\n}\n", "import type { AgentSessionKey, AgentSessionKind } from \"@liy/mote-core\";\n\nimport type { AgentLaunch } from \"./shared/types.js\";\n\n/**\n * Exclusion table holding at most one active Pi launch per agent session.\n *\n * @remarks\n * The same key is used for Pi session mapping, so the registry also prevents\n * two processes from opening one session directory (ADR-060 \u00A75). Entries are\n * indexed by launch id so the stable agent socket can resolve a connecting\n * process back to its trusted launch context; an unknown launch is rejected.\n */\nexport interface LaunchRegistry {\n /** Register one launch; throws when its session already has an active launch. */\n open(launch: AgentLaunch): void;\n /** Resolve the active launch for one agent session. */\n get(sessionKey: AgentSessionKey): AgentLaunch | undefined;\n /** Resolve one launch by its private launch id. */\n getByLaunchId(launchId: string): AgentLaunch | undefined;\n /** List active launches anchored to one context row. */\n listByContext(contextKind: Exclude<AgentSessionKind, \"assessment\">, contextId: string): AgentLaunch[];\n /** Remove one launch if it is still the session's registered entry. */\n release(launch: AgentLaunch): void;\n /** Enumerate every active launch. */\n values(): IterableIterator<AgentLaunch>;\n}\n\n/**\n * Serialize a session key for process-local map lookup.\n *\n * @param sessionKey - Complete agent and purpose-specific context identity.\n * @returns Collision-free map key within the validated id vocabulary.\n */\nexport function serializeAgentSessionKey(sessionKey: AgentSessionKey): string {\n return sessionKey.contextKind === \"assessment\"\n ? `${sessionKey.agentId}:assessment`\n : `${sessionKey.agentId}:${sessionKey.contextKind}:${sessionKey.contextId}`;\n}\n\n/**\n * Create the process-local launch registry.\n *\n * @returns Empty registry ready to admit launches.\n */\nexport function createLaunchRegistry(): LaunchRegistry {\n const bySession = new Map<string, AgentLaunch>();\n const byLaunchId = new Map<string, AgentLaunch>();\n\n return {\n open(launch) {\n const key = serializeAgentSessionKey(launch.sessionKey);\n if (bySession.has(key)) {\n throw new Error(`agent session is already active: ${key}`);\n }\n if (byLaunchId.has(launch.launchId)) {\n throw new Error(\"agent launch id is already registered\");\n }\n bySession.set(key, launch);\n byLaunchId.set(launch.launchId, launch);\n },\n get(sessionKey) {\n return bySession.get(serializeAgentSessionKey(sessionKey));\n },\n getByLaunchId(launchId) {\n return byLaunchId.get(launchId);\n },\n listByContext(contextKind, contextId) {\n return [...bySession.values()].filter((launch) => (\n launch.sessionKey.contextKind !== \"assessment\"\n && launch.sessionKey.contextKind === contextKind\n && launch.sessionKey.contextId === contextId\n ));\n },\n release(launch) {\n const key = serializeAgentSessionKey(launch.sessionKey);\n if (bySession.get(key) === launch) {\n bySession.delete(key);\n }\n if (byLaunchId.get(launch.launchId) === launch) {\n byLaunchId.delete(launch.launchId);\n }\n },\n values() {\n return bySession.values();\n },\n };\n}\n", "import { mkdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { DatabaseSync } from \"node:sqlite\";\n\n/** Maximum accepted delivery ids retained for one agent session context. */\nconst MAX_DELIVERIES_PER_PAIR = 1_000;\nimport { resolveOrchestratorStateRoot } from \"../shared/config.js\";\n\n/** Durable idempotency record for Channel DO delivery retries. */\nexport interface DeliveryLedger {\n /** Return whether this exact delivery was already accepted. */\n has(pairKey: string, deliveryId: string): boolean;\n /** Record successful launch or steering before acknowledging Edge. */\n mark(pairKey: string, deliveryId: string): void;\n /** @param pairKey - Agent/channel identity. @param through - Durable cancellation boundary. */\n cancel(pairKey: string, through: number): void;\n /** @param pairKey - Agent/channel identity. @param seq - Trigger sequence to check before launching. */\n isCancelled(pairKey: string, seq: number): boolean;\n /** Close the database during orchestrator shutdown. */\n close(): void;\n}\n\n/**\n * Open the root-owned delivery ledger for one orchestrator service.\n *\n * @remarks\n * Production keeps the file outside every user and agent directory. Portable\n * tests already provide `MOTE_USERS_ROOT`, so their ledger lives beside that\n * isolated tree without requiring privileged filesystem access.\n *\n * @param env - Trusted orchestrator environment.\n */\nexport function createDeliveryLedger(env: NodeJS.ProcessEnv): DeliveryLedger {\n const stateRoot = resolveOrchestratorStateRoot(env);\n mkdirSync(stateRoot, { recursive: true, mode: 0o700 });\n const database = new DatabaseSync(join(stateRoot, \"channel-deliveries.sqlite\"));\n database.exec(`\n PRAGMA journal_mode = WAL;\n CREATE TABLE IF NOT EXISTS handled_delivery (\n delivery_id TEXT PRIMARY KEY,\n pair_key TEXT NOT NULL,\n handled_at INTEGER NOT NULL\n ) STRICT;\n CREATE INDEX IF NOT EXISTS handled_delivery_pair\n ON handled_delivery(pair_key, handled_at DESC);\n CREATE TABLE IF NOT EXISTS cancelled_delivery (\n pair_key TEXT PRIMARY KEY, through_seq INTEGER NOT NULL\n ) STRICT;\n `);\n const find = database.prepare(\n \"SELECT 1 AS found FROM handled_delivery WHERE delivery_id = ? AND pair_key = ?\",\n );\n const insert = database.prepare(`\n INSERT OR IGNORE INTO handled_delivery(delivery_id, pair_key, handled_at)\n VALUES (?, ?, ?)\n `);\n const prune = database.prepare(`\n DELETE FROM handled_delivery\n WHERE delivery_id IN (\n SELECT delivery_id\n FROM handled_delivery\n WHERE pair_key = ?\n ORDER BY handled_at DESC, delivery_id DESC\n LIMIT -1 OFFSET ?\n )\n `);\n return {\n cancel(pairKey, through) {\n database.prepare(`INSERT INTO cancelled_delivery VALUES (?, ?)\n ON CONFLICT(pair_key) DO UPDATE SET through_seq = MAX(through_seq, excluded.through_seq)`).run(pairKey, through);\n },\n isCancelled(pairKey, seq) {\n const row = database.prepare(\"SELECT through_seq FROM cancelled_delivery WHERE pair_key = ?\").get(pairKey);\n return row !== undefined && Number(row.through_seq) >= seq;\n },\n has(pairKey, deliveryId) {\n return Boolean(find.get(deliveryId, pairKey));\n },\n mark(pairKey, deliveryId) {\n database.exec(\"BEGIN IMMEDIATE\");\n try {\n insert.run(deliveryId, pairKey, Date.now());\n prune.run(pairKey, MAX_DELIVERIES_PER_PAIR);\n database.exec(\"COMMIT\");\n } catch (error) {\n database.exec(\"ROLLBACK\");\n throw error;\n }\n },\n close() {\n database.close();\n },\n };\n}\n", "import { randomUUID } from \"node:crypto\";\nimport type { TimelineRecord } from \"@liy/mote-core\";\nimport { isRecord } from \"../shared/json.js\";\n\n/**\n * Assigns transport identity to one Pi session without interpreting its content.\n *\n * @remarks\n * Pi owns message/turn semantics. A start record has its own durable identity;\n * its relatedEntryId reserves the identity used by updates and message_end.\n * RPC responses are control traffic, not agent timeline events.\n */\nexport class PiTimeline {\n private activeMessage: { id: string; createdAt: string } | undefined;\n private piSessionId: string | null = null;\n private piVersion: string | null = null;\n\n /** @param identity - Trusted process identity and destination publisher. */\n constructor(private readonly identity: {\n agentId: string;\n executionId: string | null;\n publish(record: TimelineRecord): void;\n }) {}\n\n /**\n * Forward a parsed native event unchanged; retain only RPC metadata locally.\n * @param event - JSON value serialized synchronously by the Pi SDK host.\n */\n accept(event: Record<string, unknown>): void {\n if (event.type === \"response\") {\n if (event.command === \"get_state\" && isRecord(event.data)) {\n if (typeof event.data.sessionId === \"string\") this.piSessionId = event.data.sessionId;\n if (typeof event.data.piVersion === \"string\") this.piVersion = event.data.piVersion;\n }\n return;\n }\n if (typeof event.type !== \"string\") {\n throw new Error(\"Pi event is missing its type\");\n }\n if (event.type === \"runtime.error\") {\n this.host(event as TimelineRecord[\"payload\"]);\n return;\n }\n if (event.type === \"message_start\" || (event.type === \"message_update\" && !this.activeMessage)) {\n this.activeMessage = { id: randomUUID(), createdAt: new Date().toISOString() };\n }\n const completion = event.type === \"message_end\" || event.type === \"message_update\";\n const message = this.activeMessage;\n this.identity.publish(this.record(\n \"pi\", event as TimelineRecord[\"payload\"],\n completion ? message : undefined,\n !completion && event.type === \"message_start\" ? message?.id ?? null : null,\n ));\n if (event.type === \"message_end\") this.activeMessage = undefined;\n }\n\n /**\n * Publish host-observed lifecycle facts separately from native Pi events.\n * @param payload - Host event, such as process spawn, exit, or invalid stdout.\n */\n host(payload: TimelineRecord[\"payload\"]): void {\n this.identity.publish(this.record(\"mote\", payload));\n }\n\n /**\n * Build the small envelope; never reconstruct or filter native payload fields.\n * @param source - Native SDK output or a host lifecycle observation.\n * @param payload - Original event object.\n * @param message - Reserved identity for an active or completed message.\n * @param relatedEntryId - Completion identity referenced by message_start.\n */\n private record(\n source: TimelineRecord[\"source\"],\n payload: TimelineRecord[\"payload\"],\n message?: { id: string; createdAt: string },\n relatedEntryId: string | null = null,\n ): TimelineRecord {\n return {\n id: message?.id ?? randomUUID(), producerEventId: randomUUID(), source,\n authorPrincipalId: this.identity.agentId, agentId: this.identity.agentId,\n executionId: this.identity.executionId,\n piSessionId: source === \"pi\" ? this.piSessionId : null,\n piVersion: source === \"pi\" ? this.piVersion : null,\n relatedEntryId, createdAt: message?.createdAt ?? new Date().toISOString(),\n payload,\n };\n }\n}\n", "import type { ChannelDeliveryMessage, TimelineScope } from \"@liy/mote-core\";\nimport type { AgentWorkTerminalOutcome } from \"../agent-work-lifecycle.js\";\nimport type { EdgeTimelineProducer } from \"../server/edge-timeline-producer.js\";\nimport { PiTimeline } from \"./pi-timeline.js\";\nimport { randomUUID } from \"node:crypto\";\n\n/**\n * Render one delivery's attributed messages as a single Pi input.\n *\n * @remarks\n * Channel content is multi-author input: every message keeps its real author\n * label so the agent can weigh instructions by principal (ADR-060 \u00A74). The\n * one exception matches the direct-chat UX: a single user-authored message is\n * delivered as its plain body.\n *\n * @param messages - Triggering message plus context messages, oldest first.\n * @returns Prompt text delivered to the Pi process.\n */\nexport function renderDeliveryPrompt(\n messages: readonly ChannelDeliveryMessage[],\n): string {\n const only = messages.length === 1 ? messages[0] : undefined;\n if (only && only.authorKind === \"user\") {\n return only.body;\n }\n return messages\n .map((message) => `[${message.authorDisplayName ?? message.authorPrincipalId}] ${message.body}`)\n .join(\"\\n\\n\");\n}\n\n/**\n * Native Pi and host lifecycle observers for one reusable channel process.\n * @param input - Trusted scope, author, and shared producer.\n * @returns Callbacks consumed by the existing bounded process lifecycle.\n */\nexport function createChannelExecutionObservers(input: {\n scope: TimelineScope;\n agentId: string;\n timelineProducer: EdgeTimelineProducer;\n}) {\n const executionId = randomUUID();\n const timeline = new PiTimeline({\n agentId: input.agentId, executionId,\n publish: (record) => input.timelineProducer.publish(input.scope, record),\n });\n // Retain ownership until the producer drains; publish each settlement only once.\n const pendingMessages = new Map<string, { seq: number; settled: boolean }>();\n const settleDeliveries = (): void => {\n const unsettled = [...pendingMessages].filter(([, message]) => !message.settled);\n if (!unsettled.length) return;\n timeline.host({ type: \"runtime.delivery_settled\", messageIds: unsettled.map(([id]) => id) });\n for (const [, message] of unsettled) message.settled = true;\n };\n return {\n executionId,\n scope: input.scope,\n agentId: input.agentId,\n /** Include accepted work until Edge acknowledges its terminal facts. */\n pendingMessageIds: () => [...pendingMessages.keys()],\n /** @param through - Stop boundary; a stale stop must not terminate newer work. */\n isWithin: (through: number) => pendingMessages.size > 0 && [...pendingMessages.values()].every(message => message.seq <= through),\n /** @param messages - Deliveries entering this response, including steering but excluding queued work. */\n onDelivery: (messages: readonly ChannelDeliveryMessage[]) => {\n for (const message of messages) pendingMessages.set(message.id, { seq: message.seq, settled: false });\n },\n /** @param messages - Unconfirmed steering returned to the queue. */\n onDeliveryRejected: (messages: readonly ChannelDeliveryMessage[]) => {\n for (const message of messages) pendingMessages.delete(message.id);\n },\n onPiEvent: (event: Record<string, unknown>) => {\n timeline.accept(event);\n if (event.type === \"agent_settled\") settleDeliveries();\n },\n onUnparsedOutput: (line: string) => timeline.host({ type: \"runtime.output\", stream: \"stdout\", line }),\n onSpawn: (pid: number | undefined, cwd: string) => timeline.host({ type: \"runtime.process_spawned\", pid, cwd }),\n async onTurnSettled(_outcome: AgentWorkTerminalOutcome) {\n await input.timelineProducer.waitForDrain(input.scope, 5_000);\n pendingMessages.clear();\n },\n async onTerminal(outcome: AgentWorkTerminalOutcome) {\n timeline.host({ type: \"runtime.process_exited\", ...outcome });\n settleDeliveries();\n // Stop is confirmed by its HTTP result. Timeline publication keeps retrying\n // independently; waiting for its ACK would add a second completion handshake.\n if (outcome.cause !== \"cancelled\") await input.timelineProducer.waitForDrain(input.scope, 5_000);\n pendingMessages.clear();\n },\n };\n}\n", "import { timelinePageSchema, type ChannelControlCommand, type ChannelRuntimeState, type TimelineEntry } from \"@liy/mote-core\";\n\nimport { requestSignedEdgeHttp } from \"../server/edge-egress-http.js\";\nimport { resolveEdgeOrigin, resolveSandboxOrgId } from \"../shared/config.js\";\nimport {\n startAgentLaunch,\n type AgentLaunchRuntime,\n} from \"../agent-launch.js\";\nimport type {\n AgentLaunch,\n} from \"../shared/types.js\";\nimport type { EdgeTimelineProducer } from \"../server/edge-timeline-producer.js\";\nimport { serializeAgentSessionKey } from \"../launch-registry.js\";\nimport { createDeliveryLedger } from \"./delivery-ledger.js\";\nimport {\n createChannelExecutionObservers,\n renderDeliveryPrompt,\n} from \"./channel-actions.js\";\n\ntype DeliverCommand = Extract<ChannelControlCommand, { type: \"channel.deliver\" }>;\n\n/**\n * Host-facing channel control surface backed by the launch registry.\n */\nexport interface ChannelHandler {\n /**\n * Apply one Channel DO control command.\n *\n * @param command - Parsed channel control command.\n */\n handleCommand(command: ChannelControlCommand): Promise<ChannelRuntimeState | void>;\n /**\n * Stop every channel-scoped launch for orchestrator shutdown.\n *\n * @remarks\n * Shutdown is not archive: the Channel DO retains its pending deliveries\n * and redelivers them to the next orchestrator process (ADR-060 \u00A75).\n *\n * @param reason - Diagnostic stop reason for terminal runtime events.\n */\n releaseAll(reason: string): Promise<void>;\n}\n\n/**\n * Create the ADR-060 channel delivery handler.\n *\n * @remarks\n * `channel.deliver` is the one delivery command: idempotent by delivery id,\n * steered into the matching live agent-channel process when the user\n * selected steering and the initiator matches, otherwise queued in order for\n * the pair. There is no start/rehydrate handshake and no not-active 409\n * contract \u2014 a missing process simply launches.\n *\n * @param input - Shared launch runtime and channel event sinks.\n * @returns Channel control handler.\n */\nexport function createChannelHandler(input: {\n runtime: AgentLaunchRuntime;\n timelineProducer: EdgeTimelineProducer;\n}): ChannelHandler {\n /** Per-pair promise tails keep queued deliveries in acceptance order. */\n const pairQueues = new Map<string, Promise<void>>();\n /** New messages wait outside a stop handshake; cancellation never absorbs later steering. */\n const cancellations = new Map<string, Promise<void>>();\n const observersByPair = new Map<string, ReturnType<typeof createChannelExecutionObservers>>();\n const deliveryLedger = createDeliveryLedger(input.runtime.env);\n let closing = false;\n\n /** @param channelId - Return ownership after a command, or for restart recovery. */\n const channelState = (channelId: string): ChannelRuntimeState => ({\n sessions: [...observersByPair.values()].filter(observer => observer.scope.id === channelId)\n .map(observer => ({ agentId: observer.agentId, executionId: observer.executionId, messageIds: observer.pendingMessageIds() })),\n });\n\n const isHandled = (pair: string, deliveryId: string): boolean =>\n deliveryLedger.has(pair, deliveryId);\n\n const noteHandled = (pair: string, deliveryId: string): void => {\n deliveryLedger.mark(pair, deliveryId);\n };\n /** @param command - Delivery being resumed after an await. @param pair - Serialized session key. */\n const suppressed = (command: DeliverCommand, pair: string): boolean => closing\n || command.messages.every(message => deliveryLedger.isCancelled(pair, message.seq))\n || isHandled(pair, command.id);\n\n /** Whether another live launch still publishes into the same channel. */\n const channelStillLive = (channelId: string, ended: AgentLaunch): boolean => {\n for (const launch of input.runtime.registry.values()) {\n if (launch !== ended && launch.channelId === channelId) {\n return true;\n }\n }\n return false;\n };\n\n const launchForDelivery = async (command: DeliverCommand, prompt: string): Promise<void> => {\n const sessionKey = {\n agentId: command.agentId,\n contextKind: \"channel\",\n contextId: command.channelId,\n } as const;\n const observers = createChannelExecutionObservers({\n scope: { kind: \"channel\", id: command.channelId, orgId: command.orgId },\n agentId: command.agentId,\n timelineProducer: input.timelineProducer,\n });\n\n const pair = serializeAgentSessionKey(sessionKey);\n observersByPair.set(pair, observers);\n observers.onDelivery(command.messages);\n try {\n await startAgentLaunch(input.runtime, {\n sessionKey,\n initiatorUserId: command.initiatorUserId,\n kind: \"overmind\",\n channelId: command.channelId,\n ...(command.ticketId ? { ticketId: command.ticketId } : {}),\n prompt,\n ...(command.messages.at(-1)?.id ? { originMessageId: command.messages.at(-1)!.id } : {}),\n label: `channel-${command.channelId}`,\n spriteTaskLabel: \"channel\",\n onPiEvent: observers.onPiEvent,\n onUnparsedOutput: observers.onUnparsedOutput,\n onSpawn: (_launch, pid, cwd) => observers.onSpawn(pid, cwd),\n\n onTurnSettled: async (launch, outcome) => {\n try {\n await observers.onTurnSettled(outcome);\n } finally {\n if (!channelStillLive(command.channelId, launch)) {\n input.timelineProducer.closeScope({ kind: \"channel\", id: command.channelId, orgId: command.orgId });\n }\n }\n },\n onTerminal: async (launch, outcome) => {\n try {\n await observers.onTerminal(outcome);\n } finally {\n if (observersByPair.get(pair) === observers) observersByPair.delete(pair);\n if (!channelStillLive(command.channelId, launch)) {\n input.timelineProducer.closeScope({ kind: \"channel\", id: command.channelId, orgId: command.orgId });\n }\n }\n },\n });\n } catch (error) {\n if (observersByPair.get(pair) === observers) observersByPair.delete(pair);\n throw error;\n }\n };\n\n /**\n * Deliver one accepted message set to its agent-channel session.\n *\n * @remarks\n * Queued deliveries wait for the live pair to free, then resume the mapped\n * Pi session with the delivery's own initiator. A delivery with a different\n * initiator therefore always queues (ADR-060 \u00A72).\n */\n const applyDelivery = async (command: DeliverCommand, pair: string): Promise<void> => {\n if (suppressed(command, pair)) {\n return;\n }\n const prompt = await renderTimelineDelivery(command, input.runtime.env);\n if (suppressed(command, pair)) return;\n const live = input.runtime.registry.get({\n agentId: command.agentId,\n contextKind: \"channel\",\n contextId: command.channelId,\n });\n if (live?.execution) {\n if (live.initiatorUserId === command.initiatorUserId) {\n await live.execution.waitForTurn();\n if (suppressed(command, pair)) return;\n if (live.execution.isIdle()) {\n const context = await input.runtime.launchClient.resolveLaunchContext({\n agentId: command.agentId,\n initiatorUserId: command.initiatorUserId,\n });\n const thinking = context.thinkingEnabled ? context.thinkingEffort : \"off\";\n if (suppressed(command, pair)) return;\n if (live.modelSettings.provider === context.modelProvider\n && live.modelSettings.model === context.modelName\n && live.modelSettings.thinking === thinking) {\n live.originMessageId = command.messages.at(-1)?.id;\n observersByPair.get(pair)?.onDelivery(command.messages);\n await live.execution.prompt(prompt);\n noteHandled(pair, command.id);\n return;\n }\n }\n }\n // Identity and generation settings are fixed at spawn. Resume the mapped\n // session in a fresh process when either changes between deliveries.\n if (live.execution.isIdle()) {\n await live.execution.stop(live.initiatorUserId === command.initiatorUserId\n ? \"channel_model_settings_changed\" : \"channel_initiator_changed\");\n } else {\n await live.execution.completion;\n }\n }\n if (suppressed(command, pair)) {\n return;\n }\n await launchForDelivery(command, prompt);\n noteHandled(pair, command.id);\n };\n\n const applyCommand = async (command: ChannelControlCommand): Promise<ChannelRuntimeState | void> => {\n if (command.type === \"channel.inspect\") {\n return channelState(command.channelId);\n }\n if (command.type === \"channel.cancel\") {\n const key = {\n agentId: command.agentId,\n contextKind: \"channel\" as const,\n contextId: command.channelId,\n };\n const pair = serializeAgentSessionKey(key);\n // Persist the barrier before any await: late HTTP delivery retries and\n // queued launches cannot resurrect work covered by this stop.\n deliveryLedger.cancel(pair, command.through);\n const cancel = async (): Promise<void> => {\n if (observersByPair.get(pair)?.isWithin(command.through)) {\n await input.runtime.registry.get(key)?.execution?.cancel();\n }\n };\n const queued = pairQueues.get(pair);\n const previous = cancellations.get(pair);\n const operation = (async () => {\n await previous;\n await cancel();\n await queued?.catch(() => undefined);\n // A launch may have been resolving its profile when cancellation arrived.\n await cancel();\n })();\n cancellations.set(pair, operation);\n try { await operation; } finally {\n if (cancellations.get(pair) === operation) cancellations.delete(pair);\n }\n return channelState(command.channelId);\n }\n if (command.type === \"channel.archive\") {\n const stopped = input.runtime.registry\n .listByContext(\"channel\", command.channelId)\n .map((launch) => launch.execution?.stop(\"channel_archived\"));\n await Promise.all(stopped);\n return;\n }\n requireChannelSandboxBinding(command, input.runtime.env);\n const sessionKey = {\n agentId: command.agentId,\n contextKind: \"channel\",\n contextId: command.channelId,\n } as const;\n const pair = serializeAgentSessionKey(sessionKey);\n await cancellations.get(pair);\n if (suppressed(command, pair)) {\n return;\n }\n if (command.behavior === \"steer\") {\n // Steering bypasses the pair queue so an explicit steer may overtake\n // earlier queued deliveries; queue order itself never changes.\n const live = input.runtime.registry.get(sessionKey);\n if (\n live?.execution?.acceptsSteer()\n && live.initiatorUserId === command.initiatorUserId\n ) {\n try {\n live.originMessageId = command.messages.at(-1)?.id;\n const prompt = await renderTimelineDelivery(command, input.runtime.env);\n if (suppressed(command, pair)) return;\n observersByPair.get(pair)?.onDelivery(command.messages);\n await live.execution.steer(prompt);\n noteHandled(pair, command.id);\n return;\n } catch {\n observersByPair.get(pair)?.onDeliveryRejected(command.messages);\n // Steering is unconfirmed after rejection, timeout, or settlement;\n // fall back to this delivery's queued path (at-least-once).\n }\n }\n }\n const previous = pairQueues.get(pair) ?? Promise.resolve();\n const queued = previous\n .catch(() => undefined)\n .then(() => applyDelivery(command, pair));\n pairQueues.set(pair, queued);\n try {\n await queued;\n } finally {\n if (pairQueues.get(pair) === queued) {\n pairQueues.delete(pair);\n }\n }\n };\n\n return {\n handleCommand(command) {\n if (closing) {\n return Promise.reject(new Error(\"channel handler is closing\"));\n }\n return applyCommand(command);\n },\n async releaseAll(reason) {\n closing = true;\n const stopped: Array<Promise<unknown>> = [];\n for (const launch of input.runtime.registry.values()) {\n if (launch.channelId && launch.execution) {\n stopped.push(launch.execution.stop(reason));\n }\n }\n await Promise.all(stopped);\n await Promise.all(\n [...pairQueues.values()].map((tail) => tail.catch(() => undefined)),\n );\n deliveryLedger.close();\n },\n };\n}\n\n/**\n * Reject a signed delivery that does not belong to this sandbox.\n *\n * @remarks\n * The immutable Org UUID is the only Org identity provisioned into the sandbox\n * (ADR-045 \u00A74.4). The Org code is a per-launch IAM fact resolved through the\n * launch context, so it is neither installed here nor compared here.\n *\n * @param command - Edge-authenticated delivery carrying Org identity.\n * @param env - Provisioned sandbox identity.\n */\nfunction requireChannelSandboxBinding(\n command: DeliverCommand,\n env: NodeJS.ProcessEnv,\n): void {\n if (resolveSandboxOrgId(env) !== command.orgId) {\n throw new Error(\"channel Org does not match the provisioned sandbox\");\n }\n}\n\n/**\n * Render agent context from the canonical payloads at the DO's fixed barrier.\n * @param command - Signed delivery containing trusted scope and durable cursors.\n * @param env - Sandbox Edge endpoint and secret; never supplied by the agent.\n * @returns Attributed trigger plus unmodified timeline JSON for prior work.\n */\nasync function renderTimelineDelivery(command: DeliverCommand, env: NodeJS.ProcessEnv): Promise<string> {\n const parts: string[] = [];\n let after = command.timeline.after;\n const through = command.timeline.through;\n while (after < through) {\n const origin = resolveEdgeOrigin(env);\n const secret = env.MOTE_SANDBOX_EDGE_SECRET?.trim();\n if (!origin || !secret) throw new Error(\"Timeline context requires the sandbox Edge connection\");\n const url = new URL(`/edge/producer/channels/${encodeURIComponent(command.channelId)}/timeline`, origin);\n url.searchParams.set(\"after\", String(after));\n url.searchParams.set(\"through\", String(through));\n const response = await requestSignedEdgeHttp(url, { method: \"GET\", sandboxEdgeSecret: secret });\n if (!response.ok) throw new Error(response.error.message);\n const page = timelinePageSchema.parse(response.payload);\n if (page.highWaterMark !== through || page.cursor <= after || page.cursor > through) {\n throw new Error(\"Channel context returned an inconsistent timeline page\");\n }\n parts.push(...page.entries.filter((entry) => belongsInDeliveryContext(entry, command.agentId)).map((entry) => JSON.stringify(entry)));\n after = page.cursor;\n }\n const trigger = renderDeliveryPrompt(command.messages);\n return parts.length ? `Prior channel timeline (context, with original author and payload):\\n${parts.join(\"\\n\")}\\n\\nCurrent delivery:\\n${trigger}` : trigger;\n}\n\n/**\n * Select context without recursively feeding a session its own prompt snapshots.\n *\n * @remarks\n * Pi's resumed session already owns this agent's history. Other agents' native\n * records and host facts supply shared-channel context. Start/aggregate snapshots\n * and Pi user messages repeat submitted context; including them creates a feedback\n * loop. This view never rewrites a record or changes canonical retention.\n * @param entry - Complete durable record from the unfiltered history API.\n * @param agentId - Agent receiving this delivery in its purpose-specific Pi session.\n */\nfunction belongsInDeliveryContext(entry: TimelineEntry, agentId: string): boolean {\n // Retired notices remain in history but must not re-enter Pi as user context.\n if (entry.source === \"mote\") return entry.payload.type !== \"mote.ticket.outcome\";\n if (entry.agentId === agentId) return false;\n if ([\"message_start\", \"turn_end\", \"agent_end\"].includes(entry.payload.type)) return false;\n const message = entry.payload.message;\n return !(entry.payload.type === \"message_end\" && typeof message === \"object\" && message !== null\n && \"role\" in message && (message.role === \"user\" || message.role === \"custom\"));\n}\n", "import { randomUUID } from \"node:crypto\";\nimport type { Writable } from \"node:stream\";\n\nimport {\n ticketBoardProjectionSchema,\n ticketStateSchema,\n ticketWorklogEntrySchema,\n type TicketBoardProjection,\n type TicketState,\n} from \"@liy/mote-core\";\n\nimport {\n readPositiveInteger,\n resolveAgentRoot,\n resolveSandboxOrgId,\n} from \"../shared/config.js\";\nimport type {\n AgentWorkTerminalCause,\n AgentWorkTerminalOutcome,\n} from \"../agent-work-lifecycle.js\";\nimport {\n startAgentLaunch,\n type AgentLaunchRuntime,\n} from \"../agent-launch.js\";\nimport type { AgentLaunch } from \"../shared/types.js\";\nimport { isRecord } from \"../shared/json.js\";\nimport { executeTicketCommand } from \"../commands/ticket-command.js\";\nimport {\n readAgentProfiles,\n type AgentDirectoryProfile,\n} from \"../commands/agent-profiles.js\";\nimport type {\n AgentCommand,\n AgentCommandResult,\n} from \"../commands/types.js\";\nimport type {\n SpriteTaskLease,\n} from \"../sprite-task-lease.js\";\nimport type { EdgeTimelineProducer } from \"../server/edge-timeline-producer.js\";\nimport { PiTimeline } from \"../agent/pi-timeline.js\";\nimport {\n cleanupTicketWorkspace,\n listTicketWorktrees,\n provisionTicketWorkspace,\n resolveOrphanTicketWorkspace,\n type OrphanTicketWorkspaceResolution,\n} from \"./ticket-workspace.js\";\n\n/** Sprite lease held while a reconcile pass is in flight (ADR-042 4.2). */\nconst RECONCILE_SPRITE_TASK = \"mote-board-reconcile\";\n/** Bounded wait for unACKed agent events before a drone's lease releases. */\nconst TICKET_EVENT_DRAIN_WAIT_MS = 4_000;\nconst BOARD_MUTATING_COMMANDS = new Set([\n \"ticket.create\",\n \"ticket.assign\",\n \"ticket.park\",\n \"ticket.unpark\",\n \"ticket.done\",\n \"ticket.archive\",\n \"ticket.unarchive\",\n]);\n\n/**\n * Level-triggered work-board scheduler (ADR-042).\n *\n * @remarks\n * Events are hints, never instructions: every trigger collapses into one\n * idempotent reconcile pass that reads the current board from the edge,\n * compares it to the live-run table, and acts on the difference. An accepted\n * Ticket mutation contributes its authoritative returned state only until the\n * derived Org lists reach that sequence. A dropped, duplicated, stale, or\n * reordered trigger therefore cannot strand a ticket \u2014 the next trigger of\n * any kind converges the same state.\n */\nexport interface WorkScheduler {\n /**\n * Use accepted domain commands as immediate board reconciliation hints.\n *\n * @param command - Parsed local agent command.\n * @param result - Command execution result.\n */\n noteCommandResult(\n command: AgentCommand,\n result: AgentCommandResult,\n ): Promise<void>;\n\n /**\n * Request a reconcile pass. Safe to call at any time from any trigger:\n * concurrent requests coalesce into the in-flight pass.\n *\n * @param reason - Human-readable trigger description for diagnostics.\n */\n ensureReconcile(reason: string): Promise<boolean>;\n\n /**\n * Abort the Drone execution owned by one archived ticket, if it is live.\n *\n * @param ticketId - Ticket whose process must be terminal before board removal.\n * @returns Whether no live Drone remains for the ticket.\n */\n abortTicketDrone(ticketId: string): Promise<boolean>;\n\n /**\n * Check the scheduler's canonical live-run table for Drone ownership.\n *\n * @param ticketId - Ticket whose workspace may still be in use.\n */\n hasActiveDrone(ticketId: string): boolean;\n\n /**\n * Stop active runs and drop scheduler state.\n */\n close(): Promise<void>;\n}\n\n/**\n * Board read/write surface used by reconcile passes.\n *\n * @remarks\n * `undefined` results mean \"the read failed\", which reconcile treats as\n * retry-then-abort \u2014 never as an empty board (ADR-042 4.1). The production\n * implementation forwards to the Edge Worker; tests inject fakes.\n */\nexport interface SchedulerBoardClient {\n /**\n * List board projections by status from the Org Durable Object.\n *\n * @param status - Ticket status filter.\n * @returns Projections, or undefined when the read failed.\n */\n list(status: string): Promise<TicketBoardProjection[] | undefined>;\n\n /**\n * Read one authoritative ticket state from its Ticket Durable Object.\n *\n * @param ticketId - Ticket to read.\n * @returns State, null when the ticket is unknown, undefined on read failure.\n */\n get(ticketId: string): Promise<TicketState | null | undefined>;\n\n /**\n * Post one lifecycle-derived transition with orchestrator authority\n * (ADR-062).\n *\n * @param input - Transition verb, target ticket, subject agent, and the\n * mechanical host receipt summary.\n * @returns Edge command result, or undefined when the write failed in\n * transport before reaching the Ticket Durable Object.\n */\n transition(input: {\n type: \"ticket.start\" | \"ticket.release\" | \"ticket.park\";\n ticketId: string;\n agentId: string;\n summary: string;\n }): Promise<AgentCommandResult | undefined>;\n}\n\n/**\n * Ticket workspace surface used by reconcile passes; injectable for tests.\n */\nexport interface SchedulerWorkspace {\n /**\n * Provision the ticket worktree for an app-associated ticket.\n */\n provision(input: { appId: string; ticketId: string }): Promise<string>;\n\n /**\n * Remove one completed ticket's integrated worktree and branch.\n */\n cleanup(input: { appId: string; ticketId: string }): Promise<void>;\n\n /**\n * Clean or quarantine a worktree whose durable ticket is gone.\n */\n resolveOrphan(input: {\n appId: string;\n ticketId: string;\n }): Promise<OrphanTicketWorkspaceResolution>;\n\n /**\n * Enumerate ticket worktrees currently on local disk.\n */\n listTicketWorktrees(): Promise<Array<{ appId: string; ticketId: string }>>;\n}\n\ninterface DroneRun {\n ticketId: string;\n /** App that owns the ticket's canonical repository and derived worktree. */\n appId?: string;\n agentId: string;\n /** Roster display name used in mechanical host receipt summaries. */\n agentName: string | undefined;\n /** Registered launch after a successful start. */\n launch: AgentLaunch | undefined;\n /** Whether the mechanical waiting \u2192 ongoing start landed (ADR-062). */\n started: boolean;\n /** Teardown in progress: the slot stays occupied so reconcile cannot double-spawn. */\n exiting: boolean;\n /** External archive requested an abort, including while startup is in flight. */\n abortRequested: boolean;\n /** Resolves after process reporting, event drain, and run-table removal. */\n terminal: Promise<void>;\n /** Complete {@link terminal} exactly once. */\n resolveTerminal(): void;\n /** Native event identity for this ticket execution. */\n timeline: PiTimeline | undefined;\n}\n\n/**\n * One live owner-routed Overmind assessment run (ADR-063).\n */\ninterface AssessmentRun {\n /** Registered launch after a successful start. */\n launch: AgentLaunch | undefined;\n /** Teardown in progress: the slot stays occupied so no double-spawn occurs. */\n exiting: boolean;\n}\n\n/** Time-gated retry state for a deferred assessment or housekeeping action. */\ninterface RetryGate {\n /** Consecutive failures so far. */\n attempts: number;\n /** Earliest wall-clock time the next attempt may run. */\n notBefore: number;\n}\n\n/**\n * Create the level-triggered orchestrator work scheduler.\n *\n * @param input - Environment, diagnostics, shared launch runtime, ticket\n * producer, and optional injectable board/workspace/roster dependencies.\n * @returns Scheduler wired to verified command outcomes and board triggers.\n */\nexport function createWorkScheduler(input: {\n env: NodeJS.ProcessEnv;\n stderr: Writable;\n /** Shared ADR-060/061 launch runtime (registry, launch client, socket manager). */\n launchRuntime: AgentLaunchRuntime;\n timelineProducer: EdgeTimelineProducer;\n /** Durable lifecycle writer for every spawned agent process. */\n board?: SchedulerBoardClient;\n workspace?: SchedulerWorkspace;\n /** Roster read seam; production reads `<agent_root>/agent-roster.json`. */\n readRoster?: () => Promise<AgentDirectoryProfile[]>;\n}): WorkScheduler {\n const log = (message: string): void => {\n input.stderr.write(`[scheduler] ${message}\\n`);\n };\n const orgId = resolveSandboxOrgId(input.env);\n if (!orgId) {\n log(\"MOTE_ORG_ID is not set; work-board scheduling is disabled\");\n return {\n async noteCommandResult() {},\n async ensureReconcile() {\n return false;\n },\n async abortTicketDrone() {\n return true;\n },\n hasActiveDrone() {\n return false;\n },\n async close() {},\n };\n }\n const readRoster = input.readRoster\n ?? (() => readAgentProfiles(resolveAgentRoot(input.env)));\n\n const backoffMs = readPositiveInteger(input.env.MOTE_BOARD_RETRY_BACKOFF_MS, 5_000);\n const maxSpawnAttempts = readPositiveInteger(input.env.MOTE_BOARD_MAX_SPAWN_ATTEMPTS, 3);\n const maxRunFailures = readPositiveInteger(input.env.MOTE_BOARD_MAX_RUN_FAILURES, 3);\n const maxAssessmentStrikes = readPositiveInteger(input.env.MOTE_BOARD_MAX_ASSESSMENT_STRIKES, 3);\n const readAttempts = readPositiveInteger(input.env.MOTE_BOARD_READ_ATTEMPTS, 5);\n\n const board = input.board ?? createEdgeBoardClient({\n env: input.env,\n orgId,\n log,\n });\n const workspace = input.workspace ?? {\n provision: (target: { appId: string; ticketId: string }) =>\n provisionTicketWorkspace({ env: input.env, ...target }),\n cleanup: (target: { appId: string; ticketId: string }) =>\n cleanupTicketWorkspace({ env: input.env, ...target }),\n resolveOrphan: (target: { appId: string; ticketId: string }) =>\n resolveOrphanTicketWorkspace({ env: input.env, ...target }),\n listTicketWorktrees: () => listTicketWorktrees(input.env),\n };\n\n const droneRuns = new Map<string, DroneRun>();\n /** Assigned tickets logged once while their agent has no roster owner. */\n const reportedMissingOwners = new Set<string>();\n /** Consecutive runs per ticket that ended before the mechanical start. */\n const spawnAttempts = new Map<string, number>();\n /**\n * Consecutive released runs per ticket that ended without settling\n * (ADR-062 escalation cap). In-memory: a restart resets the count, which\n * bounds delay but never wedges the ticket.\n */\n const releaseFailures = new Map<string, number>();\n /** Terminal cause of each ticket's most recent run, for release host receipts. */\n const lastRunCause = new Map<string, AgentWorkTerminalCause>();\n /** Live owner-routed assessment runs, one slot per owner (ADR-063). */\n const assessmentRuns = new Map<string, AssessmentRun>();\n /** Per-owner retry backoff after failed or unproductive assessment runs. */\n const assessmentRetryGates = new Map<string, RetryGate>();\n /**\n * Consecutive completed assessments that left each ticket unresolved\n * (ADR-042 4.3). In-memory: a restart resets the count, which bounds\n * delay but never wedges the ticket.\n */\n const assessmentStrikes = new Map<string, number>();\n /** Completed assessment cohorts awaiting strike accounting on the next pass. */\n const settledAssessments: Array<{ ownerUserId: string; cohortWaitingIds: string[] }> = [];\n /**\n * Authoritative mutation results retained until the derived Org lists catch up.\n *\n * These are freshness overlays, not a second board: every entry came from an\n * accepted Ticket Durable Object command and is discarded once an equal or\n * newer Org projection is observed.\n */\n const boardMutationHints = new Map<string, TicketBoardProjection>();\n /** Owners logged once while the roster has no Overmind for them. */\n const reportedMissingOverminds = new Set<string>();\n /** Pre-ADR-063 owner-less tickets logged once. */\n const reportedUnownedTickets = new Set<string>();\n /**\n * A done transition may have cleared a blocker: reassess parked tickets\n * (ADR-042 4.1). Boot assumes true; spent once every parked owner has a\n * live assessment run.\n */\n let doneSinceAssessment = true;\n /** Time-gated retries for failed worktree cleanups (never permanent). */\n const cleanupGates = new Map<string, RetryGate>();\n /** Time-gated retry for a failed worktree enumeration. */\n let enumerationGate: RetryGate | undefined;\n let reconcileInFlight = false;\n let reconcileDirty = false;\n let reconcileReady: Promise<boolean> | undefined;\n let reconcileLoop: Promise<void> | undefined;\n let closed = false;\n\n /** Retain the newest authoritative mutation result for one ticket. */\n const rememberBoardMutation = (ticket: TicketBoardProjection): void => {\n const current = boardMutationHints.get(ticket.id);\n if (!current || current.seq < ticket.seq) {\n boardMutationHints.set(ticket.id, ticket);\n }\n };\n\n /**\n * Overlay one authoritative mutation on the three active Org list results.\n *\n * @param ticket - Ticket Durable Object state newer than the derived lists.\n * @param lists - Mutable status lists for the current reconcile pass.\n */\n const overlayBoardMutation = (\n ticket: TicketBoardProjection,\n lists: {\n waiting: TicketBoardProjection[];\n ongoing: TicketBoardProjection[];\n intervention: TicketBoardProjection[];\n },\n ): void => {\n const activeLists = [lists.waiting, lists.ongoing, lists.intervention];\n const projected = activeLists\n .flatMap((statusTickets) => statusTickets)\n .find((candidate) => candidate.id === ticket.id);\n if (projected && projected.seq >= ticket.seq) {\n boardMutationHints.delete(ticket.id);\n return;\n }\n for (const statusTickets of activeLists) {\n const index = statusTickets.findIndex((candidate) => candidate.id === ticket.id);\n if (index !== -1) {\n statusTickets.splice(index, 1);\n }\n }\n if (ticket.archivedAt || ticket.status === \"done\") {\n boardMutationHints.delete(ticket.id);\n return;\n }\n lists[ticket.status].push(ticket);\n };\n\n const sleep = (ms: number): Promise<void> =>\n new Promise((resolve) => {\n setTimeout(resolve, ms).unref();\n });\n\n /** Deferred-action retry ceiling; gates never hold the sandbox awake. */\n const RETRY_BACKOFF_CAP_MS = 60 * 60_000;\n const gateOpen = (gate: RetryGate | undefined): boolean =>\n !gate || Date.now() >= gate.notBefore;\n const bumpGate = (gate: RetryGate | undefined): RetryGate => {\n const attempts = (gate?.attempts ?? 0) + 1;\n return {\n attempts,\n notBefore: Date.now()\n + Math.min(RETRY_BACKOFF_CAP_MS, backoffMs * 2 ** Math.min(attempts, 20)),\n };\n };\n\n /**\n * Read with bounded retries; only a completed read may report board state.\n *\n * @param read - One board read attempt; undefined means the read failed.\n * @returns Read result, or undefined when every attempt failed.\n */\n const readWithRetry = async <T>(read: () => Promise<T | undefined>): Promise<T | undefined> => {\n for (let attempt = 1; attempt <= readAttempts; attempt += 1) {\n const result = await read();\n if (result !== undefined) {\n return result;\n }\n if (closed || attempt === readAttempts) {\n break;\n }\n await sleep(backoffMs * attempt);\n }\n return undefined;\n };\n\n /**\n * Issue the mechanical `waiting \u2192 ongoing` start for one live run (ADR-062).\n *\n * @remarks\n * Level-triggered: attempted right after spawn and re-attempted by any\n * later pass while the run lives un-started, so a transport failure can\n * only delay the edge, never orphan it. A rejection is resolved against\n * the authoritative ticket \u2014 an already-`ongoing` frame with the same\n * assignee means an earlier attempt landed; anything else means the board\n * changed and the run is stopped.\n *\n * @param run - Live Drone run whose ticket may still be `waiting`.\n */\n const ensureTicketStarted = async (run: DroneRun): Promise<void> => {\n if (run.started || run.exiting || !run.launch || closed) {\n return;\n }\n const result = await readWithRetry(() => board.transition({\n type: \"ticket.start\",\n ticketId: run.ticketId,\n agentId: run.agentId,\n summary: `Scheduler: Drone ${run.agentName ?? run.agentId} started work on the assigned ticket.`,\n }));\n if (result === undefined) {\n log(`mechanical start for ticket ${run.ticketId} could not reach the board; retrying on a later pass`);\n reconcileDirty = true;\n return;\n }\n if (result.ok) {\n run.started = true;\n const started = readBoardMutationTicket(result);\n if (started) {\n rememberBoardMutation(started);\n }\n reconcileDirty = true;\n return;\n }\n const fresh = await board.get(run.ticketId);\n if (fresh === undefined) {\n reconcileDirty = true;\n return;\n }\n if (fresh && fresh.status === \"ongoing\" && fresh.assignedAgentId === run.agentId) {\n run.started = true;\n return;\n }\n log(`mechanical start for ticket ${run.ticketId} was rejected (${result.error.message}); stopping the run`);\n if (run.launch.execution) {\n void run.launch.execution.stop(\"board no longer justifies the Drone execution\");\n }\n };\n\n /**\n * Release one dead-run `ongoing` ticket to the judgment queue (ADR-062).\n *\n * @remarks\n * Unconditional: the terminal cause is mechanical host receipt evidence for\n * Overmind, never edge selection, so nothing here may refuse the transition.\n * Clearing the assignee is what routes the ticket to judgment \u2014 and lets\n * Overmind resume the same agent by re-assigning it, riding `(agent, ticket)`\n * session continuity. Builds belong to author validation and integration,\n * never process teardown.\n *\n * @param ticket - Fresh authoritative `ongoing` state with no live run.\n * @returns Fresh waiting state, `null` for a stale rejection, or `undefined`\n * when the write could not reach the authoritative Ticket object.\n */\n const releaseTicket = async (\n ticket: TicketState,\n ): Promise<TicketState | null | undefined> => {\n const cause = lastRunCause.get(ticket.id);\n const result = await readWithRetry(() => board.transition({\n type: \"ticket.release\",\n ticketId: ticket.id,\n agentId: ticket.assignedAgentId ?? \"orchestrator\",\n summary: `Scheduler: Drone run ended (${describeTerminalCause(cause)}); released to the judgment queue.`,\n }));\n if (result === undefined) {\n log(`mechanical release for ticket ${ticket.id} could not reach the board`);\n return undefined;\n }\n if (!result.ok) {\n // A stale frame: something else moved the ticket first. Converge again.\n log(`mechanical release for ticket ${ticket.id} was rejected: ${result.error.message}`);\n reconcileDirty = true;\n return null;\n }\n const released = readBoardMutationTicket(result);\n if (!released) {\n log(`mechanical release for ticket ${ticket.id} returned no valid ticket state`);\n return undefined;\n }\n lastRunCause.delete(ticket.id);\n if (cause === \"settled\") {\n releaseFailures.delete(ticket.id);\n } else {\n releaseFailures.set(ticket.id, (releaseFailures.get(ticket.id) ?? 0) + 1);\n }\n log(`released ticket ${ticket.id} to the judgment queue (${describeTerminalCause(cause)})`);\n rememberBoardMutation(released);\n reconcileDirty = true;\n return released;\n };\n\n /**\n * Park one `waiting` ticket at a deterministic escalation cap (ADR-042\n * 4.3, ADR-062): exhaustion becomes visible board state, never a log line.\n *\n * @param input - Target ticket, host receipt subject, and mechanical reason.\n * @returns Whether the write reached the board (false aborts the pass).\n */\n const parkTicket = async (input2: {\n ticketId: string;\n agentId: string | null;\n summary: string;\n }): Promise<boolean> => {\n const result = await readWithRetry(() => board.transition({\n type: \"ticket.park\",\n ticketId: input2.ticketId,\n agentId: input2.agentId ?? \"orchestrator\",\n summary: input2.summary,\n }));\n if (result === undefined) {\n log(`mechanical park for ticket ${input2.ticketId} could not reach the board`);\n return false;\n }\n if (!result.ok) {\n log(`mechanical park for ticket ${input2.ticketId} was rejected: ${result.error.message}`);\n reconcileDirty = true;\n return true;\n }\n spawnAttempts.delete(input2.ticketId);\n releaseFailures.delete(input2.ticketId);\n assessmentStrikes.delete(input2.ticketId);\n log(`parked ticket ${input2.ticketId}: ${input2.summary}`);\n const parked = readBoardMutationTicket(result);\n if (parked) {\n rememberBoardMutation(parked);\n }\n reconcileDirty = true;\n return true;\n };\n\n /**\n * Spawn one owner's Overmind to assess their judgment queue (ADR-063).\n *\n * @remarks\n * Owner-sponsored under the `assessment` session context: the owner's Overmind\n * resumes its durable assessment session, scoped to the owner's unassigned\n * waiting and parked tickets. Every member owns exactly one Overmind by\n * provisioning invariant, so a roster miss is a loud configuration bug,\n * never a state to route around.\n *\n * @param input2 - Owner and their current judgment cohort.\n */\n const spawnAssessment = async (input2: {\n ownerUserId: string;\n waiting: TicketBoardProjection[];\n parked: TicketBoardProjection[];\n }): Promise<void> => {\n if (assessmentRuns.has(input2.ownerUserId) || closed) {\n return;\n }\n const roster = await readRoster();\n const profile = roster.find((entry) =>\n entry.role === \"overmind\" && entry.ownerUserId === input2.ownerUserId);\n if (!profile) {\n if (!reportedMissingOverminds.has(input2.ownerUserId)) {\n reportedMissingOverminds.add(input2.ownerUserId);\n log(`no Overmind agent exists for user ${input2.ownerUserId}; their judgment queue is stalled until provisioning repairs the roster (ADR-063)`);\n }\n return;\n }\n reportedMissingOverminds.delete(input2.ownerUserId);\n const cohortWaitingIds = input2.waiting.map((ticket) => ticket.id);\n const run: AssessmentRun = {\n launch: undefined,\n exiting: false,\n };\n assessmentRuns.set(input2.ownerUserId, run);\n\n try {\n log(`starting assessment by Overmind ${profile.id} for user ${input2.ownerUserId} (${cohortWaitingIds.length} waiting, ${input2.parked.length} parked)`);\n const launch = await startAgentLaunch(input.launchRuntime, {\n sessionKey: {\n agentId: profile.id,\n contextKind: \"assessment\",\n },\n initiatorUserId: input2.ownerUserId,\n kind: \"overmind\",\n ticketScope: new Set(\n [...input2.waiting, ...input2.parked].map((ticket) => ticket.id),\n ),\n label: `assess-${input2.ownerUserId.slice(0, 8)}`,\n spriteTaskLabel: \"assess\",\n onSpawn: (startedLaunch) => {\n run.launch = startedLaunch;\n\n },\n\n onTerminal: async () => {\n // Strike accounting runs on the next pass against a fresh board\n // read; the terminal callback stays inside its bounded handoff.\n settledAssessments.push({\n ownerUserId: input2.ownerUserId,\n cohortWaitingIds,\n });\n run.exiting = true;\n assessmentRuns.delete(input2.ownerUserId);\n if (!closed) {\n void ensureReconcile(`assessment for user ${input2.ownerUserId} settled`);\n }\n },\n });\n run.launch = launch;\n if (closed) {\n await launch.execution?.stop(\"scheduler closed during assessment startup\");\n }\n } catch (error) {\n log(`assessment spawn for user ${input2.ownerUserId} failed: ${errorMessage(error)}`);\n if (assessmentRuns.get(input2.ownerUserId) === run && !run.exiting) {\n assessmentRuns.delete(input2.ownerUserId);\n assessmentRetryGates.set(\n input2.ownerUserId,\n bumpGate(assessmentRetryGates.get(input2.ownerUserId)),\n );\n reconcileDirty = true;\n }\n }\n };\n\n /**\n * Complete one Drone execution and hand its durable board state to reconcile.\n *\n * @remarks\n * The shared lifecycle still owns the execution Task while this callback\n * drains Agent Events and acquires the distinct reconcile Task. The run entry\n * stays `exiting` until teardown completes, so no pass can double-spawn.\n *\n * @param run - Drone execution that reached its first terminal outcome.\n */\n const handleDroneTerminal = async (\n run: DroneRun,\n ): Promise<void> => {\n if (run.exiting) {\n return;\n }\n run.exiting = true;\n try {\n await input.timelineProducer.waitForDrain(\n { orgId, kind: \"ticket\", id: run.ticketId },\n TICKET_EVENT_DRAIN_WAIT_MS\n );\n } catch (error) {\n log(\n `ticket event handoff for ${run.ticketId} failed: ${errorMessage(error)}`\n );\n } finally {\n input.timelineProducer.closeScope({ orgId, kind: \"ticket\", id: run.ticketId });\n }\n if (run.started) {\n spawnAttempts.delete(run.ticketId);\n } else {\n spawnAttempts.set(run.ticketId, (spawnAttempts.get(run.ticketId) ?? 0) + 1);\n }\n droneRuns.delete(run.ticketId);\n run.resolveTerminal();\n if (!closed) {\n await ensureReconcile(`drone for ticket ${run.ticketId} settled`);\n }\n };\n\n /**\n * Spawn the assigned Drone Agent for one confirmed runnable ticket.\n *\n * @remarks\n * The Drone launch is a normal ADR-060 ticket context: the session identity\n * is the concrete ticket, and the initiator is the assigned agent's owner.\n * Scheduled board work is owner-sponsored; no delegation chain is minted.\n *\n * @param ticket - Fresh authoritative state from the Ticket Durable Object.\n */\n const spawnDrone = async (ticket: TicketState): Promise<void> => {\n const agentId = ticket.assignedAgentId;\n if (!agentId || droneRuns.has(ticket.id) || closed) {\n return;\n }\n const roster = await readRoster();\n const profile = roster.find((entry) => entry.id === agentId);\n const ownerUserId = profile?.ownerUserId;\n if (!ownerUserId) {\n if (!reportedMissingOwners.has(ticket.id)) {\n reportedMissingOwners.add(ticket.id);\n log(`not starting assigned ticket ${ticket.id}: agent ${agentId} has no roster owner`);\n }\n return;\n }\n reportedMissingOwners.delete(ticket.id);\n const appId = ticket.app?.id;\n let workspaceDir: string | undefined;\n try {\n if (appId) workspaceDir = await workspace.provision({ appId, ticketId: ticket.id });\n } catch (error) {\n log(`drone preparation for ticket ${ticket.id} failed: ${errorMessage(error)}`);\n spawnAttempts.set(ticket.id, (spawnAttempts.get(ticket.id) ?? 0) + 1);\n reconcileDirty = true;\n return;\n }\n if (closed || droneRuns.has(ticket.id)) {\n return;\n }\n let resolveTerminal!: () => void;\n const terminal = new Promise<void>((resolve) => {\n resolveTerminal = resolve;\n });\n const run: DroneRun = {\n ticketId: ticket.id,\n ...(appId ? { appId } : {}),\n agentId,\n agentName: profile?.name,\n launch: undefined,\n started: false,\n exiting: false,\n abortRequested: false,\n terminal,\n resolveTerminal,\n timeline: undefined,\n };\n droneRuns.set(ticket.id, run);\n\n try {\n log(`starting drone ${run.agentId} for ticket ${run.ticketId}`);\n const launch = await startAgentLaunch(input.launchRuntime, {\n sessionKey: {\n agentId,\n contextKind: \"ticket\",\n contextId: ticket.id,\n },\n initiatorUserId: ownerUserId,\n kind: \"drone\",\n ticketId: ticket.id,\n ticketScope: new Set([ticket.id]),\n ...(workspaceDir ? { cwd: workspaceDir } : {}),\n ...(run.appId ? { appId: run.appId } : {}),\n handoff: {\n check: async (activeLaunch) => {\n const brief = await executeTicketCommand({ orgId }, {\n id: randomUUID(), type: \"ticket.brief\", payload: {\n ticketId: ticket.id, agentId: activeLaunch.sessionKey.agentId, executionId: activeLaunch.launchId, limit: 1,\n },\n }, input.env);\n if (!brief.ok || !isRecord(brief.payload)) throw new Error(\"Cannot verify the assignment handoff\");\n if (brief.payload.handoff === null) return false;\n const handoff = ticketWorklogEntrySchema.parse(brief.payload.handoff);\n if (handoff.payload.type !== \"worklog.handoff\" || handoff.agentId !== activeLaunch.sessionKey.agentId\n || handoff.executionId !== activeLaunch.launchId) throw new Error(\"Handoff does not match this assignment execution\");\n return true;\n },\n },\n label: `drone-${run.ticketId.slice(0, 8)}`,\n spriteTaskLabel: \"drone\",\n onSpawn: (startedLaunch, pid, cwd) => {\n run.launch = startedLaunch;\n run.timeline = new PiTimeline({\n agentId, executionId: startedLaunch.launchId,\n publish: (record) => input.timelineProducer.publish({ orgId, kind: \"ticket\", id: ticket.id }, record),\n });\n run.timeline.host({ type: \"runtime.process_spawned\", pid, cwd });\n\n },\n\n onPiEvent: (event) => {\n if (!run.timeline) throw new Error(\"Ticket timeline must be bound before Pi output\");\n run.timeline.accept(event);\n },\n onUnparsedOutput: (line) => run.timeline?.host({ type: \"runtime.output\", stream: \"stdout\", line }),\n onTerminal: async (_launch, outcome) => {\n if (outcome.handoff === \"missing\" || outcome.handoff === \"unverified\") {\n run.timeline?.host({ type: \"runtime.handoff_missing\", status: outcome.handoff,\n message: outcome.handoff === \"missing\" ? \"Assignment ended without an accepted handoff\" : \"Assignment handoff could not be verified\" });\n }\n run.timeline?.host({ type: \"runtime.process_exited\", ...outcome });\n // The cause is release-command evidence read by a later reconcile\n // pass; the durable trigger stays board-vs-runtime state (ADR-062).\n // A failed bookkeeping reminder does not turn settled implementation into a retry.\n lastRunCause.set(run.ticketId, outcome.assignmentSettled ? \"settled\" : outcome.cause);\n await handleDroneTerminal(run).catch((error) => {\n log(`drone teardown for ticket ${run.ticketId} failed: ${errorMessage(error)}`);\n });\n },\n });\n run.launch = launch;\n if (closed || run.abortRequested) {\n await launch.execution?.stop(\n run.abortRequested ? \"ticket archived\" : \"scheduler closed during Drone startup\",\n );\n return;\n }\n await ensureTicketStarted(run);\n } catch (error) {\n log(`drone spawn for ticket ${run.ticketId} failed: ${errorMessage(error)}`);\n if (droneRuns.get(run.ticketId) === run && !run.exiting) {\n droneRuns.delete(run.ticketId);\n run.resolveTerminal();\n spawnAttempts.set(run.ticketId, (spawnAttempts.get(run.ticketId) ?? 0) + 1);\n reconcileDirty = true;\n }\n }\n };\n\n /**\n * Run one full convergence pass over the board (ADR-042 condition table).\n *\n * @returns Whether the pass completed; false means the board was unreadable.\n */\n const reconcilePass = async (): Promise<boolean> => {\n const waiting = await readWithRetry(() => board.list(\"waiting\"));\n if (waiting === undefined) {\n return false;\n }\n const ongoing = await readWithRetry(() => board.list(\"ongoing\"));\n if (ongoing === undefined) {\n return false;\n }\n const intervention = await readWithRetry(() => board.list(\"intervention\"));\n if (intervention === undefined) {\n return false;\n }\n const activeLists = { waiting, ongoing, intervention };\n for (const ticket of boardMutationHints.values()) {\n overlayBoardMutation(ticket, activeLists);\n }\n const waitingAssigned = waiting.filter((ticket) => ticket.assignedAgentId);\n const waitingById = new Map(waiting.map((ticket) => [ticket.id, ticket]));\n const waitingAssignedById = new Map(waitingAssigned.map((ticket) => [ticket.id, ticket]));\n const ongoingById = new Map(ongoing.map((ticket) => [ticket.id, ticket]));\n\n // Tickets that progressed off waiting+assigned drop their failure history.\n for (const ticketId of [...spawnAttempts.keys()]) {\n if (!waitingAssignedById.has(ticketId) && !droneRuns.has(ticketId)) {\n spawnAttempts.delete(ticketId);\n }\n }\n for (const ticketId of [...reportedMissingOwners]) {\n if (!waitingAssignedById.has(ticketId)) {\n reportedMissingOwners.delete(ticketId);\n }\n }\n // Run-failure history survives the release back to `waiting` but resets\n // once judgment moves the ticket anywhere else (park, done, archive).\n for (const ticketId of [...releaseFailures.keys()]) {\n if (!waitingById.has(ticketId) && !ongoingById.has(ticketId) && !droneRuns.has(ticketId)) {\n releaseFailures.delete(ticketId);\n }\n }\n for (const ticketId of [...lastRunCause.keys()]) {\n if (!ongoingById.has(ticketId) && !droneRuns.has(ticketId)) {\n lastRunCause.delete(ticketId);\n }\n }\n // Strikes persist only while a ticket sits unassigned in the queue;\n // any judgment (assign, park, done) resets its count.\n for (const ticketId of [...assessmentStrikes.keys()]) {\n const ticket = waitingById.get(ticketId);\n if (!ticket || ticket.assignedAgentId) {\n assessmentStrikes.delete(ticketId);\n }\n }\n for (const ticketId of [...reportedUnownedTickets]) {\n if (!waitingById.has(ticketId)) {\n reportedUnownedTickets.delete(ticketId);\n }\n }\n\n // Assessment strike accounting (ADR-042 4.3): tickets a completed run\n // was launched to resolve and left unassigned accrue one strike each,\n // and the owner's redispatch gate backs off; a fully productive run\n // clears the gate.\n for (const settled of settledAssessments.splice(0)) {\n let unresolved = 0;\n for (const ticketId of settled.cohortWaitingIds) {\n const ticket = waitingById.get(ticketId);\n if (ticket && !ticket.assignedAgentId) {\n assessmentStrikes.set(ticketId, (assessmentStrikes.get(ticketId) ?? 0) + 1);\n unresolved += 1;\n }\n }\n if (unresolved > 0) {\n assessmentRetryGates.set(\n settled.ownerUserId,\n bumpGate(assessmentRetryGates.get(settled.ownerUserId)),\n );\n } else {\n assessmentRetryGates.delete(settled.ownerUserId);\n }\n }\n\n // Rule 1: a waiting ticket with an assignee and no live run spawns its Drone.\n for (const ticket of waitingAssigned) {\n if (closed) {\n return true;\n }\n if (droneRuns.has(ticket.id)) {\n continue;\n }\n const attempts = spawnAttempts.get(ticket.id) ?? 0;\n if (attempts >= maxSpawnAttempts) {\n // ADR-042 4.3: exhaustion escalates onto the board, never a log line.\n if (!await parkTicket({\n ticketId: ticket.id,\n agentId: ticket.assignedAgentId,\n summary: `Scheduler: the assigned Drone Agent failed to start ${attempts} times; parked for intervention.`,\n })) {\n return false;\n }\n continue;\n }\n if (attempts > 0) {\n await sleep(backoffMs * attempts);\n if (closed) {\n return true;\n }\n }\n // Confirm against the authoritative Ticket DO before the expensive spawn\n // (ADR-042 4.1): the Org DO list is a projection and may briefly lag.\n const fresh = await readWithRetry(() => board.get(ticket.id));\n if (fresh === undefined) {\n return false;\n }\n if (!fresh || fresh.status !== \"waiting\" || fresh.assignedAgentId !== ticket.assignedAgentId) {\n continue;\n }\n await spawnDrone(fresh);\n }\n\n // Rule 1b (ADR-062): a live run whose mechanical start has not landed\n // yet retries the start on every pass, so a transport failure can only\n // delay the waiting \u2192 ongoing edge.\n for (const run of droneRuns.values()) {\n if (closed) {\n return true;\n }\n await ensureTicketStarted(run);\n }\n\n // Rule 2 (mirror): stop live runs their tickets no longer justify.\n for (const run of droneRuns.values()) {\n if (run.exiting || !run.launch?.execution) {\n continue;\n }\n const waitingTicket = waitingAssignedById.get(run.ticketId);\n const ongoingTicket = ongoingById.get(run.ticketId);\n const justified =\n (waitingTicket && waitingTicket.assignedAgentId === run.agentId)\n || (ongoingTicket && ongoingTicket.assignedAgentId === run.agentId);\n if (!justified) {\n log(`stopping drone for ticket ${run.ticketId}: the board no longer justifies its run`);\n void run.launch.execution.stop(\"board no longer justifies the Drone execution\");\n }\n }\n\n // Rule 3 (ADR-062): an `ongoing` ticket with no live run is released to\n // the judgment queue \u2014 `ongoing` is a pure mirror of process lifetime.\n for (const ticket of [...ongoing]) {\n if (closed) {\n return true;\n }\n if (droneRuns.has(ticket.id)) {\n continue;\n }\n // Confirm against the authoritative Ticket DO: the Org DO list is a\n // projection and may briefly lag (ADR-042 4.1).\n const fresh = await readWithRetry(() => board.get(ticket.id));\n if (fresh === undefined) {\n return false;\n }\n if (!fresh || fresh.archivedAt || droneRuns.has(fresh.id)) {\n continue;\n }\n if (fresh.status !== \"ongoing\") {\n rememberBoardMutation(fresh);\n overlayBoardMutation(fresh, activeLists);\n // Assigned waiting work is handled by Rule 1, which already ran in\n // this pass; one immediate pass consumes the authoritative overlay.\n if (fresh.status === \"waiting\" && fresh.assignedAgentId) {\n reconcileDirty = true;\n }\n continue;\n }\n const released = await releaseTicket(fresh);\n if (released === undefined) {\n return false;\n }\n if (released?.status === \"waiting\" && !released.assignedAgentId) {\n overlayBoardMutation(released, activeLists);\n }\n }\n\n // Rule 3b (ADR-062): a ticket whose consecutive runs keep dying is\n // parked from the judgment queue before it can crash-loop again. Only an\n // unassigned frame parks \u2014 an Overmind assignment that raced in gets its\n // run, and a settle resets the counter.\n for (const ticket of waiting) {\n if (closed) {\n return true;\n }\n if (ticket.assignedAgentId || droneRuns.has(ticket.id)) {\n continue;\n }\n const failures = releaseFailures.get(ticket.id) ?? 0;\n if (failures < maxRunFailures) {\n continue;\n }\n if (!await parkTicket({\n ticketId: ticket.id,\n agentId: null,\n summary: `Scheduler: ${failures} consecutive Drone runs ended without settling; parked for intervention.`,\n })) {\n return false;\n }\n }\n\n // Rule 3c (ADR-063): a ticket repeated assessments keep leaving\n // unresolved is parked so stalled judgment becomes visible board state.\n for (const ticket of waiting) {\n if (closed) {\n return true;\n }\n if (ticket.assignedAgentId) {\n continue;\n }\n const strikes = assessmentStrikes.get(ticket.id) ?? 0;\n if (strikes < maxAssessmentStrikes) {\n continue;\n }\n if (!await parkTicket({\n ticketId: ticket.id,\n agentId: null,\n summary: `Scheduler: ${strikes} assessment runs left this ticket unresolved; parked for intervention.`,\n })) {\n return false;\n }\n }\n\n // Rule 5 (ADR-063): immediately dispatch each owner's Overmind for\n // judgment work \u2014 unassigned waiting tickets, and parked tickets once a\n // done transition may have cleared a blocker. The live-run slot still\n // coalesces concurrent triggers into at most one assessment per owner.\n const waitingUnassignedByOwner = new Map<string, TicketBoardProjection[]>();\n for (const ticket of waiting) {\n if (ticket.assignedAgentId) {\n continue;\n }\n if (!ticket.ownerUserId) {\n if (!reportedUnownedTickets.has(ticket.id)) {\n reportedUnownedTickets.add(ticket.id);\n log(`ticket ${ticket.id} has no owner; it predates ADR-063 and stays conversation-driven`);\n }\n continue;\n }\n const group = waitingUnassignedByOwner.get(ticket.ownerUserId) ?? [];\n group.push(ticket);\n waitingUnassignedByOwner.set(ticket.ownerUserId, group);\n }\n const interventionByOwner = new Map<string, TicketBoardProjection[]>();\n for (const ticket of intervention) {\n if (!ticket.ownerUserId) {\n continue;\n }\n const group = interventionByOwner.get(ticket.ownerUserId) ?? [];\n group.push(ticket);\n interventionByOwner.set(ticket.ownerUserId, group);\n }\n const assessableOwners = new Set(waitingUnassignedByOwner.keys());\n if (doneSinceAssessment) {\n for (const owner of interventionByOwner.keys()) {\n assessableOwners.add(owner);\n }\n }\n for (const owner of reportedMissingOverminds) {\n if (!assessableOwners.has(owner)) {\n reportedMissingOverminds.delete(owner);\n }\n }\n for (const owner of [...assessmentRetryGates.keys()]) {\n if (!assessableOwners.has(owner) && !assessmentRuns.has(owner)) {\n assessmentRetryGates.delete(owner);\n }\n }\n for (const owner of assessableOwners) {\n if (closed) {\n return true;\n }\n if (assessmentRuns.has(owner)) {\n continue;\n }\n const cohortWaiting = waitingUnassignedByOwner.get(owner) ?? [];\n const cohortParked = interventionByOwner.get(owner) ?? [];\n if (cohortWaiting.length === 0 && !(doneSinceAssessment && cohortParked.length > 0)) {\n continue;\n }\n const retryGate = assessmentRetryGates.get(owner);\n if (retryGate && Date.now() < retryGate.notBefore) {\n continue;\n }\n await spawnAssessment({ ownerUserId: owner, waiting: cohortWaiting, parked: cohortParked });\n }\n // The done bit is spent once every parked owner's judgment run exists;\n // gated or failed spawns keep it armed for a later pass.\n if (doneSinceAssessment && [...interventionByOwner.keys()].every((owner) => assessmentRuns.has(owner))) {\n doneSinceAssessment = false;\n }\n\n // Rule 4: leftover worktrees of done tickets are cleaned up, while missing\n // tickets are cleaned or quarantined according to their Git state. Local\n // housekeeping failures are time-gated and never make the board unreadable\n // or abort scheduling.\n if (gateOpen(enumerationGate)) {\n let worktrees: Array<{ appId: string; ticketId: string }> | undefined;\n try {\n worktrees = await workspace.listTicketWorktrees();\n enumerationGate = undefined;\n } catch (error) {\n enumerationGate = bumpGate(enumerationGate);\n log(`worktree enumeration failed (attempt ${enumerationGate.attempts}): ${errorMessage(error)}`);\n }\n for (const worktree of worktrees ?? []) {\n if (closed) {\n return true;\n }\n if (\n droneRuns.has(worktree.ticketId)\n || !gateOpen(cleanupGates.get(worktree.ticketId))\n || waitingAssignedById.has(worktree.ticketId)\n || ongoingById.has(worktree.ticketId)\n ) {\n continue;\n }\n const ticket = await board.get(worktree.ticketId);\n if (ticket === undefined) {\n const gate = bumpGate(cleanupGates.get(worktree.ticketId));\n cleanupGates.set(worktree.ticketId, gate);\n log(`workspace ticket lookup for ${worktree.ticketId} failed (attempt ${gate.attempts}); deferring housekeeping`);\n continue;\n }\n if (!ticket) {\n try {\n const result = await workspace.resolveOrphan(worktree);\n cleanupGates.delete(worktree.ticketId);\n log(result.action === \"cleaned\"\n ? `cleaned up merged orphan workspace for ticket ${worktree.ticketId}`\n : `quarantined ${result.reason ?? \"unsafe\"} orphan workspace for ticket ${worktree.ticketId} at ${result.quarantineDir ?? \"the quarantine root\"}`);\n } catch (error) {\n const gate = bumpGate(cleanupGates.get(worktree.ticketId));\n cleanupGates.set(worktree.ticketId, gate);\n log(`orphan workspace reconciliation for ticket ${worktree.ticketId} failed (attempt ${gate.attempts}): ${errorMessage(error)}`);\n }\n continue;\n }\n if (ticket.status !== \"done\" || !ticket.app) {\n continue;\n }\n try {\n await workspace.cleanup({ appId: worktree.appId, ticketId: worktree.ticketId });\n cleanupGates.delete(worktree.ticketId);\n log(`cleaned up workspace for done ticket ${worktree.ticketId}`);\n } catch (error) {\n const gate = bumpGate(cleanupGates.get(worktree.ticketId));\n cleanupGates.set(worktree.ticketId, gate);\n log(`workspace cleanup for ticket ${worktree.ticketId} failed (attempt ${gate.attempts}): ${errorMessage(error)}`);\n }\n }\n }\n\n return true;\n };\n\n /**\n * Run coalesced reconcile passes until the board converges.\n */\n const runReconcileLoop = async (\n reason: string,\n markReady: (owned: boolean) => void\n ): Promise<void> => {\n let task: SpriteTaskLease | undefined;\n // Consume the trigger that initiated this acquisition. A trigger arriving\n // while PUT is in flight sets the bit again and may start a later pass, but\n // a failed acquisition must not mistake its own trigger for new work and\n // spin forever without a Sprite Task.\n reconcileDirty = false;\n try {\n task = await input.launchRuntime.spriteTaskLeases.acquire(RECONCILE_SPRITE_TASK);\n markReady(true);\n log(`reconcile started (${reason})`);\n // Successful ownership must run the pass requested by the trigger that\n // was consumed before acquisition.\n reconcileDirty = true;\n while (reconcileDirty && !closed) {\n reconcileDirty = false;\n const completed = await reconcilePass();\n if (!completed) {\n log(\"reconcile aborted: the board could not be read after bounded retries; waiting for the next trigger or watchdog nudge\");\n return;\n }\n }\n } catch (error) {\n markReady(false);\n throw error;\n } finally {\n // During DELETE, a new trigger must join the next acquisition rather\n // than observe the already-resolved readiness of this completed pass.\n reconcileReady = undefined;\n try {\n await task?.release();\n } finally {\n reconcileInFlight = false;\n reconcileReady = undefined;\n reconcileLoop = undefined;\n if (reconcileDirty && !closed) {\n void ensureReconcile(\"trigger arrived during teardown\");\n }\n }\n }\n };\n\n const ensureReconcile = (reason: string): Promise<boolean> => {\n if (closed) {\n return Promise.resolve(false);\n }\n reconcileDirty = true;\n if (reconcileInFlight) {\n if (reconcileReady) {\n return reconcileReady;\n }\n const releasingLoop = reconcileLoop;\n return (releasingLoop ?? Promise.resolve()).then(() =>\n ensureReconcile(reason)\n );\n }\n reconcileInFlight = true;\n let resolveReady!: (owned: boolean) => void;\n let readySettled = false;\n reconcileReady = new Promise<boolean>((resolve) => {\n resolveReady = resolve;\n });\n const markReady = (owned: boolean): void => {\n if (readySettled) {\n return;\n }\n readySettled = true;\n resolveReady(owned);\n };\n reconcileLoop = runReconcileLoop(reason, markReady).catch((error) => {\n markReady(false);\n log(`reconcile loop failed: ${errorMessage(error)}`);\n });\n return reconcileReady;\n };\n\n return {\n async noteCommandResult(command, result) {\n if (closed || !result.ok) {\n return;\n }\n if (command.type === \"ticket.done\") {\n // A completed ticket may have unblocked parked work (ADR-063).\n doneSinceAssessment = true;\n }\n if (BOARD_MUTATING_COMMANDS.has(command.type)) {\n const ticket = readBoardMutationTicket(result);\n if (ticket) {\n rememberBoardMutation(ticket);\n }\n void ensureReconcile(`accepted ${command.type}`);\n }\n },\n ensureReconcile,\n hasActiveDrone(ticketId) {\n return droneRuns.has(ticketId);\n },\n async abortTicketDrone(ticketId) {\n const run = droneRuns.get(ticketId);\n if (!run) {\n return true;\n }\n run.abortRequested = true;\n if (run.launch?.execution) {\n void run.launch.execution.stop(\"ticket archived\");\n }\n await run.terminal;\n return !droneRuns.has(ticketId);\n },\n async close() {\n closed = true;\n const completions: Array<Promise<AgentWorkTerminalOutcome>> = [];\n for (const run of droneRuns.values()) {\n if (run.launch?.execution) {\n completions.push(run.launch.execution.stop(\"scheduler closed\"));\n }\n }\n for (const run of assessmentRuns.values()) {\n if (run.launch?.execution) {\n completions.push(run.launch.execution.stop(\"scheduler closed\"));\n }\n }\n await Promise.all(completions);\n await reconcileLoop;\n },\n };\n}\n\n/**\n * Create the production board client backed by the Edge Worker.\n *\n * @param input - Environment, Org identity, and diagnostics.\n * @returns Board client whose failed reads report undefined, never empty.\n */\nfunction createEdgeBoardClient(input: {\n env: NodeJS.ProcessEnv;\n orgId: string;\n log(message: string): void;\n}): SchedulerBoardClient {\n const runBoardCommand = async (\n type: string,\n payload: unknown\n ): Promise<AgentCommandResult | undefined> => {\n try {\n return await executeTicketCommand(\n {\n orgId: input.orgId,\n },\n { id: randomUUID(), type, payload },\n input.env\n );\n } catch (error) {\n input.log(`${type} failed: ${errorMessage(error)}`);\n return undefined;\n }\n };\n return {\n async list(status) {\n const result = await runBoardCommand(\"ticket.list\", { status });\n if (!result) {\n return undefined;\n }\n if (!result.ok || !isRecord(result.payload) || !Array.isArray(result.payload.tickets)) {\n if (!result.ok) {\n input.log(`ticket.list ${status} failed: ${result.error.message}`);\n }\n return undefined;\n }\n const tickets: TicketBoardProjection[] = [];\n for (const candidate of result.payload.tickets) {\n const parsed = ticketBoardProjectionSchema.safeParse(candidate);\n if (!parsed.success) {\n // Schema drift must be loud, not an invisible empty board (ADR-042).\n input.log(`ticket.list ${status} returned an unparseable ticket row; treating the read as failed`);\n return undefined;\n }\n tickets.push(parsed.data);\n }\n return tickets;\n },\n async get(ticketId) {\n const result = await runBoardCommand(\"ticket.get\", ticketId);\n if (!result) {\n return undefined;\n }\n if (!result.ok) {\n if (result.error.code === \"ticket_not_found\") {\n return null;\n }\n input.log(`ticket.get ${ticketId} failed: ${result.error.message}`);\n return undefined;\n }\n const parsed = ticketStateSchema.safeParse(\n isRecord(result.payload) ? result.payload.ticket : undefined,\n );\n if (!parsed.success) {\n input.log(`ticket.get ${ticketId} returned an unparseable ticket; treating the read as failed`);\n return undefined;\n }\n return parsed.data;\n },\n async transition({ type, ticketId, agentId, summary }) {\n try {\n // Orchestrator authority is asserted here and only here: the agent\n // command executor never grants it to a spawned process (ADR-062).\n return await executeTicketCommand(\n { orgId: input.orgId, agentId, authority: \"orchestrator\" },\n { id: randomUUID(), type, payload: { ticketId, summary } },\n input.env,\n );\n } catch (error) {\n input.log(`${type} failed: ${errorMessage(error)}`);\n return undefined;\n }\n },\n };\n}\n\n/**\n * Describe one run's terminal cause for a mechanical handoff host receipt.\n *\n * @param cause - Cause recorded at terminal, absent after a restart.\n * @returns Human-readable outcome fragment.\n */\nfunction describeTerminalCause(cause: AgentWorkTerminalCause | undefined): string {\n switch (cause) {\n case \"settled\":\n return \"the agent finished its run\";\n case \"inactivity_timeout\":\n return \"the run was ended after prolonged inactivity\";\n case \"process_exit\":\n return \"the agent process exited before settling\";\n case \"cancelled\":\n return \"the run was cancelled\";\n case \"stopped\":\n return \"the run was stopped by the orchestrator\";\n case \"prompt_rejected\":\n case \"steer_rejected\":\n return \"the agent rejected its instructions\";\n case \"spawn_error\":\n case \"write_error\":\n return \"the agent process failed\";\n case undefined:\n return \"outcome unknown after an orchestrator restart\";\n default:\n return String(cause);\n }\n}\n\n/**\n * Format one error for scheduler diagnostics.\n *\n * @param error - Thrown value.\n * @returns Human-readable message.\n */\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/**\n * Parse the complete authoritative ticket returned by a board mutation.\n *\n * @param result - Successful Edge command result.\n * @returns Validated ticket state, or `undefined` on response-contract drift.\n */\nfunction readBoardMutationTicket(result: AgentCommandResult): TicketState | undefined {\n if (!result.ok || !isRecord(result.payload)) {\n return undefined;\n }\n const parsed = ticketStateSchema.safeParse(result.payload.ticket);\n return parsed.success ? parsed.data : undefined;\n}\n", "import { jsonValueSchema } from \"@liy/mote-core\";\n\nconst CONNECTOR_METHODS = [\"GET\", \"HEAD\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"] as const;\nconst CONNECTOR_ALIAS_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;\nconst MAX_CONNECTOR_PATH_BYTES = 8 * 1_024;\n\n/** HTTP methods accepted by the protected provider channel. */\nexport type ConnectorMethod = typeof CONNECTOR_METHODS[number];\n\n/** Identity-free provider invocation accepted from one run socket. */\nexport interface ConnectorInvocation {\n /** Stable provider kind, never an origin or credential id. */\n alias: string;\n /** Closed HTTP method forwarded by the Gateway. */\n method: ConnectorMethod;\n /** Provider-relative path and optional query string. */\n path: string;\n /** Optional bounded JSON body. */\n body?: unknown;\n}\n\n/** Streaming provider response delivered to the calling agent process. */\nexport interface ConnectorStreamResponse {\n /** Whether the upstream provider returned a successful HTTP status. */\n ok: boolean;\n /** Exact upstream provider HTTP status. */\n status: number;\n /** Validated provider media type when the upstream response declares one. */\n contentType?: \"application/json\" | \"text/plain\" | \"text/event-stream\";\n /** Single-consumer provider body; an empty response is an immediately closed stream. */\n body: ReadableStream<Uint8Array>;\n}\n\n/** JSON-RPC request or notification accepted by the Mote MCP bridge. */\nexport type McpJsonRpcPayload = Record<string, unknown>;\n\n/**\n * Validate one logical provider request without accepting routing or headers.\n *\n * @param value - Candidate request from the agent CLI or run socket.\n * @returns Canonical identity-free provider invocation.\n */\nexport function readConnectorInvocation(value: unknown): ConnectorInvocation {\n if (!isRecord(value)\n || Object.keys(value).some((key) => ![\"alias\", \"method\", \"path\", \"body\"].includes(key))\n || !isConnectorAlias(value.alias)\n || !isConnectorMethod(value.method)\n || !isConnectorPath(value.path)\n || (\"body\" in value && !jsonValueSchema.safeParse(value.body).success)\n || ((value.method === \"GET\" || value.method === \"HEAD\") && \"body\" in value)) {\n throw new Error(\"invalid connector request\");\n }\n return {\n alias: value.alias,\n method: value.method,\n path: value.path,\n ...(Object.hasOwn(value, \"body\") ? { body: value.body } : {}),\n };\n}\n\n/**\n * Check one modern JSON-RPC client request or notification.\n *\n * @param value - Candidate client-to-server MCP payload.\n * @returns Whether the value has the minimal single-message JSON-RPC shape.\n */\nexport function isMcpJsonRpcClientPayload(\n value: unknown,\n): value is McpJsonRpcPayload {\n if (!isRecord(value)\n || value.jsonrpc !== \"2.0\"\n || typeof value.method !== \"string\"\n || value.method.length === 0) return false;\n if (\"id\" in value\n && typeof value.id !== \"string\"\n && typeof value.id !== \"number\") return false;\n return !(\"params\" in value) || isRecord(value.params);\n}\n\n/** Check one stable connector alias. */\nfunction isConnectorAlias(value: unknown): value is string {\n return typeof value === \"string\"\n && value.length >= 1\n && value.length <= 100\n && CONNECTOR_ALIAS_PATTERN.test(value);\n}\n\n/** Check one closed connector method. */\nfunction isConnectorMethod(value: unknown): value is ConnectorMethod {\n return typeof value === \"string\"\n && (CONNECTOR_METHODS as readonly string[]).includes(value);\n}\n\n/** Reject absolute, fragmented, control-character, or traversing paths. */\nfunction isConnectorPath(value: unknown): value is string {\n if (typeof value !== \"string\"\n || !value.startsWith(\"/\")\n || value.startsWith(\"//\")\n || value.includes(\"#\")\n || /[\\u0000-\\u001f\\\\]/u.test(value)\n || Buffer.byteLength(value, \"utf8\") > MAX_CONNECTOR_PATH_BYTES) return false;\n const rawPath = value.split(\"?\", 1)[0] ?? \"\";\n return rawPath.split(\"/\").slice(1).every(isConfinedPathSegment);\n}\n\n/** Decode repeatedly so encoded traversal and separators cannot pass. */\nfunction isConfinedPathSegment(rawSegment: string): boolean {\n let decoded = rawSegment;\n for (let pass = 0; pass < 8; pass += 1) {\n try {\n const next = decodeURIComponent(decoded);\n if (next === decoded) {\n return decoded !== \".\"\n && decoded !== \"..\"\n && !decoded.includes(\"/\")\n && !decoded.includes(\"\\\\\")\n && !decoded.includes(\"\\0\");\n }\n decoded = next;\n } catch {\n return false;\n }\n }\n return false;\n}\n\n/** Narrow an unknown value to a non-array object. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n", "import {\n createSandboxRequestHmacHeaders,\n sandboxInvocationEnvelopeSchema,\n type SandboxAgentAuthority,\n} from \"@liy/mote-core\";\n\nimport type {\n ConnectorInvocation,\n ConnectorStreamResponse,\n} from \"./run-invocation.js\";\nimport {\n isMcpJsonRpcClientPayload,\n type McpJsonRpcPayload,\n} from \"./run-invocation.js\";\n\nconst INVOKE_PATH = \"/internal/sandbox/invoke\";\nconst MAX_RESPONSE_BYTES = 8 * 1_024 * 1_024;\n\n/** Fixed deployment and sandbox identity for one orchestrator service. */\nexport interface CreateSandboxGatewayForwarderInput {\n /** Public Credential Gateway origin; no caller may replace it. */\n gatewayOrigin: string;\n /** Concrete sandbox identity installed by provisioning. */\n sandboxInstanceId: string;\n /** HKDF-derived request credential installed only in the orchestrator. */\n sandboxRequestSecret: string;\n /** Fetch seam overridden only by transport tests. */\n fetchRequest?: typeof fetch;\n}\n\n/** Unified credential-free agent egress path for Mote MCP and provider connectors. */\nexport interface SandboxGatewayForwarder {\n /** Forward one MCP JSON-RPC message with launch authority authenticated by HMAC. */\n forwardMcp(\n authority: SandboxAgentAuthority,\n payload: McpJsonRpcPayload,\n ): Promise<McpJsonRpcPayload | undefined>;\n /** Open one single-consumer provider response without buffering its body. */\n streamConnector(\n authority: SandboxAgentAuthority,\n invocation: ConnectorInvocation,\n signal?: AbortSignal,\n ): Promise<ConnectorStreamResponse>;\n}\n\n/**\n * Build one fixed-origin HMAC forwarder for the sandbox orchestrator.\n *\n * @param input - Deployment origin, derived credential, and immutable sandbox id.\n * @returns MCP and provider forwarding operations sharing one trust boundary.\n */\nexport function createSandboxGatewayForwarder(\n input: CreateSandboxGatewayForwarderInput,\n): SandboxGatewayForwarder {\n const url = new URL(INVOKE_PATH, requireOrigin(input.gatewayOrigin));\n const fetchRequest = input.fetchRequest ?? fetch;\n\n const send = async (\n authority: SandboxAgentAuthority,\n operation: unknown,\n signal?: AbortSignal,\n ): Promise<Response> => {\n const envelope = sandboxInvocationEnvelopeSchema.parse({\n version: 1,\n sandboxInstanceId: input.sandboxInstanceId,\n authority,\n operation,\n });\n const body = JSON.stringify(envelope);\n const response = await fetchRequest(new Request(url, {\n method: \"POST\",\n redirect: \"error\",\n headers: {\n \"content-type\": \"application/json\",\n ...await createSandboxRequestHmacHeaders({\n method: \"POST\",\n url,\n body,\n secret: input.sandboxRequestSecret,\n }),\n },\n body,\n signal: signal\n ? AbortSignal.any([signal, AbortSignal.timeout(10 * 60 * 1_000)])\n : AbortSignal.timeout(10 * 60 * 1_000),\n }));\n if (!response.ok) {\n await response.body?.cancel().catch(() => undefined);\n throw new Error(`Credential Gateway rejected sandbox invocation (status ${response.status})`);\n }\n const length = Number(response.headers.get(\"content-length\"));\n if (Number.isFinite(length) && length > MAX_RESPONSE_BYTES) {\n await response.body?.cancel().catch(() => undefined);\n throw new Error(\"Credential Gateway response exceeded the agent channel limit\");\n }\n return response;\n };\n\n return {\n async forwardMcp(authority, payload) {\n if (!isMcpJsonRpcClientPayload(payload)) throw new Error(\"invalid MCP payload\");\n const response = await send(authority, {\n kind: \"mcp\",\n server: \"mote\",\n orgCode: authority.orgCode,\n payload,\n });\n if (response.status === 202 || response.status === 204) return undefined;\n const result: unknown = await response.json();\n if (!isMcpResponsePayload(result)) {\n throw new Error(\"Credential Gateway returned invalid MCP JSON-RPC\");\n }\n return result;\n },\n streamConnector(authority, invocation, signal) {\n return openConnectorResponse(send, authority, invocation, signal);\n },\n };\n}\n\n/** Send one logical provider request and validate Gateway-owned response metadata. */\nasync function openConnectorResponse(\n send: (authority: SandboxAgentAuthority, operation: unknown, signal?: AbortSignal) => Promise<Response>,\n authority: SandboxAgentAuthority,\n invocation: ConnectorInvocation,\n signal?: AbortSignal,\n): Promise<ConnectorStreamResponse> {\n const response = await send(authority, {\n kind: \"connector\",\n orgCode: authority.orgCode,\n ...invocation,\n }, signal);\n const status = Number(response.headers.get(\"x-mote-upstream-status\"));\n const okHeader = response.headers.get(\"x-mote-upstream-ok\");\n const mediaType = response.headers.get(\"content-type\")\n ?.split(\";\", 1)[0]\n ?.trim()\n .toLowerCase();\n if (!Number.isInteger(status)\n || status < 100\n || status > 599\n || (okHeader !== \"true\" && okHeader !== \"false\")\n || (mediaType !== undefined\n && mediaType !== \"application/json\"\n && mediaType !== \"text/plain\"\n && mediaType !== \"text/event-stream\")) {\n await response.body?.cancel().catch(() => undefined);\n throw new Error(\"Credential Gateway returned invalid provider metadata\");\n }\n return {\n ok: okHeader === \"true\",\n status,\n ...(mediaType ? { contentType: mediaType } : {}),\n body: response.body ?? createEmptyBody(),\n };\n}\n\n/** Create the body representation for a valid empty provider response. */\nfunction createEmptyBody(): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({ start(controller) { controller.close(); } });\n}\n\n/** Accept one JSON-RPC response object from the strict modern MCP bridge. */\nfunction isMcpResponsePayload(value: unknown): value is McpJsonRpcPayload {\n return value !== null\n && typeof value === \"object\"\n && !Array.isArray(value)\n && Reflect.get(value, \"jsonrpc\") === \"2.0\"\n && (Reflect.has(value, \"result\") || Reflect.has(value, \"error\"));\n}\n\n/** Validate a fixed path-free HTTP(S) deployment origin. */\nfunction requireOrigin(value: string): string {\n const url = new URL(value);\n if (\n (url.protocol !== \"https:\" && url.protocol !== \"http:\")\n || url.username\n || url.password\n || url.pathname !== \"/\"\n || url.search\n || url.hash\n ) throw new Error(\"gatewayOrigin must be a path-free HTTP(S) origin\");\n return url.origin;\n}\n", "import type { Writable } from \"node:stream\";\nimport {\n appendSandboxEdgeHmacQuery, encodeTimelineFrame, isTimelineUpdate,\n type TimelineRecord, type TimelineScope,\n} from \"@liy/mote-core\";\nimport { EDGE_PRODUCER_RECONNECT_MS, resolveEdgeOrigin } from \"../shared/config.js\";\n\n/** One publisher for both independently authorized timeline scopes. */\nexport interface EdgeTimelineProducer {\n /** @param scope - Destination DO. @param record - Stable, lossless producer record. */\n publish(scope: TimelineScope, record: TimelineRecord): void;\n /** @param scope - Destination. @param timeoutMs - Finite wait; timeout rejects without discarding records. */\n waitForDrain(scope: TimelineScope, timeoutMs: number): Promise<void>;\n /** Close after pending records are accepted; retries continue until then. @param scope - Destination. */\n closeScope(scope: TimelineScope): void;\n /** Shut down all connections; reports any records still awaiting acceptance. */\n close(): void;\n}\n\ninterface ProducerState {\n scope: TimelineScope;\n socket: WebSocket | undefined;\n opening: boolean;\n closing: boolean;\n retry: ReturnType<typeof setTimeout> | undefined;\n pending: Map<string, TimelineRecord>;\n active: Map<string, TimelineRecord>;\n waiters: Set<() => void>;\n}\n\n/**\n * Connect sandbox timelines to their owning DO, retaining durable retries and\n * only the latest accumulated update per active message in process memory.\n * @param input - Sandbox configuration, HMAC secret, and diagnostic sink.\n * @returns Shared scoped publisher. No endpoint means a local-only runtime.\n */\nexport function createEdgeTimelineProducer(input: {\n env: NodeJS.ProcessEnv; stderr: Writable; sandboxEdgeSecret: string;\n}): EdgeTimelineProducer {\n const origin = resolveEdgeOrigin(input.env);\n const states = new Map<string, ProducerState>();\n const key = (scope: TimelineScope): string => `${scope.orgId}:${scope.kind}:${scope.id}`;\n const log = (message: string): void => { input.stderr.write(`[sandbox-orchestrator] ${message}\\n`); };\n\n const dispose = (state: ProducerState): void => {\n states.delete(key(state.scope));\n if (state.retry) clearTimeout(state.retry);\n state.socket?.close(1000, \"timeline drained\");\n state.socket = undefined;\n };\n const accepted = (state: ProducerState): void => {\n if (state.pending.size) return;\n for (const waiter of state.waiters) waiter();\n if (state.closing) dispose(state);\n };\n const retry = (state: ProducerState): void => {\n if (states.get(key(state.scope)) !== state || state.retry) return;\n state.retry = setTimeout(() => {\n state.retry = undefined;\n open(state);\n }, EDGE_PRODUCER_RECONNECT_MS);\n state.retry.unref();\n };\n const send = (state: ProducerState, record: TimelineRecord): void => {\n if (state.socket?.readyState !== 1) return;\n try {\n for (const frame of encodeTimelineFrame({ type: \"timeline.append\", record })) state.socket.send(frame);\n } catch (error) {\n log(`timeline send failed for ${key(state.scope)}: ${String(error)}`);\n state.socket?.close();\n }\n };\n const open = (state: ProducerState): void => {\n if (!origin || state.opening || (state.socket && state.socket.readyState < 2)) return;\n state.opening = true;\n const { scope } = state;\n const path = scope.kind === \"channel\"\n ? `/edge/producer/channels/${encodeURIComponent(scope.id)}/ws`\n : `/edge/producer/orgs/${encodeURIComponent(scope.orgId)}/tickets/${encodeURIComponent(scope.id)}/ws`;\n const url = new URL(path, origin);\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n void appendSandboxEdgeHmacQuery(url, { method: \"GET\", body: \"\", secret: input.sandboxEdgeSecret })\n .then(() => {\n if (states.get(key(scope)) !== state) return;\n const socket = new WebSocket(url.toString());\n state.socket = socket;\n socket.addEventListener(\"open\", () => {\n for (const record of state.pending.values()) send(state, record);\n for (const record of state.active.values()) send(state, record);\n });\n socket.addEventListener(\"message\", (event) => {\n try {\n const frame = JSON.parse(String(event.data)) as Record<string, unknown>;\n if (frame.type === \"timeline.ack\" && typeof frame.producerEventId === \"string\") {\n state.pending.delete(frame.producerEventId);\n accepted(state);\n } else if (frame.type === \"timeline.error\") {\n // A rejection never masquerades as successful durable delivery.\n log(`timeline rejected for ${key(scope)}: ${String(frame.error)}`);\n socket.close(1011, \"timeline append rejected\");\n }\n } catch (error) { log(`invalid timeline acknowledgement: ${String(error)}`); }\n });\n socket.addEventListener(\"close\", () => {\n if (state.socket !== socket) return;\n state.socket = undefined;\n if (!state.closing || state.pending.size) retry(state);\n else dispose(state);\n });\n socket.addEventListener(\"error\", () => { socket.close(); });\n })\n .catch((error: unknown) => {\n log(`timeline connection failed: ${String(error)}`);\n retry(state);\n })\n .finally(() => { state.opening = false; });\n };\n\n return {\n publish(scope, record) {\n if (!origin) return;\n let state = states.get(key(scope));\n if (!state) {\n state = { scope, socket: undefined, opening: false, closing: false, retry: undefined,\n pending: new Map(), active: new Map(), waiters: new Set() };\n states.set(key(scope), state);\n }\n state.closing = false;\n // Clone at acceptance: Pi partial objects may be mutated by a later update.\n const retained = structuredClone(record);\n if (isTimelineUpdate(record)) state.active.set(record.id, retained);\n else {\n state.active.delete(record.id);\n state.pending.set(record.producerEventId, retained);\n if (record.payload.type === \"runtime.process_exited\") {\n for (const [id, active] of state.active) {\n if (active.agentId === record.agentId && active.executionId === record.executionId) state.active.delete(id);\n }\n }\n }\n open(state);\n send(state, retained);\n },\n waitForDrain(scope, timeoutMs) {\n const state = states.get(key(scope));\n if (!state?.pending.size) return Promise.resolve();\n return new Promise((resolve, reject) => {\n const finish = (): void => { clearTimeout(timer); state.waiters.delete(finish); resolve(); };\n const timer = setTimeout(() => {\n state.waiters.delete(finish);\n reject(new Error(`Timeline acceptance timed out for ${key(scope)}; records remain queued`));\n }, timeoutMs);\n timer.unref();\n state.waiters.add(finish);\n });\n },\n closeScope(scope) {\n const state = states.get(key(scope));\n if (state) { state.closing = true; accepted(state); }\n },\n close() {\n for (const state of states.values()) {\n if (state.pending.size) log(`shutdown with ${state.pending.size} unaccepted timeline records for ${key(state.scope)}`);\n dispose(state);\n }\n },\n };\n}\n", "import type { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport { MAX_HTTP_BODY_BYTES } from \"../shared/config.js\";\nimport { parseJsonObject } from \"../shared/json.js\";\n\n/** Controlled request failure for payloads that exceed a public byte boundary. */\nexport class PayloadTooLargeError extends Error {\n /**\n * Create one HTTP 413 failure.\n *\n * @param message - Safe explanation returned to the caller.\n */\n constructor(message: string) {\n super(message);\n this.name = \"PayloadTooLargeError\";\n }\n}\n\n/**\n * Read and parse a bounded JSON request body.\n *\n * @param request - Incoming HTTP request.\n * @param preloadedBody - Optional raw body already read for signature verification.\n * @returns Parsed object body.\n */\nexport async function readJsonBody(\n request: IncomingMessage,\n preloadedBody?: string\n): Promise<Record<string, unknown>> {\n const body = preloadedBody ?? (await readRequestBody(request));\n return parseJsonObject(body);\n}\n\n/**\n * Read a bounded raw request body exactly once.\n *\n * @param request - Incoming HTTP request.\n * @returns Raw UTF-8 request body.\n */\nexport async function readRequestBody(\n request: IncomingMessage\n): Promise<string> {\n let body = \"\";\n for await (const chunk of request) {\n body += Buffer.isBuffer(chunk) ? chunk.toString(\"utf8\") : String(chunk);\n if (Buffer.byteLength(body) > MAX_HTTP_BODY_BYTES) {\n throw new PayloadTooLargeError(\"Request body exceeds the 1 MiB limit.\");\n }\n }\n return body;\n}\n\n/**\n * Write a JSON response if the connection is still open.\n *\n * @param response - HTTP response stream.\n * @param status - HTTP status code.\n * @param body - JSON-serializable response body.\n */\nexport function writeJson(\n response: ServerResponse,\n status: number,\n body: unknown\n): void {\n if (response.headersSent || response.destroyed) {\n return;\n }\n response.writeHead(status, { \"Content-Type\": \"application/json\" });\n response.end(JSON.stringify(body));\n}\n\n/**\n * Classify parser and schema errors as client request failures.\n *\n * @param error - Unknown route handler error.\n * @returns Whether the request should receive HTTP 400.\n */\nexport function isBadRequestError(error: unknown): boolean {\n return (\n error instanceof SyntaxError ||\n (error instanceof Error &&\n error.name.includes(\"ZodError\"))\n );\n}\n", "import type { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport {\n CHANNEL_MESSAGE_TOO_LARGE_MESSAGE,\n channelControlCommandSchema,\n EdgeHmacMemoryNonceStore,\n MAX_CHANNEL_MESSAGE_BYTES,\n readSandboxEdgeHmacFields,\n verifySandboxEdgeHmac,\n type ChannelControlCommand,\n} from \"@liy/mote-core\";\n\nimport type { ChannelHandler } from \"../agent/channel-handler.js\";\nimport {\n parseEnsureAgentRequest,\n type EnsureAgentRequest,\n} from \"../agent-ensure.js\";\nimport { deleteAppWorkspace } from \"../scheduler/ticket-workspace.js\";\nimport { isRecord } from \"../shared/json.js\";\nimport {\n PayloadTooLargeError,\n readJsonBody,\n readRequestBody,\n writeJson,\n} from \"./http-helpers.js\";\n\nconst edgeHmacNonceStore = new EdgeHmacMemoryNonceStore();\n\n/**\n * Route one sandbox-edge request for external channel control (ADR-060).\n *\n * @param input - HTTP request, response, channel handler, and edge secret.\n */\nexport async function handlePublicHttpRequest(input: {\n request: IncomingMessage;\n response: ServerResponse;\n channelHandler: ChannelHandler;\n env: NodeJS.ProcessEnv;\n sandboxEdgeSecret: string;\n /** Board watchdog nudge: request one reconcile pass (ADR-042 4.5). */\n noteBoardNudge(): void;\n /** Abort one archived ticket's live Drone and wait for its execution to terminate. */\n abortTicketDrone(ticketId: string): Promise<boolean>;\n /** Materialize one API-authored agent profile and stable directory. */\n ensureAgent(request: EnsureAgentRequest): Promise<void>;\n}): Promise<void> {\n const url = new URL(\n input.request.url ?? \"/\",\n \"http://sandbox-orchestrator.local\"\n );\n const path = url.pathname;\n if (input.request.method === \"GET\" && path === \"/health\") {\n writeJson(input.response, 200, { ok: true, runtimeVersion: input.env.MOTE_SANDBOX_SERVICES_VERSION });\n return;\n }\n\n const verifiedBody = shouldReadBodyForHmac(input.request.method)\n ? await readRequestBody(input.request)\n : \"\";\n if (\n !(await hasValidSandboxEdgeHmac(\n input.request,\n url,\n input.sandboxEdgeSecret,\n verifiedBody\n ))\n ) {\n writeJson(input.response, 401, {\n ok: false,\n error: {\n code: \"unauthorized\",\n message: \"valid edge HMAC signature is required\",\n },\n });\n return;\n }\n\n const appMatch = path.match(/^\\/apps\\/([^/]+)$/u);\n if (input.request.method === \"DELETE\" && appMatch) {\n const appId = decodeURIComponent(appMatch[1] ?? \"\");\n await deleteAppWorkspace({ env: input.env, appId });\n writeJson(input.response, 200, { ok: true, appId });\n return;\n }\n\n const agentProfileMatch = path.match(/^\\/agents\\/([^/]+)\\/profile$/u);\n if (input.request.method === \"PUT\" && agentProfileMatch) {\n const body = await readJsonBody(input.request, verifiedBody);\n const parsed = parseEnsureAgentRequest({\n ...body,\n agentId: decodeURIComponent(agentProfileMatch[1] ?? \"\"),\n });\n if (!parsed) {\n writeJson(input.response, 400, {\n ok: false,\n error: {\n code: \"invalid_agent_profile_request\",\n message: \"agent profile update requires a trusted owner and complete profile\",\n },\n });\n return;\n }\n await input.ensureAgent(parsed);\n writeJson(input.response, 200, {\n ok: true,\n userId: parsed.userId,\n agentId: parsed.agentId,\n });\n return;\n }\n\n if (input.request.method === \"POST\" && path === \"/board/nudge\") {\n // The wake itself already happened (this request reached the sandbox);\n // the handler only needs to hand the hint to the scheduler.\n input.noteBoardNudge();\n writeJson(input.response, 202, { ok: true });\n return;\n }\n\n const abortDroneMatch = path.match(/^\\/tickets\\/([^/]+)\\/drone\\/abort$/u);\n if (input.request.method === \"POST\" && abortDroneMatch) {\n const ticketId = decodeURIComponent(abortDroneMatch[1] ?? \"\");\n const aborted = await input.abortTicketDrone(ticketId);\n writeJson(input.response, aborted ? 200 : 503, aborted\n ? { ok: true, ticketId }\n : { ok: false, error: { code: \"ticket_drone_abort_failed\", message: \"ticket Drone is still live\" } });\n return;\n }\n\n const channelCommandType = input.request.method === \"POST\"\n ? path === \"/channels/deliveries\"\n ? \"channel.deliver\"\n : path === \"/channels/cancel\"\n ? \"channel.cancel\"\n : path === \"/channels/inspect\"\n ? \"channel.inspect\"\n : path === \"/channels/archive\"\n ? \"channel.archive\"\n : undefined\n : undefined;\n if (channelCommandType) {\n const body = await readJsonBody(input.request, verifiedBody);\n assertChannelMessageSize(body);\n const command = channelControlCommandSchema.parse({\n ...body,\n type: channelCommandType,\n }) as ChannelControlCommand;\n const state = await input.channelHandler.handleCommand(command);\n writeJson(input.response, 202, {\n ok: true,\n channelId: command.channelId,\n ...(state ? { state } : {}),\n });\n return;\n }\n\n writeJson(input.response, 404, {\n ok: false,\n error: { code: \"not_found\", message: \"route not found\" },\n });\n}\n\n/**\n * Reject a delivered message that exceeds the shared UTF-8 byte limit.\n *\n * @param body - Parsed channel control command body.\n */\nfunction assertChannelMessageSize(body: Record<string, unknown>): void {\n if (!Array.isArray(body.messages)) {\n return;\n }\n for (const message of body.messages) {\n if (\n isRecord(message)\n && typeof message.body === \"string\"\n && Buffer.byteLength(message.body, \"utf8\") > MAX_CHANNEL_MESSAGE_BYTES\n ) {\n throw new PayloadTooLargeError(CHANNEL_MESSAGE_TOO_LARGE_MESSAGE);\n }\n }\n}\n\n/**\n * Verify one sandbox-edge HMAC signature on a public orchestrator request.\n *\n * @param request - Incoming public HTTP request.\n * @param url - Parsed request URL.\n * @param secret - Per-sandbox sandbox-edge secret.\n * @param body - Exact raw request body used for the hash.\n * @returns Whether the signature is fresh, non-replayed, and valid.\n */\nasync function hasValidSandboxEdgeHmac(\n request: IncomingMessage,\n url: URL,\n secret: string,\n body: string\n): Promise<boolean> {\n const fields = readSandboxEdgeHmacFields({\n get(name) {\n const headerValue = request.headers[name];\n return typeof headerValue === \"string\"\n ? headerValue\n : url.searchParams.get(name);\n },\n });\n return verifySandboxEdgeHmac({\n method: request.method ?? \"GET\",\n url,\n body,\n secret,\n fields,\n nonceStore: edgeHmacNonceStore,\n });\n}\n\n/**\n * Determine whether a request method can carry an HMAC-covered body.\n *\n * @param method - Incoming HTTP method.\n * @returns Whether the request body should be consumed before route handling.\n */\nfunction shouldReadBodyForHmac(method: string | undefined): boolean {\n return method !== \"GET\" && method !== \"HEAD\";\n}\n", "import { randomUUID } from \"node:crypto\";\nimport {\n chmod,\n chown,\n mkdir,\n rm,\n symlink,\n unlink,\n} from \"node:fs/promises\";\nimport { createServer, type Server, type Socket } from \"node:net\";\nimport { join } from \"node:path\";\n\nimport { parseAgentCommand } from \"../commands/command-parser.js\";\nimport type { AgentCommand, AgentCommandResult } from \"../commands/types.js\";\nimport {\n readConnectorInvocation,\n type ConnectorInvocation,\n type ConnectorStreamResponse,\n isMcpJsonRpcClientPayload,\n type McpJsonRpcPayload,\n} from \"../run-invocation.js\";\nimport type { AgentLaunch } from \"../shared/types.js\";\n\nconst MAX_REQUEST_BYTES = 1024 * 1024;\nconst MAX_RESPONSE_BYTES = 8 * 1024 * 1024;\n/** Short root for portable-host socket binding below OS path-length limits. */\nconst PORTABLE_SOCKET_ROOT = \"/tmp\";\n\n/** One live stable socket bound at an agent's `agent.sock` path. */\ninterface AgentSocket {\n /** Immutable agent id every connection on this socket is scoped to. */\n agentId: string;\n /** Stable canonical socket path under the agent directory. */\n socketPath: string;\n /** Concrete bound path; differs from {@link socketPath} on portable hosts. */\n boundPath: string;\n /** Portable-host bind directory removed on close. */\n portableDir?: string;\n server: Server;\n sockets: Set<Socket>;\n active: boolean;\n}\n\n/** Inputs identifying one stable agent socket. */\nexport interface EnsureAgentSocketInput {\n /** Immutable agent id owning the socket. */\n agentId: string;\n /** Stable `agent.sock` path inside the agent directory. */\n socketPath: string;\n /** Stable agent GID under production isolation; grants connect access. */\n agentGid?: number;\n}\n\n/** Creates and owns every stable per-agent command socket. */\nexport interface AgentCommandChannelManager {\n /**\n * Bind one agent's stable socket lazily, removing any stale socket file.\n *\n * @remarks\n * The socket path is stable but the socket file exists only while the\n * orchestrator is listening (ADR-061 \u00A73). Repeated calls for a live socket\n * are no-ops; after a restart the same path is unlinked and rebound.\n *\n * @param input - Agent identity, stable path, and isolation group.\n */\n ensureAgentSocket(input: EnsureAgentSocketInput): Promise<void>;\n /** Close every socket owned by this orchestrator process. */\n close(): Promise<void>;\n}\n\n/** Trusted operations reachable through the stable agent sockets. */\nexport interface CreateAgentCommandChannelManagerInput {\n /**\n * Resolve one connecting process's trusted launch context.\n *\n * @remarks\n * The stable socket authenticates only the `(ownerUserId, agentId)` pair\n * through its filesystem group. The frame's private launch id \u2014 injected\n * only into the matching process environment \u2014 selects the concrete launch;\n * an unknown or mismatched launch is rejected.\n */\n resolveLaunch(launchId: string): AgentLaunch | undefined;\n /** Execute one validated local command as the resolved launch. */\n execute(launch: AgentLaunch, command: AgentCommand): Promise<AgentCommandResult>;\n /** Forward one validated Mote MCP payload. */\n forwardMcp?(\n launch: AgentLaunch,\n serverAlias: \"mote\",\n payload: McpJsonRpcPayload,\n ): Promise<McpJsonRpcPayload | undefined>;\n /** Stream one validated provider invocation to the calling agent process. */\n streamConnector?(\n launch: AgentLaunch,\n invocation: ConnectorInvocation,\n signal: AbortSignal,\n ): Promise<ConnectorStreamResponse>;\n}\n\n/**\n * Create the stable per-agent socket manager for one orchestrator process.\n *\n * @param input - Launch resolution and trusted operation callbacks.\n * @returns Empty manager ready to bind agent sockets lazily.\n */\nexport function createAgentCommandChannelManager(\n input: CreateAgentCommandChannelManagerInput,\n): AgentCommandChannelManager {\n const sockets = new Map<string, AgentSocket>();\n\n const closeSocket = async (state: AgentSocket): Promise<void> => {\n if (!state.active) {\n return;\n }\n state.active = false;\n for (const socket of state.sockets) {\n socket.destroy();\n }\n await closeUnixServer(state.server).catch(() => undefined);\n await unlink(state.boundPath).catch(ignoreMissing);\n if (state.boundPath !== state.socketPath) {\n await unlink(state.socketPath).catch(ignoreMissing);\n }\n if (state.portableDir) {\n await rm(state.portableDir, { recursive: true, force: true });\n }\n if (sockets.get(state.agentId) === state) {\n sockets.delete(state.agentId);\n }\n };\n\n return {\n async ensureAgentSocket(request) {\n const existing = sockets.get(request.agentId);\n if (existing?.active) {\n if (existing.socketPath !== request.socketPath) {\n throw new Error(\"agent socket path changed for a live agent socket\");\n }\n return;\n }\n const state: AgentSocket = {\n agentId: request.agentId,\n socketPath: request.socketPath,\n boundPath: request.socketPath,\n server: createServer(),\n sockets: new Set(),\n active: true,\n };\n state.server.on(\"connection\", (socket) => {\n // The connection owns errors until close, including errors emitted after\n // a successful read or a rejected write callback. Parsers own only reads.\n const connection = new AbortController();\n socket.on(\"error\", (error) => {\n connection.abort(error);\n socket.destroy();\n });\n socket.once(\"close\", () => {\n connection.abort();\n state.sockets.delete(socket);\n });\n if (!state.active) {\n socket.destroy();\n return;\n }\n state.sockets.add(socket);\n void handleConnection(socket, state.agentId, input, connection.signal).catch(() => {\n writeFramedResult(socket, commandError(\"invalid_request\", \"agent command frame is invalid\"));\n });\n });\n await unlink(request.socketPath).catch(ignoreMissing);\n if (request.agentGid === undefined) {\n // Portable hosts: canonical paths can exceed the kernel socket-path\n // limit, so bind at a short private path and link the stable path.\n const portableDir = join(\n PORTABLE_SOCKET_ROOT,\n `mote-agent-sock-${randomUUID().slice(0, 8)}`,\n );\n await mkdir(portableDir, { recursive: true, mode: 0o700 });\n state.portableDir = portableDir;\n state.boundPath = join(portableDir, \"agent.sock\");\n try {\n await listenOnUnixSocket(state.server, state.boundPath);\n await symlink(state.boundPath, request.socketPath);\n } catch (error) {\n await closeSocket(state);\n throw error;\n }\n } else {\n try {\n await listenOnUnixSocket(state.server, request.socketPath);\n await chown(request.socketPath, 0, request.agentGid);\n await chmod(request.socketPath, 0o660);\n } catch (error) {\n await closeSocket(state);\n throw error;\n }\n }\n sockets.set(request.agentId, state);\n },\n async close() {\n await Promise.all([...sockets.values()].map((state) => closeSocket(state)));\n },\n };\n}\n\n/** Execute one direct length-prefixed request under the resolved launch. */\nasync function handleConnection(\n socket: Socket,\n agentId: string,\n input: CreateAgentCommandChannelManagerInput,\n signal: AbortSignal,\n): Promise<void> {\n const request = parseAgentRequest(await readFramedRequest(socket));\n if (!request.ok) {\n writeFramedResult(socket, request.result);\n return;\n }\n const launch = input.resolveLaunch(request.launchId);\n if (!launch || launch.sessionKey.agentId !== agentId || launch.stopping.signal.aborted) {\n writeFramedResult(\n socket,\n commandError(\"unknown_launch\", \"request does not belong to a live launch of this agent\"),\n );\n return;\n }\n if (request.operation === \"command\") {\n writeFramedResult(socket, await input.execute(launch, request.command));\n return;\n }\n if (request.operation === \"mcp\") {\n if (!input.forwardMcp) {\n writeFramedResult(socket, commandError(\"unsupported_operation\", \"MCP forwarding is unavailable\"));\n return;\n }\n try {\n writeFramedResult(socket, await input.forwardMcp(launch, request.serverAlias, request.payload));\n } catch {\n writeFramedResult(socket, commandError(\"mcp_forward_failed\", \"remote MCP request failed\"));\n }\n return;\n }\n if (!input.streamConnector) {\n writeFramedResult(socket, commandError(\"unsupported_operation\", \"streaming Connector access is unavailable\"));\n return;\n }\n await streamConnectorResponse(socket, launch, request.invocation, input.streamConnector, signal);\n}\n\n/** Read exactly one u32be-length-prefixed request. */\nfunction readFramedRequest(socket: Socket): Promise<Buffer> {\n return new Promise((resolve, reject) => {\n let buffered = Buffer.alloc(0);\n let bodyLength: number | undefined;\n const fail = (error: Error): void => {\n cleanup();\n reject(error);\n };\n const cleanup = (): void => {\n socket.off(\"data\", onData);\n socket.off(\"error\", onError);\n socket.off(\"end\", onEnd);\n };\n const onError = (error: Error): void => fail(error);\n const onEnd = (): void => fail(new Error(\"agent command frame ended early\"));\n const onData = (chunk: Buffer): void => {\n buffered = Buffer.concat([buffered, chunk]);\n if (bodyLength === undefined && buffered.length >= 4) {\n bodyLength = buffered.readUInt32BE(0);\n buffered = buffered.subarray(4);\n if (bodyLength < 1 || bodyLength > MAX_REQUEST_BYTES) {\n fail(new Error(\"agent command body length is invalid\"));\n return;\n }\n }\n if (bodyLength !== undefined && buffered.length > bodyLength) {\n fail(new Error(\"agent command frame contains trailing bytes\"));\n } else if (bodyLength !== undefined && buffered.length === bodyLength) {\n cleanup();\n resolve(buffered);\n }\n };\n socket.on(\"data\", onData);\n socket.once(\"error\", onError);\n socket.once(\"end\", onEnd);\n });\n}\n\n/** Parse the versioned operation envelope carrying the private launch id. */\nfunction parseAgentRequest(body: Buffer):\n | { ok: true; launchId: string; operation: \"command\"; command: AgentCommand }\n | { ok: true; launchId: string; operation: \"mcp\"; serverAlias: \"mote\"; payload: McpJsonRpcPayload }\n | { ok: true; launchId: string; operation: \"connector.stream\"; invocation: ConnectorInvocation }\n | { ok: false; result: AgentCommandResult } {\n let value: unknown;\n try { value = JSON.parse(body.toString(\"utf8\")); } catch {\n return { ok: false, result: commandError(\"invalid_request\", \"request must be JSON\") };\n }\n if (!isRecord(value) || value.version !== 1) {\n return { ok: false, result: commandError(\"invalid_request\", \"unsupported agent command request\") };\n }\n const launchId = value.launchId;\n if (typeof launchId !== \"string\" || !launchId.trim()) {\n return { ok: false, result: commandError(\"unknown_launch\", \"request carries no launch identity\") };\n }\n if (value.operation === \"command\") {\n if (Object.keys(value).every((key) => [\"version\", \"operation\", \"launchId\", \"command\"].includes(key)) && isRecord(value.command)) {\n const parsed = parseAgentCommand(value.command);\n return parsed.ok\n ? { ok: true, launchId, operation: \"command\", command: parsed.command }\n : parsed;\n }\n } else if (value.operation === \"mcp\") {\n if (Object.keys(value).every((key) => [\"version\", \"operation\", \"launchId\", \"server\", \"payload\"].includes(key))\n && value.server === \"mote\" && isMcpJsonRpcClientPayload(value.payload)) {\n return { ok: true, launchId, operation: \"mcp\", serverAlias: \"mote\", payload: value.payload };\n }\n } else if (value.operation === \"connector.stream\") {\n if (Object.keys(value).every((key) => [\"version\", \"operation\", \"launchId\", \"alias\", \"method\", \"path\", \"body\"].includes(key))) {\n try {\n return { ok: true, launchId, operation: \"connector.stream\", invocation: readConnectorInvocation({\n alias: value.alias,\n method: value.method,\n path: value.path,\n ...(Object.hasOwn(value, \"body\") ? { body: value.body } : {}),\n }) };\n } catch {\n // Collapse schema details into the stable rejection below.\n }\n }\n }\n return { ok: false, result: commandError(\"invalid_request\", \"unsupported agent command request\") };\n}\n\n/** Stream one provider response as ordered, bounded JSON frames on the agent socket. */\nasync function streamConnectorResponse(\n socket: Socket,\n launch: AgentLaunch,\n invocation: ConnectorInvocation,\n open: (\n launch: AgentLaunch,\n invocation: ConnectorInvocation,\n signal: AbortSignal,\n ) => Promise<ConnectorStreamResponse>,\n signal: AbortSignal,\n): Promise<void> {\n let response: ConnectorStreamResponse;\n try {\n signal.throwIfAborted();\n response = await open(launch, invocation, signal);\n } catch {\n await writeStreamingFrame(socket, {\n version: 1,\n type: \"connector.response.error\",\n error: { code: \"connector_forward_failed\", message: \"Connector request failed\" },\n }).catch(() => undefined);\n socket.end();\n return;\n }\n const reader = response.body.getReader();\n let bytesRead = 0;\n let completed = false;\n const cancel = (): void => { void reader.cancel(\"agent socket closed\").catch(() => undefined); };\n signal.addEventListener(\"abort\", cancel, { once: true });\n if (signal.aborted) cancel();\n try {\n await writeStreamingFrame(socket, {\n version: 1,\n type: \"connector.response.start\",\n ok: response.ok,\n status: response.status,\n ...(response.contentType ? { contentType: response.contentType } : {}),\n });\n while (true) {\n const result = await reader.read();\n if (result.done) break;\n bytesRead += result.value.byteLength;\n if (bytesRead > MAX_RESPONSE_BYTES) {\n await reader.cancel(\"provider response exceeded the agent channel limit\").catch(() => undefined);\n await writeStreamingFrame(socket, {\n version: 1,\n type: \"connector.response.error\",\n error: {\n code: \"connector_response_too_large\",\n message: \"Connector response exceeded the agent channel limit\",\n },\n });\n socket.end();\n return;\n }\n await writeStreamingFrame(socket, {\n version: 1,\n type: \"connector.response.chunk\",\n data: Buffer.from(result.value).toString(\"base64\"),\n });\n }\n completed = true;\n await writeStreamingFrame(socket, { version: 1, type: \"connector.response.end\" });\n socket.end();\n } catch {\n if (!socket.destroyed && !socket.writableEnded) {\n await writeStreamingFrame(socket, {\n version: 1,\n type: \"connector.response.error\",\n error: { code: \"connector_stream_failed\", message: \"Connector response stream failed\" },\n }).catch(() => undefined);\n socket.end();\n }\n } finally {\n signal.removeEventListener(\"abort\", cancel);\n if (!completed) await reader.cancel(\"Connector response did not complete\").catch(() => undefined);\n reader.releaseLock();\n }\n}\n\n/** Write one JSON frame and wait for the socket buffer to accept it. */\nfunction writeStreamingFrame(socket: Socket, value: unknown): Promise<void> {\n if (socket.destroyed || socket.writableEnded) {\n return Promise.reject(new Error(\"agent socket is closed\"));\n }\n const body = Buffer.from(JSON.stringify(value));\n if (body.length > MAX_RESPONSE_BYTES) {\n return Promise.reject(new Error(\"agent socket response frame is too large\"));\n }\n const length = Buffer.allocUnsafe(4);\n length.writeUInt32BE(body.length);\n return new Promise<void>((resolve, reject) => {\n socket.write(Buffer.concat([length, body]), (error) => error ? reject(error) : resolve());\n });\n}\n\n/** Write one bounded u32be-length-prefixed JSON response. */\nfunction writeFramedResult(\n socket: Socket,\n result: AgentCommandResult | McpJsonRpcPayload | undefined,\n): void {\n if (socket.destroyed || socket.writableEnded) return;\n if (result === undefined) {\n socket.end(Buffer.alloc(4));\n return;\n }\n const body = Buffer.from(JSON.stringify(result));\n if (body.length > MAX_RESPONSE_BYTES) {\n socket.destroy();\n return;\n }\n const length = Buffer.allocUnsafe(4);\n length.writeUInt32BE(body.length);\n socket.end(Buffer.concat([length, body]));\n}\n\n/** Create one stable command-channel rejection. */\nfunction commandError(code: string, message: string): AgentCommandResult {\n return { ok: false, error: { code, message } };\n}\n\n/** Listen on one direct agent socket. */\nfunction listenOnUnixSocket(server: Server, socketPath: string): Promise<void> {\n return new Promise((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(socketPath, () => {\n server.off(\"error\", reject);\n resolve();\n });\n });\n}\n\n/** Stop a Unix server, treating an already-closed server as success. */\nfunction closeUnixServer(server: Server): Promise<void> {\n return new Promise((resolve, reject) => {\n server.close((error) => error && (error as NodeJS.ErrnoException).code !== \"ERR_SERVER_NOT_RUNNING\"\n ? reject(error)\n : resolve());\n });\n}\n\n/** Ignore only absent-path cleanup errors. */\nfunction ignoreMissing(error: unknown): void {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n}\n\n/** Narrow one value to a JSON object. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n", "import type {\n AgentCommand,\n AgentCommandResult,\n} from \"./types.js\";\n\n/**\n * Parse one identity-free agent command from the framed Unix channel.\n *\n * @param value - Parsed request body.\n * @returns Accepted command or structured rejection.\n */\nexport function parseAgentCommand(\n value: Record<string, unknown>\n):\n | { ok: true; command: AgentCommand }\n | { ok: false; result: AgentCommandResult } {\n if (typeof value.id !== \"string\" || !value.id.trim()) {\n return commandError(\"invalid_command\", \"command id is required\");\n }\n if (typeof value.type !== \"string\" || !value.type.trim()) {\n return commandError(\"invalid_command\", \"command type is required\");\n }\n const unsupported = Object.keys(value).filter(\n (key) => key !== \"id\" && key !== \"type\" && key !== \"payload\",\n );\n if (unsupported.length > 0) {\n return commandError(\n \"invalid_command\",\n `unsupported command fields: ${unsupported.join(\", \")}`,\n );\n }\n return {\n ok: true,\n command: {\n id: value.id,\n type: value.type,\n payload: value.payload,\n },\n };\n}\n\n/**\n * Create a structured command parser error.\n *\n * @param code - Machine-readable error code.\n * @param message - Human-readable error message.\n * @returns Parser rejection object.\n */\nfunction commandError(\n code: string,\n message: string\n): { ok: false; result: AgentCommandResult } {\n return { ok: false, result: { ok: false, error: { code, message } } };\n}\n", "#!/usr/bin/env node\nimport { ticketDecisionSchema, ticketHandoffSchema, ticketGuideSchema } from \"@liy/mote-core\";\nimport { randomUUID } from \"node:crypto\";\nimport { connect } from \"node:net\";\nimport { createInterface } from \"node:readline\";\n\n\nimport {\n isMcpJsonRpcClientPayload,\n type McpJsonRpcPayload,\n} from \"./run-invocation.js\";\n\ninterface CliCommand {\n /** Caller-generated command id used for tracing. */\n id: string;\n /** Orchestrator command type. */\n type: string;\n /** Command-specific payload. */\n payload: unknown;\n}\n\ninterface CliCommandRequest {\n /** Command-channel protocol version. */\n version: 1;\n /** Operation discriminator for future non-command channels. */\n operation: \"command\";\n /** Private launch id selecting this process's registered launch context. */\n launchId: string;\n /** Identity-free command selected by CLI arguments. */\n command: CliCommand;\n}\n\ninterface CliMcpRequest {\n /** Command-channel protocol version. */\n version: 1;\n /** Protected remote-MCP operation selected by the CLI subcommand. */\n operation: \"mcp\";\n /** Private launch id selecting this process's registered launch context. */\n launchId: string;\n /** Fixed logical alias resolved by the trusted orchestrator. */\n server: \"mote\";\n /** Identity-free JSON-RPC request or notification read from stdin. */\n payload: McpJsonRpcPayload;\n}\n\n/** Identity-free operations accepted by the kernel-authenticated channel. */\ntype CliKernelRequest = CliCommandRequest | CliMcpRequest;\n\ntype CommandType =\n | \"app.create\"\n | \"app.get\"\n | \"app.update\"\n | \"ticket.create\"\n | \"ticket.assign\"\n | \"ticket.park\"\n | \"ticket.unpark\"\n | \"ticket.done\"\n | \"ticket.archive\"\n | \"ticket.unarchive\"\n | \"ticket.list\"\n | \"ticket.get\"\n | \"ticket.timeline\"\n | \"ticket.brief\" | \"ticket.worklog\" | \"ticket.decision\" | \"ticket.handoff\" | \"ticket.guide\"\n | \"agent.list\"\n | \"agent.get\"\n | \"agent.prompt\"\n | \"integration.run\"\n | \"workspace.check\"\n | \"workspace.cleanup\";\n\nconst USAGE = [\n \"usage: (every command accepts --command-id <id> to make retries idempotent)\",\n \" orchestrator app create <app-code> <name> [brief]\",\n \" orchestrator ticket list --status <waiting|ongoing|intervention|done> [--unassigned]\",\n \" orchestrator app get <app-id>\",\n \" orchestrator app update <app-id> <brief>\",\n \" orchestrator ticket create '<json>'\",\n \" orchestrator ticket assign '<json>'\",\n \" orchestrator ticket park '<json>'\",\n \" orchestrator ticket unpark '<json>'\",\n \" orchestrator ticket done '<json>'\",\n \" orchestrator ticket archive <ticket-id>\",\n \" orchestrator ticket unarchive <ticket-id>\",\n \" orchestrator ticket get <ticket-id> (general ticket information)\",\n \" orchestrator ticket timeline <ticket-id> [--after <cursor>] [--through <barrier>] (raw records; use only for needed evidence)\",\n \" orchestrator agent list\",\n \" orchestrator agent get <agent-name>\",\n \" orchestrator agent prompt <agent-name>\",\n \" orchestrator integration <ticket-id>\",\n \" orchestrator workspace check <ticket-id>\",\n \" orchestrator workspace cleanup <ticket-id>\",\n \" orchestrator ticket brief|worklog <ticket-id> [--after <cursor>] [--through <highWaterMark>]\",\n \" orchestrator ticket decision <ticket-id> '{\\\"choice\\\":\\\"...\\\",\\\"rationale\\\":\\\"...\\\"}'\",\n \" orchestrator ticket handoff <ticket-id> '{\\\"results\\\":\\\"...\\\",\\\"validation\\\":\\\"...\\\",\\\"remainingWork\\\":\\\"...\\\",\\\"references\\\":[]}'\",\n \" orchestrator ticket guide <ticket-id> '{\\\"message\\\":\\\"...\\\"}'\",\n \" orchestrator mcp mote\",\n].join(\"\\n\");\n\nconst TICKET_TRANSITION_TYPES = new Set<CommandType>([\n \"ticket.park\",\n \"ticket.unpark\",\n \"ticket.done\",\n]);\nconst TICKET_TRANSITION_FIELDS = new Set([\"ticketId\", \"summary\"]);\n\nconst TICKET_CREATE_FIELDS = new Set([\"title\", \"summary\", \"description\", \"scope\", \"appId\", \"contextTicketId\"]);\nconst TICKET_ASSIGN_FIELDS = new Set([\n \"ticketId\",\n \"assigneeAgentId\",\n \"assigneeAgentName\",\n \"assigneeAgentRole\",\n \"summary\",\n]);\n\n/**\n * Execute the sandbox-local `orchestrator` command.\n *\n * @param argv - CLI arguments after the executable name.\n * @param env - Process environment containing orchestrator runtime identity.\n * @returns Process exit code.\n */\nexport async function runOrchestratorCli(argv: string[], env: NodeJS.ProcessEnv = process.env): Promise<number> {\n try {\n if (argv[0] === \"mcp\") {\n return await runMcpBridge(argv.slice(1), env);\n }\n const command = parseCliCommand(argv);\n const result = await sendRequestToOrchestrator(\n requireAgentCommandSocket(env),\n {\n version: 1,\n operation: \"command\",\n launchId: requireAgentLaunchId(env),\n command,\n },\n );\n process.stdout.write(`${JSON.stringify(result)}\\n`);\n return isRecord(result) && result.ok === true ? 0 : 1;\n } catch (error) {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n return 1;\n }\n}\n\n/**\n * Bridge newline-delimited MCP stdio messages through the run-scoped socket.\n *\n * @remarks\n * The process remains alive until stdin closes. Each line carries only a\n * JSON-RPC payload and the fixed `mote` alias; destination URLs, credentials,\n * and principal claims are selected from the socket's immutable run identity.\n *\n * @param args - MCP arguments after the `mcp` subcommand.\n * @param env - Process environment containing the public identity socket.\n * @returns Zero after a clean stdin close, or throws on a protocol failure.\n */\nasync function runMcpBridge(\n args: string[],\n env: NodeJS.ProcessEnv,\n): Promise<number> {\n if (args.length !== 1 || args[0] !== \"mote\") {\n throw new Error(`mcp requires the supported server alias: mote\\n${USAGE}`);\n }\n const socketPath = requireAgentCommandSocket(env);\n const launchId = requireAgentLaunchId(env);\n const lines = createInterface({\n input: process.stdin,\n crlfDelay: Infinity,\n terminal: false,\n });\n for await (const line of lines) {\n let payload: unknown;\n try {\n payload = JSON.parse(line) as unknown;\n } catch {\n throw new Error(\"MCP stdin line must be JSON\");\n }\n if (!isMcpJsonRpcClientPayload(payload)) {\n throw new Error(\"MCP stdin line must be a JSON-RPC request or notification\");\n }\n const response = await sendRequestToOrchestrator(socketPath, {\n version: 1,\n operation: \"mcp\",\n launchId,\n server: \"mote\",\n payload,\n });\n if (response === undefined) {\n continue;\n }\n if (isCommandFailure(response)) {\n throw new Error(response.error.message);\n }\n process.stdout.write(`${JSON.stringify(response)}\\n`);\n }\n return 0;\n}\n\n/**\n * Parse the narrow ADR-026 command surface into an orchestrator command.\n *\n * @param argv - Command-line tokens.\n * @returns Identity-free command sent through the kernel-bound channel.\n */\nexport function parseCliCommand(argv: string[]): CliCommand {\n const { commandId, tokens } = extractCommandId(argv);\n const [resource, action, ...rest] = tokens;\n const type = resource === \"integration\"\n ? toCommandType(\"integration\", \"run\")\n : toCommandType(resource, action);\n const args = resource === \"integration\"\n ? [action, ...rest].filter((value): value is string => value !== undefined)\n : rest;\n const payload = parsePayload(type, args);\n return {\n id: commandId ?? randomUUID(),\n type,\n payload,\n };\n}\n\n/**\n * Extract the optional global `--command-id` flag from CLI arguments.\n *\n * @remarks\n * Passing the same id on a retry replays the original mutation idempotently\n * at the owning Durable Object instead of committing a duplicate (ADR-042).\n *\n * @param argv - Raw CLI tokens.\n * @returns Command id when supplied, plus the remaining tokens.\n */\nfunction extractCommandId(argv: string[]): { commandId?: string; tokens: string[] } {\n const tokens: string[] = [];\n let commandId: string | undefined;\n for (let index = 0; index < argv.length; index += 1) {\n if (argv[index] === \"--command-id\") {\n const value = argv[index + 1];\n if (!value?.trim()) {\n throw new Error(`--command-id requires a value\\n${USAGE}`);\n }\n commandId = value.trim();\n index += 1;\n continue;\n }\n tokens.push(argv[index] as string);\n }\n return { ...(commandId ? { commandId } : {}), tokens };\n}\n\n/**\n * Convert public CLI words into internal command types.\n *\n * @param resource - Top-level resource word such as `ticket`.\n * @param action - Resource action such as `create`.\n * @returns Orchestrator command type.\n */\nfunction toCommandType(resource: string | undefined, action: string | undefined): CommandType {\n const type = `${resource ?? \"\"}.${action ?? \"\"}`;\n if (![\n \"app.create\",\n \"app.get\",\n \"app.update\",\n \"ticket.create\",\n \"ticket.assign\",\n \"ticket.park\",\n \"ticket.unpark\",\n \"ticket.done\",\n \"ticket.archive\",\n \"ticket.unarchive\",\n \"ticket.list\",\n \"ticket.get\",\n \"ticket.timeline\",\n \"ticket.brief\", \"ticket.worklog\", \"ticket.decision\", \"ticket.handoff\", \"ticket.guide\",\n \"agent.list\",\n \"agent.get\",\n \"agent.prompt\",\n \"integration.run\",\n \"workspace.check\",\n \"workspace.cleanup\",\n ].includes(type)) {\n throw new Error(USAGE);\n }\n return type as CommandType;\n}\n\n/**\n * Parse command-specific positional arguments.\n *\n * @param type - Parsed command type.\n * @param args - Remaining CLI arguments after resource and action.\n * @returns Command payload sent to the orchestrator.\n */\nfunction parsePayload(type: CommandType, args: string[]): unknown {\n if (type === \"ticket.list\") {\n return parseTicketListPayload(args);\n }\n if (type === \"ticket.create\") {\n return parseTicketCreatePayload(args);\n }\n if (type === \"app.update\") {\n if (args.length !== 2) throw new Error(\"app.update requires app id and brief\");\n return { appId: args[0], brief: args[1] };\n }\n if (type === \"app.create\") {\n return parseAppCreatePayload(args);\n }\n if (type === \"ticket.assign\") {\n return parseTicketAssignPayload(args);\n }\n if (TICKET_TRANSITION_TYPES.has(type)) {\n return parseTicketTransitionPayload(type, args);\n }\n if (type === \"ticket.decision\" || type === \"ticket.handoff\" || type === \"ticket.guide\") {\n if (args.length !== 2 || !args[0]?.trim()) throw new Error(`${type} requires a ticket id and JSON record`);\n const schema = type === \"ticket.decision\" ? ticketDecisionSchema : type === \"ticket.handoff\" ? ticketHandoffSchema : ticketGuideSchema;\n return { ticketId: args[0], record: schema.parse(JSON.parse(args[1]!)) };\n }\n if (type === \"ticket.timeline\" || type === \"ticket.worklog\" || type === \"ticket.brief\") {\n const [ticketId, ...flags] = args;\n if (!ticketId || ticketId.startsWith(\"--\")) throw new Error(`${type} requires a ticket id`);\n const payload: { ticketId: string; after: number; through?: number } = { ticketId, after: 0 };\n for (let index = 0; index < flags.length; index += 2) {\n const flag = flags[index];\n const raw = flags[index + 1];\n const value = Number(raw);\n if ((flag !== \"--after\" && flag !== \"--through\") || !raw || !Number.isSafeInteger(value) || value < 0) {\n throw new Error(`${type} accepts nonnegative --after and --through cursors`);\n }\n if (flag === \"--after\") payload.after = value;\n else payload.through = value;\n }\n return payload;\n }\n if (type === \"agent.list\") {\n return undefined;\n }\n return parseKeyPayload(type, args);\n}\n\n/**\n * Parse the immutable app code and editable display name.\n *\n * @param args - Raw positional arguments after `app create`.\n * @returns Internal app creation payload.\n */\nfunction parseAppCreatePayload(args: string[]): { appCode: string; name: string; brief: string } {\n const [appCode, name, brief = \"\", ...rest] = args;\n if (!appCode?.trim() || !name?.trim() || rest.length > 0) {\n throw new Error(`app.create requires an app code and a display name\\n${USAGE}`);\n }\n return { appCode, name: name.trim(), brief };\n}\n\n/**\n * Parse and validate a ticket creation payload before it leaves the agent CLI.\n *\n * @param args - Raw positional arguments.\n * @returns Ticket creation payload accepted by the host API contract.\n */\nfunction parseTicketCreatePayload(args: string[]): Record<string, unknown> {\n const payload = parseJsonPayload(\"ticket.create\", args);\n if (!isRecord(payload)) {\n throw new Error(\"ticket.create requires a JSON object\");\n }\n validateTicketCreatePayload(payload);\n return payload;\n}\n\n/**\n * Parse and validate a ticket assignment payload before it leaves the agent CLI.\n *\n * @param args - Raw positional arguments.\n * @returns Ticket assignment payload accepted by the host API contract.\n */\nfunction parseTicketAssignPayload(args: string[]): Record<string, unknown> {\n const payload = parseJsonPayload(\"ticket.assign\", args);\n if (!isRecord(payload)) {\n throw new Error(\"ticket.assign requires a JSON object\");\n }\n const unsupported = Object.keys(payload).filter((key) => !TICKET_ASSIGN_FIELDS.has(key));\n if (unsupported.length > 0) {\n throw new Error(`ticket.assign unsupported field: ${unsupported.join(\", \")}`);\n }\n if (typeof payload.ticketId !== \"string\" || !payload.ticketId.trim()) {\n throw new Error(\"ticket.assign requires a ticketId\");\n }\n if (!(\"assigneeAgentId\" in payload)) {\n throw new Error(\"ticket.assign requires assigneeAgentId (null unassigns)\");\n }\n if (typeof payload.assigneeAgentId !== \"string\" && payload.assigneeAgentId !== null) {\n throw new Error(\"ticket.assign assigneeAgentId must be an agent id or null\");\n }\n if (payload.summary !== undefined && (typeof payload.summary !== \"string\" || !payload.summary.trim())) {\n throw new Error(\"ticket.assign summary must be non-empty when provided\");\n }\n return payload;\n}\n\n/**\n * Parse and validate one ticket transition verb payload.\n *\n * @remarks\n * Every transition verb carries the host receipt entry that explains it, so the\n * summary is required: the required human action for `park`, and the\n * acceptance or requeue reason for `done` and `unpark`. Lifecycle edges\n * (`start`, `release`) are orchestrator-authored and have no CLI verb\n * (ADR-062).\n *\n * @param type - Transition command type used in error messages.\n * @param args - Raw positional arguments.\n * @returns Ticket transition payload accepted by the host API contract.\n */\nfunction parseTicketTransitionPayload(type: CommandType, args: string[]): Record<string, unknown> {\n const payload = parseJsonPayload(type, args);\n if (!isRecord(payload)) {\n throw new Error(`${type} requires a JSON object`);\n }\n const unsupported = Object.keys(payload).filter((key) => !TICKET_TRANSITION_FIELDS.has(key));\n if (unsupported.length > 0) {\n throw new Error(`${type} unsupported field: ${unsupported.join(\", \")}`);\n }\n if (typeof payload.ticketId !== \"string\" || !payload.ticketId.trim()) {\n throw new Error(`${type} requires a ticketId`);\n }\n if (typeof payload.summary !== \"string\" || !payload.summary.trim()) {\n throw new Error(`${type} requires a summary explaining the transition`);\n }\n return payload;\n}\n\n/**\n * Parse `orchestrator ticket list` filters into host API query intent.\n *\n * @param args - Raw flags after `ticket list`.\n * @returns Ticket list payload sent through the framed command channel.\n */\nfunction parseTicketListPayload(args: string[]): { status: string; unassigned?: true } {\n let status: string | undefined;\n let unassigned = false;\n for (let index = 0; index < args.length; index += 1) {\n const token = args[index];\n if (token === \"--status\") {\n const value = args[index + 1];\n if (!value) {\n throw new Error(`ticket.list --status requires a value\\n${USAGE}`);\n }\n status = value;\n index += 1;\n continue;\n }\n if (token === \"--unassigned\") {\n unassigned = true;\n continue;\n }\n throw new Error(`unknown ticket.list argument: ${token}\\n${USAGE}`);\n }\n if (!status) {\n throw new Error(`ticket.list requires --status\\n${USAGE}`);\n }\n return {\n status,\n ...(unassigned ? { unassigned: true as const } : {}),\n };\n}\n\n/**\n * Parse a one-argument JSON payload for mutating structured commands.\n *\n * @param type - Command type used in error messages.\n * @param args - Raw positional arguments.\n * @returns Parsed JSON payload.\n */\nfunction parseJsonPayload(type: CommandType, args: string[]): unknown {\n if (args.length !== 1) {\n throw new Error(`${type} requires exactly one JSON argument\\n${USAGE}`);\n }\n const [raw] = args;\n if (raw === undefined) {\n throw new Error(`${type} requires exactly one JSON argument\\n${USAGE}`);\n }\n const payload = JSON.parse(raw) as unknown;\n if (typeof payload === \"string\") {\n throw new Error(`${type} requires a JSON value, not a JSON string`);\n }\n return payload;\n}\n\n/**\n * Validate ticket creation fields before posting the command.\n *\n * @remarks\n * App association is optional. Assessment may name a context ticket to\n * retain source-conversation provenance without creating a relationship.\n *\n * @param payload - Parsed ticket creation object.\n */\nfunction validateTicketCreatePayload(payload: Record<string, unknown>): void {\n const unsupported = Object.keys(payload).filter((key) => !TICKET_CREATE_FIELDS.has(key));\n if (unsupported.length > 0) {\n throw new Error(`ticket.create unsupported field: ${unsupported.join(\", \")}`);\n }\n if (typeof payload.summary !== \"string\" || !payload.summary.trim()) {\n throw new Error(\"ticket.create requires a summary\");\n }\n for (const field of [\"appId\", \"contextTicketId\"]) {\n if (payload[field] !== undefined && (typeof payload[field] !== \"string\" || !/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(payload[field]))) throw new Error(`ticket.create ${field} must be a UUID`);\n }\n}\n\n/**\n * Parse one string key/id/name argument.\n *\n * @param type - Command type used in error messages.\n * @param args - Raw positional arguments.\n * @returns String payload.\n */\nfunction parseKeyPayload(type: CommandType, args: string[]): string {\n if (args.length !== 1 || !args[0]) {\n throw new Error(`${type} requires exactly one string argument\\n${USAGE}`);\n }\n return args[0];\n}\n\n/**\n * Resolve the stable per-agent Unix socket shared by this agent's processes.\n *\n * @param env - Agent process environment containing its agent socket path.\n * @returns Absolute agent socket path.\n */\nfunction requireAgentCommandSocket(env: NodeJS.ProcessEnv): string {\n const socketPath = env.MOTE_AGENT_COMMAND_SOCKET?.trim();\n if (socketPath?.startsWith(\"/\")) {\n return socketPath;\n }\n throw new Error(\"MOTE_AGENT_COMMAND_SOCKET must be an absolute Unix socket path\");\n}\n\n/**\n * Resolve the private launch id injected only into this process environment.\n *\n * @remarks\n * The stable agent socket authenticates only the `(ownerUserId, agentId)`\n * identity; the launch id selects the concrete launch context the trusted\n * orchestrator registered before spawning this process (ADR-061 \u00A73). It is\n * correlation, not authority \u2014 the orchestrator resolves and rechecks the\n * launch on every request.\n *\n * @param env - Agent process environment.\n * @returns Launch id registered for this process.\n */\nfunction requireAgentLaunchId(env: NodeJS.ProcessEnv): string {\n const launchId = env.MOTE_AGENT_LAUNCH_ID?.trim();\n if (launchId) {\n return launchId;\n }\n throw new Error(\"MOTE_AGENT_LAUNCH_ID is required\");\n}\n\n/**\n * Send one length-prefixed request through the run-scoped socket.\n *\n * @param socketPath - Socket path injected only into the corresponding run.\n * @param request - Versioned identity-free command request.\n * @returns Parsed command response.\n */\nfunction sendRequestToOrchestrator(\n socketPath: string,\n request: CliKernelRequest,\n): Promise<unknown | undefined> {\n const body = Buffer.from(JSON.stringify(request));\n if (body.length === 0 || body.length > 1024 * 1024) {\n return Promise.reject(new Error(\"orchestrator command request is too large\"));\n }\n const requestLength = Buffer.allocUnsafe(4);\n requestLength.writeUInt32BE(body.length);\n return new Promise((resolve, reject) => {\n const socket = connect(socketPath);\n const chunks: Buffer[] = [];\n let expectedLength: number | undefined;\n const fail = (error: Error): void => {\n socket.destroy();\n reject(error);\n };\n socket.once(\"connect\", () => {\n socket.write(Buffer.concat([requestLength, body]));\n });\n socket.once(\"error\", fail);\n socket.on(\"data\", (chunk: Buffer) => {\n chunks.push(chunk);\n const response = Buffer.concat(chunks);\n if (expectedLength === undefined && response.length >= 4) {\n expectedLength = response.readUInt32BE(0);\n if (expectedLength > 8 * 1024 * 1024) {\n fail(new Error(\"orchestrator command response is too large\"));\n return;\n }\n }\n if (expectedLength === undefined || response.length < expectedLength + 4) {\n return;\n }\n if (response.length !== expectedLength + 4) {\n fail(new Error(\"orchestrator command response contains trailing bytes\"));\n return;\n }\n socket.destroy();\n if (expectedLength === 0) {\n resolve(undefined);\n return;\n }\n try {\n resolve(JSON.parse(response.subarray(4).toString(\"utf8\")) as unknown);\n } catch {\n reject(new Error(\"orchestrator command response must be JSON\"));\n }\n });\n socket.once(\"end\", () => {\n if (expectedLength === undefined) {\n fail(new Error(\"orchestrator command response ended early\"));\n }\n });\n });\n}\n\n/**\n * Identify a sanitized channel failure before writing MCP stdout.\n *\n * @param value - Parsed response from the identity proxy.\n * @returns Whether the response is a command-channel error envelope.\n */\nfunction isCommandFailure(\n value: unknown,\n): value is { ok: false; error: { code: string; message: string } } {\n return isRecord(value)\n && value.ok === false\n && isRecord(value.error)\n && typeof value.error.code === \"string\"\n && typeof value.error.message === \"string\";\n}\n\n/**\n * Narrow an unknown value to a JSON object.\n *\n * @param value - Value to inspect.\n * @returns Whether the value is a non-array object.\n */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n", "import { randomUUID } from \"node:crypto\";\nimport { once } from \"node:events\";\nimport {\n chmod,\n mkdir,\n mkdtemp,\n readFile,\n readdir,\n rm,\n stat,\n writeFile,\n} from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\n\nimport {\n createSetprivAgentProcessRuntime,\n type AgentProcessRuntime,\n} from \"./agent-process-runtime.js\";\nimport {\n createLinuxAgentCgroupController,\n DEFAULT_AGENT_CGROUP_ROOT,\n} from \"./agent-cgroup.js\";\nimport { createSetprivWorkspaceProcessRuntime } from \"./workspace-process-runtime.js\";\nimport { createLaunchRegistry } from \"./launch-registry.js\";\nimport type { AgentProcessIdentity } from \"./scheduler/process-identity.js\";\nimport { createAgentCommandChannelManager } from \"./server/agent-command-channel.js\";\nimport type { AgentLaunch } from \"./shared/types.js\";\nimport {\n ensureAgentDirectory,\n ensureAgentSessionSpace,\n prepareUsersRoot,\n type AgentSessionSpace,\n} from \"./users-tree.js\";\n\nconst USER_A = \"41111111-1111-4111-8111-111111111111\";\nconst USER_B = \"42222222-2222-4222-8222-222222222222\";\nconst AGENT_A1 = \"21111111-1111-4111-8111-111111111111\";\nconst AGENT_A2 = \"22222222-2222-4222-8222-222222222222\";\nconst AGENT_B1 = \"23333333-3333-4333-8333-333333333333\";\nconst ORG_ID = \"31111111-1111-4111-8111-111111111111\";\nconst ANCHOR_ID = \"51111111-1111-4111-8111-111111111111\";\n\n/**\n * Verify ADR-061 ownership with the real Linux kernel and production launcher.\n *\n * @remarks\n * This pre-publication probe runs only inside a disposable Sprite as root. It\n * builds the stable `/users/<user>/agents/<agent>` tree with the production\n * ensure operation, binds real stable agent sockets, and launches probes\n * through the production `setpriv` boundary to assert:\n *\n * - the agent's own `agent.sock` is reachable and resolves its launch;\n * - a sibling agent directory of the same owner is denied;\n * - another user's tree is denied entirely;\n * - `profile/mcp-cache.json` is writable across launches and accepted at boot validation;\n * - `memory/` is readable and writable across two launches of one agent; and\n * - the context work directory is the writable cwd and survives across launches; and\n * - `cgroup.kill` catches a detached descendant.\n */\nexport async function verifyKernelRunIsolation(): Promise<void> {\n if (process.platform !== \"linux\" || process.getuid?.() !== 0) {\n throw new Error(\"run isolation verification requires root inside Linux\");\n }\n\n const templateRoot = await mkdtemp(join(tmpdir(), \"mote-isolation-profiles-\"));\n await createLinuxAgentCgroupController().prepareRoot();\n await prepareUsersRoot(process.env);\n const workspaceProbe = await createSharedWorkspaceProbe();\n const registry = createLaunchRegistry();\n const manager = createAgentCommandChannelManager({\n resolveLaunch: (launchId) => registry.getByLaunchId(launchId),\n async execute(_launch, command) {\n return { ok: true, id: command.id, payload: { accepted: true } };\n },\n });\n let allocatedUid = 200_000;\n const spaces: AgentSessionSpace[] = [];\n\n /** Ensure one probe agent's stable tree and bind its stable socket. */\n const prepareAgent = async (\n userId: string,\n agentId: string,\n ): Promise<AgentSessionSpace> => {\n const templateDir = join(templateRoot, agentId);\n await mkdir(templateDir, { recursive: true, mode: 0o755 });\n await writeFile(join(templateDir, \"system_prompt.md\"), `Agent ${agentId}.\\n`);\n await ensureAgentDirectory({\n env: process.env,\n userId,\n agentId,\n profileTemplateDir: templateDir,\n refreshProfile: true,\n });\n const space = await ensureAgentSessionSpace({\n env: process.env,\n userId,\n sessionKey: {\n agentId,\n contextKind: \"ticket\",\n contextId: ANCHOR_ID,\n },\n });\n if (space.userGid === undefined || space.agentGid === undefined) {\n throw new Error(\"users-tree ensure produced no stable GIDs under isolation\");\n }\n await manager.ensureAgentSocket({\n agentId,\n socketPath: space.socketPath,\n agentGid: space.agentGid,\n });\n spaces.push(space);\n return space;\n };\n\n /** Register one launch and build its production process runtime. */\n const openLaunch = (\n agentId: string,\n ownerUserId: string,\n space: AgentSessionSpace,\n ): { launch: AgentLaunch; identity: AgentProcessIdentity; runtime: AgentProcessRuntime } => {\n const uid = allocatedUid;\n allocatedUid += 1;\n const identity: AgentProcessIdentity = {\n uid,\n gid: uid,\n launchId: randomUUID(),\n agentId,\n orgId: ORG_ID,\n kind: \"overmind\",\n };\n const launch: AgentLaunch = {\n launchId: identity.launchId,\n sessionKey: {\n agentId,\n contextKind: \"ticket\",\n contextId: ANCHOR_ID,\n },\n ownerUserId,\n initiatorUserId: ownerUserId,\n orgId: ORG_ID,\n orgCode: \"isolation\",\n kind: \"overmind\",\n processUid: uid,\n identity,\n profileDir: space.profileDir,\n sessionDir: space.sessionDir,\n memoryDir: space.memoryDir,\n socketPath: space.socketPath,\n modelSettings: { provider: \"isolation\", model: \"isolation\", thinking: \"off\" },\n execution: undefined,\n stopping: new AbortController(),\n };\n registry.open(launch);\n const runtime = createSetprivAgentProcessRuntime(\n identity,\n undefined,\n [space.userGid as number, space.agentGid as number],\n );\n return { launch, identity, runtime };\n };\n\n try {\n const spaceA1 = await prepareAgent(USER_A, AGENT_A1);\n const spaceA2 = await prepareAgent(USER_A, AGENT_A2);\n const spaceB1 = await prepareAgent(USER_B, AGENT_B1);\n\n // Launch one: own socket + memory write + sibling and cross-user denial,\n // plus a direct shared-worktree commit as the unique launch UID.\n const first = openLaunch(AGENT_A1, USER_A, spaceA1);\n await runAgentProbe({\n ...first,\n space: spaceA1,\n mode: \"first\",\n siblingAgentDir: spaceA2.agentDir,\n siblingSocketPath: spaceA2.socketPath,\n otherUserDir: join(spaceB1.userDir),\n workspaceDir: workspaceProbe.worktreeDir,\n });\n registry.release(first.launch);\n\n // Launch two of the same agent: durable memory written by launch one must\n // be readable and writable under a fresh unique process UID.\n const second = openLaunch(AGENT_A1, USER_A, spaceA1);\n await runAgentProbe({\n ...second,\n space: spaceA1,\n mode: \"second\",\n siblingAgentDir: spaceA2.agentDir,\n siblingSocketPath: spaceA2.socketPath,\n otherUserDir: join(spaceB1.userDir),\n });\n registry.release(second.launch);\n\n // Pi-owned profile runtime state must not turn a later orchestrator boot\n // into a fail-closed ownership error.\n await prepareUsersRoot(process.env);\n\n await verifySharedWorkspaceProbe(workspaceProbe);\n await verifyDetachedDescendantContainment(openLaunch(AGENT_B1, USER_B, spaceB1), spaceB1);\n } finally {\n await manager.close();\n await cleanupSharedWorkspaceProbe(workspaceProbe);\n await rm(templateRoot, { recursive: true, force: true });\n for (const space of spaces) {\n // Probe fixtures only: production directories are removed exclusively\n // by an explicit purge (ADR-061 \u00A74).\n await rm(space.userDir, { recursive: true, force: true }).catch(() => undefined);\n }\n }\n\n const remainingCgroups = (await readdir(DEFAULT_AGENT_CGROUP_ROOT, { withFileTypes: true }))\n .filter((entry) => entry.isDirectory());\n if (remainingCgroups.length !== 0) {\n throw new Error(\"run isolation verification left launch cgroups behind\");\n }\n process.stdout.write(`${JSON.stringify({\n type: \"mote_sandbox_runtime.run_isolation_verified\",\n users: [USER_A, USER_B],\n agents: [AGENT_A1, AGENT_A2, AGENT_B1],\n })}\\n`);\n}\n\n/** Shared repository and worktree created by Sprite's UID-1001 boundary. */\ninterface SharedWorkspaceProbe {\n /** Canonical repository below `/workspace`. */\n repositoryDir: string;\n /** Linked agent worktree below `/worktree`. */\n worktreeDir: string;\n /** Branch committed directly by the unique-UID agent. */\n branch: string;\n /** Parent below `/worktree` removed after verification. */\n worktreeRoot: string;\n}\n\n/**\n * Create a shared Git worktree without any root-owned repository operation.\n *\n * @returns UID-1001-created paths ready for one unique-UID agent.\n */\nasync function createSharedWorkspaceProbe(): Promise<SharedWorkspaceProbe> {\n const runtime = createSetprivWorkspaceProcessRuntime();\n const nonce = randomUUID().replaceAll(\"-\", \"\");\n const repositoryDir = join(\"/workspace\", `mote-release-${nonce}`);\n const worktreeRoot = join(\"/worktree\", `mote-release-${nonce}`);\n const worktreeDir = join(worktreeRoot, \"agent\");\n const branch = \"release-agent\";\n await runtime.run(\"git\", [\"init\", \"--initial-branch=main\", repositoryDir]);\n await runtime.run(\"git\", [\"-C\", repositoryDir, \"config\", \"core.sharedRepository\", \"group\"]);\n await runtime.run(\"git\", [\n \"-C\",\n repositoryDir,\n \"-c\",\n \"user.name=Mote Release Runner\",\n \"-c\",\n \"user.email=runner@mote.local\",\n \"commit\",\n \"--allow-empty\",\n \"-m\",\n \"Initialize release probe\",\n ]);\n await runtime.ensureDirectory(worktreeRoot);\n await runtime.run(\"git\", [\n \"-C\",\n repositoryDir,\n \"worktree\",\n \"add\",\n \"-b\",\n branch,\n worktreeDir,\n \"main\",\n ]);\n const metadata = await stat(join(repositoryDir, \".git\"));\n if (metadata.uid !== 1_001 || metadata.gid !== 199_999) {\n throw new Error(\"shared repository was not created as 1001:mote-workspace\");\n }\n return { repositoryDir, worktreeDir, branch, worktreeRoot };\n}\n\n/** Require UID 1001 to integrate and execute the agent-authored build. */\nasync function verifySharedWorkspaceProbe(probe: SharedWorkspaceProbe): Promise<void> {\n const runtime = createSetprivWorkspaceProcessRuntime();\n await runtime.run(\"git\", [\"-C\", probe.repositoryDir, \"merge\", \"--ff-only\", probe.branch]);\n await runtime.run(\"npm\", [\"run\", \"build\"], {\n cwd: probe.repositoryDir,\n timeoutMs: 60_000,\n maxOutputBytes: 1024 * 1024,\n });\n const buildUid = await readFile(join(probe.repositoryDir, \"dist\", \"probe.txt\"), \"utf8\");\n if (buildUid !== \"1001\") {\n throw new Error(`workspace build executed as unexpected UID ${buildUid}`);\n }\n}\n\n/** Remove only the probe paths through the same unprivileged boundary. */\nasync function cleanupSharedWorkspaceProbe(probe: SharedWorkspaceProbe): Promise<void> {\n const runtime = createSetprivWorkspaceProcessRuntime();\n await runtime.run(\"git\", [\n \"-C\",\n probe.repositoryDir,\n \"worktree\",\n \"remove\",\n \"--force\",\n probe.worktreeDir,\n ]);\n await runtime.remove(probe.worktreeRoot);\n await runtime.remove(probe.repositoryDir);\n}\n\n/**\n * Prove cgroup.kill catches a child that detached into a new session.\n *\n * @param opened - Registered launch and its bound production runtime.\n * @param space - Agent space providing the writable context session directory.\n */\nasync function verifyDetachedDescendantContainment(\n opened: {\n launch: AgentLaunch;\n identity: AgentProcessIdentity;\n runtime: AgentProcessRuntime;\n },\n space: AgentSessionSpace,\n): Promise<void> {\n const pidPath = join(space.sessionDir, \"detached.pid\");\n const child = opened.runtime.spawn({\n command: process.execPath,\n args: [\"--input-type=module\", \"-e\", DETACHED_DESCENDANT_SOURCE, pidPath],\n cwd: space.sessionDir,\n stateDir: space.sessionDir,\n env: { PATH: \"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\" },\n identity: opened.identity,\n });\n let stderr = \"\";\n child.stderr.setEncoding(\"utf8\");\n child.stderr.on(\"data\", (chunk) => { stderr += chunk; });\n try {\n const [exitCode, signal] = await once(child, \"close\") as [\n number | null,\n NodeJS.Signals | null,\n ];\n if (exitCode !== 0) {\n throw new Error(\n `detached descendant launcher failed (${String(exitCode ?? signal)}): ${stderr.trim()}`,\n );\n }\n const detachedPid = Number.parseInt((await readFile(pidPath, \"utf8\")).trim(), 10);\n if (!Number.isSafeInteger(detachedPid) || detachedPid <= 1) {\n throw new Error(\"detached descendant did not report a valid PID\");\n }\n await opened.runtime.terminate(child);\n await requireProcessGone(detachedPid);\n } finally {\n await opened.runtime.terminate(child).catch(() => undefined);\n }\n}\n\n/** Wait until one cgroup-killed descendant is no longer addressable. */\nasync function requireProcessGone(pid: number): Promise<void> {\n const deadline = Date.now() + 5_000;\n while (Date.now() < deadline) {\n try {\n process.kill(pid, 0);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ESRCH\") return;\n throw error;\n }\n await new Promise((resolve) => setTimeout(resolve, 20));\n }\n throw new Error(`detached descendant ${pid} survived cgroup teardown`);\n}\n\n/** Agent child that leaves a live new-session descendant after it exits. */\nconst DETACHED_DESCENDANT_SOURCE = String.raw`\nimport { spawn } from \"node:child_process\";\nimport { writeFile } from \"node:fs/promises\";\n\nconst [pidPath] = process.argv.slice(1);\nconst descendant = spawn(process.execPath, [\"-e\", \"setInterval(() => {}, 1000)\"], {\n detached: true,\n stdio: \"ignore\",\n});\nif (!descendant.pid) throw new Error(\"detached descendant has no PID\");\nawait writeFile(pidPath, String(descendant.pid));\ndescendant.unref();\n`;\n\n/** Inputs needed to run one unprivileged users-tree access probe. */\ninterface RunAgentProbeInput {\n /** Registered launch resolved by the stable agent socket. */\n launch: AgentLaunch;\n /** Reserved UID/GID selected for this probe. */\n identity: AgentProcessIdentity;\n /** Production setpriv process launcher bound to the same identity. */\n runtime: AgentProcessRuntime;\n /** Own stable agent space. */\n space: AgentSessionSpace;\n /** First launch writes durable memory; second reads and extends it. */\n mode: \"first\" | \"second\";\n /** Sibling agent directory of the same owner that must be denied. */\n siblingAgentDir: string;\n /** Sibling agent socket that must reject connection. */\n siblingSocketPath: string;\n /** Another user's directory that must be denied. */\n otherUserDir: string;\n /** Optional UID-1001-created worktree this unique launch must modify directly. */\n workspaceDir?: string;\n}\n\n/**\n * Launch one real reserved UID and require own access plus sibling denial.\n *\n * @param input - Bound launcher, identity, and both directory boundaries.\n * @returns Completion after the unprivileged probe exits successfully.\n */\nasync function runAgentProbe(input: RunAgentProbeInput): Promise<void> {\n const child = input.runtime.spawn({\n command: process.execPath,\n args: [\n \"--input-type=module\",\n \"-e\",\n AGENT_PROBE_SOURCE,\n input.space.socketPath,\n input.launch.launchId,\n input.space.sessionDir,\n input.space.workDir,\n input.space.profileDir,\n input.space.memoryDir,\n input.siblingAgentDir,\n input.siblingSocketPath,\n input.otherUserDir,\n String(input.identity.uid),\n input.mode,\n input.workspaceDir ?? \"\",\n ],\n cwd: input.space.workDir,\n stateDir: input.space.sessionDir,\n env: {\n PATH: \"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\n },\n identity: input.identity,\n });\n let stdout = \"\";\n let stderr = \"\";\n child.stdout.setEncoding(\"utf8\");\n child.stderr.setEncoding(\"utf8\");\n child.stdout.on(\"data\", (chunk) => { stdout += chunk; });\n child.stderr.on(\"data\", (chunk) => { stderr += chunk; });\n const [exitCode, signal] = await once(child, \"close\") as [number | null, NodeJS.Signals | null];\n await input.runtime.terminate(child);\n if (exitCode !== 0) {\n throw new Error(\n `run isolation probe ${input.identity.uid} failed (${String(exitCode ?? signal)}): `\n + `${stderr.trim() || stdout.trim() || \"no output\"}`,\n );\n }\n}\n\n/** Agent-side probe executed after the production launcher drops privileges. */\nconst AGENT_PROBE_SOURCE = String.raw`\nimport { execFile } from \"node:child_process\";\nimport { access, appendFile, constants, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { connect } from \"node:net\";\nimport { promisify } from \"node:util\";\n\nconst execute = promisify(execFile);\nconst [\n ownSocket, launchId, sessionDir, workDir, profileDir, memoryDir,\n siblingAgentDir, siblingSocket, otherUserDir, expectedUid, mode, workspaceDir,\n] = process.argv.slice(1);\n\nif (process.getuid() !== Number(expectedUid) || process.getgid() !== Number(expectedUid)) {\n throw new Error(\"agent launcher did not select the unique launch UID/GID\");\n}\nif (!process.getgroups().includes(199999)) {\n throw new Error(\"agent launcher omitted the shared workspace group\");\n}\nif (process.cwd() !== workDir) {\n throw new Error(\"agent launcher did not select the session context work directory\");\n}\n\nasync function request(socketPath) {\n const payload = Buffer.from(JSON.stringify({\n version: 1,\n operation: \"command\",\n launchId,\n command: { id: \"release-probe\", type: \"agent.list\" },\n }));\n const prefix = Buffer.allocUnsafe(4);\n prefix.writeUInt32BE(payload.length);\n return new Promise((resolve, reject) => {\n const socket = connect(socketPath);\n const chunks = [];\n socket.once(\"connect\", () => socket.write(Buffer.concat([prefix, payload])));\n socket.on(\"data\", (chunk) => chunks.push(chunk));\n socket.once(\"error\", reject);\n socket.once(\"end\", () => {\n const response = Buffer.concat(chunks);\n const length = response.readUInt32BE(0);\n resolve(JSON.parse(response.subarray(4, 4 + length).toString(\"utf8\")));\n });\n });\n}\n\nasync function expectDenied(operation, description) {\n try {\n await operation();\n } catch (error) {\n if (error?.code === \"EACCES\" || error?.code === \"EPERM\") return;\n throw error;\n }\n throw new Error(description + \" unexpectedly succeeded\");\n}\n\nconst response = await request(ownSocket);\nif (response.ok !== true) throw new Error(\"own agent socket rejected the launch\");\n\n// Durable runtime surfaces: session state and Pi's root-level cache are writable.\nawait appendFile(sessionDir + \"/write-check\", \"ok\\n\");\nawait readFile(profileDir + \"/system_prompt.md\", \"utf8\");\nawait expectDenied(\n () => appendFile(profileDir + \"/system_prompt.md\", \"\\n\"),\n \"root-authored profile file write\",\n);\nif (mode === \"first\") {\n await writeFile(profileDir + \"/mcp-cache.json\", '{\"version\":1,\"servers\":{}}\\n');\n} else {\n const cache = await readFile(profileDir + \"/mcp-cache.json\", \"utf8\");\n if (!cache.includes('\"version\":1')) {\n throw new Error(\"Pi MCP cache did not survive across launches\");\n }\n await writeFile(profileDir + \"/mcp-cache.json\", '{\"version\":1,\"servers\":{\"mote\":{}}}\\n');\n}\n\n// Context work: launch one creates relative work; launch two resumes it as cwd.\nif (mode === \"first\") {\n await writeFile(\"anchor-work.txt\", \"from launch one\\n\");\n} else {\n const work = await readFile(\"anchor-work.txt\", \"utf8\");\n if (!work.includes(\"from launch one\")) {\n throw new Error(\"session context work did not survive across launches\");\n }\n await appendFile(\"anchor-work.txt\", \"from launch two\\n\");\n}\n\n// Durable memory: launch one writes, launch two reads and extends.\nif (mode === \"first\") {\n await writeFile(memoryDir + \"/notes.md\", \"from launch one\\n\");\n} else {\n const notes = await readFile(memoryDir + \"/notes.md\", \"utf8\");\n if (!notes.includes(\"from launch one\")) {\n throw new Error(\"agent memory did not survive across launches\");\n }\n await appendFile(memoryDir + \"/notes.md\", \"from launch two\\n\");\n}\n\n// Sibling agent of the same owner: directory and socket denied.\nawait expectDenied(() => readdir(siblingAgentDir), \"sibling agent directory read\");\nawait expectDenied(() => request(siblingSocket), \"sibling agent socket connection\");\n\n// Another user's tree: denied at the user directory boundary.\nawait expectDenied(() => readdir(otherUserDir), \"other user directory read\");\nawait expectDenied(\n () => access(otherUserDir + \"/agents\", constants.R_OK),\n \"other user agents traversal\",\n);\n\nif (workspaceDir) {\n const buildSource = \"require('node:fs').mkdirSync('dist',{recursive:true});\"\n + \"require('node:fs').writeFileSync('dist/probe.txt',String(process.getuid()))\";\n await writeFile(\n workspaceDir + \"/package.json\",\n JSON.stringify({ scripts: { build: \"node -e \\\"\" + buildSource + \"\\\"\" } }) + \"\\n\",\n );\n await writeFile(workspaceDir + \"/agent-change.txt\", \"created by \" + expectedUid + \"\\n\");\n await execute(\"git\", [\"-C\", workspaceDir, \"config\", \"user.name\", \"Mote Release Agent\"]);\n await execute(\"git\", [\"-C\", workspaceDir, \"config\", \"user.email\", \"agent@mote.local\"]);\n await execute(\"git\", [\"-C\", workspaceDir, \"add\", \"package.json\", \"agent-change.txt\"]);\n await execute(\"git\", [\"-C\", workspaceDir, \"commit\", \"-m\", \"Verify agent workspace write\"]);\n}\n`;\n", "import {\n agentPersonasSchema,\n agentLocaleSchema,\n renderAgentPersona,\n type AgentPersonas,\n type SupportedLocale,\n} from \"@liy/mote-core\";\nimport { constants } from \"node:fs\";\nimport { access, chmod, cp, mkdir, readdir, readFile, rename, rm, symlink, writeFile } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\n/** Roles that additionally receive the Gen App skill in their profile. */\nconst GEN_APP_ROLES = new Set([\"dev\", \"cto\", \"qa\"]);\n/** Universal skills installed into Pi's global skill root and every profile. */\nconst UNIVERSAL_SKILLS = [\"orchestrator\", \"agent-browser\", \"inline-widget\"];\n\n/**\n * One complete agent as stored in the orchestrator-owned roster (ADR-084).\n *\n * @remarks\n * The roster is both the materialization input and the launch index, so it\n * carries the persona source as well as the rendered prompt path. Keeping the\n * source here is what lets boot re-render every prompt after a services release\n * changes prompt composition.\n */\nexport interface AgentRosterEntry {\n /** Stable agent UUID used as the per-agent profile directory name. */\n id: string;\n /** Org-unique display name used by ticket routing and board display. */\n name: string;\n /** Human-readable runtime role. */\n role: string;\n /** Immutable owner of the agent (ADR-060); selects the users-tree parent. */\n ownerUserId: string;\n /** User-authored persona overrides, keyed by language. */\n personas: AgentPersonas;\n /** Owner language used when rendering this profile. */\n locale: SupportedLocale;\n /** Absolute path to the rendered system prompt, written by materialization. */\n systemPromptPath?: string;\n}\n\n/** Installed locations one materialization pass reads from and writes to. */\nexport interface AgentRosterMaterializationInput {\n /** Orchestrator-owned roster file, `<agent_root>/agent-roster.json`. */\n rosterPath: string;\n /** Parent directory for all per-agent Pi profiles. */\n agentRoot: string;\n /** Universal Agent Skills directory discovered by Pi. */\n globalSkillRoot: string;\n /** Credential-free HOME holding the installed browser binaries. */\n browserHome: string;\n /** Precompiled shared extension directory shipped by `@liy/mote-pi-runtime`. */\n extensionsPath: string;\n /** Skills directory shipped by `@liy/mote-pi-runtime`. */\n skillsRoot: string;\n}\n\n/** Outcome of one complete materialization pass. */\nexport interface AgentRosterMaterializationResult {\n /** Number of agent profiles written. */\n agentCount: number;\n /** Stable browser executable path injected into every agent process. */\n browserExecutablePath: string;\n}\n\n/**\n * Materialize every agent profile named by the roster, then rewrite the roster.\n *\n * @remarks\n * ADR-084 moves this out of the deleted runtime setup binary and into\n * orchestrator boot, which already owned the roster and already materialized\n * profiles on demand through `ensureLocalAgent`. Extensions arrive precompiled,\n * so this pass performs no compilation; it links the shared directory instead.\n * The roster is the only input, so agents created after provisioning survive\n * every restart.\n *\n * @param input - Roster location and the installed directories it links.\n * @returns Profile count and the stable browser executable path.\n */\nexport async function materializeAgentRoster(\n input: AgentRosterMaterializationInput,\n): Promise<AgentRosterMaterializationResult> {\n const entries = parseAgentRoster(await readFile(input.rosterPath, \"utf8\"));\n await mkdir(input.agentRoot, { recursive: true, mode: 0o755 });\n await chmod(input.agentRoot, 0o755);\n const browserExecutablePath = await linkAgentBrowserExecutable(\n input.agentRoot,\n input.browserHome,\n );\n await installUniversalSkills(input.skillsRoot, input.globalSkillRoot);\n\n const materialized: AgentRosterEntry[] = [];\n for (const entry of entries) {\n const profileRoot = `${input.agentRoot}/${entry.id}`;\n // Materialization owns the complete profile contract. Replacing the\n // previous template prevents removed files from surviving an upgrade.\n await rm(profileRoot, { recursive: true, force: true });\n await mkdir(profileRoot, { recursive: true, mode: 0o755 });\n await chmod(profileRoot, 0o755);\n const systemPromptPath = `${profileRoot}/system_prompt.md`;\n await writeFile(systemPromptPath, renderAgentPersona(entry), \"utf8\");\n await chmod(systemPromptPath, 0o644);\n // The link targets the `current` runtime path, so a per-run runtime update\n // needs no profile rewrite: the next Pi process resolves the new version.\n await symlink(input.extensionsPath, `${profileRoot}/extensions`, \"dir\");\n // The agent HOME is its purpose-specific session directory (ADR-061), so\n // universal skills must also exist inside the explicit, credential-free\n // Pi profile tree that every launch shares.\n await installUniversalSkills(input.skillsRoot, `${profileRoot}/skills`);\n if (GEN_APP_ROLES.has(entry.role.trim().toLowerCase())) {\n await cp(`${input.skillsRoot}/gen-app`, `${profileRoot}/skills/gen-app`, {\n recursive: true,\n force: true,\n });\n }\n materialized.push({ ...entry, systemPromptPath });\n }\n\n await writeAgentRoster(input.rosterPath, materialized);\n return { agentCount: materialized.length, browserExecutablePath };\n}\n\n/**\n * Write the roster atomically so a concurrent read never sees a partial file.\n *\n * @param rosterPath - Orchestrator-owned roster path.\n * @param entries - Complete roster to persist.\n */\nexport async function writeAgentRoster(\n rosterPath: string,\n entries: readonly AgentRosterEntry[],\n): Promise<void> {\n const temporaryPath = `${rosterPath}.next`;\n await writeFile(temporaryPath, `${JSON.stringify(entries, null, 2)}\\n`, \"utf8\");\n await chmod(temporaryPath, 0o644);\n await rename(temporaryPath, rosterPath);\n}\n\n/**\n * Install the universal skills shipped by the per-run runtime package.\n *\n * @param skillsRoot - Runtime skills directory shipped as a package asset.\n * @param globalSkillRoot - Destination Agent Skills directory.\n */\nasync function installUniversalSkills(\n skillsRoot: string,\n globalSkillRoot: string,\n): Promise<void> {\n await mkdir(globalSkillRoot, { recursive: true });\n for (const skill of UNIVERSAL_SKILLS) {\n await cp(`${skillsRoot}/${skill}`, `${globalSkillRoot}/${skill}`, {\n recursive: true,\n force: true,\n });\n }\n}\n\n/**\n * Publish a stable link to the browser installed in a dedicated safe HOME.\n *\n * @param agentRoot - Parent of the Pi profile directories.\n * @param browserHome - Credential-free HOME used by `agent-browser install`.\n * @returns Stable executable path injected into every agent process.\n */\nasync function linkAgentBrowserExecutable(\n agentRoot: string,\n browserHome: string,\n): Promise<string> {\n const browserVersionsRoot = `${browserHome}/.agent-browser/browsers`;\n const versionDirectories = (await readdir(browserVersionsRoot, { withFileTypes: true }))\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort()\n .reverse();\n let installedExecutable: string | undefined;\n for (const versionDirectory of versionDirectories) {\n const candidate = `${browserVersionsRoot}/${versionDirectory}/chrome`;\n try {\n await access(candidate, constants.X_OK);\n installedExecutable = candidate;\n break;\n } catch {\n // Continue until an executable browser version is found.\n }\n }\n if (!installedExecutable) {\n throw new Error(\"agent-browser install produced no executable Chrome binary\");\n }\n const stableRoot = `${dirname(agentRoot)}/browser`;\n const stableExecutable = `${stableRoot}/chrome`;\n await mkdir(stableRoot, { recursive: true, mode: 0o755 });\n await rm(stableExecutable, { force: true });\n await symlink(installedExecutable, stableExecutable, \"file\");\n return stableExecutable;\n}\n\n/**\n * Validate the orchestrator-owned roster file.\n *\n * @param raw - JSON text read from the roster path.\n * @returns Complete entries safe for filesystem materialization.\n */\nexport function parseAgentRoster(raw: string): AgentRosterEntry[] {\n const parsed = JSON.parse(raw) as unknown;\n if (!Array.isArray(parsed) || parsed.length === 0) {\n throw new Error(\"the agent roster must be a non-empty JSON array\");\n }\n return parsed.map((value, index) => parseAgentRosterEntry(value, index));\n}\n\n/**\n * Validate one roster entry and reject unsafe filesystem identifiers.\n *\n * @param value - Parsed array entry.\n * @param index - Array position used only in diagnostics.\n * @returns Validated roster entry.\n */\nfunction parseAgentRosterEntry(value: unknown, index: number): AgentRosterEntry {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(`agent roster entry ${index} must be an object`);\n }\n const entry = value as Record<string, unknown>;\n const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;\n const id = requireString(entry.id, `agent roster entry ${index} id`);\n if (!uuidPattern.test(id)) {\n throw new Error(`agent roster entry ${index} id must be a UUID`);\n }\n const ownerUserId = requireString(\n entry.ownerUserId,\n `agent roster entry ${index} ownerUserId`,\n );\n if (!uuidPattern.test(ownerUserId)) {\n throw new Error(`agent roster entry ${index} ownerUserId must be a UUID`);\n }\n return {\n id,\n name: requireString(entry.name, `agent roster entry ${index} name`),\n role: requireString(entry.role, `agent roster entry ${index} role`),\n personas: agentPersonasSchema.parse(entry.personas),\n locale: agentLocaleSchema.parse(entry.locale),\n ownerUserId,\n };\n}\n\n/**\n * Require one non-empty string field.\n *\n * @param value - Candidate parsed JSON field.\n * @param label - Safe field label used in diagnostics.\n * @returns Trimmed non-empty value.\n */\nfunction requireString(value: unknown, label: string): string {\n if (typeof value !== \"string\" || !value.trim()) {\n throw new Error(`${label} is required`);\n }\n return value.trim();\n}\n", "import { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\n\nimport {\n materializeAgentRoster,\n type AgentRosterMaterializationResult,\n} from \"./agent-roster-materialization.js\";\nimport {\n resolveAgentBrowserHome,\n resolveAgentRoot,\n resolvePiExtensionsRoot,\n resolvePiRuntimeRoot,\n resolvePiSkillsRoot,\n} from \"./shared/config.js\";\n\n/**\n * Per-run runtime contract this service is able to drive.\n *\n * @remarks\n * ADR-084 splits the resident services from the per-run runtime so each can be\n * released on its own cadence. One interface spans them in both directions:\n * these services spawn `mote-pi-rpc`, and the agent-facing `orchestrator` CLI\n * calls back into this process. This integer is the only guard against a\n * pairing that was never tested together, so it must move whenever either side\n * of that interface changes incompatibly. The services manifest publishes the\n * same value as `mote.piRuntimeContract`.\n */\nexport const SUPPORTED_PI_RUNTIME_CONTRACT = 1;\n/** Published package whose installed manifest declares the runtime contract. */\nconst PI_RUNTIME_PACKAGE_NAME = \"@liy/mote-pi-runtime\";\n\n/**\n * Verify the installed per-run runtime and materialize every agent profile.\n *\n * @remarks\n * Boot is the only place a full materialization pass runs (ADR-084). It reads\n * the orchestrator-owned roster, never a provisioning snapshot, so agents\n * created or edited after provisioning survive every restart. A sandbox whose\n * roster is missing or empty cannot serve any agent, so this fails loudly\n * rather than starting a service that can do nothing.\n *\n * @param env - Orchestrator process environment.\n * @returns Materialization outcome, including the stable browser path.\n */\nexport async function prepareSandboxRuntime(\n env: NodeJS.ProcessEnv,\n): Promise<AgentRosterMaterializationResult> {\n const piRuntimeRoot = resolvePiRuntimeRoot(env);\n await assertPiRuntimeContract(piRuntimeRoot);\n const agentRoot = resolveAgentRoot(env);\n return materializeAgentRoster({\n rosterPath: join(agentRoot, \"agent-roster.json\"),\n agentRoot,\n globalSkillRoot: join(agentRoot, \"skills\"),\n browserHome: resolveAgentBrowserHome(env),\n extensionsPath: resolvePiExtensionsRoot(env),\n skillsRoot: resolvePiSkillsRoot(env),\n });\n}\n\n/**\n * Read the installed per-run runtime's declared contract and version.\n *\n * @param piRuntimeRoot - Installed per-run runtime root.\n * @returns Declared contract integer and package version.\n */\nexport async function readPiRuntimeManifest(\n piRuntimeRoot: string,\n): Promise<{ contract: number; version: string }> {\n const manifestPath = join(\n piRuntimeRoot,\n \"node_modules\",\n ...PI_RUNTIME_PACKAGE_NAME.split(\"/\"),\n \"package.json\",\n );\n const manifest = JSON.parse(await readFile(manifestPath, \"utf8\")) as {\n version?: unknown;\n mote?: { contract?: unknown };\n };\n const contract = manifest.mote?.contract;\n const version = manifest.version;\n if (typeof contract !== \"number\" || !Number.isInteger(contract)) {\n throw new Error(`${PI_RUNTIME_PACKAGE_NAME} declares no integer mote.contract`);\n }\n if (typeof version !== \"string\" || !version.trim()) {\n throw new Error(`${PI_RUNTIME_PACKAGE_NAME} declares no version`);\n }\n return { contract, version };\n}\n\n/**\n * Refuse to run against a per-run runtime this service cannot drive.\n *\n * @param piRuntimeRoot - Installed per-run runtime root.\n */\nasync function assertPiRuntimeContract(piRuntimeRoot: string): Promise<void> {\n const { contract, version } = await readPiRuntimeManifest(piRuntimeRoot);\n if (contract !== SUPPORTED_PI_RUNTIME_CONTRACT) {\n throw new Error(\n `installed ${PI_RUNTIME_PACKAGE_NAME}@${version} declares contract ${contract}, `\n + `but these services drive contract ${SUPPORTED_PI_RUNTIME_CONTRACT}`,\n );\n }\n}\n", "#!/usr/bin/env node\nimport { runOrchestratorCli } from \"@liy/sandbox-orchestrator\";\n\nprocess.exitCode = await runOrchestratorCli(process.argv.slice(2));\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["dirname", "randomUUID", "_default", "base64", "base64url", "bigint", "boolean", "_catch", "cidrv4", "cidrv6", "core_exports", "cuid", "cuid2", "date", "decode", "decodeAsync", "describe", "e164", "email", "emoji", "encode", "encodeAsync", "_enum", "guid", "hex", "hostname", "ipv4", "ipv6", "ksuid", "mac", "meta", "nanoid", "_null", "nullish", "number", "parse", "parseAsync", "safeDecode", "safeDecodeAsync", "safeEncode", "safeEncodeAsync", "safeParse", "safeParseAsync", "string", "ulid", "_undefined", "uuid", "_void", "xid", "_emoji", "process", "initializer", "_a", "array", "set", "object", "Class", "config", "error", "issue", "version", "time", "inst", "result", "checks", "checkResult", "canary", "_", "url", "r", "isObject", "allowsEval", "results", "map", "left", "right", "keyResult", "valueResult", "output", "text", "codec", "id", "schema", "json", "file", "registry", "ctx", "schemas_exports", "checks_exports", "datetime", "duration", "issues", "def", "check", "ZodFirstPartyTypeKind", "zodSchema", "objectSchema", "dirname", "isRecord", "isRecord", "MAX_RESPONSE_BYTES", "TICKET_TRANSITION_FIELDS", "TICKET_CREATE_FIELDS", "TICKET_ASSIGN_FIELDS", "isRecord", "error", "randomUUID", "parseTicketListPayload", "parseTicketCreatePayload", "parseTicketAssignPayload", "parseTicketTransitionPayload", "request", "resolve"]
|
|
7
|
+
}
|